SNIA Swordfish®

The SNIA Swordfish® specification helps to provide a unified approach for the management of storage and servers in hyperscale and cloud infrastructure environments, making it easier for IT administrators to integrate scalable solutions into their data centers. SNIA Swordfish is an extension of the DMTF Redfish specification, so the same easy-to-use RESTful interface is used, along with JavaScript Object Notation (JSON) and Open Data Protocol (OData), to seamlessly manage storage equipment and storage services in addition to servers.

SNIA Swordfish is designed to integrate with the technologies used in cloud data center environments and can be used to accomplish a broad range of storage management tasks from the simple to the advanced.

SNIA Swordfish has been designed around management use cases that focus on what IT administrators need to do with storage equipment and storage services in a data center. As a result, the API provides functionality that simplifies the way storage can be allocated, monitored, and managed.

 

Release Date: 
22 January 2024
Version: 
1.2.6

Swordfish v.1.2.6 offers key features such as new metrics for FileSystem, StoragePool, StorageService, and enhancements to VolumeMetrics. It introduces new mapping and masking models using Connections in the Fabric model and deprecates StorageGroups. It also includes support for new volume properties: ProvidingStoragePool, ChangeStripSize, Asymmetric Logical Unit Access (ALUA) to manage reservations. Swordfish v.1.2.6 adds enhancements to NVMe Domain Management, including ALUA support. Finally, it offers updates to NVMe namespaces, such as simplified Logical Block Address (LBA) Format representation and multiple namespace management.

Bundle Component
Files
Swordfish Release Bundle
The Swordfish Release Bundle contains all of the components that comprise the versioned Swordfish Release. Included documents are: the Swordfish Specification, User’s Guide, Error Handling Guide, and NVMe Model Overview and Mapping Guide. Included technical content: Swordfish schema bundle and Swordfish profiles bundle.
ZIP
Swordfish Scalable Storage Management API Specification
Swordfish extends the Redfish Scalable Platforms Management API Specification to define a comprehensive, RESTful API for storage management that addresses block storage, file systems, object storage, and storage network infrastructure.
Swordfish Schema and Registries Bundle
This bundle contains the schemas defined for JSON resources conforming to the Redfish Specification. Each schema definition is available in CSDL (XML), json, and yaml formats. This bundle also contains the standard dictionary files to support Redfish Device Enablement (RDE), as well as the Swordfish registry files.
ZIP
Swordfish Profile Bundle
This bundle contains all the Swordfish profiles. The Swordfish Core Profiles define the set of features and the corresponding detailed profiles define the required functionality to implement Swordfish.
ZIP
Swordfish Templates Bundle
This bundle contains templates for Swordfish metrics and telemetry. These templates show the recommended functionality for Swordfish implementations to enable both basic and enhanced metrics.
ZIP
Swordfish Scalable Storage Management API User’s Guide
This guide is intended to provide a common repository of best practices, common tasks and education for the users of the Swordfish API.
Swordfish Scalable Storage Management Error Handling Guide
The Swordfish Scalable Storage Management Error Handling Guide provides a summary of the preferred handling of errors and error messages in a Swordfish implementation.
Swordfish NVMe Model Overview and Mapping Guide
The Swordfish NVMe Model Overview and Mapping Guide defines the model to manage NVMe and NVMe-oF storage systems with Redfish and Swordfish. It provides the detailed mapping information between the NVMe, NVMe-oF specifications and the Redfish and Swordfish specifications.
Swordfish Property Guide
The Property Guide provides a listing of the properties used in the Swordfish schema. It is intended primarily for end users and other consumers of Swordfish data to look up property definitions, without requiring a detailed knowledge of the schema as a whole.
Swordfish Metrics White Paper
This paper defines the approach, infrastructure and mechanisms to use for Swordfish implementations, to capture and store historical metrics to present to Swordfish clients in a standardized fashion, using the Redfish telemetry service. The examples provided focus on capacity and performance instrumentation, but additional standardized definitions may be provided separately.
Swordfish and NVMe-oF Whitepaper
This paper provides a deep dive into the NVMe oF configurations, and more specifically, how these are represented in both the Swordfish client model and API. It will also focus on the concepts of logical devices, called exported resources, and how these are represented, allocated and managed, as these are represented differently for NVMe oF devices than for other types of storage devices modeled in Swordfish.
Release Date: 
9 April 2024
Version: 
1.2.6

Swordfish v.1.2.6 offers key features such as new metrics for FileSystem, StoragePool, StorageService, and enhancements to VolumeMetrics. It introduces new mapping and masking models using Connections in the Fabric model and deprecates StorageGroups. It also includes support for new volume properties: ProvidingStoragePool, ChangeStripSize, Asymmetric Logical Unit Access (ALUA) to manage reservations. Swordfish v.1.2.6 adds enhancements to NVMe Domain Management, including ALUA support. Finally, it offers updates to NVMe namespaces, such as simplified Logical Block Address (LBA) Format representation and multiple namespace management.

