Skip to main content
REST API reference

Create an NVMe subsystem

POST /protocols/nvme/subsystems

Introduced In: 9.6

Creates an NVMe subsystem.

Required properties

  • svm.uuid or svm.name - Existing SVM in which to create the NVMe subsystem.

  • name - Name for NVMe subsystem. Once created, an NVMe subsystem cannot be renamed.

  • os_type - Operating system of the NVMe subsystem's hosts.

  • vserver nvme subsystem create

Parameters

Name Type In Required Description

return_records

boolean

query

False

The default is false. If set to true, the records are returned.

  • Default value:

Request Body

Name Type Description

comment

string

A configurable comment for the NVMe subsystem. Optional in POST and PATCH.

delete_on_unmap

boolean

An option that causes the subsystem to be deleted when the last subsystem map associated with it is deleted. Optional in POST and PATCH. This property defaults to false when the subsystem is created.

hosts

array[hosts]

The NVMe hosts configured for access to the NVMe subsystem. Optional in POST.

io_queue

io_queue

The properties of the submission queue used to submit I/O commands for execution by the NVMe controller.

name

string

The name of the NVMe subsystem. Once created, an NVMe subsystem cannot be renamed. Required in POST.

os_type

string

The host operating system of the NVMe subsystem's hosts. Required in POST.

replication

replication

Properties related to subsystem replication.

serial_number

string

The serial number of the NVMe subsystem.

subsystem_maps

array[subsystem_maps]

The NVMe namespaces mapped to the NVMe subsystem.

There is an added computational cost to retrieving property values for subsystem_maps. They are not populated for a GET request unless explicitly requested using the fields query parameter. See Requesting specific fields to learn more.

svm

svm

SVM, applies only to SVM-scoped objects.

target_nqn

string

The NVMe qualified name (NQN) used to identify the NVMe storage target.

uuid

string

The unique identifier of the NVMe subsystem.

vendor_uuids

array[string]

Vendor-specific identifiers (UUIDs) optionally assigned to an NVMe subsystem when the subsystem is created. The identifiers are used to enable vendor-specific NVMe protocol features. The identifiers are provided by a host application vendor and shared with NetApp prior to a joint product release. Creating an NVMe subsystem with an unknown or non-specific identifier will have no effect on the NVMe subsystem. Refer to the ONTAP SAN Administration Guide for a list of the supported vendor-specific identifiers. After a subsystem is created, the vendor-specific identifiers cannot be changed or removed. Optional in POST.

  • Introduced in: 9.9

  • readCreate: 1

Example request
{
  "comment": "string",
  "hosts": [
    {
      "dh_hmac_chap": {
        "controller_secret_key": "DHHC-1:00:ia6zGodOr4SEG0Zzaw398rpY0wqipUWj4jWjUh4HWUz6aQ2n:",
        "group_size": "string",
        "hash_function": "string",
        "host_secret_key": "DHHC-1:00:ia6zGodOr4SEG0Zzaw398rpY0wqipUWj4jWjUh4HWUz6aQ2n:",
        "mode": "bidirectional"
      },
      "nqn": "nqn.1992-01.example.com:string",
      "priority": "string",
      "proximity": {
        "peer_svms": [
          {
            "name": "peer1",
            "uuid": "4204cf77-4c82-9bdb-5644-b5a841c097a9"
          }
        ]
      },
      "tls": {
        "configured_psk": "NVMeTLSkey-1:01:VRLbtnN9AQb2WXW3c9+wEf/DRLz0QuLdbYvEhwtdWwNf9LrZ:",
        "key_type": "configured"
      }
    }
  ],
  "io_queue": {
    "default": {
      "count": 4,
      "depth": 16
    }
  },
  "name": "subsystem1",
  "os_type": "string",
  "replication": {
    "error": {
      "subsystem": {
        "name": "subsystem1",
        "uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
      }
    },
    "peer_subsystem": {
      "uuid": "1cd8a443-86d2-11e0-ae1c-123478563412"
    },
    "peer_svm": {
      "name": "peer1",
      "uuid": "4204cf77-4c82-9bdb-5644-b5a841c097a9"
    },
    "state": "string"
  },
  "serial_number": "wCVsgFMiuMhVAAAAAAAB",
  "subsystem_maps": [
    {
      "anagrpid": "00103050h",
      "namespace": {
        "name": "/vol/vol1/namespace1",
        "uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
      },
      "nsid": "00000001h"
    }
  ],
  "svm": {
    "name": "svm1",
    "uuid": "02c9e252-41be-11e9-81d5-00a0986138f7"
  },
  "target_nqn": "nqn.1992-01.example.com:string",
  "uuid": "1cd8a442-86d1-11e0-ae1c-123478563412",
  "vendor_uuids": [
    "1447f0f4-42e5-0dfc-871a-dc9b3f92d8f8"
  ]
}

Response

Status: 201, Created
Name Type Description

num_records

integer

The number of records in the response.

records

array[nvme_subsystem]

Example response
{
  "num_records": 1,
  "records": [
    {
      "comment": "string",
      "hosts": [
        {
          "dh_hmac_chap": {
            "controller_secret_key": "DHHC-1:00:ia6zGodOr4SEG0Zzaw398rpY0wqipUWj4jWjUh4HWUz6aQ2n:",
            "group_size": "string",
            "hash_function": "string",
            "host_secret_key": "DHHC-1:00:ia6zGodOr4SEG0Zzaw398rpY0wqipUWj4jWjUh4HWUz6aQ2n:",
            "mode": "bidirectional"
          },
          "nqn": "nqn.1992-01.example.com:string",
          "priority": "string",
          "proximity": {
            "peer_svms": [
              {
                "name": "peer1",
                "uuid": "4204cf77-4c82-9bdb-5644-b5a841c097a9"
              }
            ]
          },
          "tls": {
            "configured_psk": "NVMeTLSkey-1:01:VRLbtnN9AQb2WXW3c9+wEf/DRLz0QuLdbYvEhwtdWwNf9LrZ:",
            "key_type": "configured"
          }
        }
      ],
      "io_queue": {
        "default": {
          "count": 4,
          "depth": 16
        }
      },
      "name": "subsystem1",
      "os_type": "string",
      "replication": {
        "error": {
          "subsystem": {
            "name": "subsystem1",
            "uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
          }
        },
        "peer_subsystem": {
          "uuid": "1cd8a443-86d2-11e0-ae1c-123478563412"
        },
        "peer_svm": {
          "name": "peer1",
          "uuid": "4204cf77-4c82-9bdb-5644-b5a841c097a9"
        },
        "state": "string"
      },
      "serial_number": "wCVsgFMiuMhVAAAAAAAB",
      "subsystem_maps": [
        {
          "anagrpid": "00103050h",
          "namespace": {
            "name": "/vol/vol1/namespace1",
            "uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
          },
          "nsid": "00000001h"
        }
      ],
      "svm": {
        "name": "svm1",
        "uuid": "02c9e252-41be-11e9-81d5-00a0986138f7"
      },
      "target_nqn": "nqn.1992-01.example.com:string",
      "uuid": "1cd8a442-86d1-11e0-ae1c-123478563412",
      "vendor_uuids": [
        "1447f0f4-42e5-0dfc-871a-dc9b3f92d8f8"
      ]
    }
  ]
}

Headers

Name Description Type

Location

Useful for tracking the resource location

string

Error

Status: Default

ONTAP Error Response Codes

Error Code Description

2621462

The supplied SVM does not exist.

2621706

The specified svm.uuid and svm.name do not refer to the same SVM.

2621707

The svm.uuid or svm.name must be provided.

72089635

Setting vendor-specific UUIDs on NVMe subsystems is not supported until the effective cluster version is 9.9 or later.

72089636

Creating NVMe subsystems with os_type AIX is not supported until the effective cluster version is 9.13.1 or later.

72089709

The NVMe subsystem name contains an invalid character.

72089711

An invalid vendor-specific UUID was specified.

72089712

A duplicate vendor-specific UUID was specific.

72089713

Too many vendor UUIDs were supplied.

72089716

The DH-HMAC-CHAP secret property is invalid. DH-HMAC-CHAP secrets must be in the format "DHHC-1:0X:<Base 64 encoded key and CRC>:", where X represents 0, 1, or 3 indicating no hash function, SHA-256, and SHA-512 respectively.

72089771

The NQN is invalid. A non-empty qualifier is required after the prefix. An example of a valid NQN is nqn.1992-01.com.example:string.

72089772

The NQN is invalid. Add the prefix 'nqn'. An example of a valid NQN is nqn.1992-01.com.example:string.

72089773

The NQN is invalid. The date field must be formatted yyyy-mm. An example of a valid NQN is nqn.1992-01.com.example:string.

72090003

A host to be added to an NVMe subsystem is missing the "nqn" property.

72090025

The NVMe subsystem already exists for the SVM.

72090029

The NVMe service does not exist.

72090030

A partial success occurred while adding multiple NVMe subsystem hosts to an NVMe subsystem.

72090036

An NVMe subsystem host NQN was duplicated in the input.

72090042

The DH-HMAC-CHAP secret property is required when setting any other NVMe in-band authentication properties for a host.

72090043

An igroup already exists with the requested NVMe subsystem name.

72090151

NVMe/TCP-TLS is not supported for the effective version of the cluster.

72090202

A provided NVMe subsystem host TLS configured PSK is not valid.

72090204

A TLS configured PSK was not provided when adding an NVMe subsystem host with the configured key type.

72090205

An invalid combination for the TLS key type and configured PSK values was provided when adding an NVMe subsystem host. When key type is "none", no configured PSK is allowed. When key type is "configured", a configured PSK is required.

Also see the table of common errors in the Response body overview section of this documentation.

Definitions

See Definitions

href

Name Type Description

href

string

dh_hmac_chap

A container for the configuration of NVMe in-band authentication using the DH-HMAC-CHAP protocol for a host.

Name Type Description

controller_secret_key

string

The controller secret for NVMe in-band authentication. The value of this property is used by the NVMe host to authenticate the NVMe controller while establishing a connection. If unset, the controller is not authenticated. When supplied, the property host_secret_key must also be supplied. Optional in POST.

This property is write-only. The mode property can be used to identify if a controller secret has been set for the host, but the controller secret value cannot be read. To change the value, the host must be deleted from the subsystem and re-added.

group_size

string

The Diffie-Hellman group size for NVMe in-band authentication. When property host_secret_key is provided, this property defaults to 2048_bit. When supplied, the property host_secret_key must also be supplied. Optional in POST.

hash_function

string

The hash function for NVMe in-band authentication. When property host_secret_key is provided, this property defaults to sha_256. When supplied, the property host_secret_key must also be supplied. Optional in POST.

host_secret_key

string

The host secret for NVMe in-band authentication. The value of this property is used by the NVMe controller to authenticate the NVMe host while establishing a connection. If unset, no authentication is performed by the host or controller. This property must be supplied if any other NVMe in-band authentication properties are supplied. Optional in POST.

This property is write-only. The mode property can be used to identify if a host secret has been set for the host, but the host secret value cannot be read. To change the value, the host must be deleted from the subsystem and re-added.

mode

string

The expected NVMe in-band authentication mode for the host. This property is an indication of which secrets are configured for the host. When set to:

  • none: The host has neither the host nor controller secret configured, and no authentication is performed.

  • unidirectional: The host has a host secret configured. The controller will authenticate the host.

  • bidirectional: The host has both a host and controller secret configured. The controller will authenticate the host and the host will authenticate the controller.

peer_svms

A reference to an SVM peer relationship.

Name Type Description

name

string

The local name of the peer SVM. This name is unique among all local and peer SVMs.

uuid

string

The unique identifier of the SVM peer relationship. This is the UUID of the relationship, not the UUID of the peer SVM itself.

proximity

Properties that define the SVMs to which the host is proximal. This information is used to properly report active optimized and active non-optimized network paths using an NVMe controller. If no configuration has been specified for the host, the sub-object is not present in GET requests.

These properties apply to all instances of the host in the NVMe subsystem in the SVM and its peers.

Name Type Description

local_svm

boolean

A boolean that indicates if the host is proximal to the SVM for which it is configured.

peer_svms

array[peer_svms]

An array of remote peer SVMs to which the host is proximal.

tls

A container for the configuration for NVMe/TCP-TLS transport session for the host.

Name Type Description

configured_psk

string

A user supplied pre-shared key (PSK) value in PSK Interchange Format. Optional in POST.

The values for property key_type and property configured_psk must logically agree. This property is only allowed when key_type is configured. If configured_psk is supplied and key_type is unset, key_type defaults to configured.

This property is write-only. The key_type property can be used to identify if a configured PSK has been set for the host, but the PSK value cannot be read. To change the value, the host must be deleted from the subsystem and re-added.

key_type

string

The method by which the TLS pre-shared key (PSK) is configured for the host. Optional in POST.

The values for property key_type and property configured_psk must logically agree.

Possible values:

  • none - TLS is not configured for the host connection. No value is allowed for property configured_psk.

  • configured - A user supplied PSK is configured for the NVMe/TCP-TLS transport connection between the host and the NVMe subsystem. A valid value for property configured_psk is required.

This property defaults to none unless a value is supplied for configured_psk in which case it defaults to configured.

hosts

Name Type Description

dh_hmac_chap

dh_hmac_chap

A container for the configuration of NVMe in-band authentication using the DH-HMAC-CHAP protocol for a host.

nqn

string

The NVMe qualified name (NQN) used to identify the NVMe storage target.

priority

string

The host priority setting allocates appropriate NVMe I/O queues (count and depth) for the host to submit I/O commands. Absence of this property in GET implies user configured values of I/O queue count and I/O queue depth are being used.

proximity

proximity

Properties that define the SVMs to which the host is proximal. This information is used to properly report active optimized and active non-optimized network paths using an NVMe controller. If no configuration has been specified for the host, the sub-object is not present in GET requests.

These properties apply to all instances of the host in the NVMe subsystem in the SVM and its peers.

tls

tls

A container for the configuration for NVMe/TCP-TLS transport session for the host.

default

The default I/O queue parameters inherited by NVMe hosts in the NVMe subsystem.

Name Type Description

count

integer

The number of host I/O queue pairs.

depth

integer

The host I/O queue depth.

io_queue

The properties of the submission queue used to submit I/O commands for execution by the NVMe controller.

Name Type Description

default

default

The default I/O queue parameters inherited by NVMe hosts in the NVMe subsystem.

subsystem

An NVMe subsystem maintains configuration state and NVMe namespace access control for a set of NVMe-connected hosts.

Name Type Description

local_svm

boolean

Indicates whether the reported subsystem is on the local SVM or the peer SVM. When deleting a replicated subsystem, the local copy is deleted first and then the peer copy is deleted. If the error is encountered between these two operations and only the peer subsystem remains, the peer subsystem is reported and the problem might need to be corrected on the peer cluster.

name

string

The name of the NVMe subsystem.

uuid

string

The unique identifier of the NVMe subsystem.

error_arguments

Name Type Description

code

string

Argument code

message

string

Message argument

summary

A user friendly message describing the error.

Name Type Description

arguments

array[error_arguments]

Message arguments

code

string

Error code

message

string

Error message

error

Information about asynchronous errors encountered while replicating this subsystem. Subsystems within a peering relationship are replicated in the same stream, so the error reported here might be related to this subsystem or a prior replicated subsystem that is now blocking the replication of this subsystem. Both the error information and the subsystem encountering the error are reported. If the error is configuration related, it can be corrected on the referenced subsystem. The replication is retried using exponential backoff up to a maximum of one retry every 5 minutes. Every operation on the same stream triggers an immediate retry and restarts the exponential backoff starting with a 1 second delay. If the error is system related, the retries should correct the error when the system enters a healthy state.

Name Type Description

subsystem

subsystem

An NVMe subsystem maintains configuration state and NVMe namespace access control for a set of NVMe-connected hosts.

peer_subsystem

Name Type Description

uuid

string

The unique identifier of the peer subsystem.

peer_svm

The peered SVM to which the subsystem is replicated. Subsystem are are automatically replicated when mapped to a namespace in a SnapMirror active sync relationship. When a subsystem is mapped to a namespace in an active sync relationship, the subsystem is restricted to only be mapped to namespaces that are members of the same consistency group.

Name Type Description

name

string

The local name of the peer SVM. This name is unique among all local and peer SVMs.

uuid

string

The unique identifier of the SVM peer relationship. This is the UUID of the relationship, not the UUID of the peer SVM itself.

replication

Properties related to subsystem replication.

Name Type Description

error

error

Information about asynchronous errors encountered while replicating this subsystem. Subsystems within a peering relationship are replicated in the same stream, so the error reported here might be related to this subsystem or a prior replicated subsystem that is now blocking the replication of this subsystem. Both the error information and the subsystem encountering the error are reported. If the error is configuration related, it can be corrected on the referenced subsystem. The replication is retried using exponential backoff up to a maximum of one retry every 5 minutes. Every operation on the same stream triggers an immediate retry and restarts the exponential backoff starting with a 1 second delay. If the error is system related, the retries should correct the error when the system enters a healthy state.

peer_subsystem

peer_subsystem

peer_svm

peer_svm

The peered SVM to which the subsystem is replicated. Subsystem are are automatically replicated when mapped to a namespace in a SnapMirror active sync relationship. When a subsystem is mapped to a namespace in an active sync relationship, the subsystem is restricted to only be mapped to namespaces that are members of the same consistency group.

state

string

The state of the replication queue associated with this subsystem. If this subsystem is not in the replication queue, the state is reported as ok. If this subsystem is in the replication queue, but no errors have been encountered, the state is reported as replicating. If this subsystem is in the replication queue and the queue is blocked by an error, the state is reported as error. When in the error state, additional context is provided by the replication.error property.

namespace

An NVMe namespace mapped to the NVMe subsystem.

Name Type Description

name

string

The name of the NVMe namespace.

uuid

string

The unique identifier of the NVMe namespace.

subsystem_maps

An NVMe namespace mapped to the NVMe subsystem.

Name Type Description

anagrpid

string

The Asymmetric Namespace Access Group ID (ANAGRPID) of the NVMe namespace.

The format for an ANAGRPIP is 8 hexadecimal digits (zero-filled) followed by a lower case "h".

namespace

namespace

An NVMe namespace mapped to the NVMe subsystem.

nsid

string

The NVMe namespace identifier. This is an identifier used by an NVMe controller to provide access to the NVMe namespace.

The format for an NVMe namespace identifier is 8 hexadecimal digits (zero-filled) followed by a lower case "h".

svm

SVM, applies only to SVM-scoped objects.

Name Type Description

name

string

The name of the SVM. This field cannot be specified in a PATCH method.

uuid

string

The unique identifier of the SVM. This field cannot be specified in a PATCH method.

nvme_subsystem

An NVMe subsystem maintains configuration state and namespace access control for a set of NVMe-connected hosts.

Name Type Description

comment

string

A configurable comment for the NVMe subsystem. Optional in POST and PATCH.

delete_on_unmap

boolean

An option that causes the subsystem to be deleted when the last subsystem map associated with it is deleted. Optional in POST and PATCH. This property defaults to false when the subsystem is created.

hosts

array[hosts]

The NVMe hosts configured for access to the NVMe subsystem. Optional in POST.

io_queue

io_queue

The properties of the submission queue used to submit I/O commands for execution by the NVMe controller.

name

string

The name of the NVMe subsystem. Once created, an NVMe subsystem cannot be renamed. Required in POST.

os_type

string

The host operating system of the NVMe subsystem's hosts. Required in POST.

replication

replication

Properties related to subsystem replication.

serial_number

string

The serial number of the NVMe subsystem.

subsystem_maps

array[subsystem_maps]

The NVMe namespaces mapped to the NVMe subsystem.

There is an added computational cost to retrieving property values for subsystem_maps. They are not populated for a GET request unless explicitly requested using the fields query parameter. See Requesting specific fields to learn more.

svm

svm

SVM, applies only to SVM-scoped objects.

target_nqn

string

The NVMe qualified name (NQN) used to identify the NVMe storage target.

uuid

string

The unique identifier of the NVMe subsystem.

vendor_uuids

array[string]

Vendor-specific identifiers (UUIDs) optionally assigned to an NVMe subsystem when the subsystem is created. The identifiers are used to enable vendor-specific NVMe protocol features. The identifiers are provided by a host application vendor and shared with NetApp prior to a joint product release. Creating an NVMe subsystem with an unknown or non-specific identifier will have no effect on the NVMe subsystem. Refer to the ONTAP SAN Administration Guide for a list of the supported vendor-specific identifiers. After a subsystem is created, the vendor-specific identifiers cannot be changed or removed. Optional in POST.

  • Introduced in: 9.9

  • readCreate: 1

returned_error

Name Type Description

arguments

array[error_arguments]

Message arguments

code

string

Error code

message

string

Error message

target

string

The target parameter that caused the error.