Create an NVMe subsystem
POST /protocols/nvme/subsystems
Introduced In: 9.6
Creates an NVMe subsystem.
Required properties
-
svm.uuid
orsvm.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.
Related ONTAP commands
-
vserver nvme subsystem create
Learn more
Parameters
Name | Type | In | Required | Description |
---|---|---|---|---|
return_records |
boolean |
query |
False |
The default is false. If set to true, the records are returned.
|
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 |
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 |
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 |
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.
|
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 |
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 |
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 |
_links
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 This property is write-only. The |
group_size |
string |
The Diffie-Hellman group size for NVMe in-band authentication. When property |
hash_function |
string |
The hash function for NVMe in-band authentication. When property |
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 |
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:
|
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 This property is write-only. The |
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 Possible values:
This property defaults to |
hosts
Name | Type | Description |
---|---|---|
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 |
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 |
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 |
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 |
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 |
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_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 |
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 |
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 |
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 |
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 |
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.
|
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. |