Bundle Component
Files
Swordfish Release Bundle
The Swordfish Release Bundle contains all of the components that comprise the versioned Swordfish Release. Included documents are: the Swordfish Specification, User’s Guide, Error Handling Guide, and NVMe Model Overview and Mapping Guide. Included technical content: Swordfish schema bundle and Swordfish profiles bundle.
ZIP
Swordfish Scalable Storage Management API Specification
Swordfish extends the Redfish Scalable Platforms Management API Specification to define a comprehensive, RESTful API for storage management that addresses block storage, file systems, object storage, and storage network infrastructure.
Swordfish Schema and Registries Bundle
This bundle contains the schemas defined for JSON resources conforming to the Redfish Specification. Each schema definition is available in CSDL (XML), json, and yaml formats. This bundle also contains the standard dictionary files to support Redfish Device Enablement (RDE), as well as the Swordfish registry files.
ZIP
Swordfish Profile Bundle
This bundle contains all the Swordfish profiles. The Swordfish Core Profiles define the set of features and the corresponding detailed profiles define the required functionality to implement Swordfish.
ZIP
Swordfish Templates Bundle
This bundle contains templates for Swordfish metrics and telemetry. These templates show the recommended functionality for Swordfish implementations to enable both basic and enhanced metrics.
ZIP
Swordfish Scalable Storage Management API User’s Guide
This guide is intended to provide a common repository of best practices, common tasks and education for the users of the Swordfish API.
Swordfish Scalable Storage Management Error Handling Guide
The Swordfish Scalable Storage Management Error Handling Guide provides a summary of the preferred handling of errors and error messages in a Swordfish implementation.
Swordfish NVMe Model Overview and Mapping Guide
The Swordfish NVMe Model Overview and Mapping Guide defines the model to manage NVMe and NVMe-oF storage systems with Redfish and Swordfish. It provides the detailed mapping information between the NVMe, NVMe-oF specifications and the Redfish and Swordfish specifications.
Swordfish Property Guide
The Property Guide provides a listing of the properties used in the Swordfish schema. It is intended primarily for end users and other consumers of Swordfish data to look up property definitions, without requiring a detailed knowledge of the schema as a whole.
Swordfish Metrics White Paper
This paper defines the approach, infrastructure and mechanisms to use for Swordfish implementations, to capture and store historical metrics to present to Swordfish clients in a standardized fashion, using the Redfish telemetry service. The examples provided focus on capacity and performance instrumentation, but additional standardized definitions may be provided separately.
Swordfish and NVMe-oF Whitepaper
This paper provides a deep dive into the NVMe oF configurations, and more specifically, how these are represented in both the Swordfish client model and API. It will also focus on the concepts of logical devices, called exported resources, and how these are represented, allocated and managed, as these are represented differently for NVMe oF devices than for other types of storage devices modeled in Swordfish.

Developer Resources

Swordfish Forum
This site contains discussions about the SNIA Swordfish Specification, protocol, profiles and schema. Swordfish feature requests may be submitted here as well.

Swordfish Mockups
This site contains the latest public (static) mockups of SNIA Swordfish, a description of the contents, and pointers to client tools that may be helpful.

Swordfish Containers available on Docker Hub
This site contains downloadable instances of each of the Swordfish mockup configurations, each instantiated in an independent instance of the Swordfish emulator.


Open Source Tools

SNIA’s Storage Management Initiative sponsored the initial development of open source software tools that can help developers start working with Swordfish. These tools are already available in open repositories that are managed by the SNIA SSM TWG on GitHub.

Brief descriptions of these open source software tools are given below. Installation instructions are provided within each tool’s repository, along with basic documentation for users and developers.

Development Tool Description
Swordfish API Emulator

The Swordfish API Emulator can emulate a Swordfish-based system that responds to create, read, update, and delete RESTful API operations to allow developers to model new Swordfish functionality, test clients, demonstrate Swordfish, and do other similar functions.

The Swordfish API Emulator extends the DMTF Redfish Interface Emulator, adding code that supports dynamic interactions with all of the Swordfish schema.

The Swordfish API Emulator code is maintained on GitHub by the SNIA, and the Redfish Interface Emulator code is maintained on GitHub by the DMTF.

Swordfish Basic Web Client

The Swordfish Basic Web Client can connect to one or more Swordfish services (including the Swordfish API Emulator), and present in a web UI frame the entire Redfish and Swordfish hierarchy.

The Swordfish Basic Web Client provides basic capabilities for managing multiple services simultaneously, modifying configurable Properties and adding or removing elements from the service through the web UI.

Swordfish Datadog Sample Dashboard Integration The Swordfish Datadog sample dashboard integration provides a dashboard for the Datadog monitoring service that can connect to a Swordfish service (including the Swordfish emulator), and provides an integration to the Datadog UI. It provides connectivity to a Swordfish service and displays system capacity information trending over time, configured capacity thresholds, and alert information based on crossing those thresholds.
Swordfish PowerBI Sample Dashboard Integration The Swordfish Power BI sample dashboard integration provides a dashboard for the Power BI data center monitoring system that can connect to a Swordfish service (including the Swordfish emulator), and provides an integration to the Power BI UI. It provides connectivity to a Swordfish service and displays system capacity information and configured capacity thresholds.
Swordfish Powershell Toolkit

The PowerShell Toolkit for Swordfish provides a basic framework for querying resources from the SNIA API Emulator.

The SNIASwordFish PowerShell Module can be used with Microsoft Windows, Windows Server, macOS or Linux. Below is an example of a connected SwordFish target being used with macOS and PowerShell for Linux (v6.1).

Gofish

Gofish is a Golang client library for DMTF Redfish and SNIA Swordfish interaction. For an overview of the Golang client, watch this video 

Golang Support for SNIA Swordfish™ from SDC 2019.


More Information

Contact the SNIA Swordfish Development Team at storagemanagement@snia.org


Videos