StorPool API Reference

Copyright (c) 2014 - 2023 StorPool. All rights reserved.

This reference document describes the StorPool API version 21.0 and the supported API calls.

  1. General
  2. Peers
    1. List the network peers
  3. Tasks
    1. List tasks
  4. Services
    1. List all StorPool services
    2. List all blocked StorPool servers
  5. Active requests
    1. Query all peers for their status and active requests
  6. Servers
    1. List all Storpool servers
    2. List all disks on a server
    3. Describe a disk on a server
  7. Clients
    1. Get the current status of all the clients
    2. Wait until a client updates to the current configuration
    3. List all the active requests on a client
  8. Disks
    1. List all disks
    2. Describe a disk
    3. Eject a disk
    4. Forget a disk
    5. Ignore a disk
    6. Soft-eject a disk
    7. Pause a disk's soft-eject operation
    8. Cancel a disk's soft-eject operation
    9. Set a disk's description
    10. List all the active requests on a disk
    11. Start scrubbing process
    12. Pause scrubbing process
    13. Continue paused scrubbing process
    14. Retrim disk
  9. Volumes
    1. List all volumes
    2. Get volume and snapshot status and stored size
    3. Get volume and snapshot status
    4. List total used space by each volume
    5. List a single volume
    6. Describe a volume
    7. Get volume info
    8. List the parent snapshots of a volume
    9. Create a new volume
    10. Update a volume
    11. Freeze a volume
    12. Rebase a volume
    13. Abandon disk
    14. Delete a volume
    15. Backup a volume to a remote location
    16. Backup a group of volumes to a remote location
    17. Move a volume from the local cluster to a remote cluster
    18. Export a volume to another cluster, so it can be attached when allowRemoteExports is true
    19. Move the volume from its current remote cluster to the local one. Noop if already here. Multicluster only call
    20. Create a volume from a snapshot from a remote location
    21. Revert a volume to a snapshot discarding all its current data.
  10. Snapshots
    1. List all snapshots
    2. List snapshots space estimations
    3. List a single snapshot
    4. Describe a snapshot
    5. Get snapshot info
    6. Snapshot a volume
    7. Update a snapshot
    8. Rebase a snapshot
    9. Abandon disk
    10. Delete a snapshot
    11. Delete a snapshot by global id
    12. Create consistent snapshots of a group of volumes
    13. Copy a snapshot from a remote location
    14. Move a snapshot from the local cluster to a remote cluster
    15. Allow a remote location to access a local snapshot
    16. Revoke a remote location's access to a local snapshot
    17. List exported snapshots
    18. List exported volumes
    19. List the available remote snapshots
    20. List the available remote volumes
    21. Instruct the remote location that we will no longer use those snapshots
  11. Attachments
    1. List all attachments
    2. Reassign volumes and/or snapshots
    3. Reassign volumes and/or snapshots with confirmation from the clients
  12. Placement Groups
    1. List all placement groups
    2. Describe a single placement group
    3. Create and/or update a placement group
    4. Delete a placement group
    5. List all fault sets
    6. List the properties of a volume allocation group
    7. Update the allocation group of a volume
    8. Update the allocation group of a snapshot
    9. Update the targets of a volume allocation group
  13. Volume Templates
    1. List all volume templates
    2. List the status of all volume templates
    3. Describe a single volume template
    4. Create a volume template
    5. Update a volume template
    6. Delete a volume template
  14. Volume Relocator
    1. Get the relocator's status
    2. List total per disk relocation estimates
    3. List per disk relocation estimates for a given volume
    4. List per disk relocation estimates for a given snapshot
  15. Balancer
    1. Get the balancer's status
    2. Set the balancer's status
    3. List balancer volume and snapshot status
    4. List total per disk rebalancing estimates
    5. List per disk rebalancing estimated for a given volume
    6. List per disk rebalancing estimates for a given snapshot
    7. Get the disk sets computed by the balancer for a given volume
    8. Get the disk sets computed by the balancer for a given snapshot
  16. iSCSI
    1. Get the StorPool iSCSI configuration
    2. Modify the StorPool iSCSI configuration
    3. Query iSCSI controllers for active sessions
    4. Query iSCSI controllers for interfaces state
  17. Remote
    1. List the registered remote locations
    2. Register a new remote location
    3. Remove a remote location
    4. Update a remote location
    5. Rename a remote location
    6. List the registered remote clusters
    7. Register a new remote cluster
    8. Remove a remote cluster
    9. Rename a remote cluster
    10. List the registered remote bridges
    11. Register a new remote bridge
    12. Deregister a remote bridge
  18. Nodes in maintenance
    1. List the nodes in maintenance
    2. Set node in maintenance
    3. Complete node's maintenance.
  19. Key Value Store
    1. List all created key value buckets
    2. List a complete key value bucket
    3. List a specific key-value pair from a specific bucket
    4. Create a new bucket
    5. Delete a bucket
    6. Update a bucket
  20. StorPool Features
    1. Show information about StorPool features
  21. Data Types

General

The StorPool API can be used with any tool that can generate HTTP requests with the GET and POST methods. The only requirement is to supply the Authorization header and, if required by the request, valid JSON data.

For each call there is an explanation of the HTTP request and response and an example in raw format as it should be sent to the StorPool management service.

Here are two examples using curl using the GET and POST methods respectively and their counterparts as issued by the StorPool CLI:

curl -H "Authorization: Storpool v1:1556129910218014736" 192.168.42.208:81/ctrl/1.0/DisksList
storpool disk list

curl -d '{"addDisks":["1"]}'       -H "Authorization: Storpool v1:1556129910218014736"       192.168.42.208:81/ctrl/1.0/PlacementGroupUpdate/hdd
storpool placementGroup hdd addDisk 1

Python programs may use the API by importing the Python StorPool bindings (use 'pip install storpool' to install them):

# Use the default StorPool configuration settings

>>> from storpool import spapi
>>> api=spapi.Api.fromConfig()

# Use the default StorPool configuration settings, but do NOT allow environment variables to
# override them

>>> from storpool import spapi
>>> api=spapi.Api.fromConfig(use_env=False)

# Use an already-created spconfig.SPConfig object
>>> api=spapi.Api.fromConfig(cfg=cfg)

# Explicitly specify the hostname, port, and authentication string
>>> api=spapi.Api(host='192.168.0.5', port=80, auth='1556560560218011653')

# Use the default StorPool configuration settings but explicitly specify the source address as
# a string

>>> from storpool import spapi
>>> api=spapi.Api.fromConfig(source='192.168.0.2')

# Use the created API access object
>>> api.peersList()

{
  1: {
       'networks': {
         0: {
          'mac': '00:4A:E6:5F:34:C3'
         }
       }
  },
  2: {
       'networks': {
         0: {
          'mac': '52:54:E6:5F:34:DF'
         }
       }
  },
  3: {
        'networks': {
          0: {
           'mac': '52:57:5F:54:E6:3A'
          }
        }
  }
}

Any of the methods may be invoked with the additional boolean parameter "returnRawAPIData"; if it has a true value, the method call will not construct a Python object representing the return value, but will return a Python dictionary or list corresponding to the JSON response data instead.

The calls that may be used may be found in the file spapi.py. As a rule of thumb, the name of the call is the name of the HTTP query with the first letter in lowercase (as above: "peersList()" for the "PeersList" query). To view them all once the StorPool bindings are installed, run a Python interpreter and then:

>>> from storpool import spapi
>>> help(spapi)

Note: Requests will sometimes use GET instead of POST and consequently, will not require JSON. Responses on the other hand always produce JSON content.

Some of the API calls may be used in a StorPool multicluster environment to reference and modify volumes and snapshots in a different (but connected) StorPool cluster. These have a "MultiCluster/" component in their URL path. When using the Python StorPool bindings, multicluster feature is enabled by adding a "multiCluster=True" parameter to the Api constructor invocation.

In a StorPool multicluster environment an instance of the StorPool API may be used to forward a command to the API instance of another cluster by adding a "RemoteCommand/<cluster_name>/" path component immediately after the API version prefix:

curl -H "Authorization: Storpool v1:1556129910218014736"       192.168.42.208:81/ctrl/1.0/RemoteCommand/backup/DisksList

When using the Python StorPool bindings, this is done by adding a "clusterName=clusterName" parameter to the API method invocation:

api.disksList(clusterName="backup")

Peers

List the network peers (NetworkPeersList)

List the network nodes running the StorPool beacon including information such as the ID of the node, the networks it communicates through and the corresponding MAC addresses.

  1. Request:
  2. Response:

Tasks

List tasks (TasksList)

List the currently active recovery tasks. This call will return JSON data only when there is a relocation in progress. Under normal operation of the cluster it will return no data.

  1. Request:
  2. Response:

Services

List all StorPool services (ServicesList)

List all the services in the cluster (StorPool servers, clients, management, etc). If the whole cluster is not operational this call will return an error.

  1. Request:
  2. Response:

List all blocked StorPool servers (ServersListBlocked)

List the currently active StorPool servers even before the cluster has become operational, along with information about any missing disks that the cluster is waiting for.

  1. Request:
  2. Response:

Active requests

Query all peers for their status and active requests (AllPeersActiveRequests)

  1. Request:
  2. Response:

Servers

List all Storpool servers (ServersList)

Returns the the same output as ServicesList but ommits clients. Returns an error if the whole cluster is not operational.

  1. Request:
  2. Response:

List all disks on a server (ServerDisksList)

Return detailed information about each disk on the given server.

  1. Request:
  2. Response:

Describe a disk on a server (ServerDiskDescribe)

Return detailed information about a disk on the given server and the objects on it.

  1. Request:
  2. Response:

Clients

Get the current status of all the clients (ClientsConfigDump)

Return the status of each client including its current generation and generation update status.

  1. Request:
  2. Response:

Wait until a client updates to the current configuration (ClientConfigWait)

Return the same JSON as ClientsConfigDump but block until the client has updated its configuration information to the current generation at the time of the request.

  1. Request:
  2. Response:

List all the active requests on a client (ClientActiveRequests)

List detailed information about the requests being currently processed on the given client.

  1. Request:
  2. Response:

Disks

List all disks (DisksList)

  1. Request:
  2. Response:

Describe a disk (DiskDescribe)

List all disks including detailed information about the objects on each disk.

  1. Request:
  2. Response:

Eject a disk (DiskEject)

Stop operations on the given disk even if it is not empty.

  1. Request:
  2. Response:

Forget a disk (DiskForget)

Remove the disk from any placement groups or volumes that it is used in.

  1. Request:
  2. Response:

Ignore a disk (DiskIgnore)

Try to boot the cluster by ignoring this disk.

  1. Request:
  2. Response:

Soft-eject a disk (DiskSoftEject)

Stop writes to the given disk and start relocating all the data stored on it to other disks.

  1. Request:
  2. Response:

Pause a disk's soft-eject operation (DiskSoftEjectPause)

Temporarily pause the relocation tasks for the disk. This can be helpful in heavy load situations.

  1. Request:
  2. Response:

Cancel a disk's soft-eject operation (DiskSoftEjectCancel)

Stop the relocation tasks for the disk and mark it as usable again. After this operation data will be moved back to the disk.

  1. Request:
  2. Response:

Set a disk's description (DiskSetDescription)

  1. Request:
  2. Response:

List all the active requests on a disk (DiskActiveRequests)

List detailed information about the requests being currently processed on the given disk.

  1. Request:
  2. Response:

Start scrubbing process (DiskScrubStart)

  1. Request:
  2. Response:

Pause scrubbing process (DiskScrubPause)

  1. Request:
  2. Response:

Continue paused scrubbing process (DiskScrubContinue)

  1. Request:
  2. Response:

Retrim disk (DiskRetrim)

  1. Request:
  2. Response:

Volumes

List all volumes (VolumesList)

Return configuration information about all the volumes.

  1. Request:
  2. Response:

Get volume and snapshot status and stored size (VolumesGetStatus)

Return the status and stored size of each volume and snapshot.

  1. Request:
  2. Response:

Get volume and snapshot status (VolumesGetStatusQuick)

Return the status of each volume and snapshot.

  1. Request:
  2. Response:

List total used space by each volume (VolumesSpace)

List estimated total virtual space used by each volume.

  1. Request:
  2. Response:

List a single volume (Volume)

Same as VolumeList but only return information about a given volume.

  1. Request:
  2. Response:

Describe a volume (VolumeDescribe)

Return detailed information about the distribution of the volume's data on the disks.

  1. Request:
  2. Response:

Get volume info (VolumeGetInfo)

Return general information about the distribution of the volume's data on the disks.

  1. Request:
  2. Response:

List the parent snapshots of a volume (VolumeListSnapshots)

List a volume's parent snapshots in the same format as VolumeList

  1. Request:
  2. Response:

Create a new volume (VolumeCreate)

  1. Request:
  2. Response:

Update a volume (VolumeUpdate)

Alter the configuration of an existing volume.

  1. Request:
  2. Response:

Freeze a volume (VolumeFreeze)

Convert the volume to a snapshot

  1. Request:
  2. Response:

Rebase a volume (VolumeRebase)

Change the parent of the volume by choosing from the ones higher in the hierarchy or by rebasing it to no parent.

  1. Request:
  2. Response:

Abandon disk (VolumeAbandonDisk)

  1. Request:
  2. Response:

Delete a volume (VolumeDelete)

  1. Request:
  2. Response:

Backup a volume to a remote location (VolumeBackup)

  1. Request:
  2. Response:

Backup a group of volumes to a remote location (VolumesGroupBackup)

  1. Request:
  2. Response:

Move a volume from the local cluster to a remote cluster (VolumeMoveToRemote)

  1. Request:
  2. Response:

Export a volume to another cluster, so it can be attached when allowRemoteExports is true (VolumeExport)

  1. Request:
  2. Response:

Move the volume from its current remote cluster to the local one. Noop if already here. Multicluster only call (VolumeAcquire)

  1. Request:
  2. Response:

Create a volume from a snapshot from a remote location (VolumeFromRemote)

  1. Request:
  2. Response:

Revert a volume to a snapshot discarding all its current data. (VolumeRevert)

Revert volume to a snapshot discarding all its current data. If the volume is attached, after the revert it will get 2 links in /dev/storpool-byid/ - the original autogenerated name (a.k.a. StorPool globalId that the volume was initially created with) and the actual current globalId of the volume (after the revert).

  1. Request:
  2. Response:

Snapshots

Snapshots in their essence are very similar to volumes in the sense that many operations supported by volumes are also supported by snapshots (all except write-related operations). They can not be modified and play an essential role in copy-on-write scenarios.

List all snapshots (SnapshotsList)

List all the snapshots in the cluster in the same format as VolumeList.

  1. Request:
  2. Response:

List snapshots space estimations (SnapshotsSpace)

List estimated virtual space used by each snapshot.

  1. Request:
  2. Response:

List a single snapshot (Snapshot)

Same as SnapshotList but only return information about a given snapshot.

  1. Request:
  2. Response:

Describe a snapshot (SnapshotDescribe)

Return detailed information about the distribution of the snapshot's data on the disks.

  1. Request:
  2. Response:

Get snapshot info (SnapshotGetInfo)

Return general information about the distribution of the snapshot's data on the disks.

  1. Request:
  2. Response:

Snapshot a volume (VolumeSnapshot)

Create a snapshot of the given volume; the snapshot becomes the parent of the volume.

  1. Request:
  2. Response:

Update a snapshot (SnapshotUpdate)

Alter the configuration of an existing snapshot.

  1. Request:
  2. Response:

Rebase a snapshot (SnapshotRebase)

Change the parent of the snapshot by choosing from the ones higher in the hierarchy or by rebasing it to no parent.

  1. Request:
  2. Response:

Abandon disk (VolumeAbandonDisk)

  1. Request:
  2. Response:

Delete a snapshot (SnapshotDelete)

  1. Request:
  2. Response:

Delete a snapshot by global id (SnapshotDeleteById)

  1. Request:
  2. Response:

Create consistent snapshots of a group of volumes (VolumesGroupSnapshot)

  1. Request:
  2. Response:

Copy a snapshot from a remote location (SnapshotFromRemote)

  1. Request:
  2. Response:

Move a snapshot from the local cluster to a remote cluster (SnapshotMoveToRemote)

  1. Request:
  2. Response:

Allow a remote location to access a local snapshot (SnapshotExport)

  1. Request:
  2. Response:

Revoke a remote location's access to a local snapshot (SnapshotUnexport)

  1. Request:
  2. Response:

List exported snapshots (ExportsList)

  1. Request:
  2. Response:

List exported volumes (VolumeExportsList)

  1. Request:
  2. Response:

List the available remote snapshots (SnapshotsRemoteList)

  1. Request:
  2. Response:

List the available remote volumes (VolumesRemoteList)

  1. Request:
  2. Response:

Instruct the remote location that we will no longer use those snapshots (SnapshotsRemoteUnexport)

  1. Request:
  2. Response:

Attachments

List all attachments (AttachmentsList)

List the volumes and snapshots currently attached to clients along with the read/write rights of each attachment.

  1. Request:
  2. Response:

Reassign volumes and/or snapshots (VolumesReassign)

Perform bulk attach/detach and attachment rights modification.

  1. Request:
  2. Response:

Reassign volumes and/or snapshots with confirmation from the clients (VolumesReassignWait)

Perform bulk attach/detach and attachment rights modification and waits for the clients to catch up.

  1. Request:
  2. Response:

Placement Groups

Placement groups provide a way to specify the disks on which a volume's data should be stored.

List all placement groups (PlacementGroupsList)

  1. Request:
  2. Response:

Describe a single placement group (PlacementGroupDescribe)

Same as PlacementGroupsList but only return information about a given group.

  1. Request:
  2. Response:

Create and/or update a placement group (PlacementGroupUpdate)

If a group by the specified name does not exist, it will be created.

  1. Request:
  2. Response:

Delete a placement group (PlacementGroupDelete)

  1. Request:
  2. Response:

List all fault sets (FaultSetsList)

  1. Request:
  2. Response:

List the properties of a volume allocation group (VagList)

  1. Request:
  2. Response:

Update the allocation group of a volume (VolumeUpdateVag)

  1. Request:
  2. Response:

Update the allocation group of a snapshot (SnapshotUpdateVag)

  1. Request:
  2. Response:

Update the targets of a volume allocation group (VagUpdate)

  1. Request:
  2. Response:

Volume Templates

Templates are a set of rules used for creating many similar volumes.

List all volume templates (VolumeTemplatesList)

  1. Request:
  2. Response:

List the status of all volume templates (VolumeTemplatesStatus)

  1. Request:
  2. Response:

Describe a single volume template (VolumeTemplateDescribe)

Same as VolumeTemplatesList but only return information about a given template.

  1. Request:
  2. Response:

Create a volume template (VolumeTemplateCreate)

  1. Request:
  2. Response:

Update a volume template (VolumeTemplateUpdate)

Alter the configuration of an existing volume template.

  1. Request:
  2. Response:

Delete a volume template (VolumeTemplateDelete)

  1. Request:
  2. Response:

Volume Relocator

This is a service that moves data when needed, e.g. when removing or adding disks.

Get the relocator's status (VolumeRelocatorStatus)

  1. Request:
  2. Response:

List total per disk relocation estimates (VolumeRelocatorDisksList)

  1. Request:
  2. Response:

List per disk relocation estimates for a given volume (VolumeRelocatorVolumeDisks)

  1. Request:
  2. Response:

List per disk relocation estimates for a given snapshot (VolumeRelocatorSnapshotDisks)

  1. Request:
  2. Response:

Balancer

This is a service that decides when it is a good time to move data.

Get the balancer's status (VolumeBalancerStatus)

  1. Request:
  2. Response:

Set the balancer's status (VolumeBalancerStatus)

  1. Request:
  2. Response:

List balancer volume and snapshot status (VolumeBalancerVolumesStatus)

Show which volumes and snapshots will be reallocated by the current balancer run.

  1. Request:
  2. Response:

List total per disk rebalancing estimates (VolumeBalancerDisksList)

  1. Request:
  2. Response:

List per disk rebalancing estimated for a given volume (VolumeBalancerVolumeDisks)

  1. Request:
  2. Response:

List per disk rebalancing estimates for a given snapshot (VolumeBalancerSnapshotDisks)

  1. Request:
  2. Response:

Get the disk sets computed by the balancer for a given volume (VolumeBalancerVolumeDiskSets)

  1. Request:
  2. Response:

Get the disk sets computed by the balancer for a given snapshot (VolumeBalancerSnapshotDiskSets)

  1. Request:
  2. Response:

iSCSI

Get the StorPool iSCSI configuration (iSCSIConfig)

  1. Request:
  2. Response:

Modify the StorPool iSCSI configuration (iSCSIConfig)

  1. Request:
  2. Response:

Query iSCSI controllers for active sessions (iSCSISessionsInfo)

  1. Request:
  2. Response:

Query iSCSI controllers for interfaces state (iSCSInterfacesInfo)

  1. Request:
  2. Response:

Remote

List the registered remote locations (LocationsList)

  1. Request:
  2. Response:

Register a new remote location (LocationAdd)

  1. Request:
  2. Response:

Remove a remote location (LocationRemove)

  1. Request:
  2. Response:

Update a remote location (LocationUpdate)

  1. Request:
  2. Response:

Rename a remote location (LocationRename)

  1. Request:
  2. Response:

List the registered remote clusters (ClustersList)

  1. Request:
  2. Response:

Register a new remote cluster (ClusterAdd)

  1. Request:
  2. Response:

Remove a remote cluster (ClusterRemove)

  1. Request:
  2. Response:

Rename a remote cluster (ClusterRename)

  1. Request:
  2. Response:

List the registered remote bridges (RemoteBridgesList)

  1. Request:
  2. Response:

Register a new remote bridge (RemoteBridgeAdd)

  1. Request:
  2. Response:

Deregister a remote bridge (RemoteBridgeRemove)

  1. Request:
  2. Response:

Nodes in maintenance

List the nodes in maintenance (MaintenanceList)

  1. Request:
  2. Response:

Set node in maintenance (MaintenanceSet)

  1. Request:
  2. Response:

Complete node's maintenance. (MaintenanceComplete)

  1. Request:
  2. Response:

Key Value Store

List all created key value buckets (KV)

  1. Request:
  2. Response:

List a complete key value bucket (KV)

  1. Request:
  2. Response:

List a specific key-value pair from a specific bucket (KV)

  1. Request:
  2. Response:

Create a new bucket (KV)

  1. Request:
  2. Response:

Delete a bucket (KV)

  1. Request:
  2. Response:

Update a bucket (KV)

  1. Request:
  2. Response:

StorPool Features

Show information about StorPool features (Features)

  1. Request:
  2. Response:

Data Types

"":The constant value "".
"-":The constant value "-".
"all":The constant value "all".
"diskExpected":The constant value "diskExpected".
"diskState":The constant value "diskState".
"parent":The constant value "parent".
"request":The constant value "request".
-1:The constant value -1.
0:The constant value 0.
4294967294:The constant value 4294967294.
AttachmentPos:integer, 0 <= value <= 1023
AttachmentRights:One of {"rw", "ro"}
BalancerCommand:One of {"start", "stop", "commit"}
BalancerStatus:One of {"nothing to do", "blocked", "waiting", "working", "ready", "committing"}
Bandwidth:a positive integer or '-' for unlimited
BeaconClusterStatus:One of {"CNODE_DOWN", "CNODE_DAMPING", "CNODE_UP"}
BeaconNodeStatus:One of {"NODE_DOWN", "NODE_UP"}
BridgeId:integer, 1 <= value <= 4095
BridgeStatus:One of {"running", "joining", "down"}
ClientID:integer, 1 <= value <= 4095
ClientStatus:One of {"running", "down"}
ClusterName:a string(64), matching ^\#?[A-Za-z0-9_\-.:]+$, except {}
ClusterStatus:One of {"running", "waiting", "down"}
DeleteBlocked:One of {"not blocked", "pending", "rebasing", "flushing", "volume not found", "generation mismatch", "disk down", "multiple children", "peer down", "write not completed", "recovering from remote", "parent recovering from remote", "moving to remote", "unknown", "ec snapshot"}
DematerializationStatus:One of {"pending", "allObjectsUsed", "complete", "blockedRelocate", "blockedParentRelocate", "blockedParentRemoving", "blockedParentDifferentVag", "destroyed", "rebased"}
DiskDescritpion:string, regex ^[A-Za-z0-9_\- ]{,30}$
DiskID:integer, 0 <= value <= 4095
DiskSoftEjectStatus:One of {"on", "off", "paused"}
DiskState:One of {"DISK_NONE", "DISK_UNKNOWN", "DISK_DATA_INITIALIZING", "DISK_DATA_PENDING_INSERT", "DISK_DATA", "DISK_DATA_STOPPING", "DISK_DATA_FLUSH_WBC", "DISK_DATA_STOPPED", "DISK_STOPPING", "DISK_EJECTED", "DISK_JOURNAL", "DISK_JOURNAL_PENDING"}
GUID:string, regex ^0x[0-9a-fA-F]{2,16}$
Global Location Id:string, regex [a-z0-9]+$
Global Volume Id:string, regex [a-z0-9]+\.[a-z0-9]+\.[a-z0-9]+$
IOPS:a positive integer or '-' for unlimited
ISCSIId:integer, 0 <= value <= 4095
Id:One of {"bridge", "server", "iSCSI", "client", "unknown"}
KvsKeyName:a string with a max length of 1023
KvsName:a string(1023), matching ^\#?[A-Za-z0-9_\-.:]+$, except {}
LastState:One of {"up", "down"}
LimitType:One of {"total", "perGiB"}
MAC Address:string, regex ^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$
MgmtID:integer, 1 <= value <= 4095
MultiClusterState:One of {"owner", "ownerExported", "slaveCopy", "clusterLocal", "clusterLocalExported", "clusterLocalAutoReconcile", "clusterLocalAutoReconcileExported"}
NetID:integer, 0 <= value <= 3
NodeID:integer, 0 <= value <= 63
ObjectState:ObjectState, enumeration from 0 to 9
OnAttached:One of {"fail", "detach", "detachForce", "export"}
OverrideId:a positive integer or '-' for unlimited
PeerID:integer, 0 <= value <= 65535
PeerStatus:One of {"up", "down"}
PlacementGroupName:a string(128), matching ^[A-Za-z0-9_\-]+$, except {list}
RdmaState:One of {"Idle", "GidReceived", "Connecting", "Connected", "pendingError", "Error"}
RelocatorStatus:One of {"on", "off", "blocked"}
RemoteClusterName:a string(64), matching ^\#?[A-Za-z0-9_\-.:]+$, except {list}
RemoteLocationName:a string(64), matching ^\#?[A-Za-z0-9_\-.:]+$, except {list}
Replication:integer, 1 <= value <= 3
RequestOp:One of {"read", "write", "merge", "system", "entries flush", "#bad_state", "#bad_drOp", "idle", "error recovery", "transaction", "data recovery"}
ServerID:integer, 1 <= value <= 32767
ServerStatus:One of {"running", "waiting", "booting", "down"}
Size:a positive integer divisible by 512
SizeAdd:a positive integer divisible by 512
SnapshotName:a string(200), matching ^\*?[A-Za-z0-9_\-.:@]+$, except {list, status}
SnapshotNameOrGlobalId:a string(200), matching ^\*?[A-Za-z0-9_\-.:@]+$|^~[a-z0-9]+\.[a-z0-9]+\.[a-z0-9]+$, except {list, status}
Status:One of {"peer_down", "peerDone", "timeout", "streamNotConnected", "streamOverfilled", "invalidResponse"}
Subcluster Id:string, regex [a-z0-9]+$
TargetsCount:One of {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768}
VagId:integer, 1 <= value <= 18446744073709551616
VolumeCurrentStatus:One of {"up", "up soon", "data lost", "down"}
VolumeName:a string(200), matching ^\#?[A-Za-z0-9_\-.:]+$, except {list, status}
VolumeNameOrGlobalId:a string(200), matching ^\#?[A-Za-z0-9_\-.:]+$|^~[a-z0-9]+\.[a-z0-9]+\.[a-z0-9]+$, except {list, status}
VolumeTagName:a string(200), matching ^[A-Za-z0-9_\-.:]+$, except {}
VolumeTagValue:a string(200), matching ^[A-Za-z0-9_\-.:]*$, except {}
VolumeTemplateName:a string(200), matching ^[A-Za-z0-9_\-]+$, except {list}
bool:true or false.
bool, default=false:A value of type bool. Default value = False.
client status:One of {"ok", "updating", "down"}
float:A floating point number.
iSCSI Name:string, regex ^[a-z0-9\-.:]+$
iSCSI Portal Group Name:string, regex ^[A-Za-z0-9_\-.:]+$
int:An integer value.
iscsiTargetId:integer, 1 <= value <= 4095
iscsiTargetStatus:One of {"running", "joining", "down"}
mc:One of {"backup", "user"}
move:One of {"export"}
null:The constant value null.
str, default="clusters":A value of type str. Default value = clusters.
str, default="exports":A value of type str. Default value = exports.
str, default="location":A value of type str. Default value = location.
str, default="locations":A value of type str. Default value = locations.
str, default="remoteBridges":A value of type str. Default value = remoteBridges.
str, default="snapshots":A value of type str. Default value = snapshots.
str, default="volumes":A value of type str. Default value = volumes.
string:A string value.
true:The constant value true.