Blockbridge REST API

Table Of Contents

Blockbridge REST API

Document last updated 2024-11-27T08:55:15

This document describes the Blockbridge REST API.

The Blockbridge REST API allows you to incorporate secure storage provisioning directly into your services. You can use the API to provision storage of a certain media type like SSD or 10k SAS, reliability (RAID-6, SATA, etc.), or from a certain availability zone, even a certain rack. With the API, you can take snapshots, make thin clones, and initiate backups to an object store like Amazon S3 or OpenStack Swift.

This document begins with a brief overview of concepts and terminology, how to authenticate to the API, and how to manage application authorizations. This is followed by detailed documentation of the API resources.

Status Test

Before you begin, let's ensure that your REST API endpoint is operational. Use curl to connect to the Blockbridge REST API of your management node using HTTPS. Request the resource /api/status.

$ curl -ik https://mgmt-node/api/status
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 29
Server: Goliath
Date: Mon, 21 Sep 2015 21:57:56 GMT

{"status":200,"message":"ok"}

Curl

This document contains numerous examples that use the curl command to talk to the API. Replace 'mgmt-node' in the examples with your own Blockbridge management node hostname. These example commands may also lack authentication information that you'll need to make your experimentation work. You can use HTTP basic authentication, as describe below, with the -u command-line option to get going as quickly as possible.

Authentication

Nearly every Blockbridge API call must be executed as an authenticated user. There are a few ways to authenticate to the Blockbridge API.

Basic Authentication

You can use HTTP basic authentication, supplying the username and password with each request.

$ curl -iku user:pass https://mgmt-node/api/status/authorization
HTTP/1.1 200 OK
...

{"type":"basic_creds","serial":"USR1B6B194C40626410", ... }

OAuth 2 Token Generation

Obtain a reusable, time-limited secure access token. By default, the token expires in one hour.

POST /api/oauth2/token

The username and password are supplied as arguments.

$ curl -ik -X POST -H 'Content-Type: application/json' -d '{"grant_type":"password", "username":"user", "password":pass"}' https://mgmt-node/api/oauth2/token 
HTTP/1.1 201 Created

{
    "access_token": "0/wsu/1OR2g5cSjDWC4Kxx5LcrRhB21Hav74XAaRtdXKLSyr/U5HaAhw", 
    "token_type": "Bearer", 
    "expires_in": 3599, 
    "user": {
        "account": {
            "serial": "ACT076BD94C40626440", 
            "name": "system", 
            "id": "account:1:3"
        }, 
        "id": "session:17:3", 
        "user": {
            "serial": "USR1B6B894C40626440", 
            "name": "system", 
            "id": "user_profile:1:3"
        }
    }
}

In the response JSON, pull the token from the access_token field.

OAuth 2 Token Submission

Submit the access token in the HTTP header of each request, as Authorization: Bearer <token>.

$ curl -ik -H "Authorization: Bearer 1/wSijaLxU7sLhOeSDnAluOFRFdQ51rv9yX2s6/aGJksGBKKNovFTtgw" https://mgmt-node/api/status/authorization/
HTTP/1.1 200 OK
...

{
    "account": {
        "serial": "ACT076BD94C40626460", 
        "name": "user"
    }, 
    "created_at": "2015-09-22T11:11:26.000-04:00", 
    ...
}

Generate a Persistent Access Token

For long-term use, create a persistent access token that never expires. These long-lived tokens are managed using the authorization resource. A user may have more than one, and they may be individually revoked.

$ curl -iku user:pass -d '' https://mgmt-node/api/authorization
HTTP/1.1 201 Created
...

{
    "app_id": null, 
    "access_type": "online", 
    "restrict": "auth", 
    "lifetime": null, 
    "serial": "ATH476B094C40626410", 
    "id": "authz:4:3", 
    "user_id": "user_profile:4:3", 
    "access_token_digest": "DXglP+STaihfPyNC2Mo5g2bfVzsXEryOLSv97MvmX9o", 
    "expires_in": null, 
    "access_token": "1/wSijaLxU7sLhOeSDnAluOFRFdQ51rv9yX2s6/aGJksGBKKNovFTtgw", 
    "created_at": "2015-09-22T11:11:26.744-04:00", 
}

Two-Factor Authentication

Each user account has individual control over its two-factor authentication parameters. When enabled, a basic authentication request will fail with 401 Unauthorized and X-Blockbridge-OTP: required.

$ curl -iku user:pass  https://mgmt-node/api/status/authorization/ 
HTTP/1.1 401 Unauthorized
X-Blockbridge-OTP: required

To continue submitting requests for this user, you must generate a time-limited OAuth2 token, supplying the username and password inside the JSON body of the request, along with the appropriate OTP in the request header:

$ curl -ik -X POST -H 'X-Blockbridge-OTP: 609179' -H 'Content-Type: application/json' -d '{"grant_type":"password", "username":"user", "password":"pass"}' https://mgmt-node/api/oauth2/token 
HTTP/1.1 201 Created
...

Schema

The Blockbridge API is described by a machine-readable JSON schema. Retrieve the schema directly from your management node with the following command line:

curl https://mgmt-node/schema/

Methods

The API uses a standard set of HTTP verbs for RESTful services.

MethodUsage
GETUsing the GET method, a client is able to retrieve detailed information about any object in the system. Clients can enumerate objects of each resource type. And, they can obtain sets of user events and statistics for each object.
DELETERemoves an object from the system. DELETE is idempotent, and multiple attempts to remove an object will receive the same result.
PATCHUpdates an objects configuration. Blockbridge typically uses PATCH to effect partial updates, as there are very few cases where an object is replaced wholesale.
POSTCreates a new object.
PUTReplaces an object's configuration. These few cases are called out in the documentation to follow.

Parameters

Submit JSON-encoded parameters in the request body. Actions may have both required and optional parameters, as defined by the schema. Some GET requests have URL-encoded parameters.

Request Status

The HTTP status in the response indicates whether a request succeeded or failed. Successful requests receive a JSON-formatted document in response, as described by the schema.

Success

StatusDescription
200 OKrequest succeeded
201 Createdresource created
204 No Contentrequest succeeded, but no response body returned

Error Responses

When a request fails, the HTTP status code indicates the reason for the failure. Where applicable, JSON-encoded data in the response body offers additional clarification. There are two classes of errors. Client errors result from malformed requests and should be addressed by the client. Blockbridge errors result from problems on the server side.

Client Errors

StatusDescription
400 Bad Requestinvalid request format
401 Unauthorizedauthentication required
403 Forbiddenaccess denied to specified resource
404 Not Foundresource not found
405 Method Not Allowedmethod not supported by resource
410 Resource Deletedresource has been deleted

Blockbridge Errors

StatusDescription
500 Internal Server Errorunexpected server failure, internal error
503 Service Unavailableserver busy, try again later

Validation Failure

A request that fails with HTTP status 400 (Bad Request) is likely due to a validation failure. The response body contains detailed information on one or more fields that are in error.

NameTypeDescriptionExample
messagestringhuman-readable error messageparameter validation failure
typestringerror typevalidation
errorsarraylist of fields and corresponding errors
statusintegerHTTP status code400

Each element in the errors array has the schema shown below

Validation Failure Error

NameTypeDescriptionExample
typestringfailure typemissing
fieldstringJSON field name/capacity
msgstringhuman-readable error messagemust be present

Example

Attempt to create a virtual disk, but neglect to include its capacity. The request fails with HTTP status 400, and the response indicates that the /capacity field is missing.

$ curl -iku system:system -X POST -H 'Content-Type: application/json' -d '{"vss_id":"VSS186B994C40626440"}' https://mgmt-node/api/vdisk/
HTTP/1.1 400 Bad Request
{
    "status": 400, 
    "message": "parameter validation failure", 
    "errors": [
        {
            "msg": "must be present", 
            "field": "/capacity", 
            "type": "missing"
        }
    ], 
    "type": "validation"
}

Account

Blockbridge is a secure multi-tenant storage system. Each tenant has an Account which is isolated from every other tenant Account. All of the tenant's storage, configuration data, credentials, audit history, and statistics - anything that could be considered private data - is inaccessible to other Accounts.

Accounts have one or more Users, who are each assigned a set of permissions that control the actions they may perform. One user may be simply an observer: able to query state, but unable to change anything. Another user may be able to provision services, but not remove any existing ones. Another is permitted to manage crypto keys.

Lastly, the Account object contains contact information for the primary account holder.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
ctimeintegeraccount create time
Range: 0 <= value
mtimeintegeraccount last modified time
Range: 0 <= value
idp:idstringno documentation
idp:labelstringno documentation
idp:typestringidentity provider type
one of:"internal" or "openstack"
serialstringserial number
usage_idstringaccount_usage id
disabledbooleanaccount is disabled
namestringaccount name
primary_contact:first_namestringFirst Name
default: ""
Length: 0..255
primary_contact:last_namestringLast Name
default: ""
Length: 0..255
primary_contact:companystringcompany name
Length: 0..255
primary_contact:address:addrarrayphysical address lines
primary_contact:address:citystringcity
primary_contact:address:statestringstate
primary_contact:address:zipstringzip code
primary_contact:address:countrystringcountry
default: "US"
primary_contact:phone:numberstringPhone number
Length: 0..24
primary_contact:phone:validbooleanphone number has been verified for SMS
primary_contact:phone:tokenstringSMS verification token
primary_contact:email:addrstringemail address
Length: 0..255
primary_contact:email:validbooleanaddress has been verified
primary_contact:email:tokenstringaddress verification token
billing_contactnullable objectbilling contact information
billing_contact:first_namestringFirst Name
default: ""
Length: 0..255
billing_contact:last_namestringLast Name
default: ""
Length: 0..255
billing_contact:companystringcompany name
Length: 0..255
billing_contact:address:addrarrayphysical address lines
billing_contact:address:citystringcity
billing_contact:address:statestringstate
billing_contact:address:zipstringzip code
billing_contact:address:countrystringcountry
default: "US"
billing_contact:phone:numberstringPhone number
Length: 0..24
billing_contact:phone:validbooleanphone number has been verified for SMS
billing_contact:phone:tokenstringSMS verification token
billing_contact:email:addrstringemail address
Length: 0..255
billing_contact:email:validbooleanaddress has been verified
billing_contact:email:tokenstringaddress verification token
admin_profile_idstringaccount administrative user
limits:vss_numnullable integernumber of virtual storage services
limits:size_reserve_totalnullable integermaximum size of storage
provisioning:size_reserve_maxnullable integermaximum size reserve of a single virtual storage service
provisioning:iops_reserve_maxnullable integermaximum iops reserve of a single virtual storage service
provisioning:tags_includearraytags included
default: []
provisioning:tags_excludearraytags excluded
default: []
provisioning:tags_permitnullable arraytags permitted
provisioning:tags_permitnullable arraytags permitted

Account Info

Retrieve an existing account.

GET /account/{account_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/account/account:10:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:55 GMT
Server: Goliath
ETag: "b79489b7c6d35e1095871de7ebd93436"
Content-Type: application/json
Content-Length: 649
{
  "id": "account:10:10",
  "uuid": "c432e1f5-074d-4ecb-9078-7a5b50574fc0",
  "serial": "ACT0762194C406264FE",
  "evt_qry": "serial=ACT0762194C406264FE",
  "ctime": 1507570012941,
  "mtime": 1507570013202,
  "seq": 1507570013297,
  "status": null,
  "ec": {
    "status": "retrieving",
    "table": null,
    "seq": 1507570012954
  },
  "rec_status": null,
  "usage_id": "account_usage:10:10",
  "name": "account42",
  "primary_contact": {
    "first_name": "",
    "last_name": ""
  },
  "billing_contact": null,
  "admin_profile_id": "user_profile:15:10",
  "disabled": false,
  "limits": {
    "vss_num": 32,
    "size_reserve_total": null
  },
  "provisioning": {
    "size_reserve_max": null,
    "iops_reserve_max": null,
    "tags_include": [

    ],
    "tags_exclude": [

    ],
    "tags_permit": null
  }
}

Account List

Enumerate accounts.

GET /account

Curl Example

$ curl https://mgmt-node/api/account \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:53 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1504
[
  {
    "id": "account:1:10",
    "uuid": "1fb3cea1-0778-4090-a288-d9f7a456f31b",
    "serial": "ACT0762194C40626445",
    "evt_qry": "serial=ACT0762194C40626445",
    "ctime": 1507562835275,
    "mtime": 1507569805914,
    "seq": 1507570010663,
    "status": null,
    "ec": {
      "status": "current",
      "table": {
        "time": 1507570010000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              192,
              226,
              226,
              226
            ],
            "v": "dbg"
          },
          {
            "d": [
              118,
              145,
              145,
              145
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              9,
              10,
              10,
              10
            ],
            "v": "err"
          }
        ]
      },
      "seq": 1507570010663
    },
    "rec_status": null,
    "usage_id": "account_usage:1:10",
    "name": "system",
    "primary_contact": {
      "first_name": "System user",
      "last_name": ""
    },
    "billing_contact": null,
    "admin_profile_id": "user_profile:1:10",
    "disabled": false,
    "limits": {
      "vss_num": null,
      "size_reserve_total": null
    },
    "provisioning": {
      "size_reserve_max": null,
      "iops_reserve_max": null,
      "tags_include": [

      ],
      "tags_exclude": [

      ],
      "tags_permit": null
    }
  },
  {
    "id": "account:10:10",
    "uuid": "c432e1f5-074d-4ecb-9078-7a5b50574fc0",
    "serial": "ACT0762194C406264FE",
    "evt_qry": "serial=ACT0762194C406264FE",
    "ctime": 1507570012941,
    "mtime": 1507570013202,
    "seq": 1507570013297,
    "status": null,
    "ec": {
      "status": "retrieving",
      "table": null,
      "seq": 1507570012954
    },
    "rec_status": null,
    "usage_id": "account_usage:10:10",
    "name": "account42",
    "primary_contact": {
      "first_name": "",
      "last_name": ""
    },
    "billing_contact": null,
    "admin_profile_id": "user_profile:15:10",
    "disabled": false,
    "limits": {
      "vss_num": 32,
      "size_reserve_total": null
    },
    "provisioning": {
      "size_reserve_max": null,
      "iops_reserve_max": null,
      "tags_include": [

      ],
      "tags_exclude": [

      ],
      "tags_permit": null
    }
  }
]

Account Create

Create a new account.

POST /account

Required Parameters

NameTypeDescription
namestringaccount name
Length: 1..64

Optional Parameters

NameTypeDescription
passwordstringpassword to set in primary user profile
Length: 3..∞
permissions:realm:rights:can_switch_userbooleancan SU to lower level user
permissions:realm:rights:manage_node_membershipbooleanaccept or delete nodes from the management network
permissions:realm:rights:manage_accountsbooleancan create or delete other accounts, users and their settings
permissions:realm:rights:view_logsbooleanview administrative logs
permissions:realm:rights:run_admin_tasksbooleanrun realm administrative tasks
permissions:realm:rights:run_testsbooleanrun realm administrative tests
permissions:node:all_realm_scopebooleanapply to all nodes in the realm
default: true
permissions:node:nodesarrayscope permissions to specific nodes
permissions:node:rights:manage_storagebooleanconfigure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networksbooleanconfigure networks
permissions:node:rights:provision_vssbooleanmanually provision virtual storage services
permissions:node:rights:remove_vssbooleanremove virtual storage services
permissions:vss:all_account_scopebooleanapply to all virtual storage services in the account
default: true
permissions:vss:vssesarraylimit scope to specified vsses
permissions:vss:rights:dismiss_tasksbooleandismiss tasks
permissions:vss:rights:update_vssbooleanupdate vss configuration
permissions:vss:rights:remove_vssbooleanremove vss
permissions:vss:rights:set_vss_quotabooleanset vss quota
permissions:vss:rights:manage_internal_disksbooleanmanage internal disks
permissions:vss:rights:manage_external_disksbooleanmanage external disks
permissions:vss:rights:manage_removable_disksbooleanmanage removable disks
permissions:vss:rights:manage_disk_cryptographybooleanmanage disk cryptography
permissions:vss:rights:remove_locked_disksbooleanremove locked disks
permissions:vss:rights:validate_data_integritybooleanvalidate data integrity
permissions:vss:rights:manage_targetsbooleanmanage targets
permissions:vss:rights:manage_profilesbooleanmanage profiles
permissions:vss:rights:manage_secure_access_tokensbooleanmanage secure access tokens
permissions:vss:rights:manage_rulesbooleanmanage rules
permissions:vss:rights:replicate_disksbooleanreplicate disks
permissions:vss:rights:synchronize_disksbooleansynchronize disks
permissions:vss:rights:format_disksbooleanformat disks
permissions:vss:rights:resize_disksbooleanresize disks
permissions:vss:rights:manage_snapshotsbooleanmanage snapshots
permissions:vss:rights:backup_disksbooleanbackup disks
permissions:vss:rights:replicate_and_synchronize_disksbooleanreplicate and synchronize disks (DEPRECATED)
permissions:vss:rights:compress_disksbooleancompress disks
permissions:vss:rights:manage_disk_compressionbooleanmanage disk
permissions:user:rights:manage_usersbooleancreate or delete users in an account
permissions:user:rights:modify_user_contact_settingsbooleanmodify user contact info
permissions:user:rights:reset_user_passwordbooleanreset user password
permissions:user:rights:reset_user_two_factorbooleanreset two factor authentication
permissions:user:rights:manage_authorizationsbooleancreate or delete persistent authorizations
permissions:account:rights:modify_contact_settingsbooleanmodify account contact settings
permissions:account:rights:view_eventsbooleanview events
permissions:account:rights:view_statisticsbooleanview statistics
permissions:account:rights:manage_global_profilesbooleanmanage global profiles
permissions:account:rights:manage_global_secure_access_tokensbooleanmanage global secure access tokens
permissions:account:rights:query_catalogbooleanquery product catalog
permissions:account:rights:provision_vssbooleanprovision vss from catalog
permissions:account:rights:manage_obj_storesbooleanmanage obj stores
permissions:account:rights:read_object_storagebooleanread from object storage
permissions:account:rights:write_object_storagebooleanwrite to object storage
permissions:account:rights:delete_object_storagebooleandelete from object storage
levelintegerprivilege level
access:webbooleanweb access permitted
default: true
access:apibooleanapi access permitted
activatedbooleanuser profile activated
primary_contact:first_namestringFirst Name
default: ""
Length: 0..255
primary_contact:last_namestringLast Name
default: ""
Length: 0..255
primary_contact:companystringcompany name
Length: 0..255
primary_contact:address:addrarrayphysical address lines
primary_contact:address:citystringcity
primary_contact:address:statestringstate
primary_contact:address:zipstringzip code
primary_contact:address:countrystringcountry
default: "US"
primary_contact:phonestringphone number
Length: 0..24
primary_contact:emailemailemail address
Length: 0..128
billing_contact:first_namestringFirst Name
default: ""
Length: 0..255
billing_contact:last_namestringLast Name
default: ""
Length: 0..255
billing_contact:companystringcompany name
Length: 0..255
billing_contact:address:addrarrayphysical address lines
billing_contact:address:citystringcity
billing_contact:address:statestringstate
billing_contact:address:zipstringzip code
billing_contact:address:countrystringcountry
default: "US"
billing_contact:phonestringphone number
Length: 0..24
billing_contact:emailemailemail address
Length: 0..128
limits:vss_numnullable integernumber of virtual storage services
limits:size_reserve_totalnullable integermaximum size of storage
provisioning:size_reserve_maxnullable integermaximum size reserve of a single virtual storage service
provisioning:iops_reserve_maxnullable integermaximum iops reserve of a single virtual storage service
provisioning:tags_includearraytags included
default: []
provisioning:tags_excludearraytags excluded
default: []
provisioning:tags_permitnullable arraytags permitted
provisioning:tags_permitnullable arraytags permitted
uuiduuidaccount UUID
user_uuiduuiduser profile UUID
templatestringaccounte template

Curl Example

$ curl -X POST https://mgmt-node/api/account \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "name": "account42"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:26:52 GMT
Server: Goliath
ETag: "52c9ce267e5b151a1d7e1e6bd8af120d"
Content-Type: application/json
Content-Length: 651
{
  "id": "account:10:10",
  "uuid": "c432e1f5-074d-4ecb-9078-7a5b50574fc0",
  "serial": "ACT0762194C406264FE",
  "evt_qry": "serial=ACT0762194C406264FE",
  "ctime": 1507570012941,
  "mtime": 1507570012942,
  "seq": 1507570012954,
  "status": null,
  "ec": {
    "status": "retrieving",
    "table": null,
    "seq": 1507570012954
  },
  "rec_status": null,
  "usage_id": "account_usage:10:10",
  "name": "account42",
  "primary_contact": {
    "first_name": "",
    "last_name": ""
  },
  "billing_contact": null,
  "admin_profile_id": "user_profile:15:10",
  "disabled": false,
  "limits": {
    "vss_num": null,
    "size_reserve_total": null
  },
  "provisioning": {
    "size_reserve_max": null,
    "iops_reserve_max": null,
    "tags_include": [

    ],
    "tags_exclude": [

    ],
    "tags_permit": null
  }
}

Account Remove

Remove an existing account.

DELETE /account/{account_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/account/account:10:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:38 GMT
Server: Goliath

Account Update

Change the configuration of an existing account.

PATCH /account/{account_id_or_serial}

Optional Parameters

NameTypeDescription
hoststringserver hostname originating request (for url)
primary_contact:first_namestringFirst Name
Length: 0..255
primary_contact:last_namestringLast Name
Length: 0..255
primary_contact:companystringcompany name
Length: 0..255
primary_contact:address:addrarrayphysical address lines
primary_contact:address:citystringcity
primary_contact:address:statestringstate
primary_contact:address:zipstringzip code
primary_contact:address:countrystringcountry
primary_contact:phonestringphone number
Length: 0..24
primary_contact:emailemailemail address
Length: 0..128
billing_contact:first_namestringFirst Name
Length: 0..255
billing_contact:last_namestringLast Name
Length: 0..255
billing_contact:companystringcompany name
Length: 0..255
billing_contact:address:addrarrayphysical address lines
billing_contact:address:citystringcity
billing_contact:address:statestringstate
billing_contact:address:zipstringzip code
billing_contact:address:countrystringcountry
billing_contact:phonestringphone number
Length: 0..24
billing_contact:emailemailemail address
Length: 0..128
passwordstringpassword of primary user profile
Length: 3..∞
limits:vss_numnullable integernumber of virtual storage services
limits:size_reserve_totalnullable integermaximum size of storage
provisioning:size_reserve_maxnullable integermaximum size reserve of a single virtual storage service
provisioning:iops_reserve_maxnullable integermaximum iops reserve of a single virtual storage service
provisioning:tags_includearraytags included
provisioning:tags_excludearraytags excluded
provisioning:tags_permitnullable arraytags permitted
provisioning:tags_permitnullable arraytags permitted

Curl Example

$ curl -X PATCH https://mgmt-node/api/account/account:10:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "limits": {
    "vss_num": 32
  }
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:53 GMT
Server: Goliath
ETag: "b79489b7c6d35e1095871de7ebd93436"
Content-Type: application/json
Content-Length: 649
{
  "id": "account:10:10",
  "uuid": "c432e1f5-074d-4ecb-9078-7a5b50574fc0",
  "serial": "ACT0762194C406264FE",
  "evt_qry": "serial=ACT0762194C406264FE",
  "ctime": 1507570012941,
  "mtime": 1507570013202,
  "seq": 1507570013297,
  "status": null,
  "ec": {
    "status": "retrieving",
    "table": null,
    "seq": 1507570012954
  },
  "rec_status": null,
  "usage_id": "account_usage:10:10",
  "name": "account42",
  "primary_contact": {
    "first_name": "",
    "last_name": ""
  },
  "billing_contact": null,
  "admin_profile_id": "user_profile:15:10",
  "disabled": false,
  "limits": {
    "vss_num": 32,
    "size_reserve_total": null
  },
  "provisioning": {
    "size_reserve_max": null,
    "iops_reserve_max": null,
    "tags_include": [

    ],
    "tags_exclude": [

    ],
    "tags_permit": null
  }
}

Account Usage

Display usage for an existing account.

GET /account/{account_id_or_serial}/usage

Curl Example

$ curl https://mgmt-node/api/account/account:10:10/usage \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:53 GMT
Server: Goliath
ETag: "13f732476b4b2e858afe17d3f88a9350"
Content-Type: application/json
Content-Length: 150
{
  "size_reserve": 0,
  "iops_reserve": 0,
  "vss_num": 0,
  "vdisk_num": 0,
  "clones_num": 0,
  "repl_num": 0,
  "snapshot_num": 0,
  "target_num": 0,
  "profile_num": 0,
  "user_num": 1
}

User Profile

An Account has one or more Users, who are permitted to administer and consume storage according to various defined roles. Each User has a profile object that has the User's name, email address, password and two-factor authentication information for the API and web application.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
ctimeintegeruser profile create time
Range: 0 <= value
mtimeintegeruser profile last modified time
Range: 0 <= value
email_notifybooleanemail notifications enabled
emailnullable emailemail address
Length: 0..128
email_verifiedbooleanemail address has been verified
sms_notifybooleanSMS notifications enabled
smsnullable objectnotification number for SMS
sms:numberstringPhone number
Length: 0..24
sms:validbooleanphone number has been verified for SMS
sms:tokenstringSMS verification token
loginstringusername
password_setbooleanis password non-null?
allow_subooleanadmin allowed to SU to this user
levelintegeruser privilege level
timezonestringtimezone
one of:"local"
activatedbooleanuser profile activated
idp:idstringno documentation
idp:labelstringno documentation
idp:typestringidentity provider type
one of:"internal" or "openstack"
account_adminbooleanuser has account-wide administrative control
two_factor:authstringtwo-factor authentication type
one of:"none" or "yubikey" or "google"
two_factor:yubikey_idstringyubikey OTP for binding unique yubikey to profile
two_factor:security_emailnullable objectsecurity email address
two_factor:security_email:addremailsecurity email address
Length: 0..128
two_factor:security_email:verifiedbooleansecurity email address has been verified
two_factor:security_email:bouncebooleanemail is bouncing to security_email_addr
permissions:realm:rights:can_switch_userbooleancan SU to lower level user
permissions:realm:rights:manage_node_membershipbooleanaccept or delete nodes from the management network
permissions:realm:rights:manage_accountsbooleancan create or delete other accounts, users and their settings
permissions:realm:rights:view_logsbooleanview administrative logs
permissions:realm:rights:run_admin_tasksbooleanrun realm administrative tasks
permissions:realm:rights:run_testsbooleanrun realm administrative tests
permissions:node:all_realm_scopebooleanapply to all nodes in the realm
permissions:node:nodesarrayscope permissions to specific nodes
permissions:node:rights:manage_storagebooleanconfigure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networksbooleanconfigure networks
permissions:node:rights:provision_vssbooleanmanually provision virtual storage services
permissions:node:rights:remove_vssbooleanremove virtual storage services
permissions:vss:all_account_scopebooleanapply to all virtual storage services in the account
permissions:vss:vssesarraylimit scope to specified vsses
permissions:vss:rights:dismiss_tasksbooleandismiss tasks
permissions:vss:rights:update_vssbooleanupdate vss configuration
permissions:vss:rights:remove_vssbooleanremove vss
permissions:vss:rights:set_vss_quotabooleanset vss quota
permissions:vss:rights:manage_internal_disksbooleanmanage internal disks
permissions:vss:rights:manage_external_disksbooleanmanage external disks
permissions:vss:rights:manage_removable_disksbooleanmanage removable disks
permissions:vss:rights:manage_disk_cryptographybooleanmanage disk cryptography
permissions:vss:rights:remove_locked_disksbooleanremove locked disks
permissions:vss:rights:validate_data_integritybooleanvalidate data integrity
permissions:vss:rights:manage_targetsbooleanmanage targets
permissions:vss:rights:manage_profilesbooleanmanage profiles
permissions:vss:rights:manage_secure_access_tokensbooleanmanage secure access tokens
permissions:vss:rights:manage_rulesbooleanmanage rules
permissions:vss:rights:replicate_disksbooleanreplicate disks
permissions:vss:rights:synchronize_disksbooleansynchronize disks
permissions:vss:rights:format_disksbooleanformat disks
permissions:vss:rights:resize_disksbooleanresize disks
permissions:vss:rights:manage_snapshotsbooleanmanage snapshots
permissions:vss:rights:backup_disksbooleanbackup disks
permissions:vss:rights:replicate_and_synchronize_disksbooleanreplicate and synchronize disks (DEPRECATED)
permissions:vss:rights:compress_disksbooleancompress disks
permissions:vss:rights:manage_disk_compressionbooleanmanage disk
permissions:user:rights:manage_usersbooleancreate or delete users in an account
permissions:user:rights:modify_user_contact_settingsbooleanmodify user contact info
permissions:user:rights:reset_user_passwordbooleanreset user password
permissions:user:rights:reset_user_two_factorbooleanreset two factor authentication
permissions:user:rights:manage_authorizationsbooleancreate or delete persistent authorizations
permissions:account:rights:modify_contact_settingsbooleanmodify account contact settings
permissions:account:rights:view_eventsbooleanview events
permissions:account:rights:view_statisticsbooleanview statistics
permissions:account:rights:manage_global_profilesbooleanmanage global profiles
permissions:account:rights:manage_global_secure_access_tokensbooleanmanage global secure access tokens
permissions:account:rights:query_catalogbooleanquery product catalog
permissions:account:rights:provision_vssbooleanprovision vss from catalog
permissions:account:rights:manage_obj_storesbooleanmanage obj stores
permissions:account:rights:read_object_storagebooleanread from object storage
permissions:account:rights:write_object_storagebooleanwrite to object storage
permissions:account:rights:delete_object_storagebooleandelete from object storage
access:webbooleanweb access permitted
access:apibooleanAPI access permitted
app_defaultstringdefault web-ui application
one of:"storage" or "infrastructure" or "account" or "securedrive"
account_idstringaccount ref
serialstringuser profile serial number
xmd_refsarrayarray of extensible metadata reference keys
xrefstringarbitrary string reference
Length: 1..256
sessions/serialstringsession serial number
sessions/idstringsession id
sessions/created_msintegercreation time, in milliseconds since epoch
Range: 0 <= value
sessions/last_msintegertime of last activity on session
Range: 0 <= value
sessions/addrnullable stringsource IP of last request on session
xmd/idstringno documentation
xmd/refstringarbitrary string reference key
Length: 1..256
xmd/mtimeintegerlast modified time of xmd
Range: 0 <= value
xmd/tagsarrayobject tags
xmd/selfbooleanno documentation
xmd/datanullable stringno documentation

User Profile Info

Retrieve an existing user profile.

GET /user-profile/{user_profile_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/user-profile/user_profile:16:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:54 GMT
Server: Goliath
ETag: "14ea1ef48b481c651dfac513537e09a5"
Content-Type: application/json
Content-Length: 2070
{
  "id": "user_profile:16:10",
  "uuid": "11bccdde-f3b6-4b65-a28f-25d0463b1564",
  "serial": "USR1B62194C4062655E",
  "evt_qry": "serial=USR1B62194C4062655E",
  "account_id": "account:10:10",
  "ctime": 1507570014375,
  "mtime": 1507570014709,
  "seq": 1507570014716,
  "label": null,
  "status": null,
  "ec": {
    "table": null,
    "status": "retrieving",
    "seq": 1507570014382
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "login": "account421@account42",
  "activated": false,
  "app_default": "storage",
  "access": {
    "web": true,
    "api": true
  },
  "permissions": {
    "node": {
      "all_realm_scope": false,
      "nodes": [

      ],
      "rights": {
        "manage_storage": false,
        "manage_networks": false,
        "provision_vss": false,
        "remove_vss": false
      }
    },
    "vss": {
      "all_account_scope": true,
      "rights": {
        "dismiss_tasks": true,
        "update_vss": true,
        "remove_vss": true,
        "set_vss_quota": true,
        "manage_internal_disks": true,
        "manage_external_disks": true,
        "manage_removable_disks": true,
        "manage_disk_cryptography": true,
        "remove_locked_disks": true,
        "replicate_disks": true,
        "synchronize_disks": true,
        "format_disks": true,
        "resize_disks": true,
        "backup_disks": true,
        "validate_data_integrity": true,
        "manage_snapshots": true,
        "manage_targets": true,
        "manage_profiles": true,
        "manage_secure_access_tokens": true,
        "manage_rules": true
      }
    },
    "realm": {
      "rights": {
        "can_switch_user": false,
        "manage_node_membership": false,
        "manage_accounts": false,
        "view_logs": false,
        "run_admin_tasks": false,
        "run_tests": false
      }
    },
    "user": {
      "rights": {
        "manage_users": true,
        "modify_user_contact_settings": true,
        "reset_user_password": true,
        "reset_user_two_factor": true,
        "manage_authorizations": true
      }
    },
    "account": {
      "rights": {
        "modify_contact_settings": true,
        "manage_global_profiles": true,
        "manage_global_secure_access_tokens": true,
        "view_events": true,
        "view_statistics": true,
        "query_catalog": true,
        "provision_vss": true,
        "manage_obj_stores": true,
        "read_object_storage": true,
        "write_object_storage": true,
        "delete_object_storage": true
      }
    }
  },
  "account_admin": false,
  "allow_su": false,
  "level": 0,
  "timezone": "local",
  "two_factor": {
    "auth": "none"
  },
  "email": null,
  "email_notify": false,
  "email_verified": false,
  "sms": {
    "number": "XXX-XXX-XXXX",
    "valid": false
  },
  "sms_notify": false,
  "password_set": true,
  "sessions": [

  ]
}

User Profile List

Enumerate user profiles.

GET /user-profile

Curl Example

$ curl https://mgmt-node/api/user-profile \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:54 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 7744
[
  {
    "id": "user_profile:16:10",
    "uuid": "11bccdde-f3b6-4b65-a28f-25d0463b1564",
    "serial": "USR1B62194C4062655E",
    "evt_qry": "serial=USR1B62194C4062655E",
    "account_id": "account:10:10",
    "ctime": 1507570014375,
    "mtime": 1507570014375,
    "seq": 1507570014382,
    "label": null,
    "status": null,
    "ec": {
      "table": null,
      "status": "retrieving",
      "seq": 1507570014382
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "login": "account421@account42",
    "activated": true,
    "app_default": "storage",
    "access": {
      "web": true,
      "api": true
    },
    "permissions": {
      "node": {
        "all_realm_scope": false,
        "nodes": [

        ],
        "rights": {
          "manage_storage": false,
          "manage_networks": false,
          "provision_vss": false,
          "remove_vss": false
        }
      },
      "vss": {
        "all_account_scope": true,
        "rights": {
          "dismiss_tasks": true,
          "update_vss": true,
          "remove_vss": true,
          "set_vss_quota": true,
          "manage_internal_disks": true,
          "manage_external_disks": true,
          "manage_removable_disks": true,
          "manage_disk_cryptography": true,
          "remove_locked_disks": true,
          "replicate_disks": true,
          "synchronize_disks": true,
          "format_disks": true,
          "resize_disks": true,
          "backup_disks": true,
          "validate_data_integrity": true,
          "manage_snapshots": true,
          "manage_targets": true,
          "manage_profiles": true,
          "manage_secure_access_tokens": true,
          "manage_rules": true
        }
      },
      "realm": {
        "rights": {
          "can_switch_user": false,
          "manage_node_membership": false,
          "manage_accounts": false,
          "view_logs": false,
          "run_admin_tasks": false,
          "run_tests": false
        }
      },
      "user": {
        "rights": {
          "manage_users": true,
          "modify_user_contact_settings": true,
          "reset_user_password": true,
          "reset_user_two_factor": true,
          "manage_authorizations": true
        }
      },
      "account": {
        "rights": {
          "modify_contact_settings": true,
          "manage_global_profiles": true,
          "manage_global_secure_access_tokens": true,
          "view_events": true,
          "view_statistics": true,
          "query_catalog": true,
          "provision_vss": true,
          "manage_obj_stores": true,
          "read_object_storage": true,
          "write_object_storage": true,
          "delete_object_storage": true
        }
      }
    },
    "account_admin": false,
    "allow_su": false,
    "level": 0,
    "timezone": "local",
    "two_factor": {
      "auth": "none"
    },
    "email": null,
    "email_notify": false,
    "email_verified": false,
    "sms": {
      "number": "XXX-XXX-XXXX",
      "valid": false
    },
    "sms_notify": false,
    "password_set": true,
    "sessions": [

    ]
  },
  {
    "id": "user_profile:1:10",
    "uuid": "f687e09f-85b4-4cad-8e6a-6b8622fb6f8d",
    "serial": "USR1B62194C40626440",
    "evt_qry": "serial=USR1B62194C40626440",
    "account_id": "account:1:10",
    "ctime": 1507562835275,
    "mtime": 1507562839801,
    "seq": 1507570013664,
    "label": null,
    "status": null,
    "ec": {
      "table": {
        "time": 1507570013000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              196,
              230,
              230,
              230
            ],
            "v": "dbg"
          },
          {
            "d": [
              120,
              146,
              146,
              146
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              9,
              10,
              10,
              10
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507570013664
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "login": "system",
    "activated": true,
    "app_default": "infrastructure",
    "access": {
      "web": true,
      "api": true
    },
    "permissions": {
      "node": {
        "all_realm_scope": true,
        "rights": {
          "manage_storage": true,
          "manage_networks": true,
          "provision_vss": true,
          "remove_vss": true
        }
      },
      "vss": {
        "all_account_scope": true,
        "rights": {
          "dismiss_tasks": true,
          "update_vss": true,
          "remove_vss": true,
          "set_vss_quota": true,
          "manage_internal_disks": true,
          "manage_external_disks": true,
          "manage_removable_disks": true,
          "manage_disk_cryptography": true,
          "remove_locked_disks": true,
          "replicate_disks": true,
          "synchronize_disks": true,
          "format_disks": true,
          "resize_disks": true,
          "backup_disks": true,
          "validate_data_integrity": true,
          "manage_snapshots": true,
          "manage_targets": true,
          "manage_profiles": true,
          "manage_secure_access_tokens": true,
          "manage_rules": true
        }
      },
      "realm": {
        "rights": {
          "can_switch_user": true,
          "manage_node_membership": true,
          "manage_accounts": true,
          "view_logs": true,
          "run_admin_tasks": true,
          "run_tests": true
        }
      },
      "user": {
        "rights": {
          "manage_users": true,
          "modify_user_contact_settings": true,
          "reset_user_password": true,
          "reset_user_two_factor": true,
          "manage_authorizations": true
        }
      },
      "account": {
        "rights": {
          "modify_contact_settings": true,
          "manage_global_profiles": true,
          "manage_global_secure_access_tokens": true,
          "view_events": true,
          "view_statistics": true,
          "query_catalog": true,
          "provision_vss": true,
          "manage_obj_stores": true,
          "read_object_storage": true,
          "write_object_storage": true,
          "delete_object_storage": true
        }
      }
    },
    "account_admin": true,
    "allow_su": true,
    "level": 0,
    "timezone": "local",
    "two_factor": {
      "auth": "none"
    },
    "email": null,
    "email_notify": false,
    "email_verified": false,
    "sms": {
      "number": "XXX-XXX-XXXX",
      "valid": false
    },
    "sms_notify": false,
    "password_set": true,
    "sessions": [
      {
        "serial": "SES1662194C40626432",
        "id": "session:6:10",
        "created_ms": 1507566844334,
        "last_ms": 1507566844334,
        "addr": "172.16.5.200"
      },
      {
        "serial": "SES1662194C4062642A",
        "id": "session:7:10",
        "created_ms": 1507567736453,
        "last_ms": 1507569935236,
        "addr": "172.16.9.2"
      },
      {
        "serial": "SES1662194C406264D0",
        "id": "session:8:10",
        "created_ms": 1507567897105,
        "last_ms": 1507567897105,
        "addr": "172.16.5.200"
      },
      {
        "serial": "SES1662194C406264C8",
        "id": "session:9:10",
        "created_ms": 1507567914713,
        "last_ms": 1507567914713,
        "addr": "172.16.5.200"
      },
      {
        "serial": "SES1662194C406264F0",
        "id": "session:10:10",
        "created_ms": 1507567940495,
        "last_ms": 1507568149181,
        "addr": "172.16.5.200"
      },
      {
        "serial": "SES1662194C406264E8",
        "id": "session:11:10",
        "created_ms": 1507568228790,
        "last_ms": 1507569437816,
        "addr": "172.16.5.200"
      },
      {
        "serial": "SES1662194C40626491",
        "id": "session:12:10",
        "created_ms": 1507568321420,
        "last_ms": 1507568321420,
        "addr": "::1"
      },
      {
        "serial": "SES1662194C40626489",
        "id": "session:13:10",
        "created_ms": 1507568758214,
        "last_ms": 1507569935630,
        "addr": "172.16.5.237"
      },
      {
        "serial": "SES1662194C406264B1",
        "id": "session:14:10",
        "created_ms": 1507569793599,
        "last_ms": 1507569793599,
        "addr": "172.16.5.200"
      },
      {
        "serial": "SES1662194C406264A9",
        "id": "session:15:10",
        "created_ms": 1507569963874,
        "last_ms": 1507569963874,
        "addr": "172.16.5.200"
      },
      {
        "serial": "SES1662194C40626555",
        "id": "session:16:10",
        "created_ms": 1507570010499,
        "last_ms": 1507570010499,
        "addr": "172.16.5.200"
      }
    ]
  },
  {
    "id": "user_profile:15:10",
    "uuid": "9af5fd5e-f4b0-411d-9cf8-6f376640d445",
    "serial": "USR1B62194C406264A2",
    "evt_qry": "serial=USR1B62194C406264A2",
    "account_id": "account:10:10",
    "ctime": 1507570012942,
    "mtime": 1507570012942,
    "seq": 1507570012954,
    "label": null,
    "status": null,
    "ec": {
      "table": null,
      "status": "retrieving",
      "seq": 1507570012954
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "login": "account42",
    "activated": true,
    "app_default": "storage",
    "access": {
      "web": true,
      "api": false
    },
    "permissions": {
      "node": {
        "all_realm_scope": false,
        "nodes": [

        ],
        "rights": {
          "manage_storage": false,
          "manage_networks": false,
          "provision_vss": false,
          "remove_vss": false
        }
      },
      "vss": {
        "all_account_scope": true,
        "rights": {
          "dismiss_tasks": true,
          "update_vss": true,
          "remove_vss": true,
          "set_vss_quota": true,
          "manage_internal_disks": true,
          "manage_external_disks": true,
          "manage_removable_disks": true,
          "manage_disk_cryptography": true,
          "remove_locked_disks": true,
          "replicate_disks": true,
          "synchronize_disks": true,
          "format_disks": true,
          "resize_disks": true,
          "backup_disks": true,
          "validate_data_integrity": true,
          "manage_snapshots": true,
          "manage_targets": true,
          "manage_profiles": true,
          "manage_secure_access_tokens": true,
          "manage_rules": true
        }
      },
      "realm": {
        "rights": {
          "can_switch_user": false,
          "manage_node_membership": false,
          "manage_accounts": false,
          "view_logs": false,
          "run_admin_tasks": false,
          "run_tests": false
        }
      },
      "user": {
        "rights": {
          "manage_users": true,
          "modify_user_contact_settings": true,
          "reset_user_password": true,
          "reset_user_two_factor": true,
          "manage_authorizations": true
        }
      },
      "account": {
        "rights": {
          "modify_contact_settings": true,
          "manage_global_profiles": true,
          "manage_global_secure_access_tokens": true,
          "view_events": true,
          "view_statistics": true,
          "query_catalog": true,
          "provision_vss": true,
          "manage_obj_stores": true,
          "read_object_storage": true,
          "write_object_storage": true,
          "delete_object_storage": true
        }
      }
    },
    "account_admin": true,
    "allow_su": true,
    "level": 0,
    "timezone": "local",
    "two_factor": {
      "auth": "none"
    },
    "email": null,
    "email_notify": false,
    "email_verified": false,
    "sms": {
      "number": "XXX-XXX-XXXX",
      "valid": false
    },
    "sms_notify": false,
    "password_set": false,
    "sessions": [

    ]
  }
]

User Profile Create

Create a new user profile.

POST /user-profile

Required Parameters

NameTypeDescription
usernamestringuser-assigned portion of username (username@account)
Length: 1..64

Optional Parameters

NameTypeDescription
xmd_refsarrayarray of extensible metadata reference keys
xrefnullable stringarbitrary string reference
Length: 1..256
hoststringserver hostname originating request (for url)
passwordnullable stringuser-assigned password
Length: 1..64
two_factor:authstringtwo-factor authentication type
default: "none"
one of:"none" or "yubikey" or "google"
two_factor:otpstringone-time-password from authentication device
Length: 1..∞
two_factor:secretstringshared AES secret
pattern: ^[a-fA-F0-9]*$
Length: 1..∞
two_factor:private_idstringyubikey private ID
pattern: ^[a-fA-F0-9]*$
Length: 1..∞
two_factor:security_emailemailsecurity email for lost authenticator recovery
Length: 0..128
permissions:realm:rights:can_switch_userbooleancan SU to lower level user
permissions:realm:rights:manage_node_membershipbooleanaccept or delete nodes from the management network
permissions:realm:rights:manage_accountsbooleancan create or delete other accounts, users and their settings
permissions:realm:rights:view_logsbooleanview administrative logs
permissions:realm:rights:run_admin_tasksbooleanrun realm administrative tasks
permissions:realm:rights:run_testsbooleanrun realm administrative tests
permissions:node:all_realm_scopebooleanapply to all nodes in the realm
default: true
permissions:node:nodesarrayscope permissions to specific nodes
permissions:node:rights:manage_storagebooleanconfigure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networksbooleanconfigure networks
permissions:node:rights:provision_vssbooleanmanually provision virtual storage services
permissions:node:rights:remove_vssbooleanremove virtual storage services
permissions:vss:all_account_scopebooleanapply to all virtual storage services in the account
default: true
permissions:vss:vssesarraylimit scope to specified vsses
permissions:vss:rights:dismiss_tasksbooleandismiss tasks
permissions:vss:rights:update_vssbooleanupdate vss configuration
permissions:vss:rights:remove_vssbooleanremove vss
permissions:vss:rights:set_vss_quotabooleanset vss quota
permissions:vss:rights:manage_internal_disksbooleanmanage internal disks
permissions:vss:rights:manage_external_disksbooleanmanage external disks
permissions:vss:rights:manage_removable_disksbooleanmanage removable disks
permissions:vss:rights:manage_disk_cryptographybooleanmanage disk cryptography
permissions:vss:rights:remove_locked_disksbooleanremove locked disks
permissions:vss:rights:validate_data_integritybooleanvalidate data integrity
permissions:vss:rights:manage_targetsbooleanmanage targets
permissions:vss:rights:manage_profilesbooleanmanage profiles
permissions:vss:rights:manage_secure_access_tokensbooleanmanage secure access tokens
permissions:vss:rights:manage_rulesbooleanmanage rules
permissions:vss:rights:replicate_disksbooleanreplicate disks
permissions:vss:rights:synchronize_disksbooleansynchronize disks
permissions:vss:rights:format_disksbooleanformat disks
permissions:vss:rights:resize_disksbooleanresize disks
permissions:vss:rights:manage_snapshotsbooleanmanage snapshots
permissions:vss:rights:backup_disksbooleanbackup disks
permissions:vss:rights:replicate_and_synchronize_disksbooleanreplicate and synchronize disks (DEPRECATED)
permissions:vss:rights:compress_disksbooleancompress disks
permissions:vss:rights:manage_disk_compressionbooleanmanage disk
permissions:user:rights:manage_usersbooleancreate or delete users in an account
permissions:user:rights:modify_user_contact_settingsbooleanmodify user contact info
permissions:user:rights:reset_user_passwordbooleanreset user password
permissions:user:rights:reset_user_two_factorbooleanreset two factor authentication
permissions:user:rights:manage_authorizationsbooleancreate or delete persistent authorizations
permissions:account:rights:modify_contact_settingsbooleanmodify account contact settings
permissions:account:rights:view_eventsbooleanview events
permissions:account:rights:view_statisticsbooleanview statistics
permissions:account:rights:manage_global_profilesbooleanmanage global profiles
permissions:account:rights:manage_global_secure_access_tokensbooleanmanage global secure access tokens
permissions:account:rights:query_catalogbooleanquery product catalog
permissions:account:rights:provision_vssbooleanprovision vss from catalog
permissions:account:rights:manage_obj_storesbooleanmanage obj stores
permissions:account:rights:read_object_storagebooleanread from object storage
permissions:account:rights:write_object_storagebooleanwrite to object storage
permissions:account:rights:delete_object_storagebooleandelete from object storage
access:webbooleanweb access permitted
default: true
access:apibooleanAPI access permitted
default: true
allow_subooleanadmin allowed to SU to user
email_notifybooleanemail notifications enabled
emailnullable emailemail address
Length: 0..128
email_verifybooleanrequire email address verification
sms_notifybooleanSMS notifications enabled
smsstringnotification number for SMS messages
sms_verifybooleanrequire SMS number verification
app_defaultstringdefault web-ui application
default: "storage"
one of:"storage" or "infrastructure" or "account" or "securedrive"
account_idstringaccount id
levelintegeruser privilege level
uuiduuidobject UUID

Curl Example

$ curl -X POST https://mgmt-node/api/user-profile \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "username": "account421",
  "password": "password421",
  "account_id": "account:10:10"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:26:54 GMT
Server: Goliath
ETag: "1f8aac360f9ceb42a4143aa83f8c152b"
Content-Type: application/json
Content-Length: 2069
{
  "id": "user_profile:16:10",
  "uuid": "11bccdde-f3b6-4b65-a28f-25d0463b1564",
  "serial": "USR1B62194C4062655E",
  "evt_qry": "serial=USR1B62194C4062655E",
  "account_id": "account:10:10",
  "ctime": 1507570014375,
  "mtime": 1507570014375,
  "seq": 1507570014382,
  "label": null,
  "status": null,
  "ec": {
    "table": null,
    "status": "retrieving",
    "seq": 1507570014382
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "login": "account421@account42",
  "activated": true,
  "app_default": "storage",
  "access": {
    "web": true,
    "api": true
  },
  "permissions": {
    "node": {
      "all_realm_scope": false,
      "nodes": [

      ],
      "rights": {
        "manage_storage": false,
        "manage_networks": false,
        "provision_vss": false,
        "remove_vss": false
      }
    },
    "vss": {
      "all_account_scope": true,
      "rights": {
        "dismiss_tasks": true,
        "update_vss": true,
        "remove_vss": true,
        "set_vss_quota": true,
        "manage_internal_disks": true,
        "manage_external_disks": true,
        "manage_removable_disks": true,
        "manage_disk_cryptography": true,
        "remove_locked_disks": true,
        "replicate_disks": true,
        "synchronize_disks": true,
        "format_disks": true,
        "resize_disks": true,
        "backup_disks": true,
        "validate_data_integrity": true,
        "manage_snapshots": true,
        "manage_targets": true,
        "manage_profiles": true,
        "manage_secure_access_tokens": true,
        "manage_rules": true
      }
    },
    "realm": {
      "rights": {
        "can_switch_user": false,
        "manage_node_membership": false,
        "manage_accounts": false,
        "view_logs": false,
        "run_admin_tasks": false,
        "run_tests": false
      }
    },
    "user": {
      "rights": {
        "manage_users": true,
        "modify_user_contact_settings": true,
        "reset_user_password": true,
        "reset_user_two_factor": true,
        "manage_authorizations": true
      }
    },
    "account": {
      "rights": {
        "modify_contact_settings": true,
        "manage_global_profiles": true,
        "manage_global_secure_access_tokens": true,
        "view_events": true,
        "view_statistics": true,
        "query_catalog": true,
        "provision_vss": true,
        "manage_obj_stores": true,
        "read_object_storage": true,
        "write_object_storage": true,
        "delete_object_storage": true
      }
    }
  },
  "account_admin": false,
  "allow_su": false,
  "level": 0,
  "timezone": "local",
  "two_factor": {
    "auth": "none"
  },
  "email": null,
  "email_notify": false,
  "email_verified": false,
  "sms": {
    "number": "XXX-XXX-XXXX",
    "valid": false
  },
  "sms_notify": false,
  "password_set": true,
  "sessions": [

  ]
}

User Profile Remove

Remove an existing user profile.

DELETE /user-profile/{user_profile_id_or_serial}

Optional Parameters

NameTypeDescription
account_idstringaccount id

Curl Example

$ curl -X DELETE https://mgmt-node/api/user-profile/user_profile:16:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:26:55 GMT
Server: Goliath

User Profile Update

Change the configuration of an existing user profile.

PATCH /user-profile/{user_profile_id_or_serial}

Optional Parameters

NameTypeDescription
xmd_refsarrayarray of extensible metadata reference keys
hoststringserver hostname originating request (for url)
new_passwordnullable stringnew password
auth_passwordstringcurrent password; required when changing password for non-admin users
two_factor:authstringtwo-factor authentication type
one of:"none" or "yubikey" or "google"
two_factor:otpstringone-time-password from authentication device
Length: 1..∞
two_factor:secretstringshared AES secret
pattern: ^[a-fA-F0-9]*$
Length: 1..∞
two_factor:private_idstringyubikey private ID
pattern: ^[a-fA-F0-9]*$
Length: 1..∞
two_factor:security_emailemailsecurity email for lost authenticator recovery
Length: 0..128
two_factor:statestringenable or disable two-factor authentication
one of:"enable" or "disable"
email_notifybooleanemail notifications are enabled
emailnullable emailnotification email address
Length: 0..128
email_verifybooleanrequire email address verification
sms_notifybooleanSMS notifications enabled
smsstringnotification number for SMS messages
sms_verifybooleanrequire SMS number verification
app_defaultstringdefault web-ui application
one of:"storage" or "infrastructure" or "account" or "securedrive"
activatedbooleanuser profile activated
ext_auth:keynullable stringno documentation
ext_auth:scopenullable stringname of external authentication scope
ext_auth:loginnullable stringmapped external login
ext_auth:domainnullable stringmapped external domain
ext_auth:domain_functionnullable stringmapped external domain function
permissions:realm:rights:can_switch_userbooleancan SU to lower level user
permissions:realm:rights:manage_node_membershipbooleanaccept or delete nodes from the management network
permissions:realm:rights:manage_accountsbooleancan create or delete other accounts, users and their settings
permissions:realm:rights:view_logsbooleanview administrative logs
permissions:realm:rights:run_admin_tasksbooleanrun realm administrative tasks
permissions:realm:rights:run_testsbooleanrun realm administrative tests
permissions:node:all_realm_scopebooleanapply to all nodes in the realm
default: true
permissions:node:nodesarrayscope permissions to specific nodes
permissions:node:rights:manage_storagebooleanconfigure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networksbooleanconfigure networks
permissions:node:rights:provision_vssbooleanmanually provision virtual storage services
permissions:node:rights:remove_vssbooleanremove virtual storage services
permissions:vss:all_account_scopebooleanapply to all virtual storage services in the account
default: true
permissions:vss:vssesarraylimit scope to specified vsses
permissions:vss:rights:dismiss_tasksbooleandismiss tasks
permissions:vss:rights:update_vssbooleanupdate vss configuration
permissions:vss:rights:remove_vssbooleanremove vss
permissions:vss:rights:set_vss_quotabooleanset vss quota
permissions:vss:rights:manage_internal_disksbooleanmanage internal disks
permissions:vss:rights:manage_external_disksbooleanmanage external disks
permissions:vss:rights:manage_removable_disksbooleanmanage removable disks
permissions:vss:rights:manage_disk_cryptographybooleanmanage disk cryptography
permissions:vss:rights:remove_locked_disksbooleanremove locked disks
permissions:vss:rights:validate_data_integritybooleanvalidate data integrity
permissions:vss:rights:manage_targetsbooleanmanage targets
permissions:vss:rights:manage_profilesbooleanmanage profiles
permissions:vss:rights:manage_secure_access_tokensbooleanmanage secure access tokens
permissions:vss:rights:manage_rulesbooleanmanage rules
permissions:vss:rights:replicate_disksbooleanreplicate disks
permissions:vss:rights:synchronize_disksbooleansynchronize disks
permissions:vss:rights:format_disksbooleanformat disks
permissions:vss:rights:resize_disksbooleanresize disks
permissions:vss:rights:manage_snapshotsbooleanmanage snapshots
permissions:vss:rights:backup_disksbooleanbackup disks
permissions:vss:rights:replicate_and_synchronize_disksbooleanreplicate and synchronize disks (DEPRECATED)
permissions:vss:rights:compress_disksbooleancompress disks
permissions:vss:rights:manage_disk_compressionbooleanmanage disk
permissions:user:rights:manage_usersbooleancreate or delete users in an account
permissions:user:rights:modify_user_contact_settingsbooleanmodify user contact info
permissions:user:rights:reset_user_passwordbooleanreset user password
permissions:user:rights:reset_user_two_factorbooleanreset two factor authentication
permissions:user:rights:manage_authorizationsbooleancreate or delete persistent authorizations
permissions:account:rights:modify_contact_settingsbooleanmodify account contact settings
permissions:account:rights:view_eventsbooleanview events
permissions:account:rights:view_statisticsbooleanview statistics
permissions:account:rights:manage_global_profilesbooleanmanage global profiles
permissions:account:rights:manage_global_secure_access_tokensbooleanmanage global secure access tokens
permissions:account:rights:query_catalogbooleanquery product catalog
permissions:account:rights:provision_vssbooleanprovision vss from catalog
permissions:account:rights:manage_obj_storesbooleanmanage obj stores
permissions:account:rights:read_object_storagebooleanread from object storage
permissions:account:rights:write_object_storagebooleanwrite to object storage
permissions:account:rights:delete_object_storagebooleandelete from object storage
permissions_update_modestringuser permissions update mode
default: "merge"
one of:"replace" or "merge"
allow_subooleanadmin allowed to SU to user
account_idstringaccount id

Curl Example

$ curl -X PATCH https://mgmt-node/api/user-profile/user_profile:16:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "activated": false
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:54 GMT
Server: Goliath
ETag: "14ea1ef48b481c651dfac513537e09a5"
Content-Type: application/json
Content-Length: 2070
{
  "id": "user_profile:16:10",
  "uuid": "11bccdde-f3b6-4b65-a28f-25d0463b1564",
  "serial": "USR1B62194C4062655E",
  "evt_qry": "serial=USR1B62194C4062655E",
  "account_id": "account:10:10",
  "ctime": 1507570014375,
  "mtime": 1507570014709,
  "seq": 1507570014716,
  "label": null,
  "status": null,
  "ec": {
    "table": null,
    "status": "retrieving",
    "seq": 1507570014382
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "login": "account421@account42",
  "activated": false,
  "app_default": "storage",
  "access": {
    "web": true,
    "api": true
  },
  "permissions": {
    "node": {
      "all_realm_scope": false,
      "nodes": [

      ],
      "rights": {
        "manage_storage": false,
        "manage_networks": false,
        "provision_vss": false,
        "remove_vss": false
      }
    },
    "vss": {
      "all_account_scope": true,
      "rights": {
        "dismiss_tasks": true,
        "update_vss": true,
        "remove_vss": true,
        "set_vss_quota": true,
        "manage_internal_disks": true,
        "manage_external_disks": true,
        "manage_removable_disks": true,
        "manage_disk_cryptography": true,
        "remove_locked_disks": true,
        "replicate_disks": true,
        "synchronize_disks": true,
        "format_disks": true,
        "resize_disks": true,
        "backup_disks": true,
        "validate_data_integrity": true,
        "manage_snapshots": true,
        "manage_targets": true,
        "manage_profiles": true,
        "manage_secure_access_tokens": true,
        "manage_rules": true
      }
    },
    "realm": {
      "rights": {
        "can_switch_user": false,
        "manage_node_membership": false,
        "manage_accounts": false,
        "view_logs": false,
        "run_admin_tasks": false,
        "run_tests": false
      }
    },
    "user": {
      "rights": {
        "manage_users": true,
        "modify_user_contact_settings": true,
        "reset_user_password": true,
        "reset_user_two_factor": true,
        "manage_authorizations": true
      }
    },
    "account": {
      "rights": {
        "modify_contact_settings": true,
        "manage_global_profiles": true,
        "manage_global_secure_access_tokens": true,
        "view_events": true,
        "view_statistics": true,
        "query_catalog": true,
        "provision_vss": true,
        "manage_obj_stores": true,
        "read_object_storage": true,
        "write_object_storage": true,
        "delete_object_storage": true
      }
    }
  },
  "account_admin": false,
  "allow_su": false,
  "level": 0,
  "timezone": "local",
  "two_factor": {
    "auth": "none"
  },
  "email": null,
  "email_notify": false,
  "email_verified": false,
  "sms": {
    "number": "XXX-XXX-XXXX",
    "valid": false
  },
  "sms_notify": false,
  "password_set": true,
  "sessions": [

  ]
}

User Profile Permissions

Enumerate the permissions of an existing user profile.

GET /user-profile/permissions

Curl Example

$ curl https://mgmt-node/api/user-profile/permissions \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:54 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 3052
{
  "node": {
    "all_realm_scope": "apply permissions to all nodes",
    "rights": {
      "manage_storage": "node permission to manage storage",
      "manage_networks": "node permission to manage networks",
      "provision_vss": "node permission to provision vss",
      "remove_vss": "node permission to remove vss"
    }
  },
  "vss": {
    "all_account_scope": "apply permissions to all virtual storage services",
    "rights": {
      "dismiss_tasks": "vss permission to dismiss tasks",
      "update_vss": "vss permission to update vss configuration",
      "remove_vss": "vss permission to remove vss",
      "set_vss_quota": "vss permission to set vss quota",
      "manage_internal_disks": "vss permission to manage internal disks",
      "manage_external_disks": "vss permission to manage external disks",
      "manage_removable_disks": "vss permission to manage removable disks",
      "manage_disk_cryptography": "vss permission to manage disk cryptography",
      "remove_locked_disks": "vss permission to remove locked disks",
      "replicate_disks": "vss permission to configure replication",
      "synchronize_disks": "vss permission to synchronize disk contents",
      "format_disks": "vss permission to format disks",
      "resize_disks": "vss permission to resize disks",
      "backup_disks": "vss permission to backup disks",
      "validate_data_integrity": "vss permission to validate data integrity",
      "manage_snapshots": "vss permission to create, update and remove snapshots",
      "manage_targets": "vss permission to manage targets",
      "manage_profiles": "vss permission to manage profiles",
      "manage_secure_access_tokens": "vss permission to manage secure access tokens",
      "manage_rules": "vss permission to manage rules"
    }
  },
  "realm": {
    "rights": {
      "can_switch_user": "realm permission to switch users",
      "manage_node_membership": "realm permission to manage node membership",
      "manage_accounts": "realm permission to manage accounts",
      "view_logs": "realm permission to view logs",
      "run_admin_tasks": "realm permission to run administrator tasks",
      "run_tests": "realm permission to run tests"
    }
  },
  "user": {
    "rights": {
      "manage_users": "user permission to manage users",
      "modify_user_contact_settings": "user permission to modify user contact settings",
      "reset_user_password": "user permission to reset user password",
      "reset_user_two_factor": "user permission to reset user two-factor authentication",
      "manage_authorizations": "user permission to manage persistent authorizations"
    }
  },
  "account": {
    "rights": {
      "modify_contact_settings": "account permission to modify contact settings",
      "manage_global_profiles": "account permission to manage global profiles",
      "manage_global_secure_access_tokens": "account permission to manage global secure access tokens",
      "view_events": "account permission to view events",
      "view_statistics": "account permission to view statistics",
      "query_catalog": "account permission to query the catalog",
      "provision_vss": "account permission to provision from the catalog",
      "manage_obj_stores": "account permission to manage obj stores",
      "read_object_storage": "account permission to read from object storage",
      "write_object_storage": "account permission to write to object storage",
      "delete_object_storage": "account permission to delete from object storage"
    }
  }
}

OAuth 2 Access Token

Submit a username and password to create a time-limited OAuth 2 API access token. Include this token in the Authorization HTTP header in subsequent requests. For example,:

Authorization: Bearer 0/EYZPk2DHOQ+ep8NyFerJake9NCG+M3WSbsoj5cfn6L5xh0+TYMc6Hw

OAuth 2 Access Token Create

Exchange authorization of some sort for an access token.

POST /oauth2/token

Required Parameters

NameTypeDescription
grant_typestringtype of grant request

Optional Parameters

NameTypeDescription
client_idstring(optional) client id of request
client_secretstring(optional) client supplied secret
codestring(optional) code
redirect_urlstring(optional) redirect url
usernamestringusername to request token for
passwordstringpassword for username
methodstring(optional) method of authorization
expires_inintegerwhen access token will expire (in seconds)

Curl Example

$ curl -X POST https://mgmt-node/api/oauth2/token \
  -H "Content-Type: application/json" \
  -d \
'{
  "grant_type": "password",
  "username": "system",
  "password": "system"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:26:50 GMT
Server: Goliath
Cache-Control: no-store
Pragma: no-cache
Content-Type: application/json
Content-Length: 305
{
  "access_token": "0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg",
  "token_type": "Bearer",
  "expires_in": 3599,
  "user": {
    "id": "session:16:10",
    "user": {
      "name": "system",
      "id": "user_profile:1:10",
      "serial": "USR1B62194C40626440"
    },
    "account": {
      "name": "system",
      "id": "account:1:10",
      "serial": "ACT0762194C40626445"
    }
  }
}

Authorization

Manage secure application access to the API using revokable authorization tokens. A user may have many authorization tokens, in support of many different applications. Each token may be independently revoked with a DELETE request.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
ctimeintegerauthorization create time
Range: 0 <= value
mtimeintegerauthorization last modified time
Range: 0 <= value
serialstringauthorization serial number
xrefstringarbitrary string reference
Length: 1..256
notesnullable stringuser assigned notes
Length: 0..256
account_idstringno documentation
user_idstringno documentation
fingerprintnullable stringclient-side differentiator to permit multiple authorizations per application/user
enabledbooleanauthorization is enabled
default: true
app_idnullable stringassociated client application (null = no/unspecified application)
scopenullable stringauthorization scope (null maps to referenced user permissions)
access_typestringauthorization access type (offline access includes a refresh token)
default: "online"
one of:"online" or "offline"
lifetimenullable integeraccess token lifetime, in seconds since created_at (null = eternal)
restrictstringhow to restrict user-profile permissions when calculating effective perms
one of:"none" or "auth"
enforce_two_factorbooleanenforce user two-factor auth (if configured)
created_atstringauthorization create time
updated_atstringauthorization last updated time
expires_innullable integerauthorization time remaining
access_token_digeststringbase64-encoded SHA256 digest of access token
access_token_suffixstringaccess token suffix
access_token_typestringno documentation
one of:"Bearer"
refresh_token_digestnullable stringbase64-encoded SHA256 digest of refresh token (for offline token refresh)
permissionsnullable objectuser permissions
permissions:realm:rights:can_switch_userbooleancan SU to lower level user
permissions:realm:rights:manage_node_membershipbooleanaccept or delete nodes from the management network
permissions:realm:rights:manage_accountsbooleancan create or delete other accounts, users and their settings
permissions:realm:rights:view_logsbooleanview administrative logs
permissions:realm:rights:run_admin_tasksbooleanrun realm administrative tasks
permissions:realm:rights:run_testsbooleanrun realm administrative tests
permissions:node:all_realm_scopebooleanapply to all nodes in the realm
default: true
permissions:node:nodesarrayscope permissions to specific nodes
permissions:node:rights:manage_storagebooleanconfigure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networksbooleanconfigure networks
permissions:node:rights:provision_vssbooleanmanually provision virtual storage services
permissions:node:rights:remove_vssbooleanremove virtual storage services
permissions:vss:all_account_scopebooleanapply to all virtual storage services in the account
default: true
permissions:vss:vssesarraylimit scope to specified vsses
permissions:vss:rights:dismiss_tasksbooleandismiss tasks
permissions:vss:rights:update_vssbooleanupdate vss configuration
permissions:vss:rights:remove_vssbooleanremove vss
permissions:vss:rights:set_vss_quotabooleanset vss quota
permissions:vss:rights:manage_internal_disksbooleanmanage internal disks
permissions:vss:rights:manage_external_disksbooleanmanage external disks
permissions:vss:rights:manage_removable_disksbooleanmanage removable disks
permissions:vss:rights:manage_disk_cryptographybooleanmanage disk cryptography
permissions:vss:rights:remove_locked_disksbooleanremove locked disks
permissions:vss:rights:validate_data_integritybooleanvalidate data integrity
permissions:vss:rights:manage_targetsbooleanmanage targets
permissions:vss:rights:manage_profilesbooleanmanage profiles
permissions:vss:rights:manage_secure_access_tokensbooleanmanage secure access tokens
permissions:vss:rights:manage_rulesbooleanmanage rules
permissions:vss:rights:replicate_disksbooleanreplicate disks
permissions:vss:rights:synchronize_disksbooleansynchronize disks
permissions:vss:rights:format_disksbooleanformat disks
permissions:vss:rights:resize_disksbooleanresize disks
permissions:vss:rights:manage_snapshotsbooleanmanage snapshots
permissions:vss:rights:backup_disksbooleanbackup disks
permissions:vss:rights:replicate_and_synchronize_disksbooleanreplicate and synchronize disks (DEPRECATED)
permissions:vss:rights:compress_disksbooleancompress disks
permissions:vss:rights:manage_disk_compressionbooleanmanage disk
permissions:user:rights:manage_usersbooleancreate or delete users in an account
permissions:user:rights:modify_user_contact_settingsbooleanmodify user contact info
permissions:user:rights:reset_user_passwordbooleanreset user password
permissions:user:rights:reset_user_two_factorbooleanreset two factor authentication
permissions:user:rights:manage_authorizationsbooleancreate or delete persistent authorizations
permissions:account:rights:modify_contact_settingsbooleanmodify account contact settings
permissions:account:rights:view_eventsbooleanview events
permissions:account:rights:view_statisticsbooleanview statistics
permissions:account:rights:manage_global_profilesbooleanmanage global profiles
permissions:account:rights:manage_global_secure_access_tokensbooleanmanage global secure access tokens
permissions:account:rights:query_catalogbooleanquery product catalog
permissions:account:rights:provision_vssbooleanprovision vss from catalog
permissions:account:rights:manage_obj_storesbooleanmanage obj stores
permissions:account:rights:read_object_storagebooleanread from object storage
permissions:account:rights:write_object_storagebooleanwrite to object storage
permissions:account:rights:delete_object_storagebooleandelete from object storage
effective_scopenullable stringauthorization effective scope

Authorization Info

Retrieve existing authorizations.

GET /authorization/{authz_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/authorization/authz:8:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:55 GMT
Server: Goliath
ETag: "15063787638d004d7fa22789908788fa"
Content-Type: application/json
Content-Length: 2577
{
  "id": "authz:8:10",
  "serial": "ATH4762194C406264DA",
  "account_id": "account:1:10",
  "user_id": "user_profile:1:10",
  "xref": null,
  "notes": null,
  "fingerprint": null,
  "enabled": true,
  "app_id": null,
  "scope": null,
  "access_type": "online",
  "lifetime": null,
  "restrict": "auth",
  "enforce_two_factor": false,
  "created_at": "2017-10-09T17:26:55.195+00:00",
  "updated_at": "2017-10-09T17:26:55.195+00:00",
  "expires_in": null,
  "access_token_digest": "+rQjeekqAsn2Dpc+SswdGSG8Dj1MpKPzbsGoYP00onc",
  "access_token_suffix": "ZM3mJpCA",
  "refresh_token_digest": null,
  "effective_scope": "r:r=can_switch_user r:r=manage_node_membership r:r=manage_accounts r:r=view_logs r:r=run_admin_tasks r:r=run_tests a:r=modify_contact_settings a:r=view_events a:r=view_statistics a:r=manage_global_profiles a:r=manage_global_secure_access_tokens a:r=query_catalog a:r=provision_vss a:r=manage_obj_stores a:r=read_object_storage a:r=write_object_storage a:r=delete_object_storage n:r=manage_storage n:r=manage_networks n:r=provision_vss n:r=remove_vss v:r=dismiss_tasks v:r=update_vss v:r=remove_vss v:r=set_vss_quota v:r=manage_internal_disks v:r=manage_external_disks v:r=manage_removable_disks v:r=manage_disk_cryptography v:r=remove_locked_disks v:r=replicate_disks v:r=synchronize_disks v:r=format_disks v:r=resize_disks v:r=backup_disks v:r=validate_data_integrity v:r=manage_snapshots v:r=manage_targets v:r=manage_profiles v:r=manage_secure_access_tokens v:r=manage_rules n:o=all v:o=all",
  "permissions": {
    "realm": {
      "rights": {
        "can_switch_user": true,
        "manage_node_membership": true,
        "manage_accounts": true,
        "view_logs": true,
        "run_admin_tasks": true,
        "run_tests": true
      }
    },
    "node": {
      "all_realm_scope": true,
      "rights": {
        "manage_storage": true,
        "manage_networks": true,
        "provision_vss": true,
        "remove_vss": true
      }
    },
    "vss": {
      "all_account_scope": true,
      "rights": {
        "dismiss_tasks": true,
        "update_vss": true,
        "remove_vss": true,
        "set_vss_quota": true,
        "manage_internal_disks": true,
        "manage_external_disks": true,
        "manage_removable_disks": true,
        "manage_disk_cryptography": true,
        "remove_locked_disks": true,
        "replicate_disks": true,
        "synchronize_disks": true,
        "format_disks": true,
        "resize_disks": true,
        "backup_disks": true,
        "validate_data_integrity": true,
        "manage_snapshots": true,
        "manage_targets": true,
        "manage_profiles": true,
        "manage_secure_access_tokens": true,
        "manage_rules": true
      }
    },
    "account": {
      "rights": {
        "modify_contact_settings": true,
        "view_events": true,
        "view_statistics": true,
        "manage_global_profiles": true,
        "manage_global_secure_access_tokens": true,
        "query_catalog": true,
        "provision_vss": true,
        "manage_obj_stores": true,
        "read_object_storage": true,
        "write_object_storage": true,
        "delete_object_storage": true
      }
    }
  }
}

Authorization List

Enumerate authorizations.

GET /authorization

Curl Example

$ curl https://mgmt-node/api/authorization \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:55 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 18469
[
  {
    "id": "authz:4:10",
    "serial": "ATH4762194C40626418",
    "account_id": "account:1:10",
    "user_id": "user_profile:1:10",
    "xref": null,
    "notes": "authz updated to be disabled",
    "fingerprint": null,
    "enabled": false,
    "app_id": null,
    "scope": null,
    "access_type": "online",
    "lifetime": null,
    "restrict": "auth",
    "enforce_two_factor": false,
    "created_at": "2017-10-09T16:52:24.826+00:00",
    "updated_at": "2017-10-09T16:52:25.211+00:00",
    "expires_in": null,
    "access_token_digest": "3wKrRNRjjMNRG/J9AN3aNdv6sAC/uAWsv2KYzW71g2c",
    "access_token_suffix": "7tASp9eg",
    "refresh_token_digest": null,
    "effective_scope": "r:r=can_switch_user r:r=manage_node_membership r:r=manage_accounts r:r=view_logs r:r=run_admin_tasks r:r=run_tests a:r=modify_contact_settings a:r=view_events a:r=view_statistics a:r=manage_global_profiles a:r=manage_global_secure_access_tokens a:r=query_catalog a:r=provision_vss a:r=manage_obj_stores a:r=read_object_storage a:r=write_object_storage a:r=delete_object_storage n:r=manage_storage n:r=manage_networks n:r=provision_vss n:r=remove_vss v:r=dismiss_tasks v:r=update_vss v:r=remove_vss v:r=set_vss_quota v:r=manage_internal_disks v:r=manage_external_disks v:r=manage_removable_disks v:r=manage_disk_cryptography v:r=remove_locked_disks v:r=replicate_disks v:r=synchronize_disks v:r=format_disks v:r=resize_disks v:r=backup_disks v:r=validate_data_integrity v:r=manage_snapshots v:r=manage_targets v:r=manage_profiles v:r=manage_secure_access_tokens v:r=manage_rules n:o=all v:o=all",
    "permissions": {
      "realm": {
        "rights": {
          "can_switch_user": true,
          "manage_node_membership": true,
          "manage_accounts": true,
          "view_logs": true,
          "run_admin_tasks": true,
          "run_tests": true
        }
      },
      "node": {
        "all_realm_scope": true,
        "rights": {
          "manage_storage": true,
          "manage_networks": true,
          "provision_vss": true,
          "remove_vss": true
        }
      },
      "vss": {
        "all_account_scope": true,
        "rights": {
          "dismiss_tasks": true,
          "update_vss": true,
          "remove_vss": true,
          "set_vss_quota": true,
          "manage_internal_disks": true,
          "manage_external_disks": true,
          "manage_removable_disks": true,
          "manage_disk_cryptography": true,
          "remove_locked_disks": true,
          "replicate_disks": true,
          "synchronize_disks": true,
          "format_disks": true,
          "resize_disks": true,
          "backup_disks": true,
          "validate_data_integrity": true,
          "manage_snapshots": true,
          "manage_targets": true,
          "manage_profiles": true,
          "manage_secure_access_tokens": true,
          "manage_rules": true
        }
      },
      "account": {
        "rights": {
          "modify_contact_settings": true,
          "view_events": true,
          "view_statistics": true,
          "manage_global_profiles": true,
          "manage_global_secure_access_tokens": true,
          "query_catalog": true,
          "provision_vss": true,
          "manage_obj_stores": true,
          "read_object_storage": true,
          "write_object_storage": true,
          "delete_object_storage": true
        }
      }
    }
  },
  {
    "id": "authz:8:10",
    "serial": "ATH4762194C406264DA",
    "account_id": "account:1:10",
    "user_id": "user_profile:1:10",
    "xref": null,
    "notes": null,
    "fingerprint": null,
    "enabled": true,
    "app_id": null,
    "scope": null,
    "access_type": "online",
    "lifetime": null,
    "restrict": "auth",
    "enforce_two_factor": false,
    "created_at": "2017-10-09T17:26:55.195+00:00",
    "updated_at": "2017-10-09T17:26:55.195+00:00",
    "expires_in": null,
    "access_token_digest": "+rQjeekqAsn2Dpc+SswdGSG8Dj1MpKPzbsGoYP00onc",
    "access_token_suffix": "ZM3mJpCA",
    "refresh_token_digest": null,
    "effective_scope": "r:r=can_switch_user r:r=manage_node_membership r:r=manage_accounts r:r=view_logs r:r=run_admin_tasks r:r=run_tests a:r=modify_contact_settings a:r=view_events a:r=view_statistics a:r=manage_global_profiles a:r=manage_global_secure_access_tokens a:r=query_catalog a:r=provision_vss a:r=manage_obj_stores a:r=read_object_storage a:r=write_object_storage a:r=delete_object_storage n:r=manage_storage n:r=manage_networks n:r=provision_vss n:r=remove_vss v:r=dismiss_tasks v:r=update_vss v:r=remove_vss v:r=set_vss_quota v:r=manage_internal_disks v:r=manage_external_disks v:r=manage_removable_disks v:r=manage_disk_cryptography v:r=remove_locked_disks v:r=replicate_disks v:r=synchronize_disks v:r=format_disks v:r=resize_disks v:r=backup_disks v:r=validate_data_integrity v:r=manage_snapshots v:r=manage_targets v:r=manage_profiles v:r=manage_secure_access_tokens v:r=manage_rules n:o=all v:o=all",
    "permissions": {
      "realm": {
        "rights": {
          "can_switch_user": true,
          "manage_node_membership": true,
          "manage_accounts": true,
          "view_logs": true,
          "run_admin_tasks": true,
          "run_tests": true
        }
      },
      "node": {
        "all_realm_scope": true,
        "rights": {
          "manage_storage": true,
          "manage_networks": true,
          "provision_vss": true,
          "remove_vss": true
        }
      },
      "vss": {
        "all_account_scope": true,
        "rights": {
          "dismiss_tasks": true,
          "update_vss": true,
          "remove_vss": true,
          "set_vss_quota": true,
          "manage_internal_disks": true,
          "manage_external_disks": true,
          "manage_removable_disks": true,
          "manage_disk_cryptography": true,
          "remove_locked_disks": true,
          "replicate_disks": true,
          "synchronize_disks": true,
          "format_disks": true,
          "resize_disks": true,
          "backup_disks": true,
          "validate_data_integrity": true,
          "manage_snapshots": true,
          "manage_targets": true,
          "manage_profiles": true,
          "manage_secure_access_tokens": true,
          "manage_rules": true
        }
      },
      "account": {
        "rights": {
          "modify_contact_settings": true,
          "view_events": true,
          "view_statistics": true,
          "manage_global_profiles": true,
          "manage_global_secure_access_tokens": true,
          "query_catalog": true,
          "provision_vss": true,
          "manage_obj_stores": true,
          "read_object_storage": true,
          "write_object_storage": true,
          "delete_object_storage": true
        }
      }
    }
  },
  {
    "id": "authz:5:10",
    "serial": "ATH4762194C40626400",
    "account_id": "account:1:10",
    "user_id": "user_profile:1:10",
    "xref": null,
    "notes": "authz updated to be disabled",
    "fingerprint": null,
    "enabled": false,
    "app_id": null,
    "scope": null,
    "access_type": "online",
    "lifetime": null,
    "restrict": "auth",
    "enforce_two_factor": false,
    "created_at": "2017-10-09T16:57:13.342+00:00",
    "updated_at": "2017-10-09T16:57:13.740+00:00",
    "expires_in": null,
    "access_token_digest": "zKVffwlpVKIxvE3BqRMJOmK4EKwbSrewJVRhEdLqOQA",
    "access_token_suffix": "USFxtvCQ",
    "refresh_token_digest": null,
    "effective_scope": "r:r=can_switch_user r:r=manage_node_membership r:r=manage_accounts r:r=view_logs r:r=run_admin_tasks r:r=run_tests a:r=modify_contact_settings a:r=view_events a:r=view_statistics a:r=manage_global_profiles a:r=manage_global_secure_access_tokens a:r=query_catalog a:r=provision_vss a:r=manage_obj_stores a:r=read_object_storage a:r=write_object_storage a:r=delete_object_storage n:r=manage_storage n:r=manage_networks n:r=provision_vss n:r=remove_vss v:r=dismiss_tasks v:r=update_vss v:r=remove_vss v:r=set_vss_quota v:r=manage_internal_disks v:r=manage_external_disks v:r=manage_removable_disks v:r=manage_disk_cryptography v:r=remove_locked_disks v:r=replicate_disks v:r=synchronize_disks v:r=format_disks v:r=resize_disks v:r=backup_disks v:r=validate_data_integrity v:r=manage_snapshots v:r=manage_targets v:r=manage_profiles v:r=manage_secure_access_tokens v:r=manage_rules n:o=all v:o=all",
    "permissions": {
      "realm": {
        "rights": {
          "can_switch_user": true,
          "manage_node_membership": true,
          "manage_accounts": true,
          "view_logs": true,
          "run_admin_tasks": true,
          "run_tests": true
        }
      },
      "node": {
        "all_realm_scope": true,
        "rights": {
          "manage_storage": true,
          "manage_networks": true,
          "provision_vss": true,
          "remove_vss": true
        }
      },
      "vss": {
        "all_account_scope": true,
        "rights": {
          "dismiss_tasks": true,
          "update_vss": true,
          "remove_vss": true,
          "set_vss_quota": true,
          "manage_internal_disks": true,
          "manage_external_disks": true,
          "manage_removable_disks": true,
          "manage_disk_cryptography": true,
          "remove_locked_disks": true,
          "replicate_disks": true,
          "synchronize_disks": true,
          "format_disks": true,
          "resize_disks": true,
          "backup_disks": true,
          "validate_data_integrity": true,
          "manage_snapshots": true,
          "manage_targets": true,
          "manage_profiles": true,
          "manage_secure_access_tokens": true,
          "manage_rules": true
        }
      },
      "account": {
        "rights": {
          "modify_contact_settings": true,
          "view_events": true,
          "view_statistics": true,
          "manage_global_profiles": true,
          "manage_global_secure_access_tokens": true,
          "query_catalog": true,
          "provision_vss": true,
          "manage_obj_stores": true,
          "read_object_storage": true,
          "write_object_storage": true,
          "delete_object_storage": true
        }
      }
    }
  },
  {
    "id": "authz:1:10",
    "serial": "ATH4762194C40626441",
    "account_id": "account:1:10",
    "user_id": "user_profile:1:10",
    "xref": null,
    "notes": null,
    "fingerprint": null,
    "enabled": true,
    "app_id": null,
    "scope": null,
    "access_type": "online",
    "lifetime": null,
    "restrict": "none",
    "enforce_two_factor": false,
    "created_at": "2017-10-09T15:27:15.198+00:00",
    "updated_at": "2017-10-09T15:27:15.198+00:00",
    "expires_in": null,
    "access_token_digest": "ZR1XPlVBm4h2aouqN0q/Ark46/iw7lu4xV7zfd8Elho",
    "access_token_suffix": "5jYFny4w",
    "refresh_token_digest": null,
    "effective_scope": "r:r=can_switch_user r:r=manage_node_membership r:r=manage_accounts r:r=view_logs r:r=run_admin_tasks r:r=run_tests a:r=modify_contact_settings a:r=view_events a:r=view_statistics a:r=manage_global_profiles a:r=manage_global_secure_access_tokens a:r=query_catalog a:r=provision_vss a:r=manage_obj_stores a:r=read_object_storage a:r=write_object_storage a:r=delete_object_storage u:r=manage_users u:r=modify_user_contact_settings u:r=reset_user_password u:r=reset_user_two_factor u:r=manage_authorizations n:r=manage_storage n:r=manage_networks n:r=provision_vss n:r=remove_vss v:r=dismiss_tasks v:r=update_vss v:r=remove_vss v:r=set_vss_quota v:r=manage_internal_disks v:r=manage_external_disks v:r=manage_removable_disks v:r=manage_disk_cryptography v:r=remove_locked_disks v:r=replicate_disks v:r=synchronize_disks v:r=format_disks v:r=resize_disks v:r=backup_disks v:r=validate_data_integrity v:r=manage_snapshots v:r=manage_targets v:r=manage_profiles v:r=manage_secure_access_tokens v:r=manage_rules n:o=all v:o=all",
    "permissions": {
      "realm": {
        "rights": {
          "can_switch_user": true,
          "manage_node_membership": true,
          "manage_accounts": true,
          "view_logs": true,
          "run_admin_tasks": true,
          "run_tests": true
        }
      },
      "node": {
        "all_realm_scope": true,
        "rights": {
          "manage_storage": true,
          "manage_networks": true,
          "provision_vss": true,
          "remove_vss": true
        }
      },
      "vss": {
        "all_account_scope": true,
        "rights": {
          "dismiss_tasks": true,
          "update_vss": true,
          "remove_vss": true,
          "set_vss_quota": true,
          "manage_internal_disks": true,
          "manage_external_disks": true,
          "manage_removable_disks": true,
          "manage_disk_cryptography": true,
          "remove_locked_disks": true,
          "replicate_disks": true,
          "synchronize_disks": true,
          "format_disks": true,
          "resize_disks": true,
          "backup_disks": true,
          "validate_data_integrity": true,
          "manage_snapshots": true,
          "manage_targets": true,
          "manage_profiles": true,
          "manage_secure_access_tokens": true,
          "manage_rules": true
        }
      },
      "user": {
        "rights": {
          "manage_users": true,
          "modify_user_contact_settings": true,
          "reset_user_password": true,
          "reset_user_two_factor": true,
          "manage_authorizations": true
        }
      },
      "account": {
        "rights": {
          "modify_contact_settings": true,
          "view_events": true,
          "view_statistics": true,
          "manage_global_profiles": true,
          "manage_global_secure_access_tokens": true,
          "query_catalog": true,
          "provision_vss": true,
          "manage_obj_stores": true,
          "read_object_storage": true,
          "write_object_storage": true,
          "delete_object_storage": true
        }
      }
    }
  },
  {
    "id": "authz:6:10",
    "serial": "ATH4762194C40626438",
    "account_id": "account:1:10",
    "user_id": "user_profile:1:10",
    "xref": null,
    "notes": "authz updated to be disabled",
    "fingerprint": null,
    "enabled": false,
    "app_id": null,
    "scope": null,
    "access_type": "online",
    "lifetime": null,
    "restrict": "auth",
    "enforce_two_factor": false,
    "created_at": "2017-10-09T17:23:18.287+00:00",
    "updated_at": "2017-10-09T17:23:18.687+00:00",
    "expires_in": null,
    "access_token_digest": "2xjPfMNO8Vsee3cF9Nf7Pc0Hvh4tIg6dSKmTLLOhUqc",
    "access_token_suffix": "cb7BffIQ",
    "refresh_token_digest": null,
    "effective_scope": "r:r=can_switch_user r:r=manage_node_membership r:r=manage_accounts r:r=view_logs r:r=run_admin_tasks r:r=run_tests a:r=modify_contact_settings a:r=view_events a:r=view_statistics a:r=manage_global_profiles a:r=manage_global_secure_access_tokens a:r=query_catalog a:r=provision_vss a:r=manage_obj_stores a:r=read_object_storage a:r=write_object_storage a:r=delete_object_storage n:r=manage_storage n:r=manage_networks n:r=provision_vss n:r=remove_vss v:r=dismiss_tasks v:r=update_vss v:r=remove_vss v:r=set_vss_quota v:r=manage_internal_disks v:r=manage_external_disks v:r=manage_removable_disks v:r=manage_disk_cryptography v:r=remove_locked_disks v:r=replicate_disks v:r=synchronize_disks v:r=format_disks v:r=resize_disks v:r=backup_disks v:r=validate_data_integrity v:r=manage_snapshots v:r=manage_targets v:r=manage_profiles v:r=manage_secure_access_tokens v:r=manage_rules n:o=all v:o=all",
    "permissions": {
      "realm": {
        "rights": {
          "can_switch_user": true,
          "manage_node_membership": true,
          "manage_accounts": true,
          "view_logs": true,
          "run_admin_tasks": true,
          "run_tests": true
        }
      },
      "node": {
        "all_realm_scope": true,
        "rights": {
          "manage_storage": true,
          "manage_networks": true,
          "provision_vss": true,
          "remove_vss": true
        }
      },
      "vss": {
        "all_account_scope": true,
        "rights": {
          "dismiss_tasks": true,
          "update_vss": true,
          "remove_vss": true,
          "set_vss_quota": true,
          "manage_internal_disks": true,
          "manage_external_disks": true,
          "manage_removable_disks": true,
          "manage_disk_cryptography": true,
          "remove_locked_disks": true,
          "replicate_disks": true,
          "synchronize_disks": true,
          "format_disks": true,
          "resize_disks": true,
          "backup_disks": true,
          "validate_data_integrity": true,
          "manage_snapshots": true,
          "manage_targets": true,
          "manage_profiles": true,
          "manage_secure_access_tokens": true,
          "manage_rules": true
        }
      },
      "account": {
        "rights": {
          "modify_contact_settings": true,
          "view_events": true,
          "view_statistics": true,
          "manage_global_profiles": true,
          "manage_global_secure_access_tokens": true,
          "query_catalog": true,
          "provision_vss": true,
          "manage_obj_stores": true,
          "read_object_storage": true,
          "write_object_storage": true,
          "delete_object_storage": true
        }
      }
    }
  },
  {
    "id": "authz:7:10",
    "serial": "ATH4762194C40626420",
    "account_id": "account:1:10",
    "user_id": "user_profile:1:10",
    "xref": null,
    "notes": "authz updated to be disabled",
    "fingerprint": null,
    "enabled": false,
    "app_id": null,
    "scope": null,
    "access_type": "online",
    "lifetime": null,
    "restrict": "auth",
    "enforce_two_factor": false,
    "created_at": "2017-10-09T17:26:08.527+00:00",
    "updated_at": "2017-10-09T17:26:08.944+00:00",
    "expires_in": null,
    "access_token_digest": "c+9quISbNsmFNpUMqZVdXip4YBN/SRCfWJI9/c+hj8c",
    "access_token_suffix": "41uymTyw",
    "refresh_token_digest": null,
    "effective_scope": "r:r=can_switch_user r:r=manage_node_membership r:r=manage_accounts r:r=view_logs r:r=run_admin_tasks r:r=run_tests a:r=modify_contact_settings a:r=view_events a:r=view_statistics a:r=manage_global_profiles a:r=manage_global_secure_access_tokens a:r=query_catalog a:r=provision_vss a:r=manage_obj_stores a:r=read_object_storage a:r=write_object_storage a:r=delete_object_storage n:r=manage_storage n:r=manage_networks n:r=provision_vss n:r=remove_vss v:r=dismiss_tasks v:r=update_vss v:r=remove_vss v:r=set_vss_quota v:r=manage_internal_disks v:r=manage_external_disks v:r=manage_removable_disks v:r=manage_disk_cryptography v:r=remove_locked_disks v:r=replicate_disks v:r=synchronize_disks v:r=format_disks v:r=resize_disks v:r=backup_disks v:r=validate_data_integrity v:r=manage_snapshots v:r=manage_targets v:r=manage_profiles v:r=manage_secure_access_tokens v:r=manage_rules n:o=all v:o=all",
    "permissions": {
      "realm": {
        "rights": {
          "can_switch_user": true,
          "manage_node_membership": true,
          "manage_accounts": true,
          "view_logs": true,
          "run_admin_tasks": true,
          "run_tests": true
        }
      },
      "node": {
        "all_realm_scope": true,
        "rights": {
          "manage_storage": true,
          "manage_networks": true,
          "provision_vss": true,
          "remove_vss": true
        }
      },
      "vss": {
        "all_account_scope": true,
        "rights": {
          "dismiss_tasks": true,
          "update_vss": true,
          "remove_vss": true,
          "set_vss_quota": true,
          "manage_internal_disks": true,
          "manage_external_disks": true,
          "manage_removable_disks": true,
          "manage_disk_cryptography": true,
          "remove_locked_disks": true,
          "replicate_disks": true,
          "synchronize_disks": true,
          "format_disks": true,
          "resize_disks": true,
          "backup_disks": true,
          "validate_data_integrity": true,
          "manage_snapshots": true,
          "manage_targets": true,
          "manage_profiles": true,
          "manage_secure_access_tokens": true,
          "manage_rules": true
        }
      },
      "account": {
        "rights": {
          "modify_contact_settings": true,
          "view_events": true,
          "view_statistics": true,
          "manage_global_profiles": true,
          "manage_global_secure_access_tokens": true,
          "query_catalog": true,
          "provision_vss": true,
          "manage_obj_stores": true,
          "read_object_storage": true,
          "write_object_storage": true,
          "delete_object_storage": true
        }
      }
    }
  },
  {
    "id": "authz:3:10",
    "serial": "ATH4762194C40626461",
    "account_id": "account:1:10",
    "user_id": "user_profile:1:10",
    "xref": null,
    "notes": "authz updated to be disabled",
    "fingerprint": null,
    "enabled": false,
    "app_id": null,
    "scope": null,
    "access_type": "online",
    "lifetime": null,
    "restrict": "auth",
    "enforce_two_factor": false,
    "created_at": "2017-10-09T15:38:47.532+00:00",
    "updated_at": "2017-10-09T15:38:47.907+00:00",
    "expires_in": null,
    "access_token_digest": "C4nYZuzLrQPzugNyjRREMwXP9QBXhCDNzYYoYBD25p0",
    "access_token_suffix": "QR4Wo+nQ",
    "refresh_token_digest": null,
    "effective_scope": "r:r=can_switch_user r:r=manage_node_membership r:r=manage_accounts r:r=view_logs r:r=run_admin_tasks r:r=run_tests a:r=modify_contact_settings a:r=view_events a:r=view_statistics a:r=manage_global_profiles a:r=manage_global_secure_access_tokens a:r=query_catalog a:r=provision_vss a:r=manage_obj_stores a:r=read_object_storage a:r=write_object_storage a:r=delete_object_storage n:r=manage_storage n:r=manage_networks n:r=provision_vss n:r=remove_vss v:r=dismiss_tasks v:r=update_vss v:r=remove_vss v:r=set_vss_quota v:r=manage_internal_disks v:r=manage_external_disks v:r=manage_removable_disks v:r=manage_disk_cryptography v:r=remove_locked_disks v:r=replicate_disks v:r=synchronize_disks v:r=format_disks v:r=resize_disks v:r=backup_disks v:r=validate_data_integrity v:r=manage_snapshots v:r=manage_targets v:r=manage_profiles v:r=manage_secure_access_tokens v:r=manage_rules n:o=all v:o=all",
    "permissions": {
      "realm": {
        "rights": {
          "can_switch_user": true,
          "manage_node_membership": true,
          "manage_accounts": true,
          "view_logs": true,
          "run_admin_tasks": true,
          "run_tests": true
        }
      },
      "node": {
        "all_realm_scope": true,
        "rights": {
          "manage_storage": true,
          "manage_networks": true,
          "provision_vss": true,
          "remove_vss": true
        }
      },
      "vss": {
        "all_account_scope": true,
        "rights": {
          "dismiss_tasks": true,
          "update_vss": true,
          "remove_vss": true,
          "set_vss_quota": true,
          "manage_internal_disks": true,
          "manage_external_disks": true,
          "manage_removable_disks": true,
          "manage_disk_cryptography": true,
          "remove_locked_disks": true,
          "replicate_disks": true,
          "synchronize_disks": true,
          "format_disks": true,
          "resize_disks": true,
          "backup_disks": true,
          "validate_data_integrity": true,
          "manage_snapshots": true,
          "manage_targets": true,
          "manage_profiles": true,
          "manage_secure_access_tokens": true,
          "manage_rules": true
        }
      },
      "account": {
        "rights": {
          "modify_contact_settings": true,
          "view_events": true,
          "view_statistics": true,
          "manage_global_profiles": true,
          "manage_global_secure_access_tokens": true,
          "query_catalog": true,
          "provision_vss": true,
          "manage_obj_stores": true,
          "read_object_storage": true,
          "write_object_storage": true,
          "delete_object_storage": true
        }
      }
    }
  }
]

Authorization Create

Create a persistent API authorization token.

POST /authorization

Optional Parameters

NameTypeDescription
fingerprintnullable stringclient-side differentiator to permit multiple authorizations per application/user
app_idnullable stringassociated client application (null = no/unspecified application)
notesnullable stringuser assigned notes
Length: 0..256
scopenullable stringauthorization scope (null maps to referenced user permissions)
enabledbooleanauthorization is enabled
default: true
access_typestringauthorization access type (offline access includes a refresh token)
default: "online"
one of:"online" or "offline"
restrictstringspecify how the user permissions are mapped/filtered
default: "auth"
one of:"none" or "auth"
permissions:realm:rights:can_switch_userbooleancan SU to lower level user
permissions:realm:rights:manage_node_membershipbooleanaccept or delete nodes from the management network
permissions:realm:rights:manage_accountsbooleancan create or delete other accounts, users and their settings
permissions:realm:rights:view_logsbooleanview administrative logs
permissions:realm:rights:run_admin_tasksbooleanrun realm administrative tasks
permissions:realm:rights:run_testsbooleanrun realm administrative tests
permissions:node:all_realm_scopebooleanapply to all nodes in the realm
default: true
permissions:node:nodesarrayscope permissions to specific nodes
permissions:node:rights:manage_storagebooleanconfigure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networksbooleanconfigure networks
permissions:node:rights:provision_vssbooleanmanually provision virtual storage services
permissions:node:rights:remove_vssbooleanremove virtual storage services
permissions:vss:all_account_scopebooleanapply to all virtual storage services in the account
default: true
permissions:vss:vssesarraylimit scope to specified vsses
permissions:vss:rights:dismiss_tasksbooleandismiss tasks
permissions:vss:rights:update_vssbooleanupdate vss configuration
permissions:vss:rights:remove_vssbooleanremove vss
permissions:vss:rights:set_vss_quotabooleanset vss quota
permissions:vss:rights:manage_internal_disksbooleanmanage internal disks
permissions:vss:rights:manage_external_disksbooleanmanage external disks
permissions:vss:rights:manage_removable_disksbooleanmanage removable disks
permissions:vss:rights:manage_disk_cryptographybooleanmanage disk cryptography
permissions:vss:rights:remove_locked_disksbooleanremove locked disks
permissions:vss:rights:validate_data_integritybooleanvalidate data integrity
permissions:vss:rights:manage_targetsbooleanmanage targets
permissions:vss:rights:manage_profilesbooleanmanage profiles
permissions:vss:rights:manage_secure_access_tokensbooleanmanage secure access tokens
permissions:vss:rights:manage_rulesbooleanmanage rules
permissions:vss:rights:replicate_disksbooleanreplicate disks
permissions:vss:rights:synchronize_disksbooleansynchronize disks
permissions:vss:rights:format_disksbooleanformat disks
permissions:vss:rights:resize_disksbooleanresize disks
permissions:vss:rights:manage_snapshotsbooleanmanage snapshots
permissions:vss:rights:backup_disksbooleanbackup disks
permissions:vss:rights:replicate_and_synchronize_disksbooleanreplicate and synchronize disks (DEPRECATED)
permissions:vss:rights:compress_disksbooleancompress disks
permissions:vss:rights:manage_disk_compressionbooleanmanage disk
permissions:user:rights:manage_usersbooleancreate or delete users in an account
permissions:user:rights:modify_user_contact_settingsbooleanmodify user contact info
permissions:user:rights:reset_user_passwordbooleanreset user password
permissions:user:rights:reset_user_two_factorbooleanreset two factor authentication
permissions:user:rights:manage_authorizationsbooleancreate or delete persistent authorizations
permissions:account:rights:modify_contact_settingsbooleanmodify account contact settings
permissions:account:rights:view_eventsbooleanview events
permissions:account:rights:view_statisticsbooleanview statistics
permissions:account:rights:manage_global_profilesbooleanmanage global profiles
permissions:account:rights:manage_global_secure_access_tokensbooleanmanage global secure access tokens
permissions:account:rights:query_catalogbooleanquery product catalog
permissions:account:rights:provision_vssbooleanprovision vss from catalog
permissions:account:rights:manage_obj_storesbooleanmanage obj stores
permissions:account:rights:read_object_storagebooleanread from object storage
permissions:account:rights:write_object_storagebooleanwrite to object storage
permissions:account:rights:delete_object_storagebooleandelete from object storage
uuiduuidobject UUID
xrefstringarbitrary string reference
Length: 1..256
enforce_two_factorbooleanenforce user two-factor auth (if configured)
user_idstringuser profile id

Curl Example

$ curl -X POST https://mgmt-node/api/authorization \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:26:55 GMT
Server: Goliath
Cache-Control: no-store
Pragma: no-cache
Content-Type: application/json
Content-Length: 2672
{
  "id": "authz:8:10",
  "serial": "ATH4762194C406264DA",
  "account_id": "account:1:10",
  "user_id": "user_profile:1:10",
  "xref": null,
  "notes": null,
  "fingerprint": null,
  "enabled": true,
  "app_id": null,
  "scope": null,
  "access_type": "online",
  "lifetime": null,
  "restrict": "auth",
  "enforce_two_factor": false,
  "created_at": "2017-10-09T17:26:55.195+00:00",
  "updated_at": "2017-10-09T17:26:55.195+00:00",
  "expires_in": null,
  "access_token_digest": "+rQjeekqAsn2Dpc+SswdGSG8Dj1MpKPzbsGoYP00onc",
  "access_token_suffix": "ZM3mJpCA",
  "refresh_token_digest": null,
  "effective_scope": "r:r=can_switch_user r:r=manage_node_membership r:r=manage_accounts r:r=view_logs r:r=run_admin_tasks r:r=run_tests a:r=modify_contact_settings a:r=view_events a:r=view_statistics a:r=manage_global_profiles a:r=manage_global_secure_access_tokens a:r=query_catalog a:r=provision_vss a:r=manage_obj_stores a:r=read_object_storage a:r=write_object_storage a:r=delete_object_storage n:r=manage_storage n:r=manage_networks n:r=provision_vss n:r=remove_vss v:r=dismiss_tasks v:r=update_vss v:r=remove_vss v:r=set_vss_quota v:r=manage_internal_disks v:r=manage_external_disks v:r=manage_removable_disks v:r=manage_disk_cryptography v:r=remove_locked_disks v:r=replicate_disks v:r=synchronize_disks v:r=format_disks v:r=resize_disks v:r=backup_disks v:r=validate_data_integrity v:r=manage_snapshots v:r=manage_targets v:r=manage_profiles v:r=manage_secure_access_tokens v:r=manage_rules n:o=all v:o=all",
  "permissions": {
    "realm": {
      "rights": {
        "can_switch_user": true,
        "manage_node_membership": true,
        "manage_accounts": true,
        "view_logs": true,
        "run_admin_tasks": true,
        "run_tests": true
      }
    },
    "node": {
      "all_realm_scope": true,
      "rights": {
        "manage_storage": true,
        "manage_networks": true,
        "provision_vss": true,
        "remove_vss": true
      }
    },
    "vss": {
      "all_account_scope": true,
      "rights": {
        "dismiss_tasks": true,
        "update_vss": true,
        "remove_vss": true,
        "set_vss_quota": true,
        "manage_internal_disks": true,
        "manage_external_disks": true,
        "manage_removable_disks": true,
        "manage_disk_cryptography": true,
        "remove_locked_disks": true,
        "replicate_disks": true,
        "synchronize_disks": true,
        "format_disks": true,
        "resize_disks": true,
        "backup_disks": true,
        "validate_data_integrity": true,
        "manage_snapshots": true,
        "manage_targets": true,
        "manage_profiles": true,
        "manage_secure_access_tokens": true,
        "manage_rules": true
      }
    },
    "account": {
      "rights": {
        "modify_contact_settings": true,
        "view_events": true,
        "view_statistics": true,
        "manage_global_profiles": true,
        "manage_global_secure_access_tokens": true,
        "query_catalog": true,
        "provision_vss": true,
        "manage_obj_stores": true,
        "read_object_storage": true,
        "write_object_storage": true,
        "delete_object_storage": true
      }
    }
  },
  "access_token": "1/Yw7mTN5iY0ncIb3auY/1fl25VQsNWAx2xrIn5A4tseDjDuZM3mJpCA",
  "refresh_token": null
}

Authorization Remove

Remove a persistent API authorization token.

DELETE /authorization/{authz_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/authorization/authz:8:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:38 GMT
Server: Goliath

Authorization Update

Change a persistent API authorization token.

PATCH /authorization/{authz_id_or_serial}

Optional Parameters

NameTypeDescription
enabledbooleanauthorization is enabled
default: true
notesnullable stringuser assigned notes
Length: 0..256
scopenullable stringauthorization scope (null maps to referenced user permissions)
permissions:realm:rights:can_switch_userbooleancan SU to lower level user
permissions:realm:rights:manage_node_membershipbooleanaccept or delete nodes from the management network
permissions:realm:rights:manage_accountsbooleancan create or delete other accounts, users and their settings
permissions:realm:rights:view_logsbooleanview administrative logs
permissions:realm:rights:run_admin_tasksbooleanrun realm administrative tasks
permissions:realm:rights:run_testsbooleanrun realm administrative tests
permissions:node:all_realm_scopebooleanapply to all nodes in the realm
default: true
permissions:node:nodesarrayscope permissions to specific nodes
permissions:node:rights:manage_storagebooleanconfigure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networksbooleanconfigure networks
permissions:node:rights:provision_vssbooleanmanually provision virtual storage services
permissions:node:rights:remove_vssbooleanremove virtual storage services
permissions:vss:all_account_scopebooleanapply to all virtual storage services in the account
default: true
permissions:vss:vssesarraylimit scope to specified vsses
permissions:vss:rights:dismiss_tasksbooleandismiss tasks
permissions:vss:rights:update_vssbooleanupdate vss configuration
permissions:vss:rights:remove_vssbooleanremove vss
permissions:vss:rights:set_vss_quotabooleanset vss quota
permissions:vss:rights:manage_internal_disksbooleanmanage internal disks
permissions:vss:rights:manage_external_disksbooleanmanage external disks
permissions:vss:rights:manage_removable_disksbooleanmanage removable disks
permissions:vss:rights:manage_disk_cryptographybooleanmanage disk cryptography
permissions:vss:rights:remove_locked_disksbooleanremove locked disks
permissions:vss:rights:validate_data_integritybooleanvalidate data integrity
permissions:vss:rights:manage_targetsbooleanmanage targets
permissions:vss:rights:manage_profilesbooleanmanage profiles
permissions:vss:rights:manage_secure_access_tokensbooleanmanage secure access tokens
permissions:vss:rights:manage_rulesbooleanmanage rules
permissions:vss:rights:replicate_disksbooleanreplicate disks
permissions:vss:rights:synchronize_disksbooleansynchronize disks
permissions:vss:rights:format_disksbooleanformat disks
permissions:vss:rights:resize_disksbooleanresize disks
permissions:vss:rights:manage_snapshotsbooleanmanage snapshots
permissions:vss:rights:backup_disksbooleanbackup disks
permissions:vss:rights:replicate_and_synchronize_disksbooleanreplicate and synchronize disks (DEPRECATED)
permissions:vss:rights:compress_disksbooleancompress disks
permissions:vss:rights:manage_disk_compressionbooleanmanage disk
permissions:user:rights:manage_usersbooleancreate or delete users in an account
permissions:user:rights:modify_user_contact_settingsbooleanmodify user contact info
permissions:user:rights:reset_user_passwordbooleanreset user password
permissions:user:rights:reset_user_two_factorbooleanreset two factor authentication
permissions:user:rights:manage_authorizationsbooleancreate or delete persistent authorizations
permissions:account:rights:modify_contact_settingsbooleanmodify account contact settings
permissions:account:rights:view_eventsbooleanview events
permissions:account:rights:view_statisticsbooleanview statistics
permissions:account:rights:manage_global_profilesbooleanmanage global profiles
permissions:account:rights:manage_global_secure_access_tokensbooleanmanage global secure access tokens
permissions:account:rights:query_catalogbooleanquery product catalog
permissions:account:rights:provision_vssbooleanprovision vss from catalog
permissions:account:rights:manage_obj_storesbooleanmanage obj stores
permissions:account:rights:read_object_storagebooleanread from object storage
permissions:account:rights:write_object_storagebooleanwrite to object storage
permissions:account:rights:delete_object_storagebooleandelete from object storage
enforce_two_factorbooleanenforce user two-factor auth (if configured)

Curl Example

$ curl -X PATCH https://mgmt-node/api/authorization/authz:8:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "enabled": false,
  "notes": "authz updated to be disabled"
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:55 GMT
Server: Goliath
ETag: "919bea09732c41cb208b03cd10885a81"
Content-Type: application/json
Content-Length: 2604
{
  "id": "authz:8:10",
  "serial": "ATH4762194C406264DA",
  "account_id": "account:1:10",
  "user_id": "user_profile:1:10",
  "xref": null,
  "notes": "authz updated to be disabled",
  "fingerprint": null,
  "enabled": false,
  "app_id": null,
  "scope": null,
  "access_type": "online",
  "lifetime": null,
  "restrict": "auth",
  "enforce_two_factor": false,
  "created_at": "2017-10-09T17:26:55.195+00:00",
  "updated_at": "2017-10-09T17:26:55.603+00:00",
  "expires_in": null,
  "access_token_digest": "+rQjeekqAsn2Dpc+SswdGSG8Dj1MpKPzbsGoYP00onc",
  "access_token_suffix": "ZM3mJpCA",
  "refresh_token_digest": null,
  "effective_scope": "r:r=can_switch_user r:r=manage_node_membership r:r=manage_accounts r:r=view_logs r:r=run_admin_tasks r:r=run_tests a:r=modify_contact_settings a:r=view_events a:r=view_statistics a:r=manage_global_profiles a:r=manage_global_secure_access_tokens a:r=query_catalog a:r=provision_vss a:r=manage_obj_stores a:r=read_object_storage a:r=write_object_storage a:r=delete_object_storage n:r=manage_storage n:r=manage_networks n:r=provision_vss n:r=remove_vss v:r=dismiss_tasks v:r=update_vss v:r=remove_vss v:r=set_vss_quota v:r=manage_internal_disks v:r=manage_external_disks v:r=manage_removable_disks v:r=manage_disk_cryptography v:r=remove_locked_disks v:r=replicate_disks v:r=synchronize_disks v:r=format_disks v:r=resize_disks v:r=backup_disks v:r=validate_data_integrity v:r=manage_snapshots v:r=manage_targets v:r=manage_profiles v:r=manage_secure_access_tokens v:r=manage_rules n:o=all v:o=all",
  "permissions": {
    "realm": {
      "rights": {
        "can_switch_user": true,
        "manage_node_membership": true,
        "manage_accounts": true,
        "view_logs": true,
        "run_admin_tasks": true,
        "run_tests": true
      }
    },
    "node": {
      "all_realm_scope": true,
      "rights": {
        "manage_storage": true,
        "manage_networks": true,
        "provision_vss": true,
        "remove_vss": true
      }
    },
    "vss": {
      "all_account_scope": true,
      "rights": {
        "dismiss_tasks": true,
        "update_vss": true,
        "remove_vss": true,
        "set_vss_quota": true,
        "manage_internal_disks": true,
        "manage_external_disks": true,
        "manage_removable_disks": true,
        "manage_disk_cryptography": true,
        "remove_locked_disks": true,
        "replicate_disks": true,
        "synchronize_disks": true,
        "format_disks": true,
        "resize_disks": true,
        "backup_disks": true,
        "validate_data_integrity": true,
        "manage_snapshots": true,
        "manage_targets": true,
        "manage_profiles": true,
        "manage_secure_access_tokens": true,
        "manage_rules": true
      }
    },
    "account": {
      "rights": {
        "modify_contact_settings": true,
        "view_events": true,
        "view_statistics": true,
        "manage_global_profiles": true,
        "manage_global_secure_access_tokens": true,
        "query_catalog": true,
        "provision_vss": true,
        "manage_obj_stores": true,
        "read_object_storage": true,
        "write_object_storage": true,
        "delete_object_storage": true
      }
    }
  }
}

Node

A Blockbridge Node is an instance of Blockbridge node software running on physical or virtual hardware. It can be a management node, a storage node, or a converged node.

  • A management node provides configuration, monitoring, and other administrative capabilities. The management web application and API clients are terminated at the management node.
  • A storage node delivers secure storage services using direct-attached and iSCSI storage. Client iSCSI connections are terminated at a storage node.
  • A converged node contains both a management node and a storage node in one system. For most management purposes (including in the management web application) converged nodes are treated as a distinct management node and storage node.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
labelstringuser assigned label
Length: 1..64
serialstringnode serial number
install_tokenstringgenerated installation token
install_modestringinstallation mode
activation_codestringgenerated activation code
activation_statestringactivation state
license:typestringlicense type
one of:"none" or "development" or "evaluation" or "production" or "subscription"
license:minutes_remainingintegerlicense minutes remaining
license:tokenstringlicense token
eula:acceptedbooleanend user license accepted
eula:accepted_atnullable integerend user license accepted at (time)
Range: 0 <= value
registration:allowbooleanallow registrations for this node
notesnullable stringuser assigned notes
Length: 0..256
ctimeintegernode create time
Range: 0 <= value
mtimeintegernode last modified time
Range: 0 <= value
site_idstringsite node is located in
typestringnode type
one of:"management" or "storage" or "disk"
ipnullable objectnode ip address for management
ip:pub_addripv4public address of service target interface
ip:pub_descstringpublic address description
ip:prv_addripv4private address of system interface
ip:prv_descstringprivate address description
ip:pub_addr_user_setbooleanpublic address set by user
ip:prv_addr_user_setbooleanprivate address set by user
management:castringno documentation
one of:"none" or "embedded"
management:hostnamestringno documentation
Length: 1..∞
enabledbooleannode enabled for use
openstack_idp:idnullable stringno documentation
openstack_idp:uuidnullable uuidno documentation
openstack_idp:labelstringno documentation
Length: 1..∞
openstack_idp:typestringidentity provider type
one of:"internal" or "openstack"
openstack_idp:enabledbooleanidentity provider enabled
openstack_idp:urlnullable stringidP API endpoint
openstack_idp:auth:user:idnullable stringlook up user by idp-specific index
openstack_idp:auth:user:namenullable stringlook up user by name/login
openstack_idp:auth:user:passwordnullable stringauthenticate using supplied password
openstack_idp:auth:project:idnullable stringlook up project by idp-specific index
openstack_idp:auth:project:namenullable stringlook up project by name
openstack_idp:auth:domain:idnullable stringlook up domain by idp-specific index
openstack_idp:auth:domain:namenullable stringlook up domain by name
openstack_idp:auto_create_accountbooleanautomatically create mapped accounts
openstack_idp:auto_create_userbooleanautomatically create mapped users
openstack_idp:accepted_rolesarrayaccepted roles
openstack_idp:recheck_intervalnullable integertime after which a token must be re-validated (in seconds)
openstack_portal_filternullable objectIP filter rule
openstack_portal_filter:ipipv4IP address
openstack_portal_filter:maskipv4netmask
tagsarrayobject tags
visibility_ctlstringobject visibility control
one of:"default" or "show" or "hide"
restrictedbooleannode present but restricted from use
converged_sn_idstringid of converged storage node
converged_mn_idstringid of converged management node
disk_nodesarrayobject tags
params:scheduling_algorithms/typestringscheduling algorithm type
one of:"ideal_usage"
params:scheduling_algorithms/labelnullable stringno documentation
params:scheduling_algorithms/ideal_usage_pctnullable stringno documentation
params:scheduling_algorithms/min_usage_pctnullable stringno documentation
params:scheduling_algorithms/capacity_weight_pctnullable stringno documentation
params:scheduling_algorithms/iops_weight_pctnullable stringno documentation
params:scheduling_algorithms/defaultnullable stringno documentation
params:service_templates/typestringservice type name
Length: 1..32
params:service_templates/descriptionstringservice type description
Length: 1..256
params:service_templates/defaultbooleandefault template
params:service_templates/tags:includearrayinclude array
params:service_templates/tags:excludearrayexclude array
params:service_templates/size:reserve_minnullable integerminimum size reserve
params:service_templates/size:reserve_maxnullable integermaximum size reserve
params:service_templates/size:limit_percentnullable integerSet the hard limit on storage consumption to a percentage of the size reserved. Must be at least 100% of the reserved size. If null, it's unlimited.
Range: 100 <= value
params:service_templates/iops:rationullable integerbaseline IOPS ratio, specified as a ratio of IOPS to reserved size (in IOPS/GiB)
params:service_templates/iops:burstnullable integerIOPS burst limit (in IOPS)
params:service_templates/iops:burst_creditnullable integermaximum burst credits (in IOPS credits); not supported with provisioned IOPS
params:service_templates/iops:minnullable integerminimum IOPS
params:service_templates/iops:maxnullable integermaximum IOPS
params:service_templates/iops:typestringhow limited IOPS are specified
one of:"disabled" or "capacity-scaled"
params:service_templates/iops:burst_typestringhow burst IOPS are specified
one of:"disabled" or "admin-fixed" or "capacity-scaled"
params:service_templates/iops:burst_rationullable integerbaseline burst IOPS ratio, specified as a ratio of burst IOPS to reserved size (in IOPS/GiB)
params:service_templates/piops:typestringhow provisioned IOPS are specified
one of:"disabled" or "admin-fixed" or "capacity-scaled" or "user-specified"
params:service_templates/piops:valuenullable integerfixed IOPS value
Range: 1 <= value
params:service_templates/piops:rationullable integerbaseline provisioned IOPS ratio, specified as a ratio of IOPS to reserved size (in IOPS/GiB)
params:service_templates/piops:minnullable integerminimum provisioned IOPS
params:service_templates/piops:maxnullable integermaximum provisioned IOPS
params:account_templates/provisioning:size_reserve_maxnullable integermaximum size reserve of a single virtual storage service
params:account_templates/provisioning:iops_reserve_maxnullable integermaximum iops reserve of a single virtual storage service
params:account_templates/provisioning:tags_includearraytags included
params:account_templates/provisioning:tags_excludearraytags excluded
params:account_templates/provisioning:tags_permitnullable arraytags permitted
params:account_templates/provisioning:tags_permitnullable arraytags permitted
params:account_templates/limits:vss_numnullable integernumber of virtual storage services
params:account_templates/limits:size_reserve_totalnullable integermaximum size of storage
params:account_templates/permissions:realm:rights:can_switch_userbooleancan SU to lower level user
params:account_templates/permissions:realm:rights:manage_node_membershipbooleanaccept or delete nodes from the management network
params:account_templates/permissions:realm:rights:manage_accountsbooleancan create or delete other accounts, users and their settings
params:account_templates/permissions:realm:rights:view_logsbooleanview administrative logs
params:account_templates/permissions:realm:rights:run_admin_tasksbooleanrun realm administrative tasks
params:account_templates/permissions:realm:rights:run_testsbooleanrun realm administrative tests
params:account_templates/permissions:node:all_realm_scopebooleanapply to all nodes in the realm
params:account_templates/permissions:node:nodesarrayscope permissions to specific nodes
params:account_templates/permissions:node:rights:manage_storagebooleanconfigure OS devices, iSCSI devices, and system datastores
params:account_templates/permissions:node:rights:manage_networksbooleanconfigure networks
params:account_templates/permissions:node:rights:provision_vssbooleanmanually provision virtual storage services
params:account_templates/permissions:node:rights:remove_vssbooleanremove virtual storage services
params:account_templates/permissions:vss:all_account_scopebooleanapply to all virtual storage services in the account
params:account_templates/permissions:vss:vssesarraylimit scope to specified vsses
params:account_templates/permissions:vss:rights:dismiss_tasksbooleandismiss tasks
params:account_templates/permissions:vss:rights:update_vssbooleanupdate vss configuration
params:account_templates/permissions:vss:rights:remove_vssbooleanremove vss
params:account_templates/permissions:vss:rights:set_vss_quotabooleanset vss quota
params:account_templates/permissions:vss:rights:manage_internal_disksbooleanmanage internal disks
params:account_templates/permissions:vss:rights:manage_external_disksbooleanmanage external disks
params:account_templates/permissions:vss:rights:manage_removable_disksbooleanmanage removable disks
params:account_templates/permissions:vss:rights:manage_disk_cryptographybooleanmanage disk cryptography
params:account_templates/permissions:vss:rights:remove_locked_disksbooleanremove locked disks
params:account_templates/permissions:vss:rights:replicate_and_synchronize_disksbooleanreplicate and synchronize disks
params:account_templates/permissions:vss:rights:validate_data_integritybooleanvalidate data integrity
params:account_templates/permissions:vss:rights:manage_targetsbooleanmanage targets
params:account_templates/permissions:vss:rights:manage_profilesbooleanmanage profiles
params:account_templates/permissions:vss:rights:manage_secure_access_tokensbooleanmanage secure access tokens
params:account_templates/permissions:vss:rights:manage_rulesbooleanmanage rules
params:account_templates/permissions:vss:rights:replicate_disksbooleanreplicate disks
params:account_templates/permissions:vss:rights:synchronize_disksbooleansynchronize disks
params:account_templates/permissions:vss:rights:format_disksbooleanformat disks
params:account_templates/permissions:vss:rights:resize_disksbooleanresize disks
params:account_templates/permissions:vss:rights:backup_disksbooleanbackup disks
params:account_templates/permissions:vss:rights:manage_snapshotsbooleanmanage snapshots
params:account_templates/permissions:vss:rights:compress_disksbooleancompress disks
params:account_templates/permissions:vss:rights:manage_disk_compressionbooleanmanage disk
params:account_templates/permissions:user:rights:manage_usersbooleancreate or delete users in an account
params:account_templates/permissions:user:rights:modify_user_contact_settingsbooleanmodify user contact info
params:account_templates/permissions:user:rights:reset_user_passwordbooleanreset user password
params:account_templates/permissions:user:rights:reset_user_two_factorbooleanreset two factor authentication
params:account_templates/permissions:user:rights:manage_authorizationsbooleancreate or delete persistent authorizations
params:account_templates/permissions:account:rights:modify_contact_settingsbooleanmodify account contact settings
params:account_templates/permissions:account:rights:view_eventsbooleanview events
params:account_templates/permissions:account:rights:view_statisticsbooleanview statistics
params:account_templates/permissions:account:rights:manage_global_profilesbooleanmanage global profiles
params:account_templates/permissions:account:rights:manage_global_secure_access_tokensbooleanmanage global secure access tokens
params:account_templates/permissions:account:rights:query_catalogbooleanquery product catalog
params:account_templates/permissions:account:rights:provision_vssbooleanprovision vss from catalog
params:account_templates/permissions:account:rights:manage_obj_storesbooleanmanage object stores
params:account_templates/permissions:account:rights:read_object_storagebooleanread from object storage
params:account_templates/permissions:account:rights:write_object_storagebooleanwrite to object storage
params:account_templates/permissions:account:rights:delete_object_storagebooleandelete from object storage
params:account_templates/typestringaccount template name
Length: 1..32
params:account_templates/descriptionstringaccount template description
Length: 1..256
params:account_templates/defaultbooleandefault template
params:scheduling_workloads/workloadstringworkload
one of:"lower_iops" or "normal_iops" or "higher_iops"
params:scheduling_workloads/iopsintegerworkload IOPS
status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detailnullable stringstatus detail
default_visibilitystringobject visibility default
one of:"show" or "hide"
visibilitystringobject visibility status
one of:"show" or "hide"
isotimenullable date-timelocal time on node
humantimenullable stringhuman-readable time on node
build_versionnullable stringversion of software running on node
build_timenullable stringtime and date that node software was built
versionnullable objectbuild version
version:hashstringbuild hash
version:minorintegerbuild minor version
version:majorintegerbuild major version
version:timestampintegerbuild timestamp
version:patchintegerbuild patch version
version:tagstringbuild tag
version:releasestringbuild release
cpu_processorsnullable integernumber of processors on node
cpu_modelnullable stringvendor and model of first CPU on node
mem_totalnullable integersystem memory on node
kernel_versionnullable stringkernel version on node
enclosuresnullable stringenclosure data
sn:usage:vdisk_intnullable integerinternal virtual disks on node
sn:usage:rulesnullable integerrules on node
sn:usage:vssnullable integervirtual storage services on node
sn:usage:targetsnullable integertargets on node
sn:usage:removablenullable integerremovable virtual disks on node
sn:usage:sdsnullable integerdatastores on node
sn:usage:clonesnullable integercloned disks on node
sn:usage:iscsi_devnullable integeriSCSI devices on node
sn:usage:snapshotsnullable integersnapshots on node
sn:usage:repl_slavesnullable integerreplication slave virtual disks on node
sn:usage:vdisk_int_cap_mbnullable integersum of internal virtual disk capacities in megabytes
sn:usage:conn_securenullable integersecure iSCSI session connections to node targets
sn:usage:conn_insecurenullable integerinsecure iSCSI session connections to node targets
sn:usage:vdisk_extnullable integerexternal virtual disks on node
sn:usage:os_devnullable integerOS devices on node
sn:usage:sessionsnullable integeriSCSI sessions connected to node targets
sn:usage:accountsnullable integeraccounts on node
sn:usage:profilesnullable integerinitiator profiles on node
sn:usage:repl_mastersnullable integerreplication master virtual disks on node
sn:usage:vss_maxnullable integermaximum number of virtual storage services on the node
sn:usage:session_maxnullable integermaximum number of iSCSI sessions on the node
sn:usage:target_maxnullable integermaximum number of iSCSI targets on the node
sn:usage:vdisk_maxnullable integermaximum number of virtual disks on the node
sn:usage:os_dev_maxnullable integermaximum number of configurable os devices on the node
sn:usage:profile_maxnullable integermaximum number of initiator profiles on the node
sn:usage:rule_maxnullable integermaximum number of rules on the node
sn:usage:devnullable integeriSCSI and OS devices on node
sn:usage:vdisknullable integervirtual disks on node
sn:usage:connnullable integeriSCSI session connections to node targets
sn:usage:nvme_qpsnullable integerNVMe queue pairs, including admin queues
sn:usage:sessions_nvmenullable integerNVMe sessions (associations) connected to node targets
sn:usage:sessions_iscsinullable integeriSCSI sessions connected to node targets
sn:cplx_numnullable integernumber of processor complexes
sn:cplx/idstringprocessor complex id
sn:cplx/status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
sn:cplx/status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
sn:cplx/status:detailnullable stringstatus detail
sn:cplx/data_cache_sizenullable integersize of processor complex data cache
sn:cplx/meta_cache_size_limitnullable integerlimit on total memory that may be reserved for metadata caching
sn:cplx/max_data_log_sizenullable integermaximum data log size that may be created
sn:cplx/max_meta_cache_sizenullable integermaximum metadata cache size that may be specified
sn:cplx/availablebooleanavailable for datastore placement
sn:cplx/labelstringcustomer-friendly textual label
restore:start_timenullable integernode restore start time
Range: 0 <= value
restore:end_timenullable integernode restore end time (success or failure)
Range: 0 <= value
restore:statenullable stringnode restore job state
one of:"starting" or "running" or "success" or "failed"
restore:errorsnullable integercount of errors during node restore, see event log for details
restore:phasenullable stringdescription of current node restore phase
Length: 0..80
restore:failurenullable stringon node restore failure, description of reason
Length: 0..80
cluster:reports/idstringname of cluster member that generated this report
cluster:reports/members/activenullable booleancluster member is actively hosting services
cluster:reports/members/cluster_ipnullable ipv4cluster network address of member
cluster:reports/members/rolenullable stringcluster member role
one of:"active" or "passive" or "vote"
cluster:reports/members/failovernullable booleanthis cluster member is passive and ready for accept failover
cluster:reports/members/status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
cluster:reports/members/status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
cluster:reports/members/status:detailnullable stringstatus detail
cluster:reports/members/status_ipnullable ipv4address of cluster member from which it reports status
cluster:reports/members/idstringcluster member name
cluster:reports/members/statenullable stringcluster member state
one of:"dirty" or "standby" or "maintenance" or "clean" or "offline"
cluster:reports/members/onlinenullable booleancluster member is online
cluster:reports/failovernullable stringcluster member failover capability
one of:"available" or "unavailable"
cluster:reports/status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
cluster:reports/status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
cluster:reports/status:detailnullable stringstatus detail
cluster:members/activenullable booleancluster member is actively hosting services
cluster:members/cluster_ipnullable ipv4cluster network address of member
cluster:members/rolenullable stringcluster member role
one of:"active" or "passive" or "vote"
cluster:members/failovernullable booleanthis cluster member is passive and ready for accept failover
cluster:members/status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
cluster:members/status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
cluster:members/status:detailnullable stringstatus detail
cluster:members/status_ipnullable ipv4address of cluster member from which it reports status
cluster:members/idstringcluster member name
cluster:members/statenullable stringcluster member state
one of:"dirty" or "standby" or "maintenance" or "clean" or "offline"
cluster:members/onlinenullable booleancluster member is online
cluster:failovernullable stringcluster failover capability
one of:"available" or "unavailable"
cluster:status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
cluster:status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
cluster:status:detailnullable stringstatus detail
cluster:is_clusternullable booleannode is running in cluster mode

Node Info

Retrieve an existing node.

GET /node/{node_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/node/node:10000 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:50 GMT
Server: Goliath
ETag: "6b394f6213c622e08f82de002403957d"
Content-Type: application/json
Content-Length: 2163
{
  "id": "node:10000",
  "uuid": "4347e01f-f106-4735-bfbf-68addda9982f",
  "serial": "NOD0F68194C40601558",
  "evt_qry": "serial=NOD0F68194C40601558",
  "ctime": 1507562835087,
  "mtime": 1507569964547,
  "seq": 1507569993701,
  "label": "node101",
  "notes": "node updated to 101",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507569969000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            94,
            160,
            160,
            160
          ],
          "v": "dbg"
        },
        {
          "d": [
            45,
            85,
            85,
            85
          ],
          "v": "info"
        },
        {
          "d": [
            1,
            2,
            2,
            2
          ],
          "v": "warn"
        },
        {
          "d": [
            2,
            2,
            2,
            2
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507569969666
  },
  "rec_status": null,
  "site_id": "site:10",
  "type": [
    "storage"
  ],
  "tags": [

  ],
  "disk_nodes": [

  ],
  "license": {
    "type": [
      "evaluation"
    ],
    "minutes_remaining": 43100,
    "token": "8cf63f34593571104393cb8306b6cb13"
  },
  "activation_code": null,
  "activation_state": "activated",
  "install_mode": "solo",
  "install_token": "WyJpMSIsIm1hc3Rlci1ob28yd29vMWFlcGhlaTZjIiwic3MiLDMxNzg5MjYwODJd",
  "ip": {
    "pub_addr": "172.16.100.61",
    "pub_addr_user_set": true,
    "prv_addr": "10.10.200.23",
    "prv_addr_user_set": true
  },
  "build_time": "Thu Oct 05 10:32 UTC 2017",
  "build_version": "4.0.0-4252.1",
  "cpu_model": "Intel Xeon E312xx (Sandy Bridge)",
  "cpu_processors": 1,
  "mem_total": 1929072640,
  "humantime": "Mon Oct 09 17:26 UTC 2017",
  "isotime": "2017-10-09T17:26+00:00",
  "version": {
    "major": 4,
    "minor": 0,
    "patch": 0,
    "release": "4252.1",
    "tag": "",
    "hash": "f41b54b0c02b9ecbee50ffca17fc1d74a6e20672",
    "timestamp": 1507199541000
  },
  "restore": {
    "start_time": null,
    "end_time": null,
    "state": null,
    "errors": null,
    "phase": null,
    "failure": null
  },
  "sn": {
    "data_cache_size": 536870912,
    "meta_cache_size_limit": 134217728,
    "max_data_log_size": 142078242,
    "max_meta_cache_size": 134217728,
    "usage": {
      "accounts": 0,
      "sds": 0,
      "os_dev": 8,
      "iscsi_dev": 0,
      "vss": 0,
      "vdisk_int": 0,
      "vdisk_ext": 0,
      "clones": 0,
      "snapshots": 0,
      "removable": 0,
      "repl_masters": 0,
      "repl_slaves": 0,
      "profiles": 0,
      "targets": 0,
      "rules": 0,
      "sessions": 0,
      "conn_insecure": 0,
      "conn_secure": 0,
      "vdisk_int_cap_mb": 0,
      "os_dev_max": 64,
      "profile_max": 8192,
      "rule_max": 16384,
      "session_max": 8192,
      "target_max": 8192,
      "vdisk_max": 4096,
      "vss_max": 4096
    }
  },
  "cluster": {
    "is_cluster": false,
    "failover": null,
    "members": [

    ],
    "status": {
      "value": "pending",
      "indicator": "degraded",
      "detail": "unable to connect to cluster"
    }
  }
}

Node List

Enumerate nodes.

GET /node

Curl Example

$ curl https://mgmt-node/api/node \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:50 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 6744
[
  {
    "id": "node:10000",
    "uuid": "4347e01f-f106-4735-bfbf-68addda9982f",
    "serial": "NOD0F68194C40601558",
    "evt_qry": "serial=NOD0F68194C40601558",
    "ctime": 1507562835087,
    "mtime": 1507569964547,
    "seq": 1507569993701,
    "label": "node101",
    "notes": "node updated to 101",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507569969000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              94,
              160,
              160,
              160
            ],
            "v": "dbg"
          },
          {
            "d": [
              45,
              85,
              85,
              85
            ],
            "v": "info"
          },
          {
            "d": [
              1,
              2,
              2,
              2
            ],
            "v": "warn"
          },
          {
            "d": [
              2,
              2,
              2,
              2
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507569969666
    },
    "rec_status": null,
    "site_id": "site:10",
    "type": [
      "storage"
    ],
    "tags": [

    ],
    "disk_nodes": [

    ],
    "license": {
      "type": [
        "evaluation"
      ],
      "minutes_remaining": 43100,
      "token": "8cf63f34593571104393cb8306b6cb13"
    },
    "activation_code": null,
    "activation_state": "activated",
    "install_mode": "solo",
    "install_token": "WyJpMSIsIm1hc3Rlci1ob28yd29vMWFlcGhlaTZjIiwic3MiLDMxNzg5MjYwODJd",
    "ip": {
      "pub_addr": "172.16.100.61",
      "pub_addr_user_set": true,
      "prv_addr": "10.10.200.23",
      "prv_addr_user_set": true
    },
    "build_time": "Thu Oct 05 10:32 UTC 2017",
    "build_version": "4.0.0-4252.1",
    "cpu_model": "Intel Xeon E312xx (Sandy Bridge)",
    "cpu_processors": 1,
    "mem_total": 1929072640,
    "humantime": "Mon Oct 09 17:26 UTC 2017",
    "isotime": "2017-10-09T17:26+00:00",
    "version": {
      "major": 4,
      "minor": 0,
      "patch": 0,
      "release": "4252.1",
      "tag": "",
      "hash": "f41b54b0c02b9ecbee50ffca17fc1d74a6e20672",
      "timestamp": 1507199541000
    },
    "restore": {
      "start_time": null,
      "end_time": null,
      "state": null,
      "errors": null,
      "phase": null,
      "failure": null
    },
    "sn": {
      "data_cache_size": 536870912,
      "meta_cache_size_limit": 134217728,
      "max_data_log_size": 142078242,
      "max_meta_cache_size": 134217728,
      "usage": {
        "accounts": 0,
        "sds": 0,
        "os_dev": 8,
        "iscsi_dev": 0,
        "vss": 0,
        "vdisk_int": 0,
        "vdisk_ext": 0,
        "clones": 0,
        "snapshots": 0,
        "removable": 0,
        "repl_masters": 0,
        "repl_slaves": 0,
        "profiles": 0,
        "targets": 0,
        "rules": 0,
        "sessions": 0,
        "conn_insecure": 0,
        "conn_secure": 0,
        "vdisk_int_cap_mb": 0,
        "os_dev_max": 64,
        "profile_max": 8192,
        "rule_max": 16384,
        "session_max": 8192,
        "target_max": 8192,
        "vdisk_max": 4096,
        "vss_max": 4096
      }
    },
    "cluster": {
      "is_cluster": false,
      "failover": null,
      "members": [

      ],
      "status": {
        "value": "pending",
        "indicator": "degraded",
        "detail": "unable to connect to cluster"
      }
    }
  },
  {
    "id": "node:10",
    "uuid": "c323c428-2336-4bc4-9412-839e2d325261",
    "serial": "NOD0F68194C406264FD",
    "evt_qry": "serial=NOD0F68194C406264FD",
    "ctime": 1507562833437,
    "mtime": 1507569970863,
    "seq": 1507569970885,
    "label": "management node",
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": null,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "v": "dbg",
            "d": [
              0,
              0,
              0,
              0
            ]
          },
          {
            "v": "info",
            "d": [
              0,
              0,
              0,
              0
            ]
          },
          {
            "v": "warn",
            "d": [
              0,
              0,
              0,
              0
            ]
          },
          {
            "v": "err",
            "d": [
              0,
              0,
              0,
              0
            ]
          }
        ]
      },
      "status": "current",
      "seq": 1507562839605
    },
    "rec_status": null,
    "site_id": "site:10",
    "type": [
      "management"
    ],
    "tags": [

    ],
    "disk_nodes": null,
    "license": {
      "type": [
        "evaluation"
      ],
      "minutes_remaining": 43100,
      "token": "8cf63f34593571104393cb8306b6cb13"
    },
    "eula": {
      "accepted": true,
      "accepted_at": 1507563022812
    },
    "activation_code": null,
    "activation_state": null,
    "params": {
      "scheduling_algorithms": [
        {
          "type": [
            "ideal_usage"
          ],
          "label": "ideal-usage",
          "ideal_usage_pct": 50,
          "min_usage_pct": 10,
          "capacity_weight_pct": 50,
          "iops_weight_pct": 50,
          "default": true
        }
      ],
      "service_templates": [
        {
          "type": [
            "gp"
          ],
          "description": "General Purpose",
          "default": true,
          "tags": {
            "include": [

            ],
            "exclude": [

            ]
          },
          "size": {
            "reserve_min": 1073741824,
            "reserve_max": 17592186044416,
            "limit_percent": 200
          },
          "iops": {
            "ratio": 3,
            "burst": 3000,
            "burst_credit": 5400000,
            "min": 100,
            "max": 3000
          },
          "piops": {
            "type": [
              "disabled"
            ],
            "value": null,
            "ratio": null,
            "min": null,
            "max": null
          }
        },
        {
          "type": [
            "piops"
          ],
          "description": "Provisioned IOPS",
          "default": false,
          "tags": {
            "include": [

            ],
            "exclude": [

            ]
          },
          "size": {
            "reserve_min": 4294967296,
            "reserve_max": 17592186044416,
            "limit_percent": 200
          },
          "iops": {
            "ratio": 50,
            "burst": null,
            "burst_credit": null,
            "min": 100,
            "max": 20000
          },
          "piops": {
            "type": [
              "user-specified"
            ],
            "value": null,
            "ratio": 50,
            "min": 100,
            "max": 20000
          }
        },
        {
          "type": [
            "unlimited"
          ],
          "description": "Unlimited Provisioning",
          "default": false,
          "tags": {
            "include": [

            ],
            "exclude": [

            ]
          },
          "size": {
            "reserve_min": 1048576,
            "reserve_max": null,
            "limit_percent": null
          },
          "iops": {
            "ratio": null,
            "burst": null,
            "burst_credit": null,
            "min": null,
            "max": null
          },
          "piops": {
            "type": [
              "disabled"
            ],
            "value": null,
            "ratio": null,
            "min": null,
            "max": null
          }
        }
      ],
      "scheduling_workloads": [
        {
          "workload": "lower_iops",
          "iops": 100
        },
        {
          "workload": "normal_iops",
          "iops": 500
        },
        {
          "workload": "higher_iops",
          "iops": 2000
        }
      ],
      "account_templates": [
        {
          "type": [
            "standard"
          ],
          "description": "Standard Account",
          "default": true,
          "provisioning": {
            "size_reserve_max": null,
            "iops_reserve_max": null,
            "tags_include": [

            ],
            "tags_exclude": [

            ],
            "tags_permit": null
          },
          "limits": {
            "vss_num": null,
            "size_reserve_total": null
          },
          "permissions": {
            "vss": {
              "all_account_scope": true,
              "rights": {
                "dismiss_tasks": true,
                "update_vss": true,
                "remove_vss": true,
                "set_vss_quota": true,
                "manage_internal_disks": true,
                "manage_external_disks": true,
                "manage_removable_disks": true,
                "manage_disk_cryptography": true,
                "remove_locked_disks": true,
                "replicate_disks": true,
                "synchronize_disks": true,
                "format_disks": true,
                "resize_disks": true,
                "backup_disks": true,
                "validate_data_integrity": true,
                "manage_snapshots": true,
                "manage_targets": true,
                "manage_profiles": true,
                "manage_secure_access_tokens": true,
                "manage_rules": true
              }
            },
            "user": {
              "rights": {
                "manage_users": true,
                "modify_user_contact_settings": true,
                "reset_user_password": true,
                "reset_user_two_factor": true,
                "manage_authorizations": true
              }
            },
            "account": {
              "rights": {
                "modify_contact_settings": true,
                "view_events": true,
                "view_statistics": true,
                "manage_global_profiles": true,
                "manage_global_secure_access_tokens": true,
                "query_catalog": true,
                "provision_vss": true,
                "manage_obj_stores": true,
                "read_object_storage": true,
                "write_object_storage": true,
                "delete_object_storage": true
              }
            }
          }
        }
      ]
    },
    "openstack_idp": {
      "id": "idp:1:10",
      "uuid": "e1f2692a-4543-443c-9c08-c7afc4349b2f",
      "label": "openstack",
      "type": [
        "openstack"
      ],
      "enabled": false,
      "url": null,
      "auth": {
        "user": {
          "id": null,
          "name": "admin",
          "password": null
        },
        "project": {
          "id": null,
          "name": "admin"
        },
        "domain": {
          "id": "default",
          "name": null
        }
      },
      "auto_create_account": true,
      "auto_create_user": true,
      "accepted_roles": [

      ],
      "recheck_interval": 60
    },
    "install_mode": null,
    "install_token": null,
    "ip": {
      "pub_addr": "172.16.100.61",
      "pub_addr_user_set": true,
      "prv_addr": "10.10.200.23",
      "prv_addr_user_set": true
    },
    "build_time": "Thu Oct 05 10:32 UTC 2017",
    "build_version": "4.0.0-4252.1",
    "cpu_model": null,
    "cpu_processors": null,
    "mem_total": null,
    "humantime": "Mon Oct 09 17:26 UTC 2017",
    "isotime": "2017-10-09T17:26+00:00",
    "version": {
      "major": 4,
      "minor": 0,
      "patch": 0,
      "release": "4252.1",
      "tag": "",
      "hash": "f41b54b0c02b9ecbee50ffca17fc1d74a6e20672",
      "timestamp": 1507199541000
    },
    "restore": {
      "start_time": null,
      "end_time": null,
      "state": null,
      "errors": null,
      "phase": null,
      "failure": null
    },
    "cluster": {
      "is_cluster": false,
      "failover": null,
      "members": [

      ],
      "status": {
        "value": "pending",
        "indicator": "degraded",
        "detail": "unable to connect to cluster"
      }
    }
  }
]

Node Create

Create a new storage node.

POST /node

Required Parameters

NameTypeDescription
site_idstringsite id
typestringtype of processing node
one of:"management" or "storage" or "disk"

Optional Parameters

NameTypeDescription
uuiduuidUUID to use for created object
labelstringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
licensestringsoftware license bundle
modestringnode clustering mode
default: "solo"
one of:"solo" or "cluster"
pub_ipaddripv4node public IP address
pub_ipaddr_descstringnode public IP address description
prv_ipaddripv4node private IP address
prv_ipaddr_descstringnode private IP address description
maintenance:modestringmaintenance mode
one of:"none" or "restrict" or "rendezvous"
maintenance:restrict/typestringrestriction type
one of:"svc_purchase" or "pt_queue_user" or "pt_queue_admin" or "pt_queue_remote" or "pt_rpc_send" or "pt_rpc_recv" or "pt_sched_user" or "pt_sched_admin" or "rpc_send" or "rpc_recv" or "rc_task_add" or "rc_task_sched" or "rc_msg_send" or "rc_msg_recv" or "cp_proxy" or "slp_send_boot"
maintenance:restrict/setbooleanrestriction set
maintenance:reasonstringreason for restriction
params:scheduling_algorithms/typestringscheduling algorithm type
one of:"ideal_usage"
params:scheduling_algorithms/labelnullable stringno documentation
params:scheduling_algorithms/ideal_usage_pctnullable stringno documentation
params:scheduling_algorithms/min_usage_pctnullable stringno documentation
params:scheduling_algorithms/capacity_weight_pctnullable stringno documentation
params:scheduling_algorithms/iops_weight_pctnullable stringno documentation
params:scheduling_algorithms/defaultnullable stringno documentation
params:service_templates/typestringservice type name
Length: 1..32
params:service_templates/descriptionstringservice type description
Length: 1..256
params:service_templates/defaultbooleandefault template
params:service_templates/tags:includearrayinclude array
params:service_templates/tags:excludearrayexclude array
params:service_templates/size:reserve_minnullable integerminimum size reserve
params:service_templates/size:reserve_maxnullable integermaximum size reserve
params:service_templates/size:limit_percentnullable integerSet the hard limit on storage consumption to a percentage of the size reserved. Must be at least 100% of the reserved size. If null, it's unlimited.
Range: 100 <= value
params:service_templates/iops:rationullable integerbaseline IOPS ratio, specified as a ratio of IOPS to reserved size (in IOPS/GiB)
params:service_templates/iops:burstnullable integerIOPS burst limit (in IOPS)
params:service_templates/iops:burst_creditnullable integermaximum burst credits (in IOPS credits); not supported with provisioned IOPS
params:service_templates/iops:minnullable integerminimum IOPS
params:service_templates/iops:maxnullable integermaximum IOPS
params:service_templates/iops:typestringhow limited IOPS are specified
default: "disabled"
one of:"disabled" or "capacity-scaled"
params:service_templates/iops:burst_typestringhow burst IOPS are specified
default: "disabled"
one of:"disabled" or "admin-fixed" or "capacity-scaled"
params:service_templates/iops:burst_rationullable integerbaseline burst IOPS ratio, specified as a ratio of burst IOPS to reserved size (in IOPS/GiB)
params:service_templates/piops:typestringhow provisioned IOPS are specified
default: "disabled"
one of:"disabled" or "admin-fixed" or "capacity-scaled" or "user-specified"
params:service_templates/piops:valuenullable integerfixed IOPS value
Range: 1 <= value
params:service_templates/piops:rationullable integerbaseline provisioned IOPS ratio, specified as a ratio of IOPS to reserved size (in IOPS/GiB)
params:service_templates/piops:minnullable integerminimum provisioned IOPS
params:service_templates/piops:maxnullable integermaximum provisioned IOPS
cert_fingerprintstringTLS certificate fingerprint
openstack_idp:idnullable stringno documentation
openstack_idp:uuidnullable uuidno documentation
openstack_idp:labelstringno documentation
default: "openstack"
Length: 1..∞
openstack_idp:typestringidentity provider type
default: "openstack"
one of:"internal" or "openstack"
openstack_idp:enabledbooleanidentity provider enabled
openstack_idp:urlnullable stringidP API endpoint
openstack_idp:auth:user:idnullable stringlook up user by idp-specific index
openstack_idp:auth:user:namenullable stringlook up user by name/login
default: "admin"
openstack_idp:auth:user:passwordnullable stringauthenticate using supplied password
openstack_idp:auth:project:idnullable stringlook up project by idp-specific index
openstack_idp:auth:project:namenullable stringlook up project by name
default: "admin"
openstack_idp:auth:domain:idnullable stringlook up domain by idp-specific index
default: "default"
openstack_idp:auth:domain:namenullable stringlook up domain by name
openstack_idp:auto_create_accountbooleanautomatically create mapped accounts
default: true
openstack_idp:auto_create_userbooleanautomatically create mapped users
default: true
openstack_idp:accepted_rolesarrayaccepted roles
default: []
openstack_idp:recheck_intervalnullable integertime after which a token must be re-validated (in seconds)
default: 60
visibility_ctlstringobject visibility control
default: "default"
one of:"default" or "show" or "hide"
tagsarrayobject tags

Curl Example

$ curl -X POST https://mgmt-node/api/node \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "label": "node100",
  "site_id": "site:18",
  "type": [
    "storage"
  ]
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:39 GMT
Server: Goliath
ETag: "a7e87547e5dc760784a3217a9335a328"
Content-Type: application/json
Content-Length: 1759
{
  "id": "node:10001",
  "uuid": "e69e5740-19bd-4e5d-a5a8-4ec04776b7d4",
  "serial": "NOD0F68194C40601540",
  "evt_qry": "serial=NOD0F68194C40601540",
  "ctime": 1507570059104,
  "mtime": 1507570059104,
  "seq": 1507570059150,
  "label": "node100",
  "notes": null,
  "status": {
    "value": "degraded",
    "indicator": "degraded",
    "detail": "node not registered"
  },
  "ec": {
    "table": null,
    "status": "retrieving",
    "seq": 1507570059150
  },
  "rec_status": null,
  "site_id": "site:18",
  "type": [
    "storage"
  ],
  "tags": [

  ],
  "disk_nodes": [

  ],
  "license": {
    "type": [
      "none"
    ],
    "token": "8cf63f34593571104393cb8306b6cb13"
  },
  "activation_code": "WyJhMSIsIjEwLjEwLjIwMC4yMyIsMjA0MDAsMTAwMDEsInN0b3JhZ2UiLCIyMGNhZWQxMTJkMWEzODZiMWRhOGYxM2NiZmJiYzhiMiJd",
  "activation_state": "node not registered",
  "install_mode": "solo",
  "install_token": "WyJpMSIsIm1hc3Rlci1ob28yd29vMWFlcGhlaTZjIiwic3MiLDMxNzg5MjYwODJd",
  "ip": null,
  "build_time": null,
  "build_version": null,
  "cpu_model": null,
  "cpu_processors": null,
  "mem_total": null,
  "humantime": null,
  "isotime": null,
  "version": null,
  "restore": {
    "start_time": null,
    "end_time": null,
    "state": null,
    "errors": null,
    "phase": null,
    "failure": null
  },
  "sn": {
    "data_cache_size": null,
    "meta_cache_size_limit": null,
    "max_data_log_size": null,
    "max_meta_cache_size": null,
    "usage": {
      "accounts": null,
      "sds": null,
      "os_dev": null,
      "iscsi_dev": null,
      "vss": null,
      "vdisk_int": null,
      "vdisk_ext": null,
      "clones": null,
      "snapshots": null,
      "removable": null,
      "repl_masters": null,
      "repl_slaves": null,
      "profiles": null,
      "targets": null,
      "rules": null,
      "sessions": null,
      "conn_insecure": null,
      "conn_secure": null,
      "vdisk_int_cap_mb": null,
      "os_dev_max": null,
      "profile_max": null,
      "rule_max": null,
      "session_max": null,
      "target_max": null,
      "vdisk_max": null,
      "vss_max": null
    }
  },
  "cluster": {
    "is_cluster": false,
    "failover": null,
    "members": [

    ],
    "status": {
      "value": "pending",
      "indicator": "degraded",
      "detail": "unable to connect to cluster"
    }
  }
}

Node Remove

Remove an existing storage node.

DELETE /node/{node_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/node/node:10001 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:40 GMT
Server: Goliath

Node Update

Change the configuration of an existing management node or a storage node.

PATCH /node/{node_id_or_serial}

Optional Parameters

NameTypeDescription
labelstringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
enabledbooleannode enabled for use
maintenance:modestringmaintenance mode
one of:"none" or "restrict" or "rendezvous"
maintenance:restrict/typestringrestriction type
one of:"svc_purchase" or "pt_queue_user" or "pt_queue_admin" or "pt_queue_remote" or "pt_rpc_send" or "pt_rpc_recv" or "pt_sched_user" or "pt_sched_admin" or "rpc_send" or "rpc_recv" or "rc_task_add" or "rc_task_sched" or "rc_msg_send" or "rc_msg_recv" or "cp_proxy" or "slp_send_boot"
maintenance:restrict/setbooleanrestriction set
maintenance:reasonstringreason for restriction
management:castringno documentation
one of:"none" or "embedded"
management:hostnamestringno documentation
Length: 1..∞
pub_ipaddripv4node public IP address
pub_ipaddr_descstringnode public IP address description
prv_ipaddripv4node private IP address
prv_ipaddr_descstringnode private IP address description
params:scheduling_algorithms/typestringscheduling algorithm type
one of:"ideal_usage"
params:scheduling_algorithms/labelnullable stringno documentation
params:scheduling_algorithms/ideal_usage_pctnullable stringno documentation
params:scheduling_algorithms/min_usage_pctnullable stringno documentation
params:scheduling_algorithms/capacity_weight_pctnullable stringno documentation
params:scheduling_algorithms/iops_weight_pctnullable stringno documentation
params:scheduling_algorithms/defaultnullable stringno documentation
params:service_templates/typestringservice type name
Length: 1..32
params:service_templates/descriptionstringservice type description
Length: 1..256
params:service_templates/defaultbooleandefault template
params:service_templates/tags:includearrayinclude array
params:service_templates/tags:excludearrayexclude array
params:service_templates/size:reserve_minnullable integerminimum size reserve
params:service_templates/size:reserve_maxnullable integermaximum size reserve
params:service_templates/size:limit_percentnullable integerSet the hard limit on storage consumption to a percentage of the size reserved. Must be at least 100% of the reserved size. If null, it's unlimited.
Range: 100 <= value
params:service_templates/iops:rationullable integerbaseline IOPS ratio, specified as a ratio of IOPS to reserved size (in IOPS/GiB)
params:service_templates/iops:burstnullable integerIOPS burst limit (in IOPS)
params:service_templates/iops:burst_creditnullable integermaximum burst credits (in IOPS credits); not supported with provisioned IOPS
params:service_templates/iops:minnullable integerminimum IOPS
params:service_templates/iops:maxnullable integermaximum IOPS
params:service_templates/iops:typestringhow limited IOPS are specified
default: "disabled"
one of:"disabled" or "capacity-scaled"
params:service_templates/iops:burst_typestringhow burst IOPS are specified
default: "disabled"
one of:"disabled" or "admin-fixed" or "capacity-scaled"
params:service_templates/iops:burst_rationullable integerbaseline burst IOPS ratio, specified as a ratio of burst IOPS to reserved size (in IOPS/GiB)
params:service_templates/piops:typestringhow provisioned IOPS are specified
default: "disabled"
one of:"disabled" or "admin-fixed" or "capacity-scaled" or "user-specified"
params:service_templates/piops:valuenullable integerfixed IOPS value
Range: 1 <= value
params:service_templates/piops:rationullable integerbaseline provisioned IOPS ratio, specified as a ratio of IOPS to reserved size (in IOPS/GiB)
params:service_templates/piops:minnullable integerminimum provisioned IOPS
params:service_templates/piops:maxnullable integermaximum provisioned IOPS
params:account_templates/typestringaccount template name
Length: 1..32
params:account_templates/descriptionstringaccount template description
Length: 1..256
params:account_templates/defaultbooleandefault template
params:account_templates/provisioning:size_reserve_maxnullable integermaximum size reserve of a single virtual storage service
params:account_templates/provisioning:iops_reserve_maxnullable integermaximum iops reserve of a single virtual storage service
params:account_templates/provisioning:tags_includearraytags included
default: []
params:account_templates/provisioning:tags_excludearraytags excluded
default: []
params:account_templates/provisioning:tags_permitnullable arraytags permitted
params:account_templates/provisioning:tags_permitnullable arraytags permitted
params:account_templates/limits:vss_numnullable integernumber of virtual storage services
params:account_templates/limits:size_reserve_totalnullable integermaximum size of storage
params:account_templates/permissions:realm:rights:can_switch_userbooleancan SU to lower level user
params:account_templates/permissions:realm:rights:manage_node_membershipbooleanaccept or delete nodes from the management network
params:account_templates/permissions:realm:rights:manage_accountsbooleancan create or delete other accounts, users and their settings
params:account_templates/permissions:realm:rights:view_logsbooleanview administrative logs
params:account_templates/permissions:realm:rights:run_admin_tasksbooleanrun realm administrative tasks
params:account_templates/permissions:realm:rights:run_testsbooleanrun realm administrative tests
params:account_templates/permissions:node:all_realm_scopebooleanapply to all nodes in the realm
default: true
params:account_templates/permissions:node:nodesarrayscope permissions to specific nodes
params:account_templates/permissions:node:rights:manage_storagebooleanconfigure OS devices, iSCSI devices, and system datastores
params:account_templates/permissions:node:rights:manage_networksbooleanconfigure networks
params:account_templates/permissions:node:rights:provision_vssbooleanmanually provision virtual storage services
params:account_templates/permissions:node:rights:remove_vssbooleanremove virtual storage services
params:account_templates/permissions:vss:all_account_scopebooleanapply to all virtual storage services in the account
default: true
params:account_templates/permissions:vss:vssesarraylimit scope to specified vsses
params:account_templates/permissions:vss:rights:dismiss_tasksbooleandismiss tasks
params:account_templates/permissions:vss:rights:update_vssbooleanupdate vss configuration
params:account_templates/permissions:vss:rights:remove_vssbooleanremove vss
params:account_templates/permissions:vss:rights:set_vss_quotabooleanset vss quota
params:account_templates/permissions:vss:rights:manage_internal_disksbooleanmanage internal disks
params:account_templates/permissions:vss:rights:manage_external_disksbooleanmanage external disks
params:account_templates/permissions:vss:rights:manage_removable_disksbooleanmanage removable disks
params:account_templates/permissions:vss:rights:manage_disk_cryptographybooleanmanage disk cryptography
params:account_templates/permissions:vss:rights:remove_locked_disksbooleanremove locked disks
params:account_templates/permissions:vss:rights:replicate_and_synchronize_disksbooleanreplicate and synchronize disks
params:account_templates/permissions:vss:rights:validate_data_integritybooleanvalidate data integrity
params:account_templates/permissions:vss:rights:manage_targetsbooleanmanage targets
params:account_templates/permissions:vss:rights:manage_profilesbooleanmanage profiles
params:account_templates/permissions:vss:rights:manage_secure_access_tokensbooleanmanage secure access tokens
params:account_templates/permissions:vss:rights:manage_rulesbooleanmanage rules
params:account_templates/permissions:vss:rights:replicate_disksbooleanreplicate disks
params:account_templates/permissions:vss:rights:synchronize_disksbooleansynchronize disks
params:account_templates/permissions:vss:rights:format_disksbooleanformat disks
params:account_templates/permissions:vss:rights:resize_disksbooleanresize disks
params:account_templates/permissions:vss:rights:backup_disksbooleanbackup disks
params:account_templates/permissions:vss:rights:manage_snapshotsbooleanmanage snapshots
params:account_templates/permissions:vss:rights:compress_disksbooleancompress disks
params:account_templates/permissions:vss:rights:manage_disk_compressionbooleanmanage disk
params:account_templates/permissions:user:rights:manage_usersbooleancreate or delete users in an account
params:account_templates/permissions:user:rights:modify_user_contact_settingsbooleanmodify user contact info
params:account_templates/permissions:user:rights:reset_user_passwordbooleanreset user password
params:account_templates/permissions:user:rights:reset_user_two_factorbooleanreset two factor authentication
params:account_templates/permissions:user:rights:manage_authorizationsbooleancreate or delete persistent authorizations
params:account_templates/permissions:account:rights:modify_contact_settingsbooleanmodify account contact settings
params:account_templates/permissions:account:rights:view_eventsbooleanview events
params:account_templates/permissions:account:rights:view_statisticsbooleanview statistics
params:account_templates/permissions:account:rights:manage_global_profilesbooleanmanage global profiles
params:account_templates/permissions:account:rights:manage_global_secure_access_tokensbooleanmanage global secure access tokens
params:account_templates/permissions:account:rights:query_catalogbooleanquery product catalog
params:account_templates/permissions:account:rights:provision_vssbooleanprovision vss from catalog
params:account_templates/permissions:account:rights:manage_obj_storesbooleanmanage object stores
params:account_templates/permissions:account:rights:read_object_storagebooleanread from object storage
params:account_templates/permissions:account:rights:write_object_storagebooleanwrite to object storage
params:account_templates/permissions:account:rights:delete_object_storagebooleandelete from object storage
cert_fingerprintstringTLS certificate fingerprint
licensestringsoftware license bundle
registration:allowbooleanallow registrations for this node
openstack_idp:labelstringno documentation
Length: 1..∞
openstack_idp:enabledbooleanidentity provider enabled
openstack_idp:auto_create_accountbooleanautomatically create mapped accounts
openstack_idp:auto_create_userbooleanautomatically create mapped users
openstack_idp:urlnullable stringidP API endpoint
openstack_idp:auth:user:idnullable stringlook up user by idp-specific index
openstack_idp:auth:user:namenullable stringlook up user by name/login
openstack_idp:auth:user:passwordnullable stringauthenticate using supplied password
openstack_idp:auth:project:idnullable stringlook up project by idp-specific index
openstack_idp:auth:project:namenullable stringlook up project by name
openstack_idp:auth:domain:idnullable stringlook up domain by idp-specific index
openstack_idp:auth:domain:namenullable stringlook up domain by name
openstack_idp:accepted_rolesarrayaccepted roles
eula:acceptedbooleaneula accepted
tagsarrayobject tags
disk_nodesarrayobject tags
visibility_ctlstringobject visibility control
one of:"default" or "show" or "hide"
openstack_portal_filter:ipipv4IP address
openstack_portal_filter:maskipv4netmask

Curl Example

$ curl -X PATCH https://mgmt-node/api/node/node:10000 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "label": "node101",
  "notes": "node updated to 101"
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:51 GMT
Server: Goliath
ETag: "ff28c49726b8b52cae4c6b4bc04ea79d"
Content-Type: application/json
Content-Length: 2163
{
  "id": "node:10000",
  "uuid": "4347e01f-f106-4735-bfbf-68addda9982f",
  "serial": "NOD0F68194C40601558",
  "evt_qry": "serial=NOD0F68194C40601558",
  "ctime": 1507562835087,
  "mtime": 1507570011169,
  "seq": 1507570011197,
  "label": "node101",
  "notes": "node updated to 101",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507569969000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            94,
            160,
            160,
            160
          ],
          "v": "dbg"
        },
        {
          "d": [
            45,
            85,
            85,
            85
          ],
          "v": "info"
        },
        {
          "d": [
            1,
            2,
            2,
            2
          ],
          "v": "warn"
        },
        {
          "d": [
            2,
            2,
            2,
            2
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507569969666
  },
  "rec_status": null,
  "site_id": "site:10",
  "type": [
    "storage"
  ],
  "tags": [

  ],
  "disk_nodes": [

  ],
  "license": {
    "type": [
      "evaluation"
    ],
    "minutes_remaining": 43100,
    "token": "8cf63f34593571104393cb8306b6cb13"
  },
  "activation_code": null,
  "activation_state": "activated",
  "install_mode": "solo",
  "install_token": "WyJpMSIsIm1hc3Rlci1ob28yd29vMWFlcGhlaTZjIiwic3MiLDMxNzg5MjYwODJd",
  "ip": {
    "pub_addr": "172.16.100.61",
    "pub_addr_user_set": true,
    "prv_addr": "10.10.200.23",
    "prv_addr_user_set": true
  },
  "build_time": "Thu Oct 05 10:32 UTC 2017",
  "build_version": "4.0.0-4252.1",
  "cpu_model": "Intel Xeon E312xx (Sandy Bridge)",
  "cpu_processors": 1,
  "mem_total": 1929072640,
  "humantime": "Mon Oct 09 17:26 UTC 2017",
  "isotime": "2017-10-09T17:26+00:00",
  "version": {
    "major": 4,
    "minor": 0,
    "patch": 0,
    "release": "4252.1",
    "tag": "",
    "hash": "f41b54b0c02b9ecbee50ffca17fc1d74a6e20672",
    "timestamp": 1507199541000
  },
  "restore": {
    "start_time": null,
    "end_time": null,
    "state": null,
    "errors": null,
    "phase": null,
    "failure": null
  },
  "sn": {
    "data_cache_size": 536870912,
    "meta_cache_size_limit": 134217728,
    "max_data_log_size": 142078242,
    "max_meta_cache_size": 134217728,
    "usage": {
      "accounts": 0,
      "sds": 0,
      "os_dev": 8,
      "iscsi_dev": 0,
      "vss": 0,
      "vdisk_int": 0,
      "vdisk_ext": 0,
      "clones": 0,
      "snapshots": 0,
      "removable": 0,
      "repl_masters": 0,
      "repl_slaves": 0,
      "profiles": 0,
      "targets": 0,
      "rules": 0,
      "sessions": 0,
      "conn_insecure": 0,
      "conn_secure": 0,
      "vdisk_int_cap_mb": 0,
      "os_dev_max": 64,
      "profile_max": 8192,
      "rule_max": 16384,
      "session_max": 8192,
      "target_max": 8192,
      "vdisk_max": 4096,
      "vss_max": 4096
    }
  },
  "cluster": {
    "is_cluster": false,
    "failover": null,
    "members": [

    ],
    "status": {
      "value": "pending",
      "indicator": "degraded",
      "detail": "unable to connect to cluster"
    }
  }
}

Node Discover Devices

Retrieve a list of operating system storage devices that match the specified parameters.

GET /node/{node_id_or_serial}/devices

Optional Parameters

NameTypeDescription
typestringdevice type
default: "block"
one of:"block"
subsystemnullable stringdevice subsystem
one of:"scsi" or "xen"

Curl Example

$ curl https://mgmt-node/api/node/node:10000/devices \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:50 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 6063
[
  {
    "name": "sdd",
    "desc": "disk",
    "path": "/dev/sdd",
    "preferred_path": "/dev/disk/by-id/wwn-0x60a010a04628d4f81962194c406558c1",
    "parent": "",
    "devlinks": [
      "/dev/bb/6932606f-1cd8-43bc-bc4c-6fb5f8d42846",
      "/dev/disk/by-id/scsi-360a010a04628d4f81962194c406558c1",
      "/dev/disk/by-id/wwn-0x60a010a04628d4f81962194c406558c1",
      "/dev/disk/by-path/ip-172.16.5.148:3260-iscsi-iqn.2009-12.com.blockbridge:t-pjuagemzukanm-abpdmcle-lun-0"
    ],
    "syspath": "/sys/devices/platform/host5/session4/target5:0:0/5:0:0:0/block/sdd",
    "type": [
      "block"
    ],
    "subsystem": "scsi",
    "driver": "sd",
    "raw_size": 107374182400,
    "properties": [
      {
        "name": "DEVLINKS",
        "value": "/dev/bb/6932606f-1cd8-43bc-bc4c-6fb5f8d42846 /dev/disk/by-id/scsi-360a010a04628d4f81962194c406558c1 /dev/disk/by-id/wwn-0x60a010a04628d4f81962194c406558c1 /dev/disk/by-path/ip-172.16.5.148:3260-iscsi-iqn.2009-12.com.blockbridge:t-pjuagemzukanm-abpdmcle-lun-0"
      },
      {
        "name": "DEVNAME",
        "value": "/dev/sdd"
      },
      {
        "name": "DEVPATH",
        "value": "/devices/platform/host5/session4/target5:0:0/5:0:0:0/block/sdd"
      },
      {
        "name": "DEVTYPE",
        "value": "disk"
      },
      {
        "name": "DM_MULTIPATH_TIMESTAMP",
        "value": "1507562788"
      },
      {
        "name": "ID_BUS",
        "value": "scsi"
      },
      {
        "name": "ID_MODEL",
        "value": "SECURE_DRIVE"
      },
      {
        "name": "ID_MODEL_ENC",
        "value": "SECURE\\x20DRIVE"
      },
      {
        "name": "ID_PATH",
        "value": "ip-172.16.5.148:3260-iscsi-iqn.2009-12.com.blockbridge:t-pjuagemzukanm-abpdmcle-lun-0"
      },
      {
        "name": "ID_PATH_TAG",
        "value": "ip-172_16_5_148_3260-iscsi-iqn_2009-12_com_blockbridge_t-pjuagemzukanm-abpdmcle-lun-0"
      },
      {
        "name": "ID_REVISION",
        "value": "4.0"
      },
      {
        "name": "ID_SCSI",
        "value": "1"
      },
      {
        "name": "ID_SCSI_SERIAL",
        "value": "6932606f-1cd8-43bc-bc4c-6fb5f8d42846"
      },
      {
        "name": "ID_SERIAL",
        "value": "360a010a04628d4f81962194c406558c1"
      },
      {
        "name": "ID_SERIAL_SHORT",
        "value": "60a010a04628d4f81962194c406558c1"
      },
      {
        "name": "ID_TYPE",
        "value": "disk"
      },
      {
        "name": "ID_VENDOR",
        "value": "B_BRIDGE"
      },
      {
        "name": "ID_VENDOR_ENC",
        "value": "B\\x2aBRIDGE"
      },
      {
        "name": "ID_WWN",
        "value": "0x60a010a04628d4f8"
      },
      {
        "name": "ID_WWN_VENDOR_EXTENSION",
        "value": "0x1962194c406558c1"
      },
      {
        "name": "ID_WWN_WITH_EXTENSION",
        "value": "0x60a010a04628d4f81962194c406558c1"
      },
      {
        "name": "MAJOR",
        "value": "8"
      },
      {
        "name": "MINOR",
        "value": "48"
      },
      {
        "name": "MPATH_SBIN_PATH",
        "value": "/sbin"
      },
      {
        "name": "SUBSYSTEM",
        "value": "block"
      },
      {
        "name": "TAGS",
        "value": ":systemd:"
      },
      {
        "name": "USEC_INITIALIZED",
        "value": "7443479"
      }
    ],
    "wwn": "0x60a010a04628d4f81962194c406558c1",
    "inuse": true
  },
  {
    "name": "md124",
    "desc": "disk",
    "path": "/dev/md124",
    "preferred_path": "/dev/disk/by-id/md-name-mirror1",
    "parent": "",
    "devlinks": [
      "/dev/disk/by-id/md-name-mirror1",
      "/dev/disk/by-id/md-uuid-7b70f246:5a824029:b39ef139:929c9a9e",
      "/dev/md/mirror1"
    ],
    "syspath": "/sys/devices/virtual/block/md124",
    "type": [
      "block"
    ],
    "subsystem": "",
    "driver": "",
    "raw_size": 107338530816,
    "properties": [
      {
        "name": "DEVLINKS",
        "value": "/dev/disk/by-id/md-name-mirror1 /dev/disk/by-id/md-uuid-7b70f246:5a824029:b39ef139:929c9a9e /dev/md/mirror1"
      },
      {
        "name": "DEVNAME",
        "value": "/dev/md124"
      },
      {
        "name": "DEVPATH",
        "value": "/devices/virtual/block/md124"
      },
      {
        "name": "DEVTYPE",
        "value": "disk"
      },
      {
        "name": "DM_MULTIPATH_TIMESTAMP",
        "value": "1507562788"
      },
      {
        "name": "MAJOR",
        "value": "9"
      },
      {
        "name": "MD_CONTAINER",
        "value": "/dev/md/mirror1:c"
      },
      {
        "name": "MD_CTIME",
        "value": "1507562847"
      },
      {
        "name": "MD_DEVICES",
        "value": "2"
      },
      {
        "name": "MD_DEVICE_sdc_DEV",
        "value": "/dev/sdc"
      },
      {
        "name": "MD_DEVICE_sdc_ROLE",
        "value": "1"
      },
      {
        "name": "MD_DEVICE_sde_DEV",
        "value": "/dev/sde"
      },
      {
        "name": "MD_DEVICE_sde_ROLE",
        "value": "0"
      },
      {
        "name": "MD_DEVNAME",
        "value": "mirror1"
      },
      {
        "name": "MD_LEVEL",
        "value": "raid1"
      },
      {
        "name": "MD_MEMBER",
        "value": "0"
      },
      {
        "name": "MD_MON_THIS",
        "value": "../md125"
      },
      {
        "name": "MD_MTIME",
        "value": "1507562847"
      },
      {
        "name": "MD_NAME",
        "value": "mirror1"
      },
      {
        "name": "MD_UUID",
        "value": "7b70f246:5a824029:b39ef139:929c9a9e"
      },
      {
        "name": "MINOR",
        "value": "124"
      },
      {
        "name": "MPATH_SBIN_PATH",
        "value": "/sbin"
      },
      {
        "name": "SUBSYSTEM",
        "value": "block"
      },
      {
        "name": "SYSTEMD_WANTS",
        "value": "mdmonitor.service mdmon@md125.service"
      },
      {
        "name": "TAGS",
        "value": ":systemd:"
      },
      {
        "name": "USEC_INITIALIZED",
        "value": "3539136"
      }
    ],
    "inuse": true
  },
  {
    "name": "md126p6",
    "desc": "partition",
    "path": "/dev/md126p6",
    "preferred_path": "/dev/md126p6",
    "parent": "/dev/md126",
    "devlinks": [
      "/dev/disk/by-id/md-name-bb:system-array-part6",
      "/dev/disk/by-id/md-uuid-791bf0b6:27184b1a:a7cc46b9:c7d4a716-part6",
      "/dev/md/bb:system-array6"
    ],
    "syspath": "/sys/devices/virtual/block/md126/md126p6",
    "type": [
      "block"
    ],
    "subsystem": "block",
    "driver": "",
    "raw_size": 18216893952,
    "properties": [
      {
        "name": "BLOCKBRIDGE_LABEL",
        "value": "system"
      },
      {
        "name": "BLOCKBRIDGE_WHITELIST",
        "value": "1"
      },
      {
        "name": "DEVLINKS",
        "value": "/dev/disk/by-id/md-name-bb:system-array-part6 /dev/disk/by-id/md-uuid-791bf0b6:27184b1a:a7cc46b9:c7d4a716-part6 /dev/md/bb:system-array6"
      },
      {
        "name": "DEVNAME",
        "value": "/dev/md126p6"
      },
      {
        "name": "DEVPATH",
        "value": "/devices/virtual/block/md126/md126p6"
      },
      {
        "name": "DEVTYPE",
        "value": "partition"
      },
      {
        "name": "ID_PART_ENTRY_DISK",
        "value": "9:126"
      },
      {
        "name": "ID_PART_ENTRY_NAME",
        "value": "blockbridge-sp"
      },
      {
        "name": "ID_PART_ENTRY_NUMBER",
        "value": "6"
      },
      {
        "name": "ID_PART_ENTRY_OFFSET",
        "value": "174065664"
      },
      {
        "name": "ID_PART_ENTRY_SCHEME",
        "value": "gpt"
      },
      {
        "name": "ID_PART_ENTRY_SIZE",
        "value": "35579871"
      },
      {
        "name": "ID_PART_ENTRY_TYPE",
        "value": "0fc63daf-8483-4772-8e79-3d69d8477de4"
      },
      {
        "name": "ID_PART_ENTRY_UUID",
        "value": "c0edd702-7801-42ef-b675-2b34411ee13e"
      },
      {
        "name": "MAJOR",
        "value": "259"
      },
      {
        "name": "MD_CONTAINER",
        "value": "/dev/md/bb:system-array:c"
      },
      {
        "name": "MD_CTIME",
        "value": "1507562801"
      },
      {
        "name": "MD_DEVICES",
        "value": "2"
      },
      {
        "name": "MD_DEVICE_sda_DEV",
        "value": "/dev/sda"
      },
      {
        "name": "MD_DEVICE_sda_ROLE",
        "value": "1"
      },
      {
        "name": "MD_DEVICE_sdb_DEV",
        "value": "/dev/sdb"
      },
      {
        "name": "MD_DEVICE_sdb_ROLE",
        "value": "0"
      },
      {
        "name": "MD_DEVNAME",
        "value": "bb:system-array"
      },
      {
        "name": "MD_LEVEL",
        "value": "raid1"
      },
      {
        "name": "MD_MEMBER",
        "value": "0"
      },
      {
        "name": "MD_MON_THIS",
        "value": "../md127"
      },
      {
        "name": "MD_MTIME",
        "value": "1507562801"
      },
      {
        "name": "MD_NAME",
        "value": "bb:system-array"
      },
      {
        "name": "MD_UUID",
        "value": "791bf0b6:27184b1a:a7cc46b9:c7d4a716"
      },
      {
        "name": "MINOR",
        "value": "5"
      },
      {
        "name": "SUBSYSTEM",
        "value": "block"
      },
      {
        "name": "SYSTEMD_WANTS",
        "value": "mdmonitor.service mdmon@md127.service"
      },
      {
        "name": "TAGS",
        "value": ":systemd:"
      },
      {
        "name": "USEC_INITIALIZED",
        "value": "9419779"
      }
    ],
    "inuse": true
  }
]

Node Discover Interfaces

Retrieve a list of network interfaces that match the specified parameters.

GET /node/{node_id_or_serial}/interfaces

Curl Example

$ curl https://mgmt-node/api/node/node:10000/interfaces \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:51 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 900
[
  {
    "interface": "eth0",
    "hwaddr": "FA:16:3E:6A:7C:79",
    "mtu": 1400,
    "flags": {
      "up": true,
      "broadcast": true,
      "debug": false,
      "loopback": false,
      "pointopoint": false,
      "notrailers": false,
      "running": true,
      "noarp": false,
      "promisc": false,
      "master": false,
      "slave": false,
      "multicast": true
    },
    "link": {
      "detected": true,
      "speed": null,
      "duplex": null,
      "port": "other"
    },
    "driver": {
      "name": "virtio_net",
      "version": "1.0.0",
      "fw_version": "",
      "bus": "0000:00:03.0"
    },
    "stats": {
      "tx_packets": 0,
      "tx_bytes": 0,
      "tx_errors": 0,
      "tx_dropped": 0,
      "rx_packets": 0,
      "rx_bytes": 0,
      "rx_errors": 0,
      "rx_dropped": 0
    },
    "ipaddrs": [
      {
        "addr": "10.10.200.23",
        "family": "IPv4"
      },
      {
        "addr": "fe80::f816:3eff:fe6a:7c79%eth0",
        "family": "IPv6"
      }
    ],
    "inuse": true,
    "config": {
      "net_id": "net:8:10",
      "service": {
        "application": {
          "enabled": false
        },
        "management": {
          "enabled": false
        },
        "storage": {
          "enabled": true,
          "shared": true
        },
        "replication": {
          "enabled": true
        },
        "infrastructure": {
          "enabled": true
        },
        "external": {
          "enabled": true
        }
      }
    }
  }
]

Site

Sites are groups of storage and management nodes. When deploying a Blockbridge storage network, you can use sites to group nodes together that are co-located in the same data center. Or, you can subdivide a datacenter into multiple sites, or align sites along business unit lines. Every node in a site shares the same SMTP configuration.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
ctimeintegersite create time
Range: 0 <= value
mtimeintegersite last modified time
Range: 0 <= value
serialstringsite serial number
labelstringuser assigned label
Length: 1..64
notesnullable stringuser assigned notes
Length: 0..256
location:countrystringISO 3166-1 alpha-3 country code
default: ""
location:latnumberlatitude
default: 0
location:longnumberlongitude
default: 0
location:citystringcity
default: ""
location:statestringstate as two-character USPS abbreviation
default: ""
zip_codestringsite zip code
tierstringdatacenter infrastructure tier
one of:"I" or "II" or "III" or "IV"
email:typestringemail type
one of:"none" or "smtp" or "mailgun"
email:smtp:server_sslstringSMTP server SSL/TLS
one of:"none" or "required" or "optional"
email:smtp:server_addrhostnameSMTP server hostname
Length: 0..1024
email:smtp:mail_fromemailmail from email address
Length: 0..128
email:smtp:server_usernamestringSMTP authentication username
email:smtp:server_authbooleanSMTP authentication enabled
email:smtp:server_portintegerSMTP server port
default: 587
Range: 1 <= value <= 65535
status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detailnullable stringstatus detail

Site Info

Retrieve an existing site.

GET /site/{site_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/site/site:18 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:52 GMT
Server: Goliath
ETag: "d9adddf3c3dfd1418fd44fa1da69b35e"
Content-Type: application/json
Content-Length: 681
{
  "id": "site:18",
  "uuid": "d0132f8e-05c5-48d9-97da-806011f94bcd",
  "serial": "SIT1468194C40626570",
  "evt_qry": "serial=SIT1468194C40626570",
  "ctime": 1507570012289,
  "mtime": 1507570012535,
  "seq": 1507570012682,
  "label": "virginia1",
  "notes": "site updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570012000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            4,
            4,
            4,
            4
          ],
          "v": "dbg"
        },
        {
          "d": [
            3,
            3,
            3,
            3
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570012682
  },
  "rec_status": null,
  "tier": "IV",
  "location": {
    "country": "US",
    "lat": 39.0436,
    "long": -77.4875,
    "city": "Ashburn",
    "state": "VA"
  },
  "email": {
    "type": [
      "none"
    ]
  }
}

Site List

Enumerate sites.

GET /site

Curl Example

$ curl https://mgmt-node/api/site \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:52 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 6119
[
  {
    "id": "site:12",
    "uuid": "0ad99d88-c1e4-4e3e-8ce9-1ebbf261e73e",
    "serial": "SIT1468194C40626494",
    "evt_qry": "serial=SIT1468194C40626494",
    "ctime": 1507567898865,
    "mtime": 1507567899084,
    "seq": 1507567899667,
    "label": "virginia1",
    "notes": "site updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507567899000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              3,
              3,
              3,
              3
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507567899667
    },
    "rec_status": null,
    "tier": "IV",
    "location": {
      "country": "US",
      "lat": 39.0436,
      "long": -77.4875,
      "city": "Ashburn",
      "state": "VA"
    },
    "email": {
      "type": [
        "none"
      ]
    }
  },
  {
    "id": "site:16",
    "uuid": "53184182-b00c-4b6c-94c0-ed470b958c72",
    "serial": "SIT1468194C40626550",
    "evt_qry": "serial=SIT1468194C40626550",
    "ctime": 1507569795479,
    "mtime": 1507569795721,
    "seq": 1507569796666,
    "label": "virginia1",
    "notes": "site updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507569795000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              3,
              3,
              3,
              3
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507569796666
    },
    "rec_status": null,
    "tier": "IV",
    "location": {
      "country": "US",
      "lat": 39.0436,
      "long": -77.4875,
      "city": "Ashburn",
      "state": "VA"
    },
    "email": {
      "type": [
        "none"
      ]
    }
  },
  {
    "id": "site:13",
    "uuid": "16f3d9e8-10ca-46e9-be38-40e7472c6541",
    "serial": "SIT1468194C4062648C",
    "evt_qry": "serial=SIT1468194C4062648C",
    "ctime": 1507567916392,
    "mtime": 1507567916616,
    "seq": 1507567916674,
    "label": "virginia1",
    "notes": "site updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507567916000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              3,
              3,
              3,
              3
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507567916674
    },
    "rec_status": null,
    "tier": "IV",
    "location": {
      "country": "US",
      "lat": 39.0436,
      "long": -77.4875,
      "city": "Ashburn",
      "state": "VA"
    },
    "email": {
      "type": [
        "none"
      ]
    }
  },
  {
    "id": "site:17",
    "uuid": "e66d233a-00d9-43aa-92d1-e03ed0e2faec",
    "serial": "SIT1468194C40626548",
    "evt_qry": "serial=SIT1468194C40626548",
    "ctime": 1507569965655,
    "mtime": 1507569965913,
    "seq": 1507569966668,
    "label": "virginia1",
    "notes": "site updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507569965000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              3,
              3,
              3,
              3
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507569966668
    },
    "rec_status": null,
    "tier": "IV",
    "location": {
      "country": "US",
      "lat": 39.0436,
      "long": -77.4875,
      "city": "Ashburn",
      "state": "VA"
    },
    "email": {
      "type": [
        "none"
      ]
    }
  },
  {
    "id": "site:10",
    "uuid": "e582c5ea-26f5-452c-98f6-8133bf91790e",
    "serial": "SIT1468194C406264F5",
    "evt_qry": "serial=SIT1468194C406264F5",
    "ctime": 1507562833433,
    "mtime": 1507562839908,
    "seq": 1507570011670,
    "label": "packet.net",
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507570011000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              14,
              22,
              22,
              22
            ],
            "v": "dbg"
          },
          {
            "d": [
              17,
              28,
              28,
              28
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507570011670
    },
    "rec_status": null,
    "tier": "IV",
    "location": {
      "country": "USA",
      "lat": 40,
      "long": -43,
      "city": "Newark",
      "state": "NJ"
    },
    "email": {
      "type": [
        "none"
      ]
    }
  },
  {
    "id": "site:14",
    "uuid": "8e9b9c5e-6145-42af-ac79-7d03f21d7750",
    "serial": "SIT1468194C406264B4",
    "evt_qry": "serial=SIT1468194C406264B4",
    "ctime": 1507567942158,
    "mtime": 1507567942381,
    "seq": 1507567942673,
    "label": "virginia1",
    "notes": "site updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507567942000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              3,
              3,
              3,
              3
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507567942673
    },
    "rec_status": null,
    "tier": "IV",
    "location": {
      "country": "US",
      "lat": 39.0436,
      "long": -77.4875,
      "city": "Ashburn",
      "state": "VA"
    },
    "email": {
      "type": [
        "none"
      ]
    }
  },
  {
    "id": "site:18",
    "uuid": "d0132f8e-05c5-48d9-97da-806011f94bcd",
    "serial": "SIT1468194C40626570",
    "evt_qry": "serial=SIT1468194C40626570",
    "ctime": 1507570012289,
    "mtime": 1507570012535,
    "seq": 1507570012540,
    "label": "virginia1",
    "notes": "site updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": null,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "v": "dbg",
            "d": [
              0,
              0,
              0,
              0
            ]
          },
          {
            "v": "info",
            "d": [
              0,
              0,
              0,
              0
            ]
          },
          {
            "v": "warn",
            "d": [
              0,
              0,
              0,
              0
            ]
          },
          {
            "v": "err",
            "d": [
              0,
              0,
              0,
              0
            ]
          }
        ]
      },
      "status": "current",
      "seq": 1507570012310
    },
    "rec_status": null,
    "tier": "IV",
    "location": {
      "country": "US",
      "lat": 39.0436,
      "long": -77.4875,
      "city": "Ashburn",
      "state": "VA"
    },
    "email": {
      "type": [
        "none"
      ]
    }
  },
  {
    "id": "site:11",
    "uuid": "79110da6-9357-4700-9f4d-d3cb2a4734c8",
    "serial": "SIT1468194C406264ED",
    "evt_qry": "serial=SIT1468194C406264ED",
    "ctime": 1507563525129,
    "mtime": 1507563525260,
    "seq": 1507563525691,
    "label": "virginia1",
    "notes": "site updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507563525000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              3,
              3,
              3,
              3
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507563525691
    },
    "rec_status": null,
    "tier": "IV",
    "location": {
      "country": "US",
      "lat": 39.0436,
      "long": -77.4875,
      "city": "Ashburn",
      "state": "VA"
    },
    "email": {
      "type": [
        "none"
      ]
    }
  },
  {
    "id": "site:15",
    "uuid": "35a002d9-59f0-4fa7-99f3-a71718f2f0d8",
    "serial": "SIT1468194C406264AC",
    "evt_qry": "serial=SIT1468194C406264AC",
    "ctime": 1507568230545,
    "mtime": 1507568230778,
    "seq": 1507568231667,
    "label": "virginia1",
    "notes": "site updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507568230000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              3,
              3,
              3,
              3
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507568231667
    },
    "rec_status": null,
    "tier": "IV",
    "location": {
      "country": "US",
      "lat": 39.0436,
      "long": -77.4875,
      "city": "Ashburn",
      "state": "VA"
    },
    "email": {
      "type": [
        "none"
      ]
    }
  }
]

Site Create

Create a new site.

POST /site

Optional Parameters

NameTypeDescription
labelstringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
location:countrystringISO 3166-1 alpha-3 country code
default: ""
location:latnumberlatitude
default: 0
location:longnumberlongitude
default: 0
location:citystringcity
default: ""
location:statestringstate as two-character USPS abbreviation
default: ""
tierstringdatacenter infrastructure tier
default: "IV"
one of:"I" or "II" or "III" or "IV"
email:typestringemail type
one of:"none" or "smtp" or "mailgun"
email:smtp:mail_fromemailmail from email address
Length: 0..128
email:smtp:server_sslstringsmtp server ssl
one of:"none" or "required" or "optional"
email:smtp:server_addrhostnamesmtp server name
Length: 0..1024
email:smtp:server_passwordstringsmtp auth password
email:smtp:server_usernamestringsmtp auth username
email:smtp:server_authbooleansmtp auth enabled
email:smtp:server_portintegersmtp server port
default: 587
Range: 1 <= value <= 65535
uuiduuidobject UUID

Curl Example

$ curl -X POST https://mgmt-node/api/site \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "label": "virginia",
  "location": {
    "country": "US",
    "lat": 39.0436,
    "long": -77.4875,
    "city": "Ashburn",
    "state": "VA"
  },
  "tier": "IV"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:26:52 GMT
Server: Goliath
ETag: "805c3bcb643efd2efe2db982d234b60d"
Content-Type: application/json
Content-Length: 661
{
  "id": "site:18",
  "uuid": "d0132f8e-05c5-48d9-97da-806011f94bcd",
  "serial": "SIT1468194C40626570",
  "evt_qry": "serial=SIT1468194C40626570",
  "ctime": 1507570012289,
  "mtime": 1507570012289,
  "seq": 1507570012310,
  "label": "virginia",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570012310
  },
  "rec_status": null,
  "tier": "IV",
  "location": {
    "country": "US",
    "lat": 39.0436,
    "long": -77.4875,
    "city": "Ashburn",
    "state": "VA"
  },
  "email": {
    "type": [
      "none"
    ]
  }
}

Site Remove

Remove an existing site.

DELETE /site/{site_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/site/SIT1468194C40626570 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:40 GMT
Server: Goliath

Site Update

Change the configuration of an existing site.

PATCH /site/{site_id_or_serial}

Optional Parameters

NameTypeDescription
notesstringuser assigned notes
Length: 0..256
labelstringuser assigned label
Length: 1..64
location:countrystringISO 3166-1 alpha-3 country code
default: ""
location:latnumberlatitude
default: 0
location:longnumberlongitude
default: 0
location:citystringcity
default: ""
location:statestringstate as two-character USPS abbreviation
default: ""
zip_codestringZIP code
tierstringdatacenter infrastructure tier
one of:"I" or "II" or "III" or "IV"
email:typestringemail type
one of:"none" or "smtp" or "mailgun"
email:smtp:server_portintegerSMTP server port
default: 587
Range: 1 <= value <= 65535
email:smtp:mail_fromemailalternative mail-from email address
Length: 0..128
email:smtp:server_sslstringSMTP server SSL/TLS
one of:"none" or "required" or "optional"
email:smtp:server_addrhostnameSMTP server name
Length: 0..1024
email:smtp:server_passwordstringSMTP authentication password
Length: 1..∞
email:smtp:server_usernamestringSMTP authentication username
Length: 1..∞
email:smtp:server_authbooleanSMTP authentication is enabled

Curl Example

$ curl -X PATCH https://mgmt-node/api/site/SIT1468194C40626570 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "label": "virginia1",
  "notes": "site updated"
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:52 GMT
Server: Goliath
ETag: "515d98722d696ec32dc7467e13f46587"
Content-Type: application/json
Content-Length: 672
{
  "id": "site:18",
  "uuid": "d0132f8e-05c5-48d9-97da-806011f94bcd",
  "serial": "SIT1468194C40626570",
  "evt_qry": "serial=SIT1468194C40626570",
  "ctime": 1507570012289,
  "mtime": 1507570012535,
  "seq": 1507570012540,
  "label": "virginia1",
  "notes": "site updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570012310
  },
  "rec_status": null,
  "tier": "IV",
  "location": {
    "country": "US",
    "lat": 39.0436,
    "long": -77.4875,
    "city": "Ashburn",
    "state": "VA"
  },
  "email": {
    "type": [
      "none"
    ]
  }
}

Network Interface

Blockbridge storage node software detects the Ethernet interfaces you have configured on your nodes. Network Interface resources allow you to define how these interfaces are used for Blockbridge storage services.

The Blockbridge system thinks of networking in terms of these interfaces. You have the full power of Linux networking at your disposal including channel bonding, VLANs, and tunnels. You can have multiple interfaces for segregation, performance or high availability.

When a storage node completes its initial rendezvous with the management node, it registers the first Ethernet interface it finds, along with its IP addresses. If the node has additional interfaces, use this interface to register them.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
labelstringuser assigned label
Length: 1..64
serialstringnetwork interface serial number
ctimeintegernetwork interface create time
Range: 0 <= value
mtimeintegernetwork interface last modified time
Range: 0 <= value
notesnullable stringuser assigned notes
Length: 0..256
node_idstringstorage node id
cplx_idnullable integerprocessor complex assignment; null indicates shared between all complexes
pcidstringstorage node id
enabledbooleanservice is enabled on this network interface
interfacestringnetwork interface device name
nat_addrnullable ipv4NAT address assigned to interface
hostnamenullable hostnamehostname assigned to interface
Length: 0..1024
portalsnullable arraypublished portals
portalsnullable arraypublished portals
parentnullable objectone-to-one resource identifier
parent:typestringtype of identified resource
service:application:enabledbooleanapplication service enabled
service:management:enabledbooleanmanagement service enabled
service:storage:enabledbooleanstorage service enabled
service:storage:sharedbooleanservice is shared
service:replication:enabledbooleanreplication service enabled
service:infrastructure:enabledbooleaninfrastructure service enabled
service:external:enabledbooleanexternal service enabled
status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detailnullable stringstatus detail
networknullable objectnetwork interface description
network:interfacestringinterface name
network:hwaddrstringhardware address (MAC)
network:mtuintegerMTU
network:flags:upbooleanup
network:flags:broadcastbooleanbroadcast
network:flags:debugbooleandebug
network:flags:loopbackbooleanloopback
network:flags:pointopointbooleanpointopoint
network:flags:notrailersbooleannotrailers
network:flags:runningbooleanrunning
network:flags:noarpbooleannoarp
network:flags:promiscbooleanpromisc
network:flags:masterbooleanmaster
network:flags:slavebooleanslave
network:flags:multicastbooleanmulticast
network:link:detectednullable booleanmedia link detected
network:link:speednullable integernetwork interface speed in Mb/s
network:link:duplexnullable stringnetwork interface duplex
one of:"half" or "full" or "unknown"
network:link:portnullable stringnetwork interface port
one of:"twisted-pair" or "AUI" or "BNC" or "MII" or "FIBRE" or "direct-attach-copper" or "none" or "other" or "unknown"
network:driver:namenullable stringdriver name
network:driver:versionnullable stringdriver version
network:driver:fw_versionnullable stringdriver firmware version
network:driver:busnullable stringdriver bus
network:stats:tx_packetsintegertx packets
network:stats:tx_bytesintegertx bytes
network:stats:tx_errorsintegertx errors
network:stats:tx_droppedintegertx dropped
network:stats:rx_packetsintegerrx packets
network:stats:rx_bytesintegerrx bytes
network:stats:rx_errorsintegerrx errors
network:stats:rx_droppedintegerrx dropped
network:ipaddrs/addrstringip address
network:ipaddrs/familystringaddress family
one of:"IPv4" or "IPv6" or "unknown"
network:inusebooleannetwork interface configured
network:config:net_idstringnetwork interface id
network:config:service:application:enabledbooleanservice enabled
network:config:service:management:enabledbooleanservice enabled
network:config:service:storage:enabledbooleanservice enabled
network:config:service:storage:sharedbooleanservice shared
network:config:service:replication:enabledbooleanservice enabled
network:config:service:infrastructure:enabledbooleanservice enabled
network:config:service:external:enabledbooleanservice enabled
network:config:nat_addrstringNAT address
network:config:enabledbooleannet administratively enabled/disabled
network:parentnullable objectparent interface
network:parent:namestringparent interface name
network:parent:net_idnullable stringparent net
network:vlannullable integerVLAN ID, if defined
network:bondnullable objectbonding information
network:bond:modestringbonding mode
network:bond:interfaces/upbooleanlink up
network:bond:interfaces/speednullable integerlink speed in Mb/s
network:bond:interfaces/mtuintegerMTU
network:bond:interfaces/interfacestringinterface name

Network Interface Info

Retrieve an existing network interface.

GET /net/{net_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/net/net:9:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:38 GMT
Server: Goliath
ETag: "67faa3dd29a0443799d26eaca7edac70"
Content-Type: application/json
Content-Length: 1498
{
  "id": "net:9:10",
  "uuid": "aa3b1c6b-456d-45a7-9840-40d6879df950",
  "serial": "NET1C62194C406264CE",
  "evt_qry": "serial=NET1C62194C406264CE",
  "node_id": "node:10000",
  "ctime": 1507570011779,
  "mtime": 1507570011779,
  "seq": 1507570013237,
  "label": "net-1",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570011000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            2,
            2,
            2,
            2
          ],
          "v": "dbg"
        },
        {
          "d": [
            1,
            1,
            1,
            1
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570012677
  },
  "rec_status": null,
  "enabled": true,
  "interface": "eth0",
  "hostname": null,
  "nat_addr": null,
  "service": {
    "application": {
      "enabled": false
    },
    "management": {
      "enabled": false
    },
    "storage": {
      "enabled": true,
      "shared": true
    },
    "replication": {
      "enabled": true
    },
    "infrastructure": {
      "enabled": true
    },
    "external": {
      "enabled": true
    }
  },
  "network": {
    "interface": "eth0",
    "hwaddr": "FA:16:3E:6A:7C:79",
    "mtu": 1400,
    "flags": {
      "up": true,
      "broadcast": true,
      "debug": false,
      "loopback": false,
      "pointopoint": false,
      "notrailers": false,
      "running": true,
      "noarp": false,
      "promisc": false,
      "master": false,
      "slave": false,
      "multicast": true
    },
    "link": {
      "detected": true,
      "speed": null,
      "duplex": null,
      "port": "other"
    },
    "driver": {
      "name": "virtio_net",
      "version": "1.0.0",
      "fw_version": "",
      "bus": "0000:00:03.0"
    },
    "stats": {
      "tx_packets": 0,
      "tx_bytes": 0,
      "tx_errors": 0,
      "tx_dropped": 0,
      "rx_packets": 0,
      "rx_bytes": 0,
      "rx_errors": 0,
      "rx_dropped": 0
    },
    "ipaddrs": [
      {
        "addr": "10.10.200.23",
        "family": "IPv4"
      },
      {
        "addr": "fe80::f816:3eff:fe6a:7c79%eth0",
        "family": "IPv6"
      }
    ]
  }
}

Network Interface List

Enumerate network interfaces.

GET /net

Curl Example

$ curl https://mgmt-node/api/net \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:51 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1500
[
  {
    "id": "net:8:10",
    "uuid": "9935b887-1f48-4d60-b4d1-c7dcef082a66",
    "serial": "NET1C62194C406264D6",
    "evt_qry": "serial=NET1C62194C406264D6",
    "node_id": "node:10000",
    "ctime": 1507569965178,
    "mtime": 1507569965242,
    "seq": 1507570010649,
    "label": "net-1",
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507569965000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              2,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              1,
              1,
              1
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507569965673
    },
    "rec_status": null,
    "enabled": true,
    "interface": "eth0",
    "hostname": null,
    "nat_addr": null,
    "service": {
      "application": {
        "enabled": false
      },
      "management": {
        "enabled": false
      },
      "storage": {
        "enabled": true,
        "shared": true
      },
      "replication": {
        "enabled": true
      },
      "infrastructure": {
        "enabled": true
      },
      "external": {
        "enabled": true
      }
    },
    "network": {
      "interface": "eth0",
      "hwaddr": "FA:16:3E:6A:7C:79",
      "mtu": 1400,
      "flags": {
        "up": true,
        "broadcast": true,
        "debug": false,
        "loopback": false,
        "pointopoint": false,
        "notrailers": false,
        "running": true,
        "noarp": false,
        "promisc": false,
        "master": false,
        "slave": false,
        "multicast": true
      },
      "link": {
        "detected": true,
        "speed": null,
        "duplex": null,
        "port": "other"
      },
      "driver": {
        "name": "virtio_net",
        "version": "1.0.0",
        "fw_version": "",
        "bus": "0000:00:03.0"
      },
      "stats": {
        "tx_packets": 0,
        "tx_bytes": 0,
        "tx_errors": 0,
        "tx_dropped": 0,
        "rx_packets": 0,
        "rx_bytes": 0,
        "rx_errors": 0,
        "rx_dropped": 0
      },
      "ipaddrs": [
        {
          "addr": "10.10.200.23",
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe6a:7c79%eth0",
          "family": "IPv6"
        }
      ]
    }
  }
]

Network Interface Create

Register a new network interface.

POST /net

Required Parameters

NameTypeDescription
node_idstringnode id
interfacestringinterface name

Optional Parameters

NameTypeDescription
labelstringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
enabledbooleanservice is enabled on this network interface
default: true
nat_addrnullable ipv4NAT IP address
hostnamenullable hostnamehostname
Length: 0..1024
service:application:enabledbooleanapplication service enabled
service:management:enabledbooleanmanagement service enabled
service:storage:enabledbooleanstorage service enabled
default: true
service:storage:sharedbooleanstorage service shared
default: true
service:replication:enabledbooleanreplication service enabled
default: true
service:infrastructure:enabledbooleaninfrastructure service enabled
default: true
service:external:enabledbooleanexternal service enabled
default: true
uuiduuidobject UUID
portalsnullable arraypublished portals
portalsnullable arraypublished portals
cplx_idnullable integerprocessor complex assignment

Curl Example

$ curl -X POST https://mgmt-node/api/net \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "node_id": "node:10000",
  "interface": "eth0"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:26:51 GMT
Server: Goliath
ETag: "45e7c4efa8349d677789a828f54636d4"
Content-Type: application/json
Content-Length: 881
{
  "id": "net:9:10",
  "uuid": "aa3b1c6b-456d-45a7-9840-40d6879df950",
  "serial": "NET1C62194C406264CE",
  "evt_qry": "serial=NET1C62194C406264CE",
  "node_id": "node:10000",
  "ctime": 1507570011779,
  "mtime": 1507570011779,
  "seq": 1507570011789,
  "label": "net-1",
  "notes": null,
  "status": {
    "value": "pending",
    "indicator": "degraded",
    "detail": "retrieving status; please wait"
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570011789
  },
  "rec_status": null,
  "enabled": true,
  "interface": "eth0",
  "hostname": null,
  "nat_addr": null,
  "service": {
    "application": {
      "enabled": false
    },
    "management": {
      "enabled": false
    },
    "storage": {
      "enabled": true,
      "shared": true
    },
    "replication": {
      "enabled": true
    },
    "infrastructure": {
      "enabled": true
    },
    "external": {
      "enabled": true
    }
  },
  "network": null
}

Network Interface Remove

Remove the configuration for an existing network interface.

DELETE /net/{net_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/net/net:8:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:26:51 GMT
Server: Goliath

Network Interface Update

Change the configuration of an existing network interface.

PATCH /net/{net_id_or_serial}

Optional Parameters

NameTypeDescription
labelstringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
enabledbooleanservice is enabled on this network interface
interfacestringinterface name
nat_addrnullable ipv4NAT IP address
hostnamenullable hostnamehostname
Length: 0..1024
service:application:enabledbooleanapplication service enabled
service:management:enabledbooleanmanagement service enabled
service:storage:enabledbooleanstorage service enabled
service:storage:sharedbooleanstorage service shared
service:replication:enabledbooleanreplication service enabled
service:infrastructure:enabledbooleaninfrastructure service enabled
service:external:enabledbooleanexternal service enabled
portalsnullable arraypublished portals
portalsnullable arraypublished portals
cplx_idnullable integerprocessor complex assignment

Curl Example

$ curl -X PATCH https://mgmt-node/api/net/net:9:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:51 GMT
Server: Goliath
ETag: "45e7c4efa8349d677789a828f54636d4"
Content-Type: application/json
Content-Length: 881
{
  "id": "net:9:10",
  "uuid": "aa3b1c6b-456d-45a7-9840-40d6879df950",
  "serial": "NET1C62194C406264CE",
  "evt_qry": "serial=NET1C62194C406264CE",
  "node_id": "node:10000",
  "ctime": 1507570011779,
  "mtime": 1507570011779,
  "seq": 1507570011789,
  "label": "net-1",
  "notes": null,
  "status": {
    "value": "pending",
    "indicator": "degraded",
    "detail": "retrieving status; please wait"
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570011789
  },
  "rec_status": null,
  "enabled": true,
  "interface": "eth0",
  "hostname": null,
  "nat_addr": null,
  "service": {
    "application": {
      "enabled": false
    },
    "management": {
      "enabled": false
    },
    "storage": {
      "enabled": true,
      "shared": true
    },
    "replication": {
      "enabled": true
    },
    "infrastructure": {
      "enabled": true
    },
    "external": {
      "enabled": true
    }
  },
  "network": null
}

Operating System Device

The Operating System Storage Device object has the configuration necessary for a Blockbridge storage node to integrate direct-attached (DAS) storage into a System Datastore. The operating system has been configured with the proper drivers for the storage technology, and is responsible for providing a persistent device path. You can use any storage device that's compatible with Linux, such as NVDIMM, NVMe, PCI Flash, direct-attached hardware RAID, or a Fibre Channel SAN.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
labelnullable stringuser assigned label
notesnullable stringuser assigned notes
Length: 0..256
transientbooleandevice is transient
serialstringOS device serial number
evt_qrystringquery string for event application to display associated events
ctimeintegerOS device create time
Range: 0 <= value
mtimeintegerOS device last modified time
Range: 0 <= value
node_idstringstorage node id
pcidstringstorage node id
initializedbooleandevice is initialized
enabledbooleandevice is enabled
align_writes_4knullable booleanalign all writes to 4KiB boundaries, executing read requests as necessary
sizenullable integerraw device size
pathnullable stringdevice path
sds_idnullable stringsystem datastore id
parentnullable objectparent device reference
parent:typestringtype of identified resource
flagsnullable stringgeneric api rts flags field
hiddennullable booleandevice hidden in client UIs by default
status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detailnullable stringstatus detail
usablenullable integerusable device size (in bytes)
usednullable integernumber of bytes of device that have been consumed
rebalance_deltanullable integerremainder of rebalancing goal, bytes (negative: moving extents away)
vendor_idnullable stringdevice vendor id
prod_idnullable stringdevice product id
prod_revnullable stringdevice product revision
usnnullable stringdevice unit serial number
t10_vendor_specific_idnullable stringdevice t10 vendor specific device id
naa_idnullable stringdevice naa id
eui64_idnullable stringdevice eui64 id
logical_block_sizenullable integerdevice logical block size
physical_block_sizenullable integerdevice physical block size
smart_infonullable objectsmart info
md_infonullable objectmd array info
device_infonullable objectdevice info
mpath_infonullable objectsingle slave device info

Operating System Device Info

Retrieve an existing operating system storage device.

GET /os-dev/{os_dev_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/os-dev/os_dev:4:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:56 GMT
Server: Goliath
ETag: "f160fcc0139f2017ebb5ccff54331aa6"
Content-Type: application/json
Content-Length: 1303
{
  "id": "os_dev:4:10",
  "uuid": "5a05f431-0a1b-4725-bc8b-ea179aa501b6",
  "serial": "OSD0D62194C4062641A",
  "evt_qry": "serial=OSD0D62194C4062641A",
  "sds_id": null,
  "node_id": "node:10000",
  "ctime": 1507562840777,
  "mtime": 1507570016428,
  "seq": 1507570016436,
  "label": "device-1",
  "notes": "device label updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507569799000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            4,
            10,
            10,
            10
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            3,
            3,
            3
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507569799668
  },
  "rec_status": null,
  "transient": false,
  "path": "/dev/bb/b9a74447-9962-4f82-88c8-1bcd655ff432",
  "size": 107374182400,
  "initialized": false,
  "enabled": false,
  "parent": {
    "type": [
      "os_dev"
    ],
    "id": "os_dev:7:10"
  },
  "meta": {
    "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
    "blockbridge_md": false,
    "blockbridge_disk_id": "b9a74447-9962-4f82-88c8-1bcd655ff432"
  },
  "usable": null,
  "used": null,
  "device_info": {
    "dsn": null,
    "enclosure": null,
    "present": true,
    "owner": "Volume Manager (mirror1)",
    "devname": "sde",
    "display_name": "scsi/sde",
    "serial": "b9a74447-9962-4f82-88c8-1bcd655ff432",
    "vendor": "B*BRIDGE",
    "model": "SECURE DRIVE",
    "bus": "scsi",
    "rotational": false,
    "type": [
      "disk"
    ],
    "_remote_dev_id": null
  },
  "smart_info": null,
  "md_info": null,
  "hidden": false
}

Operating System Device List

Enumerate operating system storage devices.

GET /os-dev

Curl Example

$ curl https://mgmt-node/api/os-dev \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:56 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 13655
[
  {
    "id": "os_dev:4:10",
    "uuid": "5a05f431-0a1b-4725-bc8b-ea179aa501b6",
    "serial": "OSD0D62194C4062641A",
    "evt_qry": "serial=OSD0D62194C4062641A",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507562840777,
    "mtime": 1507569799536,
    "seq": 1507569799668,
    "label": "device-1",
    "notes": "device label updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507569799000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              10,
              10,
              10
            ],
            "v": "dbg"
          },
          {
            "d": [
              0,
              3,
              3,
              3
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507569799668
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/bb/b9a74447-9962-4f82-88c8-1bcd655ff432",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:7:10"
    },
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": false,
      "blockbridge_disk_id": "b9a74447-9962-4f82-88c8-1bcd655ff432"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "Volume Manager (mirror1)",
      "devname": "sde",
      "display_name": "scsi/sde",
      "serial": "b9a74447-9962-4f82-88c8-1bcd655ff432",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": null,
    "hidden": false
  },
  {
    "id": "os_dev:5:10",
    "uuid": "c0edd702-7801-42ef-b675-2b34411ee13e",
    "serial": "OSD0D62194C40626402",
    "evt_qry": "serial=OSD0D62194C40626402",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507562840991,
    "mtime": 1507569948684,
    "seq": 1507569948698,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507569801000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              4,
              5,
              5,
              5
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507569801731
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/disk/by-id/md-uuid-791bf0b6:27184b1a:a7cc46b9:c7d4a716-part6",
    "size": 18216893952,
    "initialized": false,
    "enabled": false,
    "parent": null,
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": false,
      "blockbridge_disk_id": "c0edd702-7801-42ef-b675-2b34411ee13e"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": null,
      "devname": "md126p6",
      "display_name": "md/system",
      "serial": null,
      "vendor": null,
      "model": null,
      "bus": null,
      "rotational": false,
      "type": [
        "partition"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": {
      "chunk_size": null,
      "state": "active",
      "degraded": false,
      "mismatch_cnt": 0,
      "created": 1507562801000,
      "modified": 1507562801000,
      "active_disks": 2,
      "working_disks": 2,
      "failed_disks": 0,
      "spare_disks": 0,
      "metadata": {
        "version": "0.90.3"
      },
      "bitmap": {
        "chunk_size": null,
        "location": "none",
        "metadata": "internal",
        "space": 0,
        "backlog": 0,
        "max_backlog_used": 0
      },
      "raid": {
        "rebuild_min": 1048576,
        "rebuild_max": 1048576,
        "level": "raid1",
        "layout": null,
        "disks_num": 2
      },
      "sync_action": {
        "action": "none"
      },
      "disks": [
        {
          "size": 107338530816,
          "slot": 0,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:16",
          "dev": "/dev/sdb",
          "flags": [
            "active",
            "in-sync"
          ],
          "health": {
            "value": "online",
            "syndrome": null,
            "updating": false,
            "hidden": false,
            "device_info": {
              "dsn": null,
              "enclosure": null,
              "present": true,
              "owner": "system-array-791bf0b6-2718-4b1a-a7cc-46b9c7d4a716",
              "devname": "sdb",
              "display_name": "scsi/sdb",
              "serial": "6dcf15dc-fdde-4c2b-8cd0-af2cca17c0ba",
              "vendor": "B*BRIDGE",
              "model": "SECURE DRIVE",
              "bus": "scsi",
              "rotational": false,
              "type": [
                "disk"
              ],
              "_remote_dev_id": null
            }
          },
          "oid": "os_dev:3:10",
          "uuid": "ea38df59-c5d2-459c-ab85-5c6434e8c9e4",
          "display_name": "scsi/sdb",
          "preferred_path": "/dev/bb/6dcf15dc-fdde-4c2b-8cd0-af2cca17c0ba",
          "remote_oid": null
        },
        {
          "size": 107338530816,
          "slot": 1,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:0",
          "dev": "/dev/sda",
          "flags": [
            "active",
            "in-sync"
          ],
          "health": {
            "value": "online",
            "syndrome": null,
            "updating": false,
            "hidden": false,
            "device_info": {
              "dsn": null,
              "enclosure": null,
              "present": true,
              "owner": "system-array-791bf0b6-2718-4b1a-a7cc-46b9c7d4a716",
              "devname": "sda",
              "display_name": "scsi/sda",
              "serial": "c88b16a9-20ea-4a54-88b8-2ef9c68d5258",
              "vendor": "B*BRIDGE",
              "model": "SECURE DRIVE",
              "bus": "scsi",
              "rotational": false,
              "type": [
                "disk"
              ],
              "_remote_dev_id": null
            }
          },
          "oid": "os_dev:6:10",
          "uuid": "6fd8dd9d-03cb-4020-a753-4cdee61242f5",
          "display_name": "scsi/sda",
          "preferred_path": "/dev/bb/c88b16a9-20ea-4a54-88b8-2ef9c68d5258",
          "remote_oid": null
        }
      ],
      "flags": [
        "active"
      ]
    },
    "hidden": false
  },
  {
    "id": "os_dev:1:10",
    "uuid": "88e4cabf-7dac-4950-9ec0-fb4de02599fd",
    "serial": "OSD0D62194C40626443",
    "evt_qry": "serial=OSD0D62194C40626443",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507562840328,
    "mtime": 1507562858197,
    "seq": 1507562861680,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507562858000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              1,
              1,
              1
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507562861680
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/bb/125e92af-2cf2-4152-a07b-b792eabb55fe",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:7:10"
    },
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": false,
      "blockbridge_disk_id": "125e92af-2cf2-4152-a07b-b792eabb55fe"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "Volume Manager (mirror1)",
      "devname": "sdc",
      "display_name": "scsi/sdc",
      "serial": "125e92af-2cf2-4152-a07b-b792eabb55fe",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": null,
    "hidden": false
  },
  {
    "id": "os_dev:2:10",
    "uuid": "180c2fb7-f787-45b4-831c-c56c3e58123f",
    "serial": "OSD0D62194C4062647B",
    "evt_qry": "serial=OSD0D62194C4062647B",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507562840465,
    "mtime": 1507569948685,
    "seq": 1507569948695,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507569802000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              2,
              5,
              5,
              5
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507569802681
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/bb/6932606f-1cd8-43bc-bc4c-6fb5f8d42846",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": null,
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": false,
      "blockbridge_disk_id": "6932606f-1cd8-43bc-bc4c-6fb5f8d42846"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": null,
      "devname": "sdd",
      "display_name": "scsi/sdd",
      "serial": "6932606f-1cd8-43bc-bc4c-6fb5f8d42846",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": null,
    "hidden": false
  },
  {
    "id": "os_dev:6:10",
    "uuid": "6fd8dd9d-03cb-4020-a753-4cdee61242f5",
    "serial": "OSD0D62194C4062643A",
    "evt_qry": "serial=OSD0D62194C4062643A",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507562841153,
    "mtime": 1507562847450,
    "seq": 1507562849622,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507562847000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              1,
              1,
              1
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507562849622
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/bb/c88b16a9-20ea-4a54-88b8-2ef9c68d5258",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:5:10"
    },
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": false,
      "blockbridge_disk_id": "c88b16a9-20ea-4a54-88b8-2ef9c68d5258"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "system-array-791bf0b6-2718-4b1a-a7cc-46b9c7d4a716",
      "devname": "sda",
      "display_name": "scsi/sda",
      "serial": "c88b16a9-20ea-4a54-88b8-2ef9c68d5258",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": null,
    "hidden": false
  },
  {
    "id": "os_dev:10:10",
    "uuid": "4d16735c-b8bf-4149-950b-5233c7660907",
    "serial": "OSD0D62194C406264F8",
    "evt_qry": "serial=OSD0D62194C406264F8",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507568149178,
    "mtime": 1507568149513,
    "seq": 1507568149699,
    "label": "osdev_file1",
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507568149000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              1,
              1,
              1
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507568149669
    },
    "rec_status": null,
    "transient": false,
    "path": "/tmp/disk1.osdev_file",
    "size": 1073741824,
    "initialized": false,
    "enabled": false,
    "parent": null,
    "meta": {
      "blockbridge_disk_id": "4d16735c-b8bf-4149-950b-5233c7660907"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": null,
      "devname": null,
      "display_name": null,
      "serial": null,
      "vendor": null,
      "model": null,
      "bus": null,
      "rotational": null,
      "type": null,
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": null,
    "hidden": false
  },
  {
    "id": "os_dev:3:10",
    "uuid": "ea38df59-c5d2-459c-ab85-5c6434e8c9e4",
    "serial": "OSD0D62194C40626463",
    "evt_qry": "serial=OSD0D62194C40626463",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507562840630,
    "mtime": 1507562847170,
    "seq": 1507562849630,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507562847000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              1,
              1,
              1
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507562849630
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/bb/6dcf15dc-fdde-4c2b-8cd0-af2cca17c0ba",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:5:10"
    },
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": false,
      "blockbridge_disk_id": "6dcf15dc-fdde-4c2b-8cd0-af2cca17c0ba"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "system-array-791bf0b6-2718-4b1a-a7cc-46b9c7d4a716",
      "devname": "sdb",
      "display_name": "scsi/sdb",
      "serial": "6dcf15dc-fdde-4c2b-8cd0-af2cca17c0ba",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": null,
    "hidden": false
  },
  {
    "id": "os_dev:7:10",
    "uuid": "7b70f246-5a82-4029-b39e-f139929c9a9e",
    "serial": "OSD0D62194C40626422",
    "evt_qry": "serial=OSD0D62194C40626422",
    "flags": "md",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507562852823,
    "mtime": 1507567764983,
    "seq": 1507568230675,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507564907000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              8,
              8,
              8
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              1,
              1,
              1
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507568230675
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/disk/by-id/md-uuid-7b70f246:5a824029:b39ef139:929c9a9e",
    "size": 107338530816,
    "initialized": false,
    "enabled": false,
    "parent": null,
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": true,
      "blockbridge_disk_id": "7b70f246-5a82-4029-b39e-f139929c9a9e"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": null,
      "devname": "md124",
      "display_name": "md/mirror1",
      "serial": null,
      "vendor": null,
      "model": null,
      "bus": null,
      "rotational": true,
      "type": [
        "md"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": {
      "chunk_size": null,
      "state": "clean",
      "degraded": false,
      "mismatch_cnt": 0,
      "created": 1507562847000,
      "modified": 1507562847000,
      "active_disks": 2,
      "working_disks": 2,
      "failed_disks": 0,
      "spare_disks": 0,
      "metadata": {
        "version": "0.90.3"
      },
      "bitmap": {
        "chunk_size": 268435456,
        "location": "file",
        "metadata": "internal",
        "space": 0,
        "backlog": 0,
        "max_backlog_used": 0
      },
      "raid": {
        "rebuild_min": 1048576,
        "rebuild_max": 1048576,
        "level": "raid1",
        "layout": null,
        "disks_num": 2
      },
      "sync_action": {
        "action": "none"
      },
      "disks": [
        {
          "size": 107338530816,
          "slot": 0,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:64",
          "dev": "/dev/sde",
          "flags": [
            "active",
            "in-sync"
          ],
          "health": {
            "value": "online",
            "syndrome": null,
            "updating": false,
            "hidden": false,
            "device_info": {
              "dsn": null,
              "enclosure": null,
              "present": true,
              "owner": "Volume Manager (mirror1)",
              "devname": "sde",
              "display_name": "scsi/sde",
              "serial": "b9a74447-9962-4f82-88c8-1bcd655ff432",
              "vendor": "B*BRIDGE",
              "model": "SECURE DRIVE",
              "bus": "scsi",
              "rotational": false,
              "type": [
                "disk"
              ],
              "_remote_dev_id": null
            }
          },
          "oid": "os_dev:4:10",
          "uuid": "5a05f431-0a1b-4725-bc8b-ea179aa501b6",
          "display_name": "scsi/sde",
          "preferred_path": "/dev/bb/b9a74447-9962-4f82-88c8-1bcd655ff432",
          "remote_oid": null
        },
        {
          "size": 107338530816,
          "slot": 1,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:32",
          "dev": "/dev/sdc",
          "flags": [
            "active",
            "in-sync"
          ],
          "health": {
            "value": "online",
            "syndrome": null,
            "updating": false,
            "hidden": false,
            "device_info": {
              "dsn": null,
              "enclosure": null,
              "present": true,
              "owner": "Volume Manager (mirror1)",
              "devname": "sdc",
              "display_name": "scsi/sdc",
              "serial": "125e92af-2cf2-4152-a07b-b792eabb55fe",
              "vendor": "B*BRIDGE",
              "model": "SECURE DRIVE",
              "bus": "scsi",
              "rotational": false,
              "type": [
                "disk"
              ],
              "_remote_dev_id": null
            }
          },
          "oid": "os_dev:1:10",
          "uuid": "88e4cabf-7dac-4950-9ec0-fb4de02599fd",
          "display_name": "scsi/sdc",
          "preferred_path": "/dev/bb/125e92af-2cf2-4152-a07b-b792eabb55fe",
          "remote_oid": null
        }
      ],
      "flags": [
        "clean"
      ]
    },
    "hidden": false
  }
]

Operating System Device Create

Register a new operating system storage device, creating its configuration.

POST /os-dev

Required Parameters

NameTypeDescription
pathstringdevice path string
node_idstringstorage node id
raw_sizeintegerraw device size in bytes
Range: 1000000000 <= value
parent:typestringtype of identified resource

Optional Parameters

NameTypeDescription
labelnullable stringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
align_writes_4kbooleanalign all writes to 4KiB boundaries, executing read requests as necessary
uuidnullable uuidobject UUID

Curl Example

$ curl -X POST https://mgmt-node/api/os-dev \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "node_id": "node:10000",
  "path": "/tmp/disk.osdev_file",
  "raw_size": 1073741824,
  "label": "osdev_file"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:26:55 GMT
Server: Goliath
ETag: "36f4dc2164d2a599050ef5a7753d1308"
Content-Type: application/json
Content-Length: 823
{
  "id": "os_dev:14:10",
  "uuid": "e40d2e16-b611-4d71-8b9a-0d3535871177",
  "serial": "OSD0D62194C406264B9",
  "evt_qry": "serial=OSD0D62194C406264B9",
  "sds_id": null,
  "node_id": "node:10000",
  "ctime": 1507570015827,
  "mtime": 1507570015889,
  "seq": 1507570015901,
  "label": "osdev_file",
  "notes": null,
  "status": {
    "value": "pending",
    "indicator": "degraded",
    "detail": "retrieving status; please wait"
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570015840
  },
  "rec_status": null,
  "transient": false,
  "path": "/tmp/disk.osdev_file",
  "size": 1073741824,
  "initialized": false,
  "enabled": false,
  "parent": null,
  "usable": null,
  "used": null,
  "device_info": null,
  "smart_info": null,
  "md_info": null,
  "hidden": false
}

Operating System Device Remove

Remove the configuration of an existing operating system storage device.

DELETE /os-dev/{os_dev_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/os-dev/OSD0D62194C406264B9 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:26:56 GMT
Server: Goliath

Operating System Device Update

Change the configuration of an existing operating system storage device.

PATCH /os-dev/{os_dev_id_or_serial}

Optional Parameters

NameTypeDescription
pathstringdevice path
labelnullable stringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
align_writes_4kbooleanalign all writes to 4KiB boundaries, executing read requests as necessary
parent:typestringtype of identified resource

Curl Example

$ curl -X PATCH https://mgmt-node/api/os-dev/os_dev:4:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "label": "device-1",
  "notes": "device label updated"
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:56 GMT
Server: Goliath
ETag: "f160fcc0139f2017ebb5ccff54331aa6"
Content-Type: application/json
Content-Length: 1303
{
  "id": "os_dev:4:10",
  "uuid": "5a05f431-0a1b-4725-bc8b-ea179aa501b6",
  "serial": "OSD0D62194C4062641A",
  "evt_qry": "serial=OSD0D62194C4062641A",
  "sds_id": null,
  "node_id": "node:10000",
  "ctime": 1507562840777,
  "mtime": 1507570016428,
  "seq": 1507570016436,
  "label": "device-1",
  "notes": "device label updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507569799000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            4,
            10,
            10,
            10
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            3,
            3,
            3
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507569799668
  },
  "rec_status": null,
  "transient": false,
  "path": "/dev/bb/b9a74447-9962-4f82-88c8-1bcd655ff432",
  "size": 107374182400,
  "initialized": false,
  "enabled": false,
  "parent": {
    "type": [
      "os_dev"
    ],
    "id": "os_dev:7:10"
  },
  "meta": {
    "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
    "blockbridge_md": false,
    "blockbridge_disk_id": "b9a74447-9962-4f82-88c8-1bcd655ff432"
  },
  "usable": null,
  "used": null,
  "device_info": {
    "dsn": null,
    "enclosure": null,
    "present": true,
    "owner": "Volume Manager (mirror1)",
    "devname": "sde",
    "display_name": "scsi/sde",
    "serial": "b9a74447-9962-4f82-88c8-1bcd655ff432",
    "vendor": "B*BRIDGE",
    "model": "SECURE DRIVE",
    "bus": "scsi",
    "rotational": false,
    "type": [
      "disk"
    ],
    "_remote_dev_id": null
  },
  "smart_info": null,
  "md_info": null,
  "hidden": false
}

System Datastore

A System Datastore (or just Datastore) defines a pool of storage from which you, your users, and applications will provision secure virtual storage services. You can aggregate direct-attached and iSCSI storage devices to create a single large pool of storage.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
labelstringuser assigned label
Length: 1..64
notesnullable stringuser assigned notes
Length: 0..256
serialstringsystem datastore serial number
ctimeintegersystem datastore create time
Range: 0 <= value
mtimeintegersystem datastore last modified time
Range: 0 <= value
product_idstringproduct id
node_idstringnode id
cplx_idnullable integerprocessor complex assignment
networksnullable arrayset of interfaces to bind to datastore--null means bind all interfaces
networksnullable arrayset of interfaces to bind to datastore--null means bind all interfaces
size_reservablenullable integersize of system datastore storage that is reservable
size_reserve_hard_thresholdnullable integerWhen the available size is less than this threshold, the data plane denies write allocations for volumes that exceed their reserve. This is the amount of storage held for use only by reservation holders.
size_reserve_soft_thresholdnullable integerWhen the available size is less than this threshold, the data plane marks the datastore degraded.
iops_ratingnullable integersystem datastore IOPS rating
iops_schedulingnullable booleansystem datastore supports provisioned IOPS
iops_io_sizenullable integersize in bytes (aligned to 4096) used for IOPS accounting
iops_reserve_pctnullable integerpercent of IOPS reserved
vss_provisioningbooleanvirtual storage services are allowed to provision out of this system datastore
label_tagnullable booleanautomatically use the system datastore label as a provisioning tag
blk_encode_defaultnullable stringdefault block format for virtual disks
one of:"aes256-gcm-4k" or "aes128-xts-4k"
poolnullable objectsystem datastore pool configuration
pool:strategystringpool allocation strategy
one of:"weighted" or "ranked" or "ranked_weighted" or "balanced_unused_percentage" or "balanced_unused"
pool:devs/dev_idstringdevice id
pool:devs/allocationbooleandata allocation is permitted
pool:devs/rankintegerallocation rank
Range: 1 <= value <= 255
pool:devs/weightintegerallocation weight
Range: 0 <= value <= 255
pool:rebalance:enabledbooleanrebalancing administrative control
pool:rebalance:evaluatestringevaluate pool balance once or continuously during scheduled interval
one of:"continuous" or "once"
pool:rebalance:thresholdnumberdo not rebalance until the pool is at least this percentage out of balance
Range: 0 <= value <= 100
pool:rebalance:start_timeintegerstarting time of day
Range: 0 <= value <= 86399000
pool:rebalance:end_timeintegerending time of day
Range: 0 <= value <= 86399000
pool:rebalance:bandwidth_limitnullable integerrebalance bandwidth limit
data:log_dev_idstringsystem datastore log device
data:log_compressnullable booleanenable data log compression
data:log_bypassnullable booleando not use the write ahead log (XTS only, implies sequential_write_direct)
data:sequential_write_directnullable booleansequential writes go direct to pool storage
data:write_merge_timeoutnullable integerwrite merge timeout
data:segment_sizenullable stringsegment size
one of:"128KiB" or "144KiB" or "256KiB"
meta:dev_idstringdevice to use for metasystem
meta:cache_sizenullable integermetasystem cache size
compression:enablednullable booleancompression administrative state
compression:codecnullable stringcompression codec
one of:"economy" or "adaptive" or "adaptive_economy" or "adaptive_performance" or "performance"
compression:iops_limitnullable integerlimit sustained I/O operations per second
compression:activity_monitornullable integerprevent compression of active data (in minutes)
compression:cycle_detectionnullable integerrecurring compression of active data (in minutes)
compression:start_timenullable integerlimit compression processing, starting time of day
Range: 0 <= value <= 86399000
compression:end_timenullable integerlimit compression processing, ending time of day
Range: 0 <= value <= 86399000
product:notesstringuser assigned notes
Length: 0..256
product:tagsarrayprovisioning tags
status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detailnullable stringstatus detail
sizenullable integertotal size of system datastore (in bytes)
usednullable integerused size of system datastore (in bytes)
compress_gainnullable integerreduction in usage due to compression (in bytes)
availablenullable integeravailable size of system datastore (in bytes)
reserve_availablenullable integerunreserved reservable (in bytes)
reserve_sizenullable integertotal reserve size of system datastore (in bytes)
reserve_usednullable integerused reserve size of system datastore (in bytes)
reserve_iopsnullable integertotal reserved IOPS of system datastore
iops_readnullable integerRead operations per second, normalized to 4K
iops_writenullable integerWrite operations per second, normalized to 4K
iopsnullable integerI/O operations per second, normalized to 4K
bw_readnullable integerinstantaneous read bandwidth
bw_writenullable integerinstantaneous write bandwidth
bwnullable integerinstantaneous read and write bandwidth
rebalancednullable integerspace rebalanced, current or prior rebalancing run
iops_rebalancenullable integercurrent rebalancing IOPS
imbalancenullable integerimbalance of current pool allocation, in bytes
iops_merge_upnullable integercurrent decompress IOPS (due to partial overwrite of a compressed segments)
iops_merge_downnullable integercurrent compress IOPS
task_depthnullable integerone second peak task depth
task_latencynullable integerthree second windowed average task latency (in microseconds)
metrics_rts:used_percentnullable numberused size of system datastore (in percentage of rts.size)
metrics_rts:used_notenullable stringhuman-readable usage notice text
metrics_rts:reserve_size_percentnullable numbercurrent total size reserved (in percentage of cfg.size_reservable)
metrics_rts:reserve_size_notenullable stringhuman-readable reserve size notice text
metrics_rts:reserve_iops_percentnullable numbertotal IOPS reserved (as a percentage of reservable IOPS
metrics_rts:size_reserve_hard_threshold_remainnullable integerNumber of bytes until hard threshold is reached
metrics_rts:size_reserve_hard_threshold_percentnullable numberReserve hard threshold (in percentage of rts.size)
metrics_rts:size_efficiency_plannednullable numberratio of configured reservable size to pool size
metrics_rts:size_efficiency_planned_descnullable stringratio of configured reservable size to pool size (formatted string)
metrics_rts:size_efficiency_currentnullable numberratio of current size reserved to current size used
metrics_rts:size_efficiency_current_descnullable stringratio of current size reserved to current size used (formatted string)
metrics_rts:size_efficiency_current_notenullable stringhuman-readable note about the ratio of current size reserved to current size used
metrics_rts:compression_rationullable numberratio of the decompressed size of the data to the raw (compressed) size currently used
metrics_rts:available_percentnullable numberavailable size of system datastore (in percentage of rts.available)
metrics_rts:reserve_available_percentnullable numbercurrent free reservable (in percentage of cfg.reserve_available)
metrics_rts:metadata_used_percentnullable numberpercentage of metadata database used
data_rts:log_sizenullable integerruntime system datastore log size (in bytes)
data_rts:log_compress_rationullable numberdata log compression ratio
data_rts:cache_sizenullable integerdata cache size
meta_rts:sizenullable integerruntime system datastore metasystem size (in bytes)
meta_rts:log_sizenullable integerruntime system datastore metasystem log size (in bytes)
meta_rts:page_sizenullable integermetasystem page size (in bytes)
meta_rts:pagesnullable integertotal number of pages in metasystem
meta_rts:pages_usednullable integernumber of pages consumed in metasystem
meta_rts:pages_cachednullable integernumber of pages in cache in metasystem
meta_rts:pages_dirtynullable integernumber of dirty pages in cache in metasystem
meta_rts:pages_pinnednullable integernumber of pages pinned into cache in metasystem
meta_rts:pages_compressednullable integerof total, number of pages that are compressed in cache
meta_rts:cache_sizenullable integermetasystem cache size
alerts_rtsnullable arraylist of alerts
alerts_rts/symbolstringno documentation
alerts_rts/textstringno documentation
alerts_rts/thresholdnumberbuiltin number type -- integer or double allowed
alerts_rts/timedate-timebuiltin ISO 8601 time string
alerts_rts/valuenumberbuiltin number type -- integer or double allowed
alerts_rts/indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
alerts_rts/limitnumberbuiltin number type -- integer or double allowed
usage:vdisk_intnullable integerinternal virtual disks on node
usage:vssnullable integervirtual storage services on node
usage:targetsnullable integertargets on node
usage:sessions_nvmenullable integerNVMe sessions (associations) connected to node targets
usage:devnullable integeriSCSI and OS devices on node
usage:vdisknullable integervirtual disks on node
usage:snapshotsnullable integersnapshots on node
usage:conn_securenullable integersecure iSCSI session connections to node targets
usage:conn_insecurenullable integerinsecure iSCSI session connections to node targets
usage:nvme_qpsnullable integerNVMe queue pairs, including admin queues
usage:connnullable integeriSCSI session connections to node targets
usage:clonesnullable integercloned disks on node
usage:vdisk_extnullable integerexternal virtual disks on node
usage:os_devnullable integerOS devices on node
usage:sessionsnullable integeriSCSI+NVMe sessions connected to node targets
usage:accountsnullable integeraccounts on node
usage:profilesnullable integerinitiator profiles on node
usage:sessions_iscsinullable integeriSCSI sessions connected to node targets
networknullable objectbuiltin object type (contents are unchecked)

System Datastore Info

Retrieve an existing system datastore.

GET /sys-ds/{sys_ds_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/sys-ds/sys_ds:5:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:58 GMT
Server: Goliath
ETag: "ce517ae0d3c7c0a2b2eed794fa30ada8"
Content-Type: application/json
Content-Length: 1775
{
  "id": "sys_ds:5:10",
  "uuid": "6bc54a1f-df21-4229-a6ce-d6e4f062c56a",
  "serial": "SDS1F62194C4062640D",
  "evt_qry": "serial=SDS1F62194C4062640D",
  "node_id": "node:10000",
  "ctime": 1507570016862,
  "mtime": 1507570018719,
  "seq": 1507570018800,
  "label": "datastore-1",
  "notes": "sys-ds label_tag updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570018000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            7,
            7,
            7,
            7
          ],
          "v": "dbg"
        },
        {
          "d": [
            3,
            3,
            3,
            3
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570018685
  },
  "rec_status": null,
  "product_id": "product:5:10",
  "size_reservable": null,
  "size_reserve_hard_threshold": null,
  "size_reserve_soft_threshold": null,
  "iops_reserve_pct": 100,
  "iops_rating": 50000,
  "iops_scheduling": false,
  "iops_io_size": 32768,
  "vss_provisioning": true,
  "label_tag": true,
  "product": {
    "tags": [

    ]
  },
  "pool": {
    "rebalance": {
      "enabled": false,
      "evaluate": "continuous",
      "threshold": 5,
      "start_time": 0,
      "end_time": 0,
      "bandwidth_limit": null
    },
    "strategy": "weighted",
    "devs": [
      {
        "dev_id": "os_dev:5:10",
        "allocation": true,
        "rank": 1,
        "weight": 1
      },
      {
        "dev_id": "os_dev:2:10",
        "allocation": true,
        "rank": 1,
        "weight": 1
      }
    ]
  },
  "meta": {
    "dev_id": "os_dev:5:10",
    "cache_size": 16777216
  },
  "data": {
    "log_compress": false,
    "log_bypass": false,
    "sequential_write_direct": true,
    "write_merge_timeout": 0,
    "segment_size": "128KiB",
    "log_dev_id": "os_dev:5:10"
  },
  "blk_encode_default": "aes128-xts-4k",
  "size": 18090950656,
  "used": 0,
  "iops_read": 0,
  "iops_write": 0,
  "bw_read": 0,
  "bw_write": 0,
  "reserve_size": 0,
  "reserve_used": 0,
  "reserve_iops": 0,
  "data_rts": {
    "log_size": 8388608,
    "log_compress_ratio": 1.0
  },
  "meta_rts": {
    "size": 16777216,
    "log_size": 8388608,
    "page_size": 4096,
    "pages": 1919,
    "pages_used": 526,
    "pages_cached": 336,
    "pages_dirty": 9,
    "pages_pinned": 333,
    "pages_compressed": 0
  },
  "imbalance": 0
}

System Datastore List

Enumerate system datastores.

GET /sys-ds

Curl Example

$ curl https://mgmt-node/api/sys-ds \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:57 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1679
[
  {
    "id": "sys_ds:5:10",
    "uuid": "6bc54a1f-df21-4229-a6ce-d6e4f062c56a",
    "serial": "SDS1F62194C4062640D",
    "evt_qry": "serial=SDS1F62194C4062640D",
    "node_id": "node:10000",
    "ctime": 1507570016862,
    "mtime": 1507570017846,
    "seq": 1507570017863,
    "label": "datastore-1",
    "notes": "sys-ds label_tag updated",
    "status": {
      "value": "pending",
      "indicator": "degraded",
      "detail": "retrieving status; please wait"
    },
    "ec": {
      "table": {
        "time": 1507570017000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              2,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              1,
              1,
              1
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507570017669
    },
    "rec_status": null,
    "product_id": "product:5:10",
    "size_reservable": null,
    "size_reserve_hard_threshold": null,
    "size_reserve_soft_threshold": null,
    "iops_reserve_pct": 100,
    "iops_rating": 50000,
    "iops_scheduling": false,
    "iops_io_size": 32768,
    "vss_provisioning": true,
    "label_tag": true,
    "product": {
      "tags": [

      ]
    },
    "pool": {
      "rebalance": {
        "enabled": false,
        "evaluate": "continuous",
        "threshold": 5,
        "start_time": 0,
        "end_time": 0,
        "bandwidth_limit": null
      },
      "strategy": "weighted",
      "devs": [

      ]
    },
    "meta": {
      "dev_id": "os_dev:5:10",
      "cache_size": 16777216
    },
    "data": {
      "log_compress": false,
      "log_bypass": false,
      "sequential_write_direct": true,
      "write_merge_timeout": 0,
      "segment_size": "128KiB",
      "log_dev_id": "os_dev:5:10"
    },
    "blk_encode_default": "aes128-xts-4k",
    "size": null,
    "used": null,
    "iops_read": null,
    "iops_write": null,
    "bw_read": null,
    "bw_write": null,
    "reserve_size": null,
    "reserve_used": null,
    "reserve_iops": null,
    "data_rts": {
      "log_size": null
    },
    "meta_rts": {
      "size": null,
      "log_size": null,
      "page_size": null,
      "pages": null,
      "pages_used": null,
      "pages_cached": null,
      "pages_dirty": null,
      "pages_pinned": null,
      "pages_compressed": null
    },
    "imbalance": null
  }
]

System Datastore Create

Create a new system datastore.

POST /sys-ds

Required Parameters

NameTypeDescription
data:log_dev_idstringdata journal device id
data:log_sizeintegerdata journal size in bytes
default: 8388608
Range: 4194304 <= value <= 17179869184
data:log_compressbooleanenable data log compression
data:log_bypassbooleando not use the write ahead log (XTS only, implies sequential_write_direct)
data:sequential_write_directbooleansequential writes go direct to pool storage
default: true
data:write_merge_timeoutintegerwrite merge timeout (microseconds)
default: 0
Range: 0 <= value <= 10000000
data:segment_sizestringsegment size
one of:"128KiB" or "144KiB" or "256KiB"
meta:dev_idstringthin-provisioning metadata device id
meta:sizeintegerthin-provisioning metadata size in bytes
default: 16777216
Range: 16777216 <= value
meta:log_sizeintegerthin-provisioning metadata journal size in bytes (encapsulated inside metadata)
default: 8388608
Range: 4194304 <= value
meta:cache_sizenullable integerthin-provisioning metadata cache size
Range: 4194304 <= value
node_idstringnode id

Optional Parameters

NameTypeDescription
labelstringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
strategystringpool allocation strategy
default: "weighted"
one of:"weighted" or "ranked" or "ranked_weighted" or "balanced_unused_percentage" or "balanced_unused"
size_reservablenullable integersize of storage that may be reserved by disks and services
Range: 0 <= value
size_reserve_hard_thresholdnullable integerthe amount of storage held for use only by reservation holders
Range: 0 <= value
size_reserve_soft_thresholdnullable integerwhen there is less storage than this available, the datastore is marked degraded
Range: 0 <= value
iops_reserve_pctintegerpercent of storage IOPS that may be reserved by services
default: 100
Range: 0 <= value <= 100
iops_ratingintegeradministrator assigned storage subsystem rating in I/O operations per second
default: 50000
Range: 100 <= value <= 1000000
iops_schedulingbooleanIOPS scheduling is enabled
vss_provisioningbooleanvirtual storage service provisioning is enabled
default: true
label_tagbooleansystem datastore label automatically entered as a provisioning tag
default: true
product:tagsarrayarray of product tags
blk_encode_defaultstringdefault block encoding for user data
one of:"aes256-gcm-4k" or "aes128-xts-4k"
backup_mrdb_sizeintegerconfiguration backup database size on metadata device
default: 33554432
Range: 1048576 <= value <= 33554432
uuiduuidobject UUID
rebalance:enabledbooleanrebalancing administrative control
rebalance:evaluatestringevaluate pool balance once or continuously during scheduled interval
default: "continuous"
one of:"continuous" or "once"
rebalance:thresholdnumberdo not rebalance until the pool is at least this percentage out of balance
default: 5
Range: 0 <= value <= 100
rebalance:start_timeintegerstarting time of day
default: 0
Range: 0 <= value <= 86399000
rebalance:end_timeintegerending time of day
default: 0
Range: 0 <= value <= 86399000
rebalance:bandwidth_limitnullable integerrebalance bandwidth limit
iops_io_sizeintegersize in bytes (aligned to 4096) used for IOPS accounting
default: 32768
Range: 4096 <= value <= 131072
compression:enabledbooleancompression administrative state
compression:codecstringcompression codec
default: "adaptive_economy"
one of:"economy" or "adaptive" or "adaptive_economy" or "adaptive_performance" or "performance"
compression:iops_limitnullable integerlimit sustained I/O operations per second
compression:activity_monitorintegerprevent compression of active data (in minutes)
default: 10
compression:cycle_detectionintegerrecurring compression of active data (in minutes)
default: 1440
compression:start_timeintegerlimit compression processing, starting time of day
default: 0
Range: 0 <= value <= 86399000
compression:end_timeintegerlimit compression processing, ending time of day
default: 0
Range: 0 <= value <= 86399000
cplx_idnullable integerprocessor complex assignment
default: 0
networksnullable arrayset of interfaces to bind to datastore
networksnullable arrayset of interfaces to bind to datastore

Curl Example

$ curl -X POST https://mgmt-node/api/sys-ds \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "node_id": "node:10000",
  "label": "datastore-1",
  "data": {
    "log_dev_id": "os_dev:5:10"
  },
  "meta": {
    "dev_id": "os_dev:5:10"
  }
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:26:57 GMT
Server: Goliath
ETag: "54f70ac52dba7a8c51c3ca5abd36b418"
Content-Type: application/json
Content-Length: 1646
{
  "id": "sys_ds:5:10",
  "uuid": "6bc54a1f-df21-4229-a6ce-d6e4f062c56a",
  "serial": "SDS1F62194C4062640D",
  "evt_qry": "serial=SDS1F62194C4062640D",
  "node_id": "node:10000",
  "ctime": 1507570016862,
  "mtime": 1507570017491,
  "seq": 1507570017506,
  "label": "datastore-1",
  "notes": null,
  "status": {
    "value": "pending",
    "indicator": "degraded",
    "detail": "retrieving status; please wait"
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570016873
  },
  "rec_status": null,
  "product_id": "product:5:10",
  "size_reservable": null,
  "size_reserve_hard_threshold": null,
  "size_reserve_soft_threshold": null,
  "iops_reserve_pct": 100,
  "iops_rating": 50000,
  "iops_scheduling": false,
  "iops_io_size": 32768,
  "vss_provisioning": true,
  "label_tag": true,
  "product": {
    "tags": [

    ]
  },
  "pool": {
    "rebalance": {
      "enabled": false,
      "evaluate": "continuous",
      "threshold": 5,
      "start_time": 0,
      "end_time": 0,
      "bandwidth_limit": null
    },
    "strategy": "weighted",
    "devs": [

    ]
  },
  "meta": {
    "dev_id": "os_dev:5:10",
    "cache_size": 16777216
  },
  "data": {
    "log_compress": false,
    "log_bypass": false,
    "sequential_write_direct": true,
    "write_merge_timeout": 0,
    "segment_size": "128KiB",
    "log_dev_id": "os_dev:5:10"
  },
  "blk_encode_default": "aes128-xts-4k",
  "size": null,
  "used": null,
  "iops_read": null,
  "iops_write": null,
  "bw_read": null,
  "bw_write": null,
  "reserve_size": null,
  "reserve_used": null,
  "reserve_iops": null,
  "data_rts": {
    "log_size": null
  },
  "meta_rts": {
    "size": null,
    "log_size": null,
    "page_size": null,
    "pages": null,
    "pages_used": null,
    "pages_cached": null,
    "pages_dirty": null,
    "pages_pinned": null,
    "pages_compressed": null
  },
  "imbalance": null
}

System Datastore Remove

Remove an existing system datastore. Its storage pool must be empty.

DELETE /sys-ds/{sys_ds_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/sys-ds/SDS1F62194C4062640D \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:38 GMT
Server: Goliath

Unlink a system datastore from its processor complex.

POST /sys-ds/{sys_ds_id_or_serial}/actions/unlink

Curl Example

$ curl -X POST FIXME

Response Example

HTTP/1.1 200 OK

System Datastore Query Usage

Retrieve datastore usage metrics for the specified sys_ds id or serial number.

GET /sys-ds/{sys_ds_id_or_serial}/usage

Optional Parameters

NameTypeDescription
tstartdate-timestart time for query
default: -604800000
tendintegerend time for query
default: -1
Range: 0 <= value
granularitystringevaluation granularity
default: "hour"
one of:"hour" or "day"
statsarraylimit results to subset of datastore metrics
with_pointsbooleaninclude raw metric data suitable for graphing

Curl Example

$ curl FIXME

Response Example

HTTP/1.1 200 OK

System Datastore Update

Change the configuration of an existing system datastore.

PATCH /sys-ds/{sys_ds_id_or_serial}

Optional Parameters

NameTypeDescription
labelstringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
data:cache_sizeintegerdata cache size in bytes
data:log_compressbooleanenable data log compression
data:log_bypassbooleando not use the write ahead log (XTS only, implies sequential_write_direct)
data:sequential_write_directbooleansequential writes go direct to pool storage
data:write_merge_timeoutintegerwrite merge timeout
Range: 0 <= value <= 10000000
meta:cache_sizeintegerthin-provisioning metadata cache size in bytes
pool:strategystringpool allocation strategy
one of:"weighted" or "ranked" or "ranked_weighted" or "balanced_unused_percentage" or "balanced_unused"
pool:devs/dev_idstringdevice id
pool:devs/allocationbooleandata allocation is permitted
pool:devs/rankintegerallocation rank
Range: 1 <= value <= 255
pool:devs/weightintegerallocation weight
Range: 0 <= value <= 255
pool:rebalance:enabledbooleanrebalancing administrative control
pool:rebalance:evaluatestringevaluate pool balance once or continuously during scheduled interval
one of:"continuous" or "once"
pool:rebalance:thresholdnumberdo not rebalance until the pool is at least this percentage out of balance
Range: 0 <= value <= 100
pool:rebalance:start_timeintegerstarting time of day
Range: 0 <= value <= 86399000
pool:rebalance:end_timeintegerending time of day
Range: 0 <= value <= 86399000
pool:rebalance:bandwidth_limitnullable integerrebalance bandwidth limit
iops_reserve_pctintegerpercent of storage IOPS that may be reserved by services
Range: 0 <= value <= 100
size_reservablenullable integersize of storage that may be reserved by disks and services
Range: 0 <= value
size_reserve_hard_thresholdnullable integerthe amount of storage held for use only by reservation holders
Range: 0 <= value
size_reserve_soft_thresholdnullable integerwhen there is less storage than this available, the datastore is marked degraded
Range: 0 <= value
iops_ratingintegeradministrator assigned storage subsystem rating in I/O operations per second
Range: 100 <= value <= 1000000
iops_schedulingbooleanIOPS scheduling is enabled
vss_provisioningbooleanvirtual storage service provisioning is enabled
label_tagbooleansystem datastore label automatically entered as a provisioning tag
product:tagsarrayarray of product tags
product:notesstringuser assigned notes
Length: 0..256
cplx_idnullable integerprocessor complex assignment
networksnullable arrayset of interfaces to bind to datastore
networksnullable arrayset of interfaces to bind to datastore
compression:enabledbooleancompression administrative state
compression:codecstringcompression codec
one of:"economy" or "adaptive" or "adaptive_economy" or "adaptive_performance" or "performance"
compression:iops_limitnullable integerlimit sustained I/O operations per second
compression:activity_monitorintegerprevent compression of active data (in minutes)
compression:cycle_detectionintegerrecurring compression of active data (in minutes)
compression:start_timeintegerlimit compression processing, starting time of day
Range: 0 <= value <= 86399000
compression:end_timeintegerlimit compression processing, ending time of day
Range: 0 <= value <= 86399000
iops_io_sizeintegersize in bytes (aligned to 4096) used for IOPS accounting
Range: 4096 <= value <= 131072

Curl Example

$ curl -X PATCH https://mgmt-node/api/sys-ds/sys_ds:5:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "label_tag": true,
  "notes": "sys-ds label_tag updated"
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:57 GMT
Server: Goliath
ETag: "93eca1e08e41fd73ca58d5c023a3590c"
Content-Type: application/json
Content-Length: 1677
{
  "id": "sys_ds:5:10",
  "uuid": "6bc54a1f-df21-4229-a6ce-d6e4f062c56a",
  "serial": "SDS1F62194C4062640D",
  "evt_qry": "serial=SDS1F62194C4062640D",
  "node_id": "node:10000",
  "ctime": 1507570016862,
  "mtime": 1507570017846,
  "seq": 1507570017863,
  "label": "datastore-1",
  "notes": "sys-ds label_tag updated",
  "status": {
    "value": "pending",
    "indicator": "degraded",
    "detail": "retrieving status; please wait"
  },
  "ec": {
    "table": {
      "time": 1507570017000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            2,
            2,
            2,
            2
          ],
          "v": "dbg"
        },
        {
          "d": [
            1,
            1,
            1,
            1
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570017669
  },
  "rec_status": null,
  "product_id": "product:5:10",
  "size_reservable": null,
  "size_reserve_hard_threshold": null,
  "size_reserve_soft_threshold": null,
  "iops_reserve_pct": 100,
  "iops_rating": 50000,
  "iops_scheduling": false,
  "iops_io_size": 32768,
  "vss_provisioning": true,
  "label_tag": true,
  "product": {
    "tags": [

    ]
  },
  "pool": {
    "rebalance": {
      "enabled": false,
      "evaluate": "continuous",
      "threshold": 5,
      "start_time": 0,
      "end_time": 0,
      "bandwidth_limit": null
    },
    "strategy": "weighted",
    "devs": [

    ]
  },
  "meta": {
    "dev_id": "os_dev:5:10",
    "cache_size": 16777216
  },
  "data": {
    "log_compress": false,
    "log_bypass": false,
    "sequential_write_direct": true,
    "write_merge_timeout": 0,
    "segment_size": "128KiB",
    "log_dev_id": "os_dev:5:10"
  },
  "blk_encode_default": "aes128-xts-4k",
  "size": null,
  "used": null,
  "iops_read": null,
  "iops_write": null,
  "bw_read": null,
  "bw_write": null,
  "reserve_size": null,
  "reserve_used": null,
  "reserve_iops": null,
  "data_rts": {
    "log_size": null
  },
  "meta_rts": {
    "size": null,
    "log_size": null,
    "page_size": null,
    "pages": null,
    "pages_used": null,
    "pages_cached": null,
    "pages_dirty": null,
    "pages_pinned": null,
    "pages_compressed": null
  },
  "imbalance": null
}

System Datastore Pool Add

Add an iSCSI storage device or an OS storage device to the storage pool of a system datastore.

POST /sys-ds/{sys_ds_id_or_serial}/actions/pool-add

Required Parameters

NameTypeDescription
dev_idstringdevice id

Optional Parameters

NameTypeDescription
allocationbooleandata allocation is enabled
default: true
rankintegerallocation rank
default: 1
Range: 1 <= value <= 255
weightintegerallocation weight
default: 1
Range: 0 <= value <= 255

Curl Example

$ curl -X POST https://mgmt-node/api/sys-ds/sys_ds:5:10/actions/pool-add \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "dev_id": "os_dev:5:10"
}'

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:26:58 GMT
Server: Goliath

System Datastore Pool Delete

Remove an iSCSI storage device or an OS storage device from the storage pool of a system datastore. The device must not contain any user data. Use the pool destage action to move user data away from the device prior to removing it from the pool.

POST /sys-ds/{sys_ds_id_or_serial}/actions/pool-del

Required Parameters

NameTypeDescription
dev_idstringdevice id

Curl Example

$ curl -X POST https://mgmt-node/api/sys-ds/sys_ds:5:10/actions/pool-del \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "dev_id": "os_dev:5:10"
}'

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:32 GMT
Server: Goliath

System Datastore Pool Destage

Move all user data off of an iSCSI or OS storage device to other devices in the system datastore storage pool. There must be enough room on the remaining set of pool devices to hold the data.

POST /sys-ds/{sys_ds_id_or_serial}/actions/pool-destage

Required Parameters

NameTypeDescription
dev_idstringdevice id

Optional Parameters

NameTypeDescription
limit_bandwidthbooleanlimit bandwidth usage
bandwidthintegerbandwidth limit in bytes/sec

Curl Example

$ curl -X POST https://mgmt-node/api/sys-ds/sys_ds:5:10/actions/pool-destage \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "dev_id": "os_dev:5:10"
}'

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:32 GMT
Server: Goliath

System Datastore Benchmark

Initiate a benchmark test for the storage pool of a system datastore.

POST /sys-ds/{sys_ds_id_or_serial}/actions/benchmark

Required Parameters

NameTypeDescription
rangeintegerbyte range of test
Range: 1048576 <= value
workloadstringbenchmark workload type
one of:"sequential" or "random"
preformatbooleanwrite entire range prior to test

Optional Parameters

NameTypeDescription
read_percentintegerpercentage of read I/Os
default: 50
Range: 0 <= value <= 100
encodingstringblock encoding
one of:"aes256-gcm-4k" or "aes128-xts-4k"
durationintegertime in seconds to run test
default: 300
iosize_minintegerminimum I/O size
default: 4096
Range: 512 <= value <= 1048576
iosize_maxintegermaximum I/O size
default: 4096
Range: 512 <= value <= 1048576
alignintegerI/O offset alignment
default: 4096
Range: 512 <= value <= 1048576
queue_depthintegermaximum number of I/O's outstanding
default: 64
Range: 1 <= value <= 1024
compressibilityintegerpercentage that written data should compress, assuming ideal compression
default: 0
Range: 0 <= value <= 100

Curl Example

$ curl -X POST https://mgmt-node/api/sys-ds/sys_ds:5:10/actions/benchmark \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "range": 1048576,
  "workload": "sequential",
  "preformat": false,
  "duration": 10
}'

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:29 GMT
Server: Goliath

System Datastore Device

Retrieve and change certain basic parameters of iSCSI Devices and Operating System Devices from this common resource. For parameters that are device-specific, consult the individual iSCSI device and operating system device resources.

System Datastore Device Info

Info for existing dev.

GET /dev/{dev_identity}

Curl Example

$ curl https://mgmt-node/api/os-dev/os_dev:4:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:59 GMT
Server: Goliath
ETag: "3003499d2cd2e54f0f5e18a3b3ae9c73"
Content-Type: application/json
Content-Length: 1303
{
  "id": "os_dev:4:10",
  "uuid": "5a05f431-0a1b-4725-bc8b-ea179aa501b6",
  "serial": "OSD0D62194C4062641A",
  "evt_qry": "serial=OSD0D62194C4062641A",
  "sds_id": null,
  "node_id": "node:10000",
  "ctime": 1507562840777,
  "mtime": 1507570016428,
  "seq": 1507570016667,
  "label": "device-1",
  "notes": "device label updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570016000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            6,
            12,
            12,
            12
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            3,
            3,
            3
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570016667
  },
  "rec_status": null,
  "transient": false,
  "path": "/dev/bb/b9a74447-9962-4f82-88c8-1bcd655ff432",
  "size": 107374182400,
  "initialized": false,
  "enabled": false,
  "parent": {
    "type": [
      "os_dev"
    ],
    "id": "os_dev:7:10"
  },
  "meta": {
    "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
    "blockbridge_md": false,
    "blockbridge_disk_id": "b9a74447-9962-4f82-88c8-1bcd655ff432"
  },
  "usable": null,
  "used": null,
  "device_info": {
    "dsn": null,
    "enclosure": null,
    "present": true,
    "owner": "Volume Manager (mirror1)",
    "devname": "sde",
    "display_name": "scsi/sde",
    "serial": "b9a74447-9962-4f82-88c8-1bcd655ff432",
    "vendor": "B*BRIDGE",
    "model": "SECURE DRIVE",
    "bus": "scsi",
    "rotational": false,
    "type": [
      "disk"
    ],
    "_remote_dev_id": null
  },
  "smart_info": null,
  "md_info": null,
  "hidden": false
}

System Datastore Device List

List existing devs.

GET /dev

Curl Example

$ curl https://mgmt-node/api/dev \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:58 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 13752
[
  {
    "id": "os_dev:4:10",
    "uuid": "5a05f431-0a1b-4725-bc8b-ea179aa501b6",
    "serial": "OSD0D62194C4062641A",
    "evt_qry": "serial=OSD0D62194C4062641A",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507562840777,
    "mtime": 1507570016428,
    "seq": 1507570016667,
    "label": "device-1",
    "notes": "device label updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507570016000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              6,
              12,
              12,
              12
            ],
            "v": "dbg"
          },
          {
            "d": [
              0,
              3,
              3,
              3
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507570016667
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/bb/b9a74447-9962-4f82-88c8-1bcd655ff432",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:7:10"
    },
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": false,
      "blockbridge_disk_id": "b9a74447-9962-4f82-88c8-1bcd655ff432"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "Volume Manager (mirror1)",
      "devname": "sde",
      "display_name": "scsi/sde",
      "serial": "b9a74447-9962-4f82-88c8-1bcd655ff432",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": null,
    "hidden": false
  },
  {
    "id": "os_dev:5:10",
    "uuid": "c0edd702-7801-42ef-b675-2b34411ee13e",
    "serial": "OSD0D62194C40626402",
    "evt_qry": "serial=OSD0D62194C40626402",
    "sds_id": "sys_ds:5:10",
    "node_id": "node:10000",
    "ctime": 1507562840991,
    "mtime": 1507570018283,
    "seq": 1507570018754,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507570018000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              6,
              7,
              7,
              7
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507570018690
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/disk/by-id/md-uuid-791bf0b6:27184b1a:a7cc46b9:c7d4a716-part6",
    "size": 18216893952,
    "initialized": true,
    "enabled": true,
    "parent": null,
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": false,
      "blockbridge_disk_id": "c0edd702-7801-42ef-b675-2b34411ee13e"
    },
    "usable": 18090950656,
    "used": 0,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "Storage Processor (SDS1F62194C4062640D)",
      "devname": "md126p6",
      "display_name": "md/system",
      "serial": null,
      "vendor": null,
      "model": null,
      "bus": null,
      "rotational": false,
      "type": [
        "partition"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": {
      "chunk_size": null,
      "state": "active",
      "degraded": false,
      "mismatch_cnt": 0,
      "created": 1507562801000,
      "modified": 1507562801000,
      "active_disks": 2,
      "working_disks": 2,
      "failed_disks": 0,
      "spare_disks": 0,
      "metadata": {
        "version": "0.90.3"
      },
      "bitmap": {
        "chunk_size": null,
        "location": "none",
        "metadata": "internal",
        "space": 0,
        "backlog": 0,
        "max_backlog_used": 0
      },
      "raid": {
        "rebuild_min": 1048576,
        "rebuild_max": 1048576,
        "level": "raid1",
        "layout": null,
        "disks_num": 2
      },
      "sync_action": {
        "action": "none"
      },
      "disks": [
        {
          "size": 107338530816,
          "slot": 0,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:16",
          "dev": "/dev/sdb",
          "flags": [
            "active",
            "in-sync"
          ],
          "health": {
            "value": "online",
            "syndrome": null,
            "updating": false,
            "hidden": false,
            "device_info": {
              "dsn": null,
              "enclosure": null,
              "present": true,
              "owner": "system-array-791bf0b6-2718-4b1a-a7cc-46b9c7d4a716",
              "devname": "sdb",
              "display_name": "scsi/sdb",
              "serial": "6dcf15dc-fdde-4c2b-8cd0-af2cca17c0ba",
              "vendor": "B*BRIDGE",
              "model": "SECURE DRIVE",
              "bus": "scsi",
              "rotational": false,
              "type": [
                "disk"
              ],
              "_remote_dev_id": null
            }
          },
          "oid": "os_dev:3:10",
          "uuid": "ea38df59-c5d2-459c-ab85-5c6434e8c9e4",
          "display_name": "scsi/sdb",
          "preferred_path": "/dev/bb/6dcf15dc-fdde-4c2b-8cd0-af2cca17c0ba",
          "remote_oid": null
        },
        {
          "size": 107338530816,
          "slot": 1,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:0",
          "dev": "/dev/sda",
          "flags": [
            "active",
            "in-sync"
          ],
          "health": {
            "value": "online",
            "syndrome": null,
            "updating": false,
            "hidden": false,
            "device_info": {
              "dsn": null,
              "enclosure": null,
              "present": true,
              "owner": "system-array-791bf0b6-2718-4b1a-a7cc-46b9c7d4a716",
              "devname": "sda",
              "display_name": "scsi/sda",
              "serial": "c88b16a9-20ea-4a54-88b8-2ef9c68d5258",
              "vendor": "B*BRIDGE",
              "model": "SECURE DRIVE",
              "bus": "scsi",
              "rotational": false,
              "type": [
                "disk"
              ],
              "_remote_dev_id": null
            }
          },
          "oid": "os_dev:6:10",
          "uuid": "6fd8dd9d-03cb-4020-a753-4cdee61242f5",
          "display_name": "scsi/sda",
          "preferred_path": "/dev/bb/c88b16a9-20ea-4a54-88b8-2ef9c68d5258",
          "remote_oid": null
        }
      ],
      "flags": [
        "active"
      ]
    },
    "hidden": false
  },
  {
    "id": "os_dev:1:10",
    "uuid": "88e4cabf-7dac-4950-9ec0-fb4de02599fd",
    "serial": "OSD0D62194C40626443",
    "evt_qry": "serial=OSD0D62194C40626443",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507562840328,
    "mtime": 1507562858197,
    "seq": 1507562861680,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507562858000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              1,
              1,
              1
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507562861680
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/bb/125e92af-2cf2-4152-a07b-b792eabb55fe",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:7:10"
    },
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": false,
      "blockbridge_disk_id": "125e92af-2cf2-4152-a07b-b792eabb55fe"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "Volume Manager (mirror1)",
      "devname": "sdc",
      "display_name": "scsi/sdc",
      "serial": "125e92af-2cf2-4152-a07b-b792eabb55fe",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": null,
    "hidden": false
  },
  {
    "id": "os_dev:2:10",
    "uuid": "180c2fb7-f787-45b4-831c-c56c3e58123f",
    "serial": "OSD0D62194C4062647B",
    "evt_qry": "serial=OSD0D62194C4062647B",
    "sds_id": "sys_ds:5:10",
    "node_id": "node:10000",
    "ctime": 1507562840465,
    "mtime": 1507570018719,
    "seq": 1507570018803,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507569802000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              2,
              5,
              5,
              5
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507569802681
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/bb/6932606f-1cd8-43bc-bc4c-6fb5f8d42846",
    "size": 107374182400,
    "initialized": true,
    "enabled": true,
    "parent": null,
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": false,
      "blockbridge_disk_id": "6932606f-1cd8-43bc-bc4c-6fb5f8d42846"
    },
    "usable": 107307073536,
    "used": 0,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "Storage Processor (SDS1F62194C4062640D)",
      "devname": "sdd",
      "display_name": "scsi/sdd",
      "serial": "6932606f-1cd8-43bc-bc4c-6fb5f8d42846",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": null,
    "hidden": false
  },
  {
    "id": "os_dev:6:10",
    "uuid": "6fd8dd9d-03cb-4020-a753-4cdee61242f5",
    "serial": "OSD0D62194C4062643A",
    "evt_qry": "serial=OSD0D62194C4062643A",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507562841153,
    "mtime": 1507562847450,
    "seq": 1507562849622,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507562847000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              1,
              1,
              1
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507562849622
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/bb/c88b16a9-20ea-4a54-88b8-2ef9c68d5258",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:5:10"
    },
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": false,
      "blockbridge_disk_id": "c88b16a9-20ea-4a54-88b8-2ef9c68d5258"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "system-array-791bf0b6-2718-4b1a-a7cc-46b9c7d4a716",
      "devname": "sda",
      "display_name": "scsi/sda",
      "serial": "c88b16a9-20ea-4a54-88b8-2ef9c68d5258",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": null,
    "hidden": false
  },
  {
    "id": "os_dev:10:10",
    "uuid": "4d16735c-b8bf-4149-950b-5233c7660907",
    "serial": "OSD0D62194C406264F8",
    "evt_qry": "serial=OSD0D62194C406264F8",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507568149178,
    "mtime": 1507568149513,
    "seq": 1507568149699,
    "label": "osdev_file1",
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507568149000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              1,
              1,
              1
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507568149669
    },
    "rec_status": null,
    "transient": false,
    "path": "/tmp/disk1.osdev_file",
    "size": 1073741824,
    "initialized": false,
    "enabled": false,
    "parent": null,
    "meta": {
      "blockbridge_disk_id": "4d16735c-b8bf-4149-950b-5233c7660907"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": null,
      "devname": null,
      "display_name": null,
      "serial": null,
      "vendor": null,
      "model": null,
      "bus": null,
      "rotational": null,
      "type": null,
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": null,
    "hidden": false
  },
  {
    "id": "os_dev:3:10",
    "uuid": "ea38df59-c5d2-459c-ab85-5c6434e8c9e4",
    "serial": "OSD0D62194C40626463",
    "evt_qry": "serial=OSD0D62194C40626463",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507562840630,
    "mtime": 1507562847170,
    "seq": 1507562849630,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507562847000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              4,
              4,
              4
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              1,
              1,
              1
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507562849630
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/bb/6dcf15dc-fdde-4c2b-8cd0-af2cca17c0ba",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:5:10"
    },
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": false,
      "blockbridge_disk_id": "6dcf15dc-fdde-4c2b-8cd0-af2cca17c0ba"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "system-array-791bf0b6-2718-4b1a-a7cc-46b9c7d4a716",
      "devname": "sdb",
      "display_name": "scsi/sdb",
      "serial": "6dcf15dc-fdde-4c2b-8cd0-af2cca17c0ba",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": null,
    "hidden": false
  },
  {
    "id": "os_dev:7:10",
    "uuid": "7b70f246-5a82-4029-b39e-f139929c9a9e",
    "serial": "OSD0D62194C40626422",
    "evt_qry": "serial=OSD0D62194C40626422",
    "flags": "md",
    "sds_id": null,
    "node_id": "node:10000",
    "ctime": 1507562852823,
    "mtime": 1507567764983,
    "seq": 1507568230675,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507564907000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              8,
              8,
              8
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              1,
              1,
              1
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507568230675
    },
    "rec_status": null,
    "transient": false,
    "path": "/dev/disk/by-id/md-uuid-7b70f246:5a824029:b39ef139:929c9a9e",
    "size": 107338530816,
    "initialized": false,
    "enabled": false,
    "parent": null,
    "meta": {
      "blockbridge_agent": "1f57e3a8-6ade-4aea-900e-3ebb5350f025",
      "blockbridge_md": true,
      "blockbridge_disk_id": "7b70f246-5a82-4029-b39e-f139929c9a9e"
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": null,
      "devname": "md124",
      "display_name": "md/mirror1",
      "serial": null,
      "vendor": null,
      "model": null,
      "bus": null,
      "rotational": true,
      "type": [
        "md"
      ],
      "_remote_dev_id": null
    },
    "smart_info": null,
    "md_info": {
      "chunk_size": null,
      "state": "clean",
      "degraded": false,
      "mismatch_cnt": 0,
      "created": 1507562847000,
      "modified": 1507562847000,
      "active_disks": 2,
      "working_disks": 2,
      "failed_disks": 0,
      "spare_disks": 0,
      "metadata": {
        "version": "0.90.3"
      },
      "bitmap": {
        "chunk_size": 268435456,
        "location": "file",
        "metadata": "internal",
        "space": 0,
        "backlog": 0,
        "max_backlog_used": 0
      },
      "raid": {
        "rebuild_min": 1048576,
        "rebuild_max": 1048576,
        "level": "raid1",
        "layout": null,
        "disks_num": 2
      },
      "sync_action": {
        "action": "none"
      },
      "disks": [
        {
          "size": 107338530816,
          "slot": 0,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:64",
          "dev": "/dev/sde",
          "flags": [
            "active",
            "in-sync"
          ],
          "health": {
            "value": "online",
            "syndrome": null,
            "updating": false,
            "hidden": false,
            "device_info": {
              "dsn": null,
              "enclosure": null,
              "present": true,
              "owner": "Volume Manager (mirror1)",
              "devname": "sde",
              "display_name": "scsi/sde",
              "serial": "b9a74447-9962-4f82-88c8-1bcd655ff432",
              "vendor": "B*BRIDGE",
              "model": "SECURE DRIVE",
              "bus": "scsi",
              "rotational": false,
              "type": [
                "disk"
              ],
              "_remote_dev_id": null
            }
          },
          "oid": "os_dev:4:10",
          "uuid": "5a05f431-0a1b-4725-bc8b-ea179aa501b6",
          "display_name": "scsi/sde",
          "preferred_path": "/dev/bb/b9a74447-9962-4f82-88c8-1bcd655ff432",
          "remote_oid": null
        },
        {
          "size": 107338530816,
          "slot": 1,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:32",
          "dev": "/dev/sdc",
          "flags": [
            "active",
            "in-sync"
          ],
          "health": {
            "value": "online",
            "syndrome": null,
            "updating": false,
            "hidden": false,
            "device_info": {
              "dsn": null,
              "enclosure": null,
              "present": true,
              "owner": "Volume Manager (mirror1)",
              "devname": "sdc",
              "display_name": "scsi/sdc",
              "serial": "125e92af-2cf2-4152-a07b-b792eabb55fe",
              "vendor": "B*BRIDGE",
              "model": "SECURE DRIVE",
              "bus": "scsi",
              "rotational": false,
              "type": [
                "disk"
              ],
              "_remote_dev_id": null
            }
          },
          "oid": "os_dev:1:10",
          "uuid": "88e4cabf-7dac-4950-9ec0-fb4de02599fd",
          "display_name": "scsi/sdc",
          "preferred_path": "/dev/bb/125e92af-2cf2-4152-a07b-b792eabb55fe",
          "remote_oid": null
        }
      ],
      "flags": [
        "clean"
      ]
    },
    "hidden": false
  }
]

Product

The Product resource has the list of Product Tags offered by a Datastore that has been configured to support automatic service provisioning.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
ctimeintegerproduct create time
Range: 0 <= value
mtimeintegerproduct last modified time
Range: 0 <= value
site_idstringsite product is located in
descriptionstringproduct description
tagsarrayarray of product tags

Product Search Create

Query the storage product catalog.

POST /product/search

Required Parameters

NameTypeDescription
capacityintegercapacity to reserve

Optional Parameters

NameTypeDescription
iopsintegerIOPS to reserve
scheduling_algorithmstringscheduling algorithm label
Length: 1..64
tags:includearrayinclude array
tags:excludearrayexclude array
countintegernumber of results
default: 3
templatestringservice template

Curl Example

$ curl -X POST https://mgmt-node/api/product/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "capacity": 1073741824,
  "template": "gp"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:02 GMT
Server: Goliath
Location: /api/product/search/87c9351606060184e4c284c4ecc29a402b91c189a42537b02721b425918918cd4f20606000797070bf
Content-Type: application/json
Content-Length: 418
{
  "status": "success",
  "products": [
    {
      "id": "product:5:10",
      "serial": "PRD1262194C40626406",
      "node": "NOD0F68194C40601558",
      "tags": [
        "datastore-1",
        "NOD0F68194C40601558"
      ],
      "score": 6.0,
      "token": "5b313530373537303032323339372c2270726f647563743a353a3130222c313037333734313832342c226770225d"
    }
  ],
  "params": {
    "capacity": 1073741824,
    "type": [
      "gp"
    ],
    "type_desc": "General Purpose",
    "iops_desc": "100/3000 (3 IOPS/GiB, burstable to 3000)"
  },
  "headers": {
  }
}

Product Search Parameters

Retrieve the available storage catalog parameters.

GET /product/search/params

Curl Example

$ curl https://mgmt-node/api/product/search/params \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:59 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1156
{
  "status": "success",
  "scheduling_algorithm": [
    "ideal-usage"
  ],
  "service_templates": [
    {
      "type": [
        "gp"
      ],
      "description": "General Purpose",
      "default": true,
      "tags": {
        "include": [

        ],
        "exclude": [

        ]
      },
      "size": {
        "reserve_min": 1073741824,
        "reserve_max": 17592186044416,
        "limit_percent": 200
      },
      "iops": {
        "ratio": 3,
        "burst": 3000,
        "burst_credit": 5400000,
        "min": 100,
        "max": 3000
      },
      "piops": {
        "type": [
          "disabled"
        ],
        "value": null,
        "ratio": null,
        "min": null,
        "max": null
      }
    },
    {
      "type": [
        "piops"
      ],
      "description": "Provisioned IOPS",
      "default": false,
      "tags": {
        "include": [

        ],
        "exclude": [

        ]
      },
      "size": {
        "reserve_min": 4294967296,
        "reserve_max": 17592186044416,
        "limit_percent": 200
      },
      "iops": {
        "ratio": 50,
        "burst": null,
        "burst_credit": null,
        "min": 100,
        "max": 20000
      },
      "piops": {
        "type": [
          "user-specified"
        ],
        "value": null,
        "ratio": 50,
        "min": 100,
        "max": 20000
      }
    },
    {
      "type": [
        "unlimited"
      ],
      "description": "Unlimited Provisioning",
      "default": false,
      "tags": {
        "include": [

        ],
        "exclude": [

        ]
      },
      "size": {
        "reserve_min": 1048576,
        "reserve_max": null,
        "limit_percent": null
      },
      "iops": {
        "ratio": null,
        "burst": null,
        "burst_credit": null,
        "min": null,
        "max": null
      },
      "piops": {
        "type": [
          "disabled"
        ],
        "value": null,
        "ratio": null,
        "min": null,
        "max": null
      }
    }
  ],
  "tags": [
    "datastore",
    "datastore-1",
    "NOD0F68194C40601558"
  ],
  "headers": {
  }
}

Virtual Storage Service

A Secure virtual service delivers storage resources to applications, customers, developers and your cloud infrastructure, in a service-oriented fashion. Virtual services can be manually or automatically provisioned.

These virtual services are provisioned from the storage resources provided by a datastore. Each virtual storage service provides an independent storage area network (SAN). You can provision disks and iSCSI targets within a virtual storage service as needed.

The Blockbridge management network makes it possible to manage multiple, distributed virtual storage services from the management application. This allows a single tenant account to operate multiple classes of storage, to scale, and to implement disaster tolerance using virtual disk level replication.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
ctimeintegervirtual stroage service create time
Range: 0 <= value
mtimeintegervirtual storage service last modified time
Range: 0 <= value
labelnullable stringuser assigned label
Length: 1..64
notesnullable stringuser assigned notes
Length: 0..256
node_idstringstorage node id
node_serialstringstorage node serial
account_idstringaccount id
product_idstringproduct id
location:countrystringISO 3166-1 alpha-3 country code
default: ""
location:latnumberlatitude
default: 0
location:longnumberlongitude
default: 0
location:citystringcity
default: ""
location:statestringstate as two-character USPS abbreviation
default: ""
location_strstringlocation short string
tierstringdatacenter infrastructure tier
one of:"I" or "II" or "III" or "IV"
serialstringvirtual storage service serial number
cap_size_rationullable numberratio of user addressable capacity to size
quotanullable objectrestrictions on virtual storage service size and IOPS
quota:size:limitnullable integerupper hard limit on size
quota:size:notifynullable integernotification threshold for size
quota:size:reserveintegerguaranteed storage resources
quota:iops:limitnullable integerlimit on sustained I/O operations per second
quota:iops:reserveintegerreserve I/O operations per second
quota:iops:burstnullable integerupper limit for rate that burst credits can be spent
quota:iops:burst_creditsnullable integerupper limit on the number bursting credits that may be accumulated
trashedbooleanwaiting for garbage collection
xmd_refsarrayarray of extensible metadata reference keys
xrefstringarbitrary string reference
Length: 1..256
status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detailnullable stringstatus detail
isotimenullable date-timelocal time on node
humantimenullable stringhuman-readable time on node
build_versionnullable stringversion of software running on node
build_timenullable stringtime and date that node software was built
versionnullable objectbuild version
version:hashstringbuild hash
version:minorintegerbuild minor version
version:majorintegerbuild major version
version:timestampintegerbuild timestamp
version:patchintegerbuild patch version
version:tagstringbuild tag
version:releasestringbuild release
sizingnullable objectvirtual storage service sizing information
sizing:sizenullable integersize of virtual storage service (in bytes)
sizing:snapshotnullable integersnapshot size (in bytes)
sizing:reserve_totalnullable integerreserved size of all disks or the virtual storage service reserve, whichever is greater (in bytes)
sizing:compression_rationullable numbercompression ratio
xmd/idstringno documentation
xmd/refstringarbitrary string reference key
Length: 1..256
xmd/mtimeintegerlast modified time of xmd
Range: 0 <= value
xmd/tagsarrayobject tags
xmd/selfbooleanno documentation
xmd/datanullable stringno documentation

Virtual Storage Service Info

Retrieve an existing virtual storage service.

GET /vss/{vss_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/vss/vss:4:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:03 GMT
Server: Goliath
ETag: "aaa023102dfef1d85a43694c82188901"
Content-Type: application/json
Content-Length: 1253
{
  "id": "vss:4:10",
  "uuid": "a29b3f9c-62e6-464a-99b4-f75e56d14753",
  "serial": "VSS1862194C40626418",
  "evt_qry": "serial=VSS1862194C40626418",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "ctime": 1507570022649,
  "mtime": 1507570023851,
  "seq": 1507570023861,
  "label": "vss1",
  "notes": "vss label updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570023000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            6,
            6,
            6,
            6
          ],
          "v": "dbg"
        },
        {
          "d": [
            5,
            5,
            5,
            5
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570023794
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "node_serial": "NOD0F68194C40601558",
  "location": {
    "country": "USA",
    "lat": 40,
    "long": -43,
    "city": "Newark",
    "state": "NJ"
  },
  "tier": "IV",
  "quota": {
    "size": {
      "limit": 3221225472,
      "notify": 3221225472,
      "reserve": 3221225472
    },
    "iops": {
      "limit": null,
      "reserve": 0,
      "burst": null,
      "burst_credits": null
    }
  },
  "cap_size_ratio": 1.0,
  "isotime": "2017-10-09T17:26+00:00",
  "build_version": "4.0.0-4252.1",
  "build_time": "Thu Oct 05 10:32 UTC 2017",
  "version": {
    "major": 4,
    "minor": 0,
    "patch": 0,
    "release": "4252.1",
    "tag": "",
    "hash": "f41b54b0c02b9ecbee50ffca17fc1d74a6e20672",
    "timestamp": 1507199541000
  },
  "sizing": {
    "size": 0,
    "snapshot": 0,
    "reserve_total": 1073741824
  }
}

Virtual Storage Service List

Enumerate virtual storage services.

GET /vss

Curl Example

$ curl https://mgmt-node/api/vdisk \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:03 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2
[

]

Virtual Storage Service Create

Provision a new virtual storage service. The system datastore is selected by conducting a storage product search.

POST /vss

Optional Parameters

NameTypeDescription
tokenstringprovision token
pattern: ^[a-fA-F0-9]*$
vss:labelnullable stringlabel
Length: 1..64
vss:xmd_refsarrayarray of extensible metadata reference keys
vss:xrefstringarbitrary string reference
Length: 1..256
vss:notesstringuser assigned notes
Length: 0..256
disk:createbooleancreate disk
disk:labelnullable stringlabel
Length: 1..64
disk:tagsarraydisk tags
disk:xmd_refsarrayarray of extensible metadata reference keys
disk:xrefstringarbitrary string reference
Length: 1..256
disk:obj_store_idstringobject store id from which virtual disk is cloned
disk:backup_idstringbackup ID from which virtual disk is cloned
disk:srcstringclone source
one of:"vdisk" or "snapshot" or "object" or "block"
disk:snapshot_idstringsnapshot id from which virtual disk is cloned
disk:vdisk_idstringvirtual disk id from which virtual disk is cloned
disk:block_idstringblock device id from which virtual disk is cloned
disk:thickenbooleanthicken clone from source
disk:bandwidthintegerthicken bandwidth limit in bytes/sec
disk:multi_mapbooleanvirtual disk can be mapped into multiple targets
profile:createbooleancreate profile
profile:labelnullable stringlabel
Length: 1..64
profile:xmd_refsarrayarray of extensible metadata reference keys
profile:xrefstringarbitrary string reference
Length: 1..256
target:createbooleancreate target
target:labelnullable stringlabel
Length: 1..64
target:xmd_refsarrayarray of extensible metadata reference keys
target:xrefstringarbitrary string reference
Length: 1..256
target:map_diskbooleanmap created disk into target
default: true
target:allow_profilebooleanadd profile to access control list
default: true
xmd:createbooleancreate xmd
xmd:refstringarbitrary string reference key
Length: 1..256
xmd:labelnullable stringlabel
Length: 1..64
xmd:notesstringuser assigned notes
Length: 0..256
xmd:tagsarraytags
xmd:xmd_refsarrayarray of extensible metadata reference keys
xmd:xrefstringarbitrary string reference
Length: 1..256
xmd:publishbooleanpublish xmd
xmd:reservationbooleanreserve xmd grouping
xmd:exists_okbooleancreate is idempotent
account_idstringaccount id
query:capacityintegercapacity to reserve
query:iopsintegerIOPS to reserve
query:scheduling_algorithmstringscheduling algorithm label
Length: 1..64
query:tags:includearrayinclude array
query:tags:excludearrayexclude array
query:countintegernumber of results
default: 1
query:templatestringservice template
protocolstringlow-level storage protocol (ds record)
default: "iscsi"
one of:"iscsi" or "nvme"

Curl Example

$ curl -X POST https://mgmt-node/api/vss \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "token": "5b313530373537303032323339372c2270726f647563743a353a3130222c313037333734313832342c226770225d"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:03 GMT
Server: Goliath
ETag: "03e600348ed60c717e3ca33f982d8257"
Content-Type: application/json
Content-Length: 1239
{
  "id": "vss:4:10",
  "uuid": "a29b3f9c-62e6-464a-99b4-f75e56d14753",
  "serial": "VSS1862194C40626418",
  "evt_qry": "serial=VSS1862194C40626418",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "ctime": 1507570022649,
  "mtime": 1507570022855,
  "seq": 1507570022985,
  "label": "service-4",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570022000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            2,
            2,
            2,
            2
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570022869
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "node_serial": "NOD0F68194C40601558",
  "location": {
    "country": "USA",
    "lat": 40,
    "long": -43,
    "city": "Newark",
    "state": "NJ"
  },
  "tier": "IV",
  "quota": {
    "size": {
      "limit": 2147483648,
      "notify": null,
      "reserve": 1073741824
    },
    "iops": {
      "limit": 100,
      "reserve": 0,
      "burst": 3000,
      "burst_credits": 5400000
    }
  },
  "cap_size_ratio": 1.0,
  "isotime": "2017-10-09T17:26+00:00",
  "build_version": "4.0.0-4252.1",
  "build_time": "Thu Oct 05 10:32 UTC 2017",
  "version": {
    "major": 4,
    "minor": 0,
    "patch": 0,
    "release": "4252.1",
    "tag": "",
    "hash": "f41b54b0c02b9ecbee50ffca17fc1d74a6e20672",
    "timestamp": 1507199541000
  },
  "sizing": {
    "size": 0,
    "snapshot": 0,
    "reserve_total": 1073741824
  }
}

Virtual Storage Service Remove

Remove an existing virtual storage service, including its virtual disks, iSCSI targets, and initiator profiles. User data that remains in the service will be irretrievable.

DELETE /vss/{vss_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/vss/vss:4:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:34 GMT
Server: Goliath

Virtual Storage Service Update

Change the configuration of an existing virtual storage service.

PATCH /vss/{vss_id_or_serial}

Optional Parameters

NameTypeDescription
xmd_refsarrayarray of extensible metadata reference keys
labelnullable stringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256

Curl Example

$ curl -X PATCH https://mgmt-node/api/vss/vss:4:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "label": "vss1",
  "notes": "vss label updated"
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:03 GMT
Server: Goliath
ETag: "1ca961c454ef8da913e5b8a86b34dbe2"
Content-Type: application/json
Content-Length: 1249
{
  "id": "vss:4:10",
  "uuid": "a29b3f9c-62e6-464a-99b4-f75e56d14753",
  "serial": "VSS1862194C40626418",
  "evt_qry": "serial=VSS1862194C40626418",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "ctime": 1507570022649,
  "mtime": 1507570023453,
  "seq": 1507570023462,
  "label": "vss1",
  "notes": "vss label updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570022000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            2,
            2,
            2,
            2
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570022869
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "node_serial": "NOD0F68194C40601558",
  "location": {
    "country": "USA",
    "lat": 40,
    "long": -43,
    "city": "Newark",
    "state": "NJ"
  },
  "tier": "IV",
  "quota": {
    "size": {
      "limit": 2147483648,
      "notify": null,
      "reserve": 1073741824
    },
    "iops": {
      "limit": 100,
      "reserve": 0,
      "burst": 3000,
      "burst_credits": 5400000
    }
  },
  "cap_size_ratio": 1.0,
  "isotime": "2017-10-09T17:26+00:00",
  "build_version": "4.0.0-4252.1",
  "build_time": "Thu Oct 05 10:32 UTC 2017",
  "version": {
    "major": 4,
    "minor": 0,
    "patch": 0,
    "release": "4252.1",
    "tag": "",
    "hash": "f41b54b0c02b9ecbee50ffca17fc1d74a6e20672",
    "timestamp": 1507199541000
  },
  "sizing": {
    "size": 0,
    "snapshot": 0,
    "reserve_total": 1073741824
  }
}

Virtual Storage Service Quota Update

Change the quota for a virtual storage service.

PUT /vss/{vss_id_or_serial}/quota

Optional Parameters

NameTypeDescription
size:limitnullable integerupper hard limit on size
size:notifynullable integernotification threshold for size
size:reserveintegerguaranteed storage resources
default: 0
iops:limitnullable integerlimit on sustained I/O operations per second
Range: 0 <= value <= 2147483647
iops:reserveintegerreserve I/O operations per second
default: 0
Range: 0 <= value <= 2147483647
iops:burstnullable integerupper limit for rate that burst credits can be spent
Range: 0 <= value <= 2147483647
iops:burst_creditsnullable integerupper limit on the number bursting credits that may be accumulated
Range: 0 <= value <= 2147483647

Curl Example

$ curl -X PUT https://mgmt-node/api/vss/vss:4:10/quota \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "size": {
    "limit": 3221225472,
    "notify": 3221225472,
    "reserve": 3221225472
  }
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:03 GMT
Server: Goliath
ETag: "aaa023102dfef1d85a43694c82188901"
Content-Type: application/json
Content-Length: 1253
{
  "id": "vss:4:10",
  "uuid": "a29b3f9c-62e6-464a-99b4-f75e56d14753",
  "serial": "VSS1862194C40626418",
  "evt_qry": "serial=VSS1862194C40626418",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "ctime": 1507570022649,
  "mtime": 1507570023851,
  "seq": 1507570023861,
  "label": "vss1",
  "notes": "vss label updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570023000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            6,
            6,
            6,
            6
          ],
          "v": "dbg"
        },
        {
          "d": [
            5,
            5,
            5,
            5
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570023794
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "node_serial": "NOD0F68194C40601558",
  "location": {
    "country": "USA",
    "lat": 40,
    "long": -43,
    "city": "Newark",
    "state": "NJ"
  },
  "tier": "IV",
  "quota": {
    "size": {
      "limit": 3221225472,
      "notify": 3221225472,
      "reserve": 3221225472
    },
    "iops": {
      "limit": null,
      "reserve": 0,
      "burst": null,
      "burst_credits": null
    }
  },
  "cap_size_ratio": 1.0,
  "isotime": "2017-10-09T17:26+00:00",
  "build_version": "4.0.0-4252.1",
  "build_time": "Thu Oct 05 10:32 UTC 2017",
  "version": {
    "major": 4,
    "minor": 0,
    "patch": 0,
    "release": "4252.1",
    "tag": "",
    "hash": "f41b54b0c02b9ecbee50ffca17fc1d74a6e20672",
    "timestamp": 1507199541000
  },
  "sizing": {
    "size": 0,
    "snapshot": 0,
    "reserve_total": 1073741824
  }
}

Virtual Disk

Virtual disks provide isolated data resources. Each virtual disk has a unique set of encryption keys. Those keys are automatically disposed of when the disk is deleted. You can take the keys out of the infrastructure, and you can provide them in-line of access.

Virtual disks are thinly provisioned. They support no-I/O snapshots, which can be cloned. Virtual disks support limits on IOPS and quotas on storage consumption. Quotas allow you to dedicate storage resources to a disk.

Virtual disks also support synchronous and asynchronous block-level replication, along with the ability to validate data integrity and authenticity. They support SCSI SPC-3 persistent reservations and various emulation modes (including removable disks).

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
ctimeintegervirtual disk create time
Range: 0 <= value
mtimeintegervirtual disk last modified time
Range: 0 <= value
typestringvdisk type
one of:"internal" or "external"
protocolstringlow-level storage protocol (ds record)
one of:"iscsi" or "nvme"
labelnullable stringuser assigned label
Length: 1..64
notesnullable stringuser assigned notes
Length: 0..256
tagsarrayobject tags
vss_idstringvirtual storage service id
node_idstringstorage node id
account_idstringaccount id
basisnullable objectdisk basis
basis:idstringobject id from which virtual disk is cloned
basis:object_keystringbackup id from which virtual disk is cloned
basis:src_idstringbasis src across attachment
basis:requires_faultinbooleannot thickened from basis
basis:protocolstringprotocol: block or object
one of:"block" or "object"
basis:localitystringlocality: local or remote
one of:"local" or "remote"
basis:modestringmode: read-through or read-copy
one of:"read-through" or "read-copy"
basis:gcbooleandelete / detach basis objects when basis is unset
basis:xrefstringbasis xref
basis:vss_idstringbasis vss
transientbooleandisk is transient
capacitynullable integeruser addressable capacity in bytes
blk_encodingnullable stringencryption type and format of virtual blocks
one of:"aes256-gcm-4k" or "aes128-xts-4k"
cap_size_rationullable numberratio of user addressable capacity to size
quotanullable objectrestrictions on virtual disk size and IOPS
quota:size:limitnullable integerupper hard limit on size
quota:size:notifynullable integernotification threshold for size
quota:size:reserveintegerguaranteed storage resources
quota:iops:limitnullable integerlimit on sustained I/O operations per second
quota:workloadnullable stringworkload hint
one of:"lower_iops" or "normal_iops" or "higher_iops"
lockedbooleanvirtual disk is locked
caps:encryptionnullable stringencryption technique for stored data blocks
caps:evalnullable booleandisk is non-persistent, for demonstration use only
scsi:protocolstringSCSI protocol compatibility set
scsi:tagged_queuingbooleantagged queuing
default: true
scsi:reservationsbooleanpersistent reservations
default: true
scsi:lu_serialstringlogical unit serial number
scsi:vendor_idnullable stringSCSI vendor id string
scsi:eui64_idnullable stringEUI-64 id string
scsi:t10_idnullable stringT10 id string
scsi:naa_idnullable stringNetwork Address Authority id string
scsi:ua_interlocknullable booleanunit attention interlock
scsi:acanullable booleanauto-contingent alliegance
scsi:vendor_extnullable booleanvendor extensions
scsi:difnullable booleandata integrity field
scsi:multi_mapnullable booleanmulti-map permitted
scsi:read_onlynullable booleanread-only disk
scsi:removablenullable booleanremovable disk emulation
scsi:advise_lbpnullable booleanadvisory logical block provisioning
scsi:featuresstringSCSI features summary
scsi:write_oncenullable booleanWrite-once disk
scsi:nguid_idnullable stringNVMe NGUID id string
replicationnullable objectvirtual disk replication parameters
replication:masternullable objectreplication master parameters
replication:master:disk_idstringmaster virtual disk id
replication:master:disk_serialstringmaster virtual disk serial number
replication:slaves/statestringslave state
one of:"disabled" or "enabled" or "suspended"
replication:slaves/disk_idstringslave virtual disk id
replication:slaves/disk_serialstringslave virtual disk serial number
replication:slaves/config:modestringreplication mode
one of:"async" or "sync" or "async-ordered"
replication:slaves/config:max_lag_cmdsintegermaximum commands to lag behind during async replication
replication:slaves/config:max_lag_bytesintegermaximum bytes to lag behind during async replication
replication:slaves/config:recoverystringrecovery options
one of:"none" or "drl"
replication:slaves/config:rebuild_bandwidthintegerrebuild bandwidth limit in bytes/sec
default: 0
replication:slaves/config:rebuild_hashbooleanuse a hashing optimization to reduce network traffic during rebuild
default: true
replication:slaves/config:timeoutintegertime to wait (in milliseconds) before stopping an unresponsive slave
default: 20000
Range: 100 <= value
replication:slaves/policynullable stringreplication policy
replication_supportedbooleantrue if replication is supported for this disk
serialstringvirtual disk serial number
task:idstringrunning task id
task:opstringtask state
one of:"none" or "backup" or "format" or "verify" or "synchronize" or "resize" or "rollback"
trashedbooleanobject is awaiting garbage collection
systembooleansystem target
xmd_refsarrayarray of extensible metadata reference keys
xrefstringarbitrary string reference
Length: 1..256
readahead:modenullable stringreadahead mode control
one of:"none" or "constant"
readahead:sizeintegerreadahead size
Range: value <= 4194304
encryptionnullable objectvirtual disk encryption details
encryption:methodstringencryption method keyword
encryption:method_descstringhuman-readable encryption method description
encryption:cipherstringencryption cipher keyword
encryption:cipher_descstringhuman-readable encryption cipher description
encryption:modestringencryption mode keyword
encryption:mode_descstringhuman-readable encryption mode description
encryption:key_descstringhuman-readable encryption key description
data_cachenullable booleandata read from disk will be cached
compressionnullable stringcompression codec
one of:"none" or "inherit" or "economy" or "adaptive" or "adaptive_economy" or "adaptive_performance" or "performance"
status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detailnullable stringstatus detail
scsi_reservationsnullable objectvirtual disk scsi reservations
scsi_reservations:generationintegerSCSI reservation generation
scsi_reservations:persistbooleanpersist through power loss
scsi_reservations:reserve6:ini_idstringreservation initiator id
scsi_reservations:reserve6:isidintegerreservation iSCSI session id
Range: value <= 281474976710660
scsi_reservations:reservations/holderbooleanreservation holder
scsi_reservations:reservations/ini_idstringreservation initiator id
scsi_reservations:reservations/isidintegerreservation iSCSI session id
Range: value <= 281474976710660
scsi_reservations:reservations/keyintegerreservation key
scsi_reservations:reservations/typestringreservation type
one of:"wr_ex" or "ex_ac" or "wr_ex_reg_only" or "ex_ac_reg_only" or "wr_ex_all_reg" or "ex_ac_all_reg"
media_loadednullable booleanremovable media loaded (if removable)
loaded_profile_idnullable stringloaded initiator profile (if removable)
loaded_profile_serialnullable stringloaded initiator profile serial number (if removable)
sizing:sizenullable integersize in bytes
sizing:snapshotnullable integertotal snapshot size in bytes
sizing:compression_rationullable numbercompression ratio
replication_rtsnullable objectvirtual disk replication run-time state
replication_rts:masternullable objectreplication master status, from slave
replication_rts:master:statenullable stringvirtual disk slave-side replication state
one of:"initializing" or "attached" or "detaching" or "rendezvous"
replication_rts:master:consistency:master_serialnullable stringslave consistency reported with respect to specified master virtual disk serial number
replication_rts:master:consistency:masternullable stringslave consistency reported with respect to specified master virtual disk ID
replication_rts:master:consistency:timenullable integerslave is consistent with master as of this time
Range: 0 <= value
replication_rts:master:consistency:repl_idnullable stringvirtual disk SCSI id
Length: 1..255
replication_rts:slaves/disk_idstringreplication slave virtual disk id
replication_rts:slaves/syndromesarraymaster-side slave state syndrome list, if available
replication_rts:slaves/statenullable stringvirtual disk master-side slave replication state
one of:"active" or "attached" or "detached" or "detaching" or "disabled" or "disabling" or "enabling" or "initializing" or "halted" or "rebuild" or "rendezvous" or "resuming" or "suspended" or "suspending"
replication_rts:slaves/rebuildnullable objectstatistics for the replication rebuild phase
replication_rts:slaves/rebuild:elapsedintegerelapsed time of rebuild in milliseconds
replication_rts:slaves/rebuild:bandwidthintegerinterval SCSI end-to-end bandwidth in bytes/second
replication_rts:slaves/rebuild:goalintegerestimated total SCSI transfer bytes
replication_rts:slaves/rebuild:modestringreplication rebuild mode
one of:"unknown" or "initial" or "recovery"
replication_rts:slaves/rebuild:evaluatedintegerof estimated transfer bytes, number evaluated
replication_rts:slaves/rebuild:transferintegertotal number of bytes written to destination
replication_rts:slaves/rebuild:progressintegerpercent complete
Range: 0 <= value <= 100
replication_rts:slaves/rebuild:ettcnullable integerestimated time to completion in milliseconds
Range: 0 <= value <= 2147483647000
replication_rts:slaves/rebuild:start_timeintegerstart time of this rebuild in milliseconds since epoch
Range: 0 <= value
replication_rts:slaves/activenullable objectstats for the replication rebuild phase
replication_rts:slaves/active:bandwidthintegeraverage network bandwidth in bytes/second
replication_rts:slaves/active:cmd_lagintegercommand lag
replication_rts:slaves/active:byte_lagintegertransfer lag
replication_rts:slaves/active:latencyintegerwrite latency in milliseconds
replication_rts:slaves/active:history/bandwidthintegeraverage network bandwidth in bytes/second
replication_rts:slaves/active:history/cmd_lagintegercommand lag
replication_rts:slaves/active:history/byte_lagintegertransfer lag
replication_rts:slaves/active:history/latencyintegerwrite latency in milliseconds
replication_rts:slaves/active:history/timestampintegertimestamp of this snapshot
Range: 0 <= value
replication_rts:slaves/active:transferintegerbytes transferred
replication_rts:slaves/repairnullable stringreplication slave repair method
one of:"repair" or "synchronize"
iopsnullable integernormalized 4K I/O operations per second
iops_readnullable integerread operations per second
iops_writenullable integerwrite operations per second
bw_readnullable integerread bandwidth
bw_writenullable integerwrite bandwidth
xmd/idstringno documentation
xmd/refstringarbitrary string reference key
Length: 1..256
xmd/mtimeintegerlast modified time of xmd
Range: 0 <= value
xmd/tagsarrayobject tags
xmd/selfbooleanno documentation
xmd/datanullable stringno documentation

Virtual Disk Info

Retrieve an existing virtual disk.

GET /vdisk/{vdisk_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/vdisk/vdisk:5:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:05 GMT
Server: Goliath
ETag: "85ed421425032dc2771f5883e0d10ed0"
Content-Type: application/json
Content-Length: 2003
{
  "id": "vdisk:5:10",
  "uuid": "b4b8f626-b739-4658-abef-7575e8a71559",
  "serial": "DSK1962194C4062640F",
  "evt_qry": "serial=DSK1962194C4062640F",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570024180,
  "mtime": 1507570025869,
  "seq": 1507570025881,
  "label": "disk-1",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570025000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            8,
            8,
            8,
            8
          ],
          "v": "dbg"
        },
        {
          "d": [
            6,
            6,
            6,
            6
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570025771
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "basis_id": null,
  "tags": [

  ],
  "locked": true,
  "scsi": {
    "protocol": "SAM-2,SPC-3,SBC-2",
    "tagged_queuing": true,
    "reservations": true,
    "ua_interlock": false,
    "aca": true,
    "vendor_ext": false,
    "dif": false,
    "multi_map": false,
    "read_only": false,
    "write_once": false,
    "removable": false,
    "advise_lbp": false,
    "features": "Tagged Queueing, Reservations, ACA",
    "eui64_id": null,
    "lu_serial": "lu.DSK1962194C4062640F",
    "vendor_id": "B*BRIDGE",
    "t10_id": "b4b8f626-b739-4658-abef-7575e8a71559",
    "naa_id": "naa.60a010a05915a7e81962194c4062640f"
  },
  "caps": {
    "encryption": "XTS-AES-128",
    "eval": false
  },
  "task": {
    "op": "none"
  },
  "capacity": 1036871168,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 2073741824
    },
    "iops": {
      "limit": null
    },
    "workload": null
  },
  "cap_size_ratio": 1.0,
  "transient": null,
  "type": [
    "internal"
  ],
  "format": null,
  "readahead": {
    "mode": "constant",
    "size": 131072
  },
  "encryption": {
    "method": "symmetric",
    "cipher": "aes128",
    "mode": "xts",
    "method_desc": "Symmetric encryption",
    "cipher_desc": "Advanced Encryption Standard (AES128)",
    "mode_desc": "XEX-based tweaked-codebook mode with ciphertext stealing (XTS)",
    "key_desc": "Randomly generated 128-bit key with 128-bit tweak"
  },
  "data_cache": true,
  "replication": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "replication_rts": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "sizing": {
    "size": 0,
    "snapshot": 0
  },
  "media_loaded": false,
  "loaded_profile_id": null,
  "loaded_profile_serial": null
}

Virtual Disk List

Enumerate virtual disks.

GET /vdisk

Curl Example

$ curl https://mgmt-node/api/vss \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:04 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1255
[
  {
    "id": "vss:4:10",
    "uuid": "a29b3f9c-62e6-464a-99b4-f75e56d14753",
    "serial": "VSS1862194C40626418",
    "evt_qry": "serial=VSS1862194C40626418",
    "account_id": "account:1:10",
    "node_id": "node:10000",
    "ctime": 1507570022649,
    "mtime": 1507570023851,
    "seq": 1507570023861,
    "label": "vss1",
    "notes": "vss label updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": 1507570023000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              6,
              6,
              6,
              6
            ],
            "v": "dbg"
          },
          {
            "d": [
              5,
              5,
              5,
              5
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1507570023794
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "node_serial": "NOD0F68194C40601558",
    "location": {
      "country": "USA",
      "lat": 40,
      "long": -43,
      "city": "Newark",
      "state": "NJ"
    },
    "tier": "IV",
    "quota": {
      "size": {
        "limit": 3221225472,
        "notify": 3221225472,
        "reserve": 3221225472
      },
      "iops": {
        "limit": null,
        "reserve": 0,
        "burst": null,
        "burst_credits": null
      }
    },
    "cap_size_ratio": 1.0,
    "isotime": "2017-10-09T17:26+00:00",
    "build_version": "4.0.0-4252.1",
    "build_time": "Thu Oct 05 10:32 UTC 2017",
    "version": {
      "major": 4,
      "minor": 0,
      "patch": 0,
      "release": "4252.1",
      "tag": "",
      "hash": "f41b54b0c02b9ecbee50ffca17fc1d74a6e20672",
      "timestamp": 1507199541000
    },
    "sizing": {
      "size": 0,
      "snapshot": 0,
      "reserve_total": 1073741824
    }
  }
]

Virtual Disk Create

Create a new internal virtual disk.

POST /vdisk

Required Parameters

NameTypeDescription
vss_idstringvirtual storage service id
capacityintegercapacity in bytes
Range: 131072 <= value <= 1125899906842624

Optional Parameters

NameTypeDescription
uuiduuidvirtual disk UUID
labelnullable stringuser assigned label
Length: 1..64
xmd_refsarrayarray of extensible metadata reference keys
xrefnullable stringarbitrary string reference
Length: 1..256
multi_mapbooleanvirtual disk can be mapped into multiple targets
read_onlybooleanvirtual disk is read-only
removablebooleanvirtual disk is removable
notesstringuser assigned notes
Length: 0..256
scsi_advise_lbpbooleanadvisory SCSI logical block provisioning (internal use only)
tagsarrayobject tags
quota:size:limitnullable integerupper hard limit on size
quota:size:notifynullable integernotification threshold for size
quota:size:reserveintegerguaranteed storage resources
default: 0
quota:iops:limitnullable integerlimit on sustained I/O operations per second
quota:workloadnullable stringworkload hint
default: "normal_iops"
one of:"lower_iops" or "normal_iops" or "higher_iops"
fs_typestringfilesystem formatting type
one of:"ntfs" or "ext4" or "hfsplus"
fs_options:fs_typestringfilesystem formatting type
one of:"ntfs" or "ext4" or "hfsplus"
readahead:modestringreadahead mode control
default: "constant"
one of:"none" or "constant"
readahead:sizeintegerreadahead size in bytes (rounded internally to 512-byte blocks)
default: 131072
Range: 4096 <= value <= 4194304
write_oncebooleandisk is write-once (block can not be re-written)
data_cachebooleandata read from disk will be cached
default: true
compressionstringcompression codec
one of:"none" or "inherit" or "economy" or "adaptive" or "adaptive_economy" or "adaptive_performance" or "performance"
protocolstringlow-level storage protocol (task parameter)
default: "iscsi"
one of:"iscsi" or "nvme"

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "vss_id": "vss:4:10",
  "capacity": 1048576
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:04 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1978
{
  "id": "vdisk:5:10",
  "uuid": "b4b8f626-b739-4658-abef-7575e8a71559",
  "serial": "DSK1962194C4062640F",
  "evt_qry": "serial=DSK1962194C4062640F",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570024180,
  "mtime": 1507570024273,
  "seq": 1507570024324,
  "label": "disk-1",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570024195
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "basis_id": null,
  "tags": [

  ],
  "locked": false,
  "scsi": {
    "protocol": "SAM-2,SPC-3,SBC-2",
    "tagged_queuing": true,
    "reservations": true,
    "ua_interlock": false,
    "aca": true,
    "vendor_ext": false,
    "dif": false,
    "multi_map": false,
    "read_only": false,
    "write_once": false,
    "removable": false,
    "advise_lbp": false,
    "features": "Tagged Queueing, Reservations, ACA",
    "eui64_id": null,
    "lu_serial": "lu.DSK1962194C4062640F",
    "vendor_id": "B*BRIDGE",
    "t10_id": "b4b8f626-b739-4658-abef-7575e8a71559",
    "naa_id": "naa.60a010a05915a7e81962194c4062640f"
  },
  "caps": {
    "encryption": null,
    "eval": null
  },
  "task": {
    "op": "none"
  },
  "capacity": 1048576,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 0
    },
    "iops": {
      "limit": null
    },
    "workload": null
  },
  "cap_size_ratio": 1.0,
  "transient": null,
  "type": [
    "internal"
  ],
  "format": null,
  "readahead": {
    "mode": "constant",
    "size": 131072
  },
  "encryption": {
    "method": "symmetric",
    "cipher": "aes128",
    "mode": "xts",
    "method_desc": "Symmetric encryption",
    "cipher_desc": "Advanced Encryption Standard (AES128)",
    "mode_desc": "XEX-based tweaked-codebook mode with ciphertext stealing (XTS)",
    "key_desc": "Randomly generated 128-bit key with 128-bit tweak"
  },
  "data_cache": true,
  "replication": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "replication_rts": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "sizing": {
    "size": null,
    "snapshot": null
  },
  "media_loaded": null,
  "loaded_profile_id": null,
  "loaded_profile_serial": null
}

Virtual Disk Remove

Remove an existing virtual disk. Once removed, the user data in a virtual disk is not retrievable.

DELETE /vdisk/{vdisk_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/vdisk/vdisk:5:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:34 GMT
Server: Goliath

Virtual Disk Update

Change the configuration of an existing internal virtual disk.

PATCH /vdisk/{vdisk_id_or_serial}

Optional Parameters

NameTypeDescription
xmd_refsarrayarray of extensible metadata reference keys
multi_mapbooleanvirtual disk can be mapped in multiple targets
read_onlybooleanvirtual disk is read-only
removablebooleanvirtual disk is removable
ua_interlockbooleansupport for SCSI unit attention interlock
difbooleansupport for SCSI data integrity field
scsi_advise_lbpbooleanadvisory SCSI logical block provisioning (internal use only)
labelnullable stringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
tagsarrayobject tags
readahead:modestringreadahead mode control
one of:"none" or "constant"
readahead:sizeintegerreadahead size in bytes (rounded internally to 512-byte blocks)
Range: 4096 <= value <= 4194304
write_oncebooleandisk is write-once (blocks can not be re-written)
data_cachebooleandata read from disk will be cached
compressionstringcompression codec
one of:"none" or "inherit" or "economy" or "adaptive" or "adaptive_economy" or "adaptive_performance" or "performance"
xrefnullable stringarbitrary string reference
Length: 1..256

Curl Example

$ curl -X PATCH https://mgmt-node/api/vdisk/vdisk:5:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "label": "disk",
  "notes": "vdisk label changed"
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:06 GMT
Server: Goliath
ETag: "99cd117823dbb5404cded284c7cc6fa8"
Content-Type: application/json
Content-Length: 2018
{
  "id": "vdisk:5:10",
  "uuid": "b4b8f626-b739-4658-abef-7575e8a71559",
  "serial": "DSK1962194C4062640F",
  "evt_qry": "serial=DSK1962194C4062640F",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570024180,
  "mtime": 1507570026250,
  "seq": 1507570026260,
  "label": "disk",
  "notes": "vdisk label changed",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570025000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            8,
            8,
            8,
            8
          ],
          "v": "dbg"
        },
        {
          "d": [
            6,
            6,
            6,
            6
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570025771
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "basis_id": null,
  "tags": [

  ],
  "locked": true,
  "scsi": {
    "protocol": "SAM-2,SPC-3,SBC-2",
    "tagged_queuing": true,
    "reservations": true,
    "ua_interlock": false,
    "aca": true,
    "vendor_ext": false,
    "dif": false,
    "multi_map": false,
    "read_only": false,
    "write_once": false,
    "removable": false,
    "advise_lbp": false,
    "features": "Tagged Queueing, Reservations, ACA",
    "eui64_id": null,
    "lu_serial": "lu.DSK1962194C4062640F",
    "vendor_id": "B*BRIDGE",
    "t10_id": "b4b8f626-b739-4658-abef-7575e8a71559",
    "naa_id": "naa.60a010a05915a7e81962194c4062640f"
  },
  "caps": {
    "encryption": "XTS-AES-128",
    "eval": false
  },
  "task": {
    "op": "none"
  },
  "capacity": 1036871168,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 2073741824
    },
    "iops": {
      "limit": null
    },
    "workload": null
  },
  "cap_size_ratio": 1.0,
  "transient": null,
  "type": [
    "internal"
  ],
  "format": null,
  "readahead": {
    "mode": "constant",
    "size": 131072
  },
  "encryption": {
    "method": "symmetric",
    "cipher": "aes128",
    "mode": "xts",
    "method_desc": "Symmetric encryption",
    "cipher_desc": "Advanced Encryption Standard (AES128)",
    "mode_desc": "XEX-based tweaked-codebook mode with ciphertext stealing (XTS)",
    "key_desc": "Randomly generated 128-bit key with 128-bit tweak"
  },
  "data_cache": true,
  "replication": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "replication_rts": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "sizing": {
    "size": 0,
    "snapshot": 0
  },
  "media_loaded": false,
  "loaded_profile_id": null,
  "loaded_profile_serial": null
}

Virtual Disk Quota Update

Change the quota for a virtual disk.

PUT /vdisk/{vdisk_id_or_serial}/quota

Optional Parameters

NameTypeDescription
size:limitnullable integerupper hard limit on size
size:notifynullable integernotification threshold for size
size:reserveintegerguaranteed storage resources
default: 0
iops:limitnullable integerlimit on sustained I/O operations per second
workloadnullable stringworkload hint
default: "normal_iops"
one of:"lower_iops" or "normal_iops" or "higher_iops"

Curl Example

$ curl -X PUT https://mgmt-node/api/vdisk/vdisk:5:10/quota \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "size": {
    "reserve": 2097152
  }
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:04 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1998
{
  "id": "vdisk:5:10",
  "uuid": "b4b8f626-b739-4658-abef-7575e8a71559",
  "serial": "DSK1962194C4062640F",
  "evt_qry": "serial=DSK1962194C4062640F",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570024180,
  "mtime": 1507570024757,
  "seq": 1507570024812,
  "label": "disk-1",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570024000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            3,
            3,
            3,
            3
          ],
          "v": "dbg"
        },
        {
          "d": [
            2,
            2,
            2,
            2
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570024779
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "basis_id": null,
  "tags": [

  ],
  "locked": false,
  "scsi": {
    "protocol": "SAM-2,SPC-3,SBC-2",
    "tagged_queuing": true,
    "reservations": true,
    "ua_interlock": false,
    "aca": true,
    "vendor_ext": false,
    "dif": false,
    "multi_map": false,
    "read_only": false,
    "write_once": false,
    "removable": false,
    "advise_lbp": false,
    "features": "Tagged Queueing, Reservations, ACA",
    "eui64_id": null,
    "lu_serial": "lu.DSK1962194C4062640F",
    "vendor_id": "B*BRIDGE",
    "t10_id": "b4b8f626-b739-4658-abef-7575e8a71559",
    "naa_id": "naa.60a010a05915a7e81962194c4062640f"
  },
  "caps": {
    "encryption": "XTS-AES-128",
    "eval": false
  },
  "task": {
    "op": "none"
  },
  "capacity": 1048576,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 2097152
    },
    "iops": {
      "limit": null
    },
    "workload": null
  },
  "cap_size_ratio": 1.0,
  "transient": null,
  "type": [
    "internal"
  ],
  "format": null,
  "readahead": {
    "mode": "constant",
    "size": 131072
  },
  "encryption": {
    "method": "symmetric",
    "cipher": "aes128",
    "mode": "xts",
    "method_desc": "Symmetric encryption",
    "cipher_desc": "Advanced Encryption Standard (AES128)",
    "mode_desc": "XEX-based tweaked-codebook mode with ciphertext stealing (XTS)",
    "key_desc": "Randomly generated 128-bit key with 128-bit tweak"
  },
  "data_cache": true,
  "replication": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "replication_rts": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "sizing": {
    "size": 0,
    "snapshot": 0
  },
  "media_loaded": false,
  "loaded_profile_id": null,
  "loaded_profile_serial": null
}

Virtual Disk Add Replication Master

Add a replication master or slave virtual disk.

POST /vdisk/{vdisk_id_or_serial}/replication/master

Required Parameters

NameTypeDescription
vdisk_idstringvirtual disk id to add as replica

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:7:10/replication/master \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "vdisk_id": "vdisk:6:10"
}'

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:09 GMT
Server: Goliath

Virtual Disk Remove Replication Master

Remove a replication master or slave virtual disk.

DELETE /vdisk/{vdisk_id_or_serial}/replication/master/{vdisk_master_id}

Curl Example

$ curl -X DELETE https://mgmt-node/api/vdisk/vdisk:7:10/replication/master/vdisk:6:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:10 GMT
Server: Goliath

Virtual Disk Add Replication Slave

Add a replication master or slave virtual disk.

POST /vdisk/{vdisk_id_or_serial}/replication/slaves

Required Parameters

NameTypeDescription
vdisk_idstringvirtual disk id to add as replica

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:6:10/replication/slaves \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "vdisk_id": "vdisk:7:10"
}'

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:09 GMT
Server: Goliath

Virtual Disk Update Replication Slave

Update the configuration of a replication master or slave virtual disk.

PUT /vdisk/{vdisk_id_or_serial}/replication/slaves/{vdisk_slave_id}

Optional Parameters

NameTypeDescription
statestringstate transition to perform
one of:"enable" or "disable" or "suspend" or "resume"
config:modestringreplication mode
one of:"async" or "sync" or "async-ordered"
config:max_lag_cmdsintegermaximum commands to lag behind during async replication
default: 0
config:max_lag_bytesintegermaximum bytes to lag behind during async replication
default: 0
config:recoverystringrecovery options
default: "drl"
one of:"none" or "drl"
config:rebuild_bandwidthintegerrebuild bandwidth limit in bytes/sec
default: 0
config:rebuild_hashbooleanuse a hashing optimization to reduce network traffic during rebuild
default: true
config:timeoutintegertime to wait (in milliseconds) before stopping an unresponsive slave
default: 20000
Range: 100 <= value

Curl Example

$ curl -X PUT https://mgmt-node/api/vdisk/vdisk:6:10/replication/slaves/vdisk:7:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "state": "enable",
  "config": {
    "mode": "async-ordered"
  }
}'

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:09 GMT
Server: Goliath

Virtual Disk Remove Replication Slave

Remove a replication master or slave virtual disk.

DELETE /vdisk/{vdisk_id_or_serial}/replication/slaves/{vdisk_slave_id}

Curl Example

$ curl -X DELETE https://mgmt-node/api/vdisk/vdisk:6:10/replication/slaves/vdisk:7:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:10 GMT
Server: Goliath

Virtual Disk Attach Replication Peers

Create a replication relationship between a master virtual disk and a slave virtual disk.

POST /vdisk/actions/replication/attach

Required Parameters

NameTypeDescription
master_idstringvirtual disk id of replica master
slave_idstringvirtual disk id of replica slave

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/actions/replication/attach \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "master_id": "vdisk:7:10",
  "slave_id": "vdisk:6:10"
}'

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:11 GMT
Server: Goliath

Virtual Disk Detach Replication Peers

Break the replication relationship between a master virtual disk and a slave virtual disk.

POST /vdisk/actions/replication/detach

Required Parameters

NameTypeDescription
master_idstringvirtual disk id of replica master
slave_idstringvirtual disk id of replica slave

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/actions/replication/detach \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "master_id": "vdisk:6:10",
  "slave_id": "vdisk:7:10"
}'

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:11 GMT
Server: Goliath

Virtual Disk Rebuild Replication Slave

Rebuild a replication slave virtual disk.

POST /vdisk/actions/replication/rebuild

Required Parameters

NameTypeDescription
master_idstringvirtual disk id of replica master
slave_idstringvirtual disk id of replica slave

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/actions/replication/rebuild \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "master_id": "vdisk:6:10",
  "slave_id": "vdisk:7:10"
}'

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:11 GMT
Server: Goliath

Virtual Disk Resize

Change the size of an internal virtual disk

POST /vdisk/{vdisk_id_or_serial}/actions/resize

Required Parameters

NameTypeDescription
capacityintegernew user addressable capacity in bytes
Range: 131072 <= value <= 1125899906842624

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:5:10/actions/resize \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "capacity": 1036870912
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:05 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2004
{
  "id": "vdisk:5:10",
  "uuid": "b4b8f626-b739-4658-abef-7575e8a71559",
  "serial": "DSK1962194C4062640F",
  "evt_qry": "serial=DSK1962194C4062640F",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570024180,
  "mtime": 1507570025563,
  "seq": 1507570025573,
  "label": "disk-1",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570024000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            3,
            3,
            3,
            3
          ],
          "v": "dbg"
        },
        {
          "d": [
            2,
            2,
            2,
            2
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570024779
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "basis_id": null,
  "tags": [

  ],
  "locked": false,
  "scsi": {
    "protocol": "SAM-2,SPC-3,SBC-2",
    "tagged_queuing": true,
    "reservations": true,
    "ua_interlock": false,
    "aca": true,
    "vendor_ext": false,
    "dif": false,
    "multi_map": false,
    "read_only": false,
    "write_once": false,
    "removable": false,
    "advise_lbp": false,
    "features": "Tagged Queueing, Reservations, ACA",
    "eui64_id": null,
    "lu_serial": "lu.DSK1962194C4062640F",
    "vendor_id": "B*BRIDGE",
    "t10_id": "b4b8f626-b739-4658-abef-7575e8a71559",
    "naa_id": "naa.60a010a05915a7e81962194c4062640f"
  },
  "caps": {
    "encryption": "XTS-AES-128",
    "eval": false
  },
  "task": {
    "op": "none"
  },
  "capacity": 1036871168,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 2073741824
    },
    "iops": {
      "limit": null
    },
    "workload": null
  },
  "cap_size_ratio": 1.0,
  "transient": null,
  "type": [
    "internal"
  ],
  "format": null,
  "readahead": {
    "mode": "constant",
    "size": 131072
  },
  "encryption": {
    "method": "symmetric",
    "cipher": "aes128",
    "mode": "xts",
    "method_desc": "Symmetric encryption",
    "cipher_desc": "Advanced Encryption Standard (AES128)",
    "mode_desc": "XEX-based tweaked-codebook mode with ciphertext stealing (XTS)",
    "key_desc": "Randomly generated 128-bit key with 128-bit tweak"
  },
  "data_cache": true,
  "replication": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "replication_rts": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "sizing": {
    "size": 0,
    "snapshot": 0
  },
  "media_loaded": false,
  "loaded_profile_id": null,
  "loaded_profile_serial": null
}

Virtual Disk Thicken

vdisk thicken

POST /vdisk/{vdisk_id_or_serial}/actions/thicken

Optional Parameters

NameTypeDescription
limit_bandwidthbooleanlimit bandwidth usage
bandwidthintegerverification bandwidth limit in bytes/sec

Curl Example

$ curl -X POST FIXME

Response Example

HTTP/1.1 200 OK

Virtual Disk Compress

vdisk compress

POST /vdisk/{vdisk_id_or_serial}/actions/compress

Optional Parameters

NameTypeDescription
limit_bandwidthbooleanlimit bandwidth usage
bandwidthintegerverification bandwidth limit in bytes/sec

Curl Example

$ curl -X POST FIXME

Response Example

HTTP/1.1 200 OK

Virtual Disk Reclaim

vdisk reclaim

POST /vdisk/{vdisk_id_or_serial}/actions/reclaim

Curl Example

$ curl -X POST FIXME

Response Example

HTTP/1.1 200 OK

Virtual Disk Rollback

vdisk rollback

POST /vdisk/{vdisk_id_or_serial}/actions/rollback

Required Parameters

NameTypeDescription
snapshot_idstringsnapshot id to roll back to

Optional Parameters

NameTypeDescription
dry_runbooleanRun a non-destructive check to see if rollback is possible

Curl Example

$ curl -X POST FIXME

Response Example

HTTP/1.1 200 OK

Virtual Disk Lock

Lock an internal virtual disk. This action uses the supplied passphrase to encrypt the disk's encryption key. Once locked, the disk cannot be decrypted without supplying the passphrase.

POST /vdisk/{vdisk_id_or_serial}/actions/lock

Required Parameters

NameTypeDescription
passphrasestringpassphrase
Length: 1..∞

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:5:10/actions/lock \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "passphrase": "foo"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:05 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2003
{
  "id": "vdisk:5:10",
  "uuid": "b4b8f626-b739-4658-abef-7575e8a71559",
  "serial": "DSK1962194C4062640F",
  "evt_qry": "serial=DSK1962194C4062640F",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570024180,
  "mtime": 1507570025869,
  "seq": 1507570025881,
  "label": "disk-1",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570025000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            8,
            8,
            8,
            8
          ],
          "v": "dbg"
        },
        {
          "d": [
            6,
            6,
            6,
            6
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570025771
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "basis_id": null,
  "tags": [

  ],
  "locked": true,
  "scsi": {
    "protocol": "SAM-2,SPC-3,SBC-2",
    "tagged_queuing": true,
    "reservations": true,
    "ua_interlock": false,
    "aca": true,
    "vendor_ext": false,
    "dif": false,
    "multi_map": false,
    "read_only": false,
    "write_once": false,
    "removable": false,
    "advise_lbp": false,
    "features": "Tagged Queueing, Reservations, ACA",
    "eui64_id": null,
    "lu_serial": "lu.DSK1962194C4062640F",
    "vendor_id": "B*BRIDGE",
    "t10_id": "b4b8f626-b739-4658-abef-7575e8a71559",
    "naa_id": "naa.60a010a05915a7e81962194c4062640f"
  },
  "caps": {
    "encryption": "XTS-AES-128",
    "eval": false
  },
  "task": {
    "op": "none"
  },
  "capacity": 1036871168,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 2073741824
    },
    "iops": {
      "limit": null
    },
    "workload": null
  },
  "cap_size_ratio": 1.0,
  "transient": null,
  "type": [
    "internal"
  ],
  "format": null,
  "readahead": {
    "mode": "constant",
    "size": 131072
  },
  "encryption": {
    "method": "symmetric",
    "cipher": "aes128",
    "mode": "xts",
    "method_desc": "Symmetric encryption",
    "cipher_desc": "Advanced Encryption Standard (AES128)",
    "mode_desc": "XEX-based tweaked-codebook mode with ciphertext stealing (XTS)",
    "key_desc": "Randomly generated 128-bit key with 128-bit tweak"
  },
  "data_cache": true,
  "replication": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "replication_rts": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "sizing": {
    "size": 0,
    "snapshot": 0
  },
  "media_loaded": false,
  "loaded_profile_id": null,
  "loaded_profile_serial": null
}

Virtual Disk Unlock

Unlock a locked virtual disk. The correct passphrase must be supplied.

POST /vdisk/{vdisk_id_or_serial}/actions/unlock

Required Parameters

NameTypeDescription
passphrasestringpassphrase
Length: 1..∞

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:5:10/actions/unlock \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "passphrase": "foo"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:06 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2019
{
  "id": "vdisk:5:10",
  "uuid": "b4b8f626-b739-4658-abef-7575e8a71559",
  "serial": "DSK1962194C4062640F",
  "evt_qry": "serial=DSK1962194C4062640F",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570024180,
  "mtime": 1507570026542,
  "seq": 1507570026553,
  "label": "disk",
  "notes": "vdisk label changed",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": 1507570025000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            8,
            8,
            8,
            8
          ],
          "v": "dbg"
        },
        {
          "d": [
            6,
            6,
            6,
            6
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1507570025771
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "basis_id": null,
  "tags": [

  ],
  "locked": false,
  "scsi": {
    "protocol": "SAM-2,SPC-3,SBC-2",
    "tagged_queuing": true,
    "reservations": true,
    "ua_interlock": false,
    "aca": true,
    "vendor_ext": false,
    "dif": false,
    "multi_map": false,
    "read_only": false,
    "write_once": false,
    "removable": false,
    "advise_lbp": false,
    "features": "Tagged Queueing, Reservations, ACA",
    "eui64_id": null,
    "lu_serial": "lu.DSK1962194C4062640F",
    "vendor_id": "B*BRIDGE",
    "t10_id": "b4b8f626-b739-4658-abef-7575e8a71559",
    "naa_id": "naa.60a010a05915a7e81962194c4062640f"
  },
  "caps": {
    "encryption": "XTS-AES-128",
    "eval": false
  },
  "task": {
    "op": "none"
  },
  "capacity": 1036871168,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 2073741824
    },
    "iops": {
      "limit": null
    },
    "workload": null
  },
  "cap_size_ratio": 1.0,
  "transient": null,
  "type": [
    "internal"
  ],
  "format": null,
  "readahead": {
    "mode": "constant",
    "size": 131072
  },
  "encryption": {
    "method": "symmetric",
    "cipher": "aes128",
    "mode": "xts",
    "method_desc": "Symmetric encryption",
    "cipher_desc": "Advanced Encryption Standard (AES128)",
    "mode_desc": "XEX-based tweaked-codebook mode with ciphertext stealing (XTS)",
    "key_desc": "Randomly generated 128-bit key with 128-bit tweak"
  },
  "data_cache": true,
  "replication": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "replication_rts": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "sizing": {
    "size": 0,
    "snapshot": 0
  },
  "media_loaded": false,
  "loaded_profile_id": null,
  "loaded_profile_serial": null
}

Virtual Disk Load Media

vdisk load

POST /vdisk/{vdisk_id_or_serial}/actions/load

Required Parameters

NameTypeDescription
profile_idstringinitiator profile id (for which virtual disk is loaded)

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:8:10/actions/load \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "profile_id": "initiator_profile:9:10"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:15 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1994
{
  "id": "vdisk:8:10",
  "uuid": "51ea1be3-fd01-40ff-8b7d-585af695959f",
  "serial": "DSK1962194C406264D5",
  "evt_qry": "serial=DSK1962194C406264D5",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570035177,
  "mtime": 1507570035279,
  "seq": 1507570035326,
  "label": "rmv",
  "notes": "removable virtual disk",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570035193
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "basis_id": null,
  "tags": [

  ],
  "locked": false,
  "scsi": {
    "protocol": "SAM-2,SPC-3,SBC-2",
    "tagged_queuing": true,
    "reservations": true,
    "ua_interlock": false,
    "aca": true,
    "vendor_ext": false,
    "dif": false,
    "multi_map": false,
    "read_only": false,
    "write_once": false,
    "removable": true,
    "advise_lbp": false,
    "features": "Tagged Queueing, Reservations, ACA",
    "eui64_id": null,
    "lu_serial": "lu.DSK1962194C406264D5",
    "vendor_id": "B*BRIDGE",
    "t10_id": "51ea1be3-fd01-40ff-8b7d-585af695959f",
    "naa_id": "naa.60a010a09f9595f61962194c406264d5"
  },
  "caps": {
    "encryption": null,
    "eval": null
  },
  "task": {
    "op": "none"
  },
  "capacity": 1048576,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 0
    },
    "iops": {
      "limit": null
    },
    "workload": null
  },
  "cap_size_ratio": 1.0,
  "transient": null,
  "type": [
    "internal"
  ],
  "format": null,
  "readahead": {
    "mode": "constant",
    "size": 131072
  },
  "encryption": {
    "method": "symmetric",
    "cipher": "aes128",
    "mode": "xts",
    "method_desc": "Symmetric encryption",
    "cipher_desc": "Advanced Encryption Standard (AES128)",
    "mode_desc": "XEX-based tweaked-codebook mode with ciphertext stealing (XTS)",
    "key_desc": "Randomly generated 128-bit key with 128-bit tweak"
  },
  "data_cache": true,
  "replication": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "replication_rts": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "sizing": {
    "size": null,
    "snapshot": null
  },
  "media_loaded": null,
  "loaded_profile_id": null,
  "loaded_profile_serial": null
}

Virtual Disk Load Cloned Media

Clone the specified snapshot and load the media into a new removable virtual disk.

POST /vdisk/{vdisk_id_or_serial}/actions/load-clone

Required Parameters

NameTypeDescription
profile_idstringinitiator profile id (for which virtual disk is loaded)

Optional Parameters

NameTypeDescription
labelstringuser assigned label
Length: 1..64

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:5:10/actions/load-clone \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "profile_id": "initiator_profile:9:10",
  "label": "clone-disk"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:16 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1995
{
  "id": "vdisk:9:10",
  "uuid": "1a72cbae-b6f9-485e-96e8-ab5b5f342912",
  "serial": "DSK1962194C406264CD",
  "evt_qry": "serial=DSK1962194C406264CD",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570035928,
  "mtime": 1507570036189,
  "seq": 1507570036249,
  "label": "clone-disk",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570035956
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "basis_id": "snapshot:1:10",
  "tags": [

  ],
  "locked": false,
  "scsi": {
    "protocol": "SAM-2,SPC-3,SBC-2",
    "tagged_queuing": true,
    "reservations": true,
    "ua_interlock": false,
    "aca": true,
    "vendor_ext": false,
    "dif": false,
    "multi_map": false,
    "read_only": false,
    "write_once": false,
    "removable": true,
    "advise_lbp": false,
    "features": "Tagged Queueing, Reservations, ACA",
    "eui64_id": null,
    "lu_serial": "lu.DSK1962194C406264CD",
    "vendor_id": "B*BRIDGE",
    "t10_id": "1a72cbae-b6f9-485e-96e8-ab5b5f342912",
    "naa_id": "naa.60a010a01229345f1962194c406264cd"
  },
  "caps": {
    "encryption": null,
    "eval": null
  },
  "task": {
    "op": "none"
  },
  "capacity": 1036871168,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 0
    },
    "iops": {
      "limit": null
    },
    "workload": null
  },
  "cap_size_ratio": 1.0,
  "transient": true,
  "type": [
    "internal"
  ],
  "format": null,
  "readahead": {
    "mode": "constant",
    "size": 131072
  },
  "encryption": {
    "method": "symmetric",
    "cipher": "aes128",
    "mode": "xts",
    "method_desc": "Symmetric encryption",
    "cipher_desc": "Advanced Encryption Standard (AES128)",
    "mode_desc": "XEX-based tweaked-codebook mode with ciphertext stealing (XTS)",
    "key_desc": "Randomly generated 128-bit key with 128-bit tweak"
  },
  "data_cache": true,
  "replication": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "replication_rts": {
    "master": null,
    "slave": null,
    "slaves": [

    ]
  },
  "sizing": {
    "size": null,
    "snapshot": null
  },
  "media_loaded": null,
  "loaded_profile_id": null,
  "loaded_profile_serial": null
}

Virtual Disk Eject Media

Eject the media for a removable virtual disk.

POST /vdisk/{vdisk_id_or_serial}/actions/eject

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:8:10/actions/eject \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:16 GMT
Server: Goliath

Virtual Disk Backup

Initiate a backup.

POST /vdisk/{vdisk_id_or_serial}/actions/backup

Required Parameters

NameTypeDescription
snapshot_idstringsnapshot id
obj_store_idstringobject store id

Optional Parameters

NameTypeDescription
uuiduuidbackup UUID
object_keynullable stringobject store base key string

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:5:10/actions/backup \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "snapshot_id": "snapshot:2:10",
  "obj_store_id": "obj_store:7:10"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:18 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 163
{
  "status": "success",
  "task_id": "ptask:313:10",
  "task_context": "759fe227-d14f-4d80-909b-2b37dd7ddac6",
  "backup_id": "a541db70-32fa-4f7d-b4a0-0edb93d391a6",
  "headers": {
  }
}

Virtual Disk Barrier Create

Raise a time-limited I/O barrier. Outstanding I/O operations will run to completion. New operations will wait until the barrier expires or is removed.

POST /vdisk/{vdisk_id_or_serial}/barrier

Required Parameters

NameTypeDescription
uuiduuidbarrier UUID
expiresintegerrelative expiration time (in ms)
vdisk_idstringvirtual disk ID

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:5:10/barrier \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "uuid": "58308c7f-9501-4a03-a36d-31e2be6eb015",
  "expires": 5000
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:05 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 55
{
  "status": "success",
  "start": 1507570025022,
  "headers": {
  }
}

Virtual Disk Barrier Remove

Remove a virtual disk I/O barrier.

DELETE /vdisk/{vdisk_id_or_serial}/barrier/{vdisk_uuid}

Required Parameters

NameTypeDescription
uuiduuidobject uuid
vdisk_idstringvirtual disk ID

Curl Example

$ curl -X DELETE https://mgmt-node/api/vdisk/vdisk:5:10/barrier/58308c7f-9501-4a03-a36d-31e2be6eb015 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:05 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 53
{
  "status": "success",
  "barrier": "removed",
  "headers": {
  }
}

iSCSI Initiator Profile

Initiator profiles hold the authentication and transport encryption parameters for one or more iSCSI initiators. From this resource, you may also create secure access tokens that use split key encryption to enable you to unlock access to your disks on demand. And, you can define policies that restrict initiator access to certain times of day, or to certain IP address ranges.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
ctimeintegerinitiator profile create time
Range: 0 <= value
mtimeintegerinitiator profile last modified time
Range: 0 <= value
labelnullable stringuser assigned label
Length: 1..64
protocolstringlow-level storage protocol (ds record)
one of:"iscsi" or "nvme"
iscsi:auth_methodstringauthentication method string
iscsi:initiator_loginstringinitator CHAP username
iscsi:initiator_login_suffixstringinitiator CHAP username suffix (account name)
iscsi:initiator_pass_setbooleanpassword is set
iscsi:suggested_base_iqnstringsuggested IQN string for this profile
iscsi:initiator_listarrayinitiator access list
iscsi:initiator_chap_modestringinitiator CHAP mode
one of:"username" or "token"
iscsi:mutual_authstringmutual authentication administrative state
one of:"disabled" or "optional" or "required"
iscsi:target_loginstringmutual authentication target CHAP username
access_token:validbooleanaccess token is valid
access_token:created_stampintegertoken created timestamp
Range: 0 <= value
access_token:idstringaccess token id
transport:modestringsecure transport mode
one of:"insecure" or "tls" or "ikev1" or "ikev2"
transport:encryption_policystringtransport encryption policy
default: "disallowed"
one of:"disallowed" or "optional" or "required"
transport:ikev1:modestringno documentation
one of:"transport"
transport:ikev1:authstringclient authentication mode
one of:"psk"
transport:ikev1:pskstringpre-shared secret key
Length: 1..∞
transport:ikev2:modestringno documentation
one of:"transport" or "tunnel"
transport:ikev2:subnetstringprivate subnet designation
default: "172_31"
one of:"172_31" or "172_30" or "10_1"
transport:ikev2:authstringclient authentication mode
one of:"mschapv2"
transport:ikev2:mschapv2_userstringMSCHAPv2 username
Length: 1..∞
transport:ikev2:mschapv2_passstringMSCHAPv2 password
Length: 1..∞
transport:tls:portal_ipaddripv4virtual target portal ip address
transport:tls:portal_ipportintegervirtual target portal ip port
nvme:initiator_listarrayinitiator access list
account_idstringaccount ref
serialstringinitiator profile serial number
vss_idnullable stringvirtual storage service id (if not global)
notesnullable stringuser assigned notes
Length: 0..256
replicationbooleanis profile for replication
systembooleansystem target
xmd_refsarrayarray of extensible metadata reference keys
xrefnullable stringarbitrary string reference
Length: 1..256
rules:options:timezonestringtimezone
one of:"local"
rules:access:ip/typestringaccess type
one of:"allow" or "deny"
rules:access:ip/ipipv4IP address
rules:access:ip/maskipv4netmask
rules:access:weekly/typestringaccess type
one of:"allow" or "deny"
rules:access:weekly/startintegerstart time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:access:weekly/endintegerend time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:throttle:weekly/bandwidthintegerbandwidth limit
rules:throttle:weekly/startintegerstart time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:throttle:weekly/endintegerend time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:disk:commandsstringdata commands
one of:"read-write" or "read-only" or "write-only"
rules:disk:modelstringmodel override
pattern: ^[\x20-\x7e]+$
Length: 0..16
status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detailnullable stringstatus detail
xmd/idstringno documentation
xmd/refstringarbitrary string reference key
Length: 1..256
xmd/mtimeintegerlast modified time of xmd
Range: 0 <= value
xmd/tagsarrayobject tags
xmd/selfbooleanno documentation
xmd/datanullable stringno documentation

iSCSI Initiator Profile Info

Retrieve an existing iSCSI initiator profile.

GET /initiator-profile/{initiator_profile_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/initiator-profile/initiator_profile:9:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:12 GMT
Server: Goliath
ETag: "c9e392e8a14d62d563325d038a852d81"
Content-Type: application/json
Content-Length: 1420
{
  "id": "initiator_profile:9:10",
  "uuid": "3a20192f-7fac-4ac9-acc7-a506038a8d83",
  "serial": "PRF0062194C406264CB",
  "evt_qry": "serial=PRF0062194C406264CB",
  "account_id": "account:1:10",
  "vss_id": null,
  "ctime": 1507570031974,
  "mtime": 1507570032486,
  "seq": 1507570032618,
  "label": "global_profile",
  "notes": "initiator profile was updated with chap info",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "ec": {
    "status": "current",
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1507570031982
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "access_token": {
    "valid": false
  },
  "iscsi": {
    "auth_method": "Challenge-Handshake Authentication Protocol (CHAP)",
    "initiator_login": "chapuser",
    "initiator_login_suffix": "@system",
    "initiator_pass_set": true,
    "suggested_base_iqn": "iqn.2009-12.com.blockbridge:i-pjxazxi",
    "initiator_list": [
      "iqn.2009-12.com.blockbridge.client-host:da3db582a6f7"
    ],
    "initiator_chap_mode": "username",
    "mutual_auth": "disabled"
  },
  "transport": {
    "mode": "insecure",
    "encryption_policy": "disallowed"
  },
  "rules": {
    "options": {
      "timezone": "local"
    },
    "disk": {
      "commands": "read-write"
    },
    "access": {
      "options": {
      },
      "ip": [
        {
          "type": [
            "allow"
          ],
          "ip": "0.0.0.0",
          "mask": "0.0.0.0"
        },
        {
          "type": [
            "allow"
          ],
          "ip": "::",
          "mask": "::"
        }
      ],
      "weekly": [
        {
          "type": [
            "allow"
          ],
          "start": 0,
          "end": 604799000
        }
      ]
    },
    "throttle": {
      "options": {
      },
      "weekly": [

      ]
    }
  }
}

iSCSI Initiator Profile List

Enumerate iSCSI initiator profiles.

GET /initiator-profile

Curl Example

$ curl https://mgmt-node/api/initiator-profile \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:12 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2913
[
  {
    "id": "initiator_profile:8:10",
    "uuid": "7b81fe1e-d5f4-4edf-87d0-f9b7b45b1713",
    "serial": "PRF0062194C406264D3",
    "evt_qry": "serial=PRF0062194C406264D3",
    "account_id": "account:1:10",
    "vss_id": "vss:5:10",
    "ctime": 1507570030986,
    "mtime": 1507570030986,
    "seq": 1507570031776,
    "label": "replication-dsk1962194c40626437-764188fd15164c48f545a8871c923206",
    "notes": null,
    "status": {
      "indicator": "online",
      "value": "online",
      "detail": ""
    },
    "ec": {
      "status": "current",
      "table": {
        "time": 1507570031000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              2,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              5,
              5,
              5,
              5
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "seq": 1507570031776
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "access_token": {
      "valid": false
    },
    "iscsi": {
      "auth_method": "Challenge-Handshake Authentication Protocol (CHAP)",
      "initiator_login": "replication-dsk1962194c40626437-764188fd15164c48f545a8871c923206",
      "initiator_login_suffix": "@system",
      "initiator_pass_set": true,
      "suggested_base_iqn": "iqn.2009-12.com.blockbridge:i-pjxazxh",
      "initiator_list": [
        "iqn.2009-12.com.blockbridge:i-pjxazxh-replication-764188fd15164c48f545a8871c923206"
      ],
      "initiator_chap_mode": "username",
      "mutual_auth": "disabled"
    },
    "transport": {
      "mode": "tls",
      "encryption_policy": "required",
      "tls": {
        "portal_ipaddr": "127.0.0.1",
        "portal_ipport": 3260
      }
    },
    "rules": {
      "options": {
        "timezone": "local"
      },
      "disk": {
        "commands": "read-write"
      },
      "access": {
        "options": {
        },
        "ip": [
          {
            "type": [
              "allow"
            ],
            "ip": "0.0.0.0",
            "mask": "0.0.0.0"
          },
          {
            "type": [
              "allow"
            ],
            "ip": "::",
            "mask": "::"
          }
        ],
        "weekly": [
          {
            "type": [
              "allow"
            ],
            "start": 0,
            "end": 604799000
          }
        ]
      },
      "throttle": {
        "options": {
        },
        "weekly": [

        ]
      }
    }
  },
  {
    "id": "initiator_profile:9:10",
    "uuid": "3a20192f-7fac-4ac9-acc7-a506038a8d83",
    "serial": "PRF0062194C406264CB",
    "evt_qry": "serial=PRF0062194C406264CB",
    "account_id": "account:1:10",
    "vss_id": null,
    "ctime": 1507570031974,
    "mtime": 1507570031975,
    "seq": 1507570031982,
    "label": "profile-1",
    "notes": null,
    "status": {
      "indicator": "online",
      "value": "online",
      "detail": ""
    },
    "ec": {
      "status": "current",
      "table": {
        "time": null,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "dbg"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "seq": 1507570031982
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "access_token": {
      "valid": false
    },
    "iscsi": {
      "auth_method": "Challenge-Handshake Authentication Protocol (CHAP)",
      "initiator_login": "PRF0062194C406264CB",
      "initiator_login_suffix": "@system",
      "initiator_pass_set": false,
      "suggested_base_iqn": "iqn.2009-12.com.blockbridge:i-pjxazxi",
      "initiator_list": [

      ],
      "initiator_chap_mode": "username",
      "mutual_auth": "disabled"
    },
    "transport": {
      "mode": "insecure",
      "encryption_policy": "disallowed"
    },
    "rules": {
      "options": {
        "timezone": "local"
      },
      "disk": {
        "commands": "read-write"
      },
      "access": {
        "options": {
        },
        "ip": [
          {
            "type": [
              "allow"
            ],
            "ip": "0.0.0.0",
            "mask": "0.0.0.0"
          },
          {
            "type": [
              "allow"
            ],
            "ip": "::",
            "mask": "::"
          }
        ],
        "weekly": [
          {
            "type": [
              "allow"
            ],
            "start": 0,
            "end": 604799000
          }
        ]
      },
      "throttle": {
        "options": {
        },
        "weekly": [

        ]
      }
    }
  }
]

iSCSI Initiator Profile Create

Create a new iSCSI initiator profile.

POST /initiator-profile

Optional Parameters

NameTypeDescription
xmd_refsarrayarray of extensible metadata reference keys
xrefnullable stringarbitrary string reference
Length: 1..256
labelnullable stringuser assigned label
Length: 1..64
enabledbooleaninitiator profile enabled for access
default: true
initiator_loginstringinitiator CHAP username
Length: 1..128
initiator_passstringinitiator CHAP password
Length: 12..64
vss_idstringprofile is local to specified virtual storage service
initiator_listarrayinitiator access list
initiator_chap_modestringinitiator CHAP mode
one of:"username" or "token"
mutual_authstringmutual authentication
default: "disabled"
one of:"disabled" or "optional" or "required"
target_loginstringmutual authentication target CHAP username
Length: 1..128
target_passstringmutual authentication target CHAP password
Length: 12..64
transport:modestringsecure transport mode
default: "insecure"
one of:"insecure"
transport:encryption_policystringtransport encryption policy
default: "disallowed"
one of:"disallowed" or "optional" or "required"
transport:tls:portal_ipaddripv4virtual target portal ip address
default: "127.0.0.1"
transport:tls:portal_ipportintegervirtual target portal ip port
default: 3260
rules:options:timezonestringtimezone
one of:"local"
rules:disk:commandsstringdata commands
default: "read-write"
one of:"read-write" or "read-only" or "write-only"
rules:disk:modelstringmodel override
pattern: ^[\x20-\x7e]+$
Length: 0..16
rules:access:ip/typestringaccess type
one of:"allow" or "deny"
rules:access:ip/ipipv4IP address
rules:access:ip/maskipv4netmask
rules:access:weekly/typestringaccess type
one of:"allow" or "deny"
rules:access:weekly/startintegerstart time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:access:weekly/endintegerend time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:throttle:weekly/bandwidthintegerbandwidth limit
rules:throttle:weekly/startintegerstart time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:throttle:weekly/endintegerend time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
notesstringuser assigned notes
Length: 0..256
uuiduuidobject UUID
protocolstringlow-level storage protocol (task parameter)
default: "iscsi"
one of:"iscsi" or "nvme"

Curl Example

$ curl -X POST https://mgmt-node/api/initiator-profile \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:12 GMT
Server: Goliath
ETag: "611e739de8597997cbbfab21c6120cc2"
Content-Type: application/json
Content-Length: 1331
{
  "id": "initiator_profile:9:10",
  "uuid": "3a20192f-7fac-4ac9-acc7-a506038a8d83",
  "serial": "PRF0062194C406264CB",
  "evt_qry": "serial=PRF0062194C406264CB",
  "account_id": "account:1:10",
  "vss_id": null,
  "ctime": 1507570031974,
  "mtime": 1507570031975,
  "seq": 1507570031982,
  "label": "profile-1",
  "notes": null,
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "ec": {
    "status": "current",
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1507570031982
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "access_token": {
    "valid": false
  },
  "iscsi": {
    "auth_method": "Challenge-Handshake Authentication Protocol (CHAP)",
    "initiator_login": "PRF0062194C406264CB",
    "initiator_login_suffix": "@system",
    "initiator_pass_set": false,
    "suggested_base_iqn": "iqn.2009-12.com.blockbridge:i-pjxazxi",
    "initiator_list": [

    ],
    "initiator_chap_mode": "username",
    "mutual_auth": "disabled"
  },
  "transport": {
    "mode": "insecure",
    "encryption_policy": "disallowed"
  },
  "rules": {
    "options": {
      "timezone": "local"
    },
    "disk": {
      "commands": "read-write"
    },
    "access": {
      "options": {
      },
      "ip": [
        {
          "type": [
            "allow"
          ],
          "ip": "0.0.0.0",
          "mask": "0.0.0.0"
        },
        {
          "type": [
            "allow"
          ],
          "ip": "::",
          "mask": "::"
        }
      ],
      "weekly": [
        {
          "type": [
            "allow"
          ],
          "start": 0,
          "end": 604799000
        }
      ]
    },
    "throttle": {
      "options": {
      },
      "weekly": [

      ]
    }
  }
}

iSCSI Initiator Profile Remove

Remove an existing iSCSI initiator profile.

DELETE /initiator-profile/{initiator_profile_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/initiator-profile/initiator_profile:9:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:33 GMT
Server: Goliath

iSCSI Initiator Profile Update

Change the configuration of an existing iSCSI initiator profile.

PATCH /initiator-profile/{initiator_profile_id_or_serial}

Optional Parameters

NameTypeDescription
xmd_refsarrayarray of extensible metadata reference keys
enabledbooleaninitiator profile enabled for access
initiator_loginstringinitiator CHAP username
Length: 1..128
initiator_passstringinitiator CHAP password
Length: 12..64
initiator_listarrayinitiator access list
initiator_chap_modestringinitiator CHAP mode
one of:"username" or "token"
mutual_authstringmutual authentication
one of:"disabled" or "optional" or "required"
target_loginstringmutual authentication target CHAP username
Length: 1..128
target_passstringmutual authentication target CHAP password
Length: 12..64
transport:modestringsecure transport mode
one of:"insecure"
transport:encryption_policystringtransport encryption policy
default: "disallowed"
one of:"disallowed" or "optional" or "required"
transport:tls:portal_ipaddripv4virtual target portal ip address
default: "127.0.0.1"
transport:tls:portal_ipportintegervirtual target portal ip port
default: 3260
rules:options:timezonestringtimezone
one of:"local"
rules:disk:commandsstringdata commands
one of:"read-write" or "read-only" or "write-only"
rules:disk:modelstringmodel override
pattern: ^[\x20-\x7e]+$
Length: 0..16
rules:access:ip/typestringaccess type
one of:"allow" or "deny"
rules:access:ip/ipipv4IP address
rules:access:ip/maskipv4netmask
rules:access:weekly/typestringaccess type
one of:"allow" or "deny"
rules:access:weekly/startintegerstart time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:access:weekly/endintegerend time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:throttle:weekly/bandwidthintegerbandwidth limit
rules:throttle:weekly/startintegerstart time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:throttle:weekly/endintegerend time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
labelnullable stringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256

Curl Example

$ curl -X PATCH https://mgmt-node/api/initiator-profile/initiator_profile:9:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "initiator_login": "chapuser",
  "initiator_pass": "chappassword",
  "initiator_list": [
    "iqn.2009-12.com.blockbridge.client-host:da3db582a6f7"
  ],
  "label": "global_profile",
  "notes": "initiator profile was updated with chap info"
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:12 GMT
Server: Goliath
ETag: "c9e392e8a14d62d563325d038a852d81"
Content-Type: application/json
Content-Length: 1420
{
  "id": "initiator_profile:9:10",
  "uuid": "3a20192f-7fac-4ac9-acc7-a506038a8d83",
  "serial": "PRF0062194C406264CB",
  "evt_qry": "serial=PRF0062194C406264CB",
  "account_id": "account:1:10",
  "vss_id": null,
  "ctime": 1507570031974,
  "mtime": 1507570032486,
  "seq": 1507570032618,
  "label": "global_profile",
  "notes": "initiator profile was updated with chap info",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "ec": {
    "status": "current",
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1507570031982
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "access_token": {
    "valid": false
  },
  "iscsi": {
    "auth_method": "Challenge-Handshake Authentication Protocol (CHAP)",
    "initiator_login": "chapuser",
    "initiator_login_suffix": "@system",
    "initiator_pass_set": true,
    "suggested_base_iqn": "iqn.2009-12.com.blockbridge:i-pjxazxi",
    "initiator_list": [
      "iqn.2009-12.com.blockbridge.client-host:da3db582a6f7"
    ],
    "initiator_chap_mode": "username",
    "mutual_auth": "disabled"
  },
  "transport": {
    "mode": "insecure",
    "encryption_policy": "disallowed"
  },
  "rules": {
    "options": {
      "timezone": "local"
    },
    "disk": {
      "commands": "read-write"
    },
    "access": {
      "options": {
      },
      "ip": [
        {
          "type": [
            "allow"
          ],
          "ip": "0.0.0.0",
          "mask": "0.0.0.0"
        },
        {
          "type": [
            "allow"
          ],
          "ip": "::",
          "mask": "::"
        }
      ],
      "weekly": [
        {
          "type": [
            "allow"
          ],
          "start": 0,
          "end": 604799000
        }
      ]
    },
    "throttle": {
      "options": {
      },
      "weekly": [

      ]
    }
  }
}

iSCSI Initiator Profile Prepare Token

Prepare to create a secure access token for an initiator profile.

GET /initiator-profile/{initiator_profile_id_or_serial}/token

Curl Example

$ curl FIXME

Response Example

HTTP/1.1 200 OK

iSCSI Initiator Profile Create Token

Create a secure access token for an iSCSI initiator profile.

POST /initiator-profile/{initiator_profile_id_or_serial}/token

Required Parameters

NameTypeDescription
tok_hashstringcryptographic hash of access token (sha-256)
Length: 32
padstringrandom pad used during access token creation
Length: 32

Curl Example

$ curl -X POST https://mgmt-node/api/initiator-profile/initiator_profile:18:10/token \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/i1ryvdh1gZU0yexJ9eo5Zztdt0Zgs+k2/BUs71KqDyTLWvK92HWLhQ"

Response Example

400 Bad Request
Date: Sat, 15 Apr 2017 14:38:26 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 207
Connection: close
{
  "status": 400,
  "message": "parameter validation failure",
  "type": [
    "validation"
  ],
  "errors": [
    {
      "type": [
        "missing"
      ],
      "field": "/tok_hash",
      "msg": "must be present"
    },
    {
      "type": [
        "missing"
      ],
      "field": "/pad",
      "msg": "must be present"
    }
  ]
}

iSCSI Initiator Profile Remove Token

Remove a configured secure access token from an iSCSI initiator profile.

DELETE /initiator-profile/{initiator_profile_id_or_serial}/token

Curl Example

$ curl -X DELETE https://mgmt-node/api/initiator-profile/initiator_profile:9:10/token \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:12 GMT
Server: Goliath

iSCSI Target

The iSCSI target defines how disks are mapped to the network, making them accessible to iSCSI clients. In the Blockbridge System, the iSCSI target is virtual, so that a single storage node supports many targets. You're free to define them as needed.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
ctimeintegeriSCSI target create time
Range: 0 <= value
mtimeintegeriSCSI target last modified time
Range: 0 <= value
protocolstringlow-level storage protocol (ds record)
one of:"iscsi" or "nvme"
iqn_basestringbase of iSCSI target IQN
pattern: ^iqn.\d{4}-\d{2}((?<!-).(?!-)[a-zA-Z0-9-]+){1,63}(?<!-)(?<!.)(:[^:]+)?}$
iqn_suffixstringsuffix of iSCSI target IQN
pattern: ^[a-z0-9.-]*$
iqnstringiSCSI target IQN
pattern: ^iqn.\d{4}-\d{2}((?<!-).(?!-)[a-zA-Z0-9-]+){1,63}(?<!-)(?<!.)(:[^:]+)?}$
namestringiSCSI target IQN or NVMe subsystem NQN
labelnullable stringuser assigned label
Length: 1..64
aliasstringiSCSI target alias
Length: 0..64
nvme:nqnstringtarget NQN
nvme:nqn_basestringtarget NQN base
nvme:nqn_suffixstringtarget NQN suffix
account_idstringaccount id
node_idstringstorage node id
vss_idstringvirtual storage service id
acl/profile_idstringprofile ref
acl/privacystringprivacy permission level
default: "no"
one of:"yes" or "no"
acl/discoverstringdiscovery permission level
default: "no"
one of:"yes" or "no"
acl/accessstringaccess permission level
default: "no"
one of:"yes" or "no"
luns/lunintegerSCSI logical unit number
luns/vdisk_idstringno documentation
lun_unitstringtarget LUN mapping table
lun_minintegerminimum allowed lun value
lun_maxintegermaximum allowed lun value
notesnullable stringuser assigned notes
Length: 0..256
serialstringiSCSI target serial number
automapbooleaniSCSI target supports automapped LUNS
replicationbooleaniSCSI target is the virtual storage service replication target
systembooleansystem target
xmd_refsarrayarray of extensible metadata reference keys
xrefstringarbitrary string reference
Length: 1..256
status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detailnullable stringstatus detail
sessionsnullable arrayarray of active iSCSI target sessions
sessions/profile_idstringinitiator profile ID
sessions/ini_idstringinitiator id
sessions/isidintegeriSCSI session ID
Range: value <= 281474976710660
sessions/ini_aliasstringinitiator alias
Length: 0..255
sessions/tsihintegertarget session identifying handle
Range: 0 <= value <= 65535
sessions/ageintegersession age (in milliseconds)
sessions/prm:max_connintegermax connections
Range: 0 <= value <= 65535
sessions/prm:erlvlintegererror recovery level
Range: 0 <= value <= 2
sessions/prm:immedbooleanimmediate data
sessions/prm:init_r2tbooleaninitial R2T
sessions/prm:inrd_databooleanIn Order Data
sessions/prm:inrd_seqbooleanIn Order Sequence
sessions/prm:fblintegerfirst burst length
Range: 0 <= value <= 16777215
sessions/prm:mblintegermaximum burst length
Range: 0 <= value <= 16777215
sessions/conns/cidintegerconnection ID
Range: 0 <= value <= 65535
sessions/conns/portintegerinitiator TCP port
sessions/conns/hdr_digbooleanHeader Digest
sessions/conns/dat_digbooleanData Digest
sessions/conns/rcv_winintegerTCP Receive Window
sessions/conns/latencyintegerlatency in milliseconds
sessions/conns/sec_modestringsecurity mode
one of:"insecure" or "ssl" or "ipsec"
sessions/conns/ipsec:crypt_algstringcrypto algorithm
sessions/conns/ipsec:auth_modestringauthentication cipher mode
sessions/conns/ipsec:tunnelbooleantunnel mode
sessions/conns/ipsec:auth_lenintegerauthentication key length
sessions/conns/ipsec:auth_algstringauthentication algorithm
sessions/conns/ipsec:crypt_lenintegercrypto key length
sessions/conns/ipsec:crypt_modestringcrypto cipher mode
sessions/conns/ssl:compbooleanis compressed
sessions/conns/ssl:comp_algstringcompression algorithm
sessions/conns/ssl:versionstringSSL version
sessions/conns/peer_innernullable ipv4initiator IP address, tunnel mode inner
sessions/conns/peer_outeripv4initiator IP address, public
sessions/conns/host_innernullable ipv4target IP address, tunnel mode inner
sessions/conns/host_outeripv4target IP address, public
associationsnullable arrayarray of active NVMe target associations
associations/subsys_ipipv4subsystem IP address
associations/host_nqnstringhost NQN
associations/ctimeintegercreation time (in epoch ms), local to storage node
associations/host_idstringhexadecimal host ID
associations/host_ipipv4host IP address
associations/qpintegernumber of I/O queue pairs (excluding admin)
Range: 0 <= value <= 256
associations/cntlidintegercontroller id
Range: value <= 65535
associations/ioqintegernumber of I/O queue pairs (excluding admin)
Range: 0 <= value <= 256
session_numnullable integernumber of active sessions
conn_numnullable integernumber of active connections
portals/hostnamenullable hostnameiSCSI target portal DNS hostname
Length: 0..1024
portals/interfacenullable stringiSCSI target portal network interface
portals/upnullable booleaniSCSI target portal network interface is up
portals/speednullable integeriSCSI target portal network interface link speed
portals/duplexnullable stringnetwork interface duplex
one of:"half" or "full" or "unknown"
portals/ipaddrs/addripv4iSCSI target portal ip address
portals/ipaddrs/portintegeriSCSI target portal ip port
portals/ipaddrs/familystringnetwork interface family
one of:"IPv4" or "IPv6" or "unknown"
portals/ipaddrs/detailstringiSCSI target portal ip detail
portals/mtunullable integerno documentation
portals/hwaddrnullable stringno documentation
ppsnullable integeriSCSI PDUs per second
xmd/idstringno documentation
xmd/refstringarbitrary string reference key
Length: 1..256
xmd/mtimeintegerlast modified time of xmd
Range: 0 <= value
xmd/tagsarrayobject tags
xmd/selfbooleanno documentation
xmd/datanullable stringno documentation

iSCSI Target Info

Retrieve an existing iSCSI target.

GET /target/{target_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/target/target:9:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:13 GMT
Server: Goliath
ETag: "5ae9cdbab762724d8b51db3d56a92a80"
Content-Type: application/json
Content-Length: 1205
{
  "id": "target:9:10",
  "uuid": "d8ca81fa-1729-4daa-b31b-10112b1b5f40",
  "serial": "TGT1D62194C406264C1",
  "evt_qry": "serial=TGT1D62194C406264C1",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570033125,
  "mtime": 1507570033582,
  "seq": 1507570033589,
  "label": "target",
  "notes": "target was updated",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "ec": {
    "status": "current",
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1507570033144
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "iqn": "iqn.2009-12.com.blockbridge:t-pjxazxi-gbliafkm:target-1",
  "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazxi-",
  "iqn_suffix": "gbliafkm:target-1",
  "alias": "target-1",
  "acl": [
    {
      "profile_id": "initiator_profile:9:10",
      "privacy": "no",
      "discover": "yes",
      "access": "yes"
    }
  ],
  "luns": [

  ],
  "automap": true,
  "replication": false,
  "sessions": [

  ],
  "portals": [
    {
      "hostname": null,
      "interface": "eth0",
      "up": true,
      "speed": null,
      "duplex": null,
      "ipaddrs": [
        {
          "addr": "10.10.200.23",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe6a:7c79%eth0",
          "port": 3260,
          "family": "IPv6"
        }
      ]
    }
  ]
}

iSCSI Target List

Enumerate iSCSI targets.

GET /target

Curl Example

$ curl https://mgmt-node/api/target \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:13 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1107
[
  {
    "id": "target:9:10",
    "uuid": "d8ca81fa-1729-4daa-b31b-10112b1b5f40",
    "serial": "TGT1D62194C406264C1",
    "evt_qry": "serial=TGT1D62194C406264C1",
    "account_id": "account:1:10",
    "node_id": "node:10000",
    "vss_id": "vss:4:10",
    "ctime": 1507570033125,
    "mtime": 1507570033125,
    "seq": 1507570033144,
    "label": "target-1",
    "notes": null,
    "status": {
      "indicator": "online",
      "value": "online",
      "detail": ""
    },
    "ec": {
      "status": "current",
      "table": {
        "time": null,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "dbg"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "seq": 1507570033144
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "iqn": "iqn.2009-12.com.blockbridge:t-pjxazxi-gbliafkm:target-1",
    "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazxi-",
    "iqn_suffix": "gbliafkm:target-1",
    "alias": "target-1",
    "acl": [

    ],
    "luns": [

    ],
    "automap": true,
    "replication": false,
    "sessions": [

    ],
    "portals": [
      {
        "hostname": null,
        "interface": "eth0",
        "up": true,
        "speed": null,
        "duplex": null,
        "ipaddrs": [
          {
            "addr": "10.10.200.23",
            "port": 3260,
            "family": "IPv4"
          },
          {
            "addr": "fe80::f816:3eff:fe6a:7c79%eth0",
            "port": 3260,
            "family": "IPv6"
          }
        ]
      }
    ]
  }
]

iSCSI Target Create

Create a new iSCSI target.

POST /target

Required Parameters

NameTypeDescription
vss_idstringvirtual storage service id

Optional Parameters

NameTypeDescription
labelnullable stringuser assigned label
Length: 1..64
xmd_refsarrayarray of extensible metadata reference keys
xrefnullable stringarbitrary string reference
Length: 1..256
iqn_suffixstringsuffix for generated iSCSI target IQN
pattern: ^[a-z0-9.-]*$
Length: 0..223
aliasstringiSCSI target alias
Length: 0..64
acl/profile_idstringprofile ref
acl/privacystringprivacy permission level
default: "no"
one of:"yes" or "no"
acl/discoverstringdiscovery permission level
default: "no"
one of:"yes" or "no"
acl/accessstringaccess permission level
default: "no"
one of:"yes" or "no"
luns/lunintegerSCSI logical unit number
Range: 1 <= value <= 65535
luns/vdisk_idstringno documentation
notesstringuser assigned notes
Length: 0..256
automapbooleantarget allows automap
uuiduuidobject UUID
protocolstringlow-level storage protocol (task parameter)
default: "iscsi"
one of:"iscsi" or "nvme"
nvme:nqn_suffixstringtarget NQN suffix

Curl Example

$ curl -X POST https://mgmt-node/api/target \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "vss_id": "vss:4:10"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:13 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1105
{
  "id": "target:9:10",
  "uuid": "d8ca81fa-1729-4daa-b31b-10112b1b5f40",
  "serial": "TGT1D62194C406264C1",
  "evt_qry": "serial=TGT1D62194C406264C1",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570033125,
  "mtime": 1507570033125,
  "seq": 1507570033144,
  "label": "target-1",
  "notes": null,
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "ec": {
    "status": "current",
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1507570033144
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "iqn": "iqn.2009-12.com.blockbridge:t-pjxazxi-gbliafkm:target-1",
  "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazxi-",
  "iqn_suffix": "gbliafkm:target-1",
  "alias": "target-1",
  "acl": [

  ],
  "luns": [

  ],
  "automap": true,
  "replication": false,
  "sessions": [

  ],
  "portals": [
    {
      "hostname": null,
      "interface": "eth0",
      "up": true,
      "speed": null,
      "duplex": null,
      "ipaddrs": [
        {
          "addr": "10.10.200.23",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe6a:7c79%eth0",
          "port": 3260,
          "family": "IPv6"
        }
      ]
    }
  ]
}

iSCSI Target Remove

Remove an existing iSCSI target.

DELETE /target/{target_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/target/target:9:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:33 GMT
Server: Goliath

iSCSI Target Update

Change the configuration of an existing iSCSI target.

PATCH /target/{target_id_or_serial}

Optional Parameters

NameTypeDescription
xmd_refsarrayarray of extensible metadata reference keys
acl/profile_idstringprofile ref
acl/privacystringprivacy permission level
default: "no"
one of:"yes" or "no"
acl/discoverstringdiscovery permission level
default: "no"
one of:"yes" or "no"
acl/accessstringaccess permission level
default: "no"
one of:"yes" or "no"
luns/lunintegerSCSI logical unit number
Range: 1 <= value <= 65535
luns/vdisk_idstringno documentation
iqn_suffixstringsuffix for generated iSCSI target IQN
pattern: ^[a-z0-9.-]*$
Length: 0..223
labelnullable stringuser assigned label
Length: 1..64
aliasstringiSCSI target alias
Length: 0..64
notesstringuser assigned notes
Length: 0..256
automapbooleantarget allows automap
nvme:nqn_suffixstringtarget NQN suffix

Curl Example

$ curl -X PATCH https://mgmt-node/api/target/target:9:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "label": "target",
  "notes": "target was updated",
  "acl": [
    {
      "profile_id": "initiator_profile:9:10",
      "discover": "yes",
      "access": "yes"
    }
  ]
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:13 GMT
Server: Goliath
ETag: "5ae9cdbab762724d8b51db3d56a92a80"
Content-Type: application/json
Content-Length: 1205
{
  "id": "target:9:10",
  "uuid": "d8ca81fa-1729-4daa-b31b-10112b1b5f40",
  "serial": "TGT1D62194C406264C1",
  "evt_qry": "serial=TGT1D62194C406264C1",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570033125,
  "mtime": 1507570033582,
  "seq": 1507570033589,
  "label": "target",
  "notes": "target was updated",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "ec": {
    "status": "current",
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1507570033144
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "iqn": "iqn.2009-12.com.blockbridge:t-pjxazxi-gbliafkm:target-1",
  "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazxi-",
  "iqn_suffix": "gbliafkm:target-1",
  "alias": "target-1",
  "acl": [
    {
      "profile_id": "initiator_profile:9:10",
      "privacy": "no",
      "discover": "yes",
      "access": "yes"
    }
  ],
  "luns": [

  ],
  "automap": true,
  "replication": false,
  "sessions": [

  ],
  "portals": [
    {
      "hostname": null,
      "interface": "eth0",
      "up": true,
      "speed": null,
      "duplex": null,
      "ipaddrs": [
        {
          "addr": "10.10.200.23",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe6a:7c79%eth0",
          "port": 3260,
          "family": "IPv6"
        }
      ]
    }
  ]
}

iSCSI Target LUN Map

Map a virtual disk to an existing iSCSI target.

PUT /target/{target_id_or_serial}/luns/{target_lun}

Required Parameters

NameTypeDescription
vdisk_idstringvirtual disk id

Curl Example

$ curl -X PUT https://mgmt-node/api/target/target:9:10/luns/42 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "vdisk_id": "vdisk:5:10"
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:14 GMT
Server: Goliath
ETag: "e73a392ce22c0c304f56e7672f94c6d2"
Content-Type: application/json
Content-Length: 1248
{
  "id": "target:9:10",
  "uuid": "d8ca81fa-1729-4daa-b31b-10112b1b5f40",
  "serial": "TGT1D62194C406264C1",
  "evt_qry": "serial=TGT1D62194C406264C1",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570033125,
  "mtime": 1507570034623,
  "seq": 1507570034635,
  "label": "target",
  "notes": "target was updated",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "ec": {
    "status": "current",
    "table": {
      "time": 1507570033000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            4,
            4,
            4,
            4
          ],
          "v": "dbg"
        },
        {
          "d": [
            4,
            4,
            4,
            4
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1507570033773
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "iqn": "iqn.2009-12.com.blockbridge:t-pjxazxi-gbliafkm:target-1",
  "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazxi-",
  "iqn_suffix": "gbliafkm:target-1",
  "alias": "target-1",
  "acl": [
    {
      "profile_id": "initiator_profile:9:10",
      "privacy": "no",
      "discover": "yes",
      "access": "yes"
    }
  ],
  "luns": [
    {
      "lun": 42,
      "vdisk_id": "vdisk:5:10"
    }
  ],
  "automap": true,
  "replication": false,
  "sessions": [

  ],
  "portals": [
    {
      "hostname": null,
      "interface": "eth0",
      "up": true,
      "speed": null,
      "duplex": null,
      "ipaddrs": [
        {
          "addr": "10.10.200.23",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe6a:7c79%eth0",
          "port": 3260,
          "family": "IPv6"
        }
      ]
    }
  ]
}

iSCSI Target LUN Unmap

Unmap a virtual disk from an existing iSCSI target.

DELETE /target/{target_id_or_serial}/luns/{target_lun}

Curl Example

$ curl -X DELETE https://mgmt-node/api/target/target:9:10/luns/42 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:14 GMT
Server: Goliath
ETag: "08b9b2c937f4856727ceb00b5aa6f21b"
Content-Type: application/json
Content-Length: 1218
{
  "id": "target:9:10",
  "uuid": "d8ca81fa-1729-4daa-b31b-10112b1b5f40",
  "serial": "TGT1D62194C406264C1",
  "evt_qry": "serial=TGT1D62194C406264C1",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570033125,
  "mtime": 1507570034898,
  "seq": 1507570034906,
  "label": "target",
  "notes": "target was updated",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "ec": {
    "status": "current",
    "table": {
      "time": 1507570034000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            10,
            10,
            10,
            10
          ],
          "v": "dbg"
        },
        {
          "d": [
            7,
            7,
            7,
            7
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1507570034773
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "iqn": "iqn.2009-12.com.blockbridge:t-pjxazxi-gbliafkm:target-1",
  "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazxi-",
  "iqn_suffix": "gbliafkm:target-1",
  "alias": "target-1",
  "acl": [
    {
      "profile_id": "initiator_profile:9:10",
      "privacy": "no",
      "discover": "yes",
      "access": "yes"
    }
  ],
  "luns": [

  ],
  "automap": true,
  "replication": false,
  "sessions": [

  ],
  "portals": [
    {
      "hostname": null,
      "interface": "eth0",
      "up": true,
      "speed": null,
      "duplex": null,
      "ipaddrs": [
        {
          "addr": "10.10.200.23",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe6a:7c79%eth0",
          "port": 3260,
          "family": "IPv6"
        }
      ]
    }
  ]
}

iSCSI Target Disk Map

Map a virtual disk to an existing iSCSI target.

PUT /target/{target_id_or_serial}/disks/{vdisk_id_or_serial}

Required Parameters

NameTypeDescription
lunintegerSCSI LUN assignment (automatic if unspecified)
Range: 0 <= value <= 16384

Curl Example

$ curl -X PUT https://mgmt-node/api/target/target:9:10/disks/vdisk:5:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "vdisk_id": "vdisk:5:10"
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:14 GMT
Server: Goliath
ETag: "86fb0f31223eddb4d1dca5ff887c4ca5"
Content-Type: application/json
Content-Length: 1247
{
  "id": "target:9:10",
  "uuid": "d8ca81fa-1729-4daa-b31b-10112b1b5f40",
  "serial": "TGT1D62194C406264C1",
  "evt_qry": "serial=TGT1D62194C406264C1",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570033125,
  "mtime": 1507570034021,
  "seq": 1507570034036,
  "label": "target",
  "notes": "target was updated",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "ec": {
    "status": "current",
    "table": {
      "time": 1507570033000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            4,
            4,
            4,
            4
          ],
          "v": "dbg"
        },
        {
          "d": [
            4,
            4,
            4,
            4
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1507570033773
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "iqn": "iqn.2009-12.com.blockbridge:t-pjxazxi-gbliafkm:target-1",
  "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazxi-",
  "iqn_suffix": "gbliafkm:target-1",
  "alias": "target-1",
  "acl": [
    {
      "profile_id": "initiator_profile:9:10",
      "privacy": "no",
      "discover": "yes",
      "access": "yes"
    }
  ],
  "luns": [
    {
      "lun": 0,
      "vdisk_id": "vdisk:5:10"
    }
  ],
  "automap": true,
  "replication": false,
  "sessions": [

  ],
  "portals": [
    {
      "hostname": null,
      "interface": "eth0",
      "up": true,
      "speed": null,
      "duplex": null,
      "ipaddrs": [
        {
          "addr": "10.10.200.23",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe6a:7c79%eth0",
          "port": 3260,
          "family": "IPv6"
        }
      ]
    }
  ]
}

iSCSI Target Disk Unmap

Unmap a virtual disk from an existing iSCSI target.

DELETE /target/{target_id_or_serial}/disks/{vdisk_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/target/target:9:10/disks/vdisk:5:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:14 GMT
Server: Goliath
ETag: "a78abd1ded3f410f336ef8ac17d46f73"
Content-Type: application/json
Content-Length: 1214
{
  "id": "target:9:10",
  "uuid": "d8ca81fa-1729-4daa-b31b-10112b1b5f40",
  "serial": "TGT1D62194C406264C1",
  "evt_qry": "serial=TGT1D62194C406264C1",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "ctime": 1507570033125,
  "mtime": 1507570034331,
  "seq": 1507570034341,
  "label": "target",
  "notes": "target was updated",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "ec": {
    "status": "current",
    "table": {
      "time": 1507570033000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            4,
            4,
            4,
            4
          ],
          "v": "dbg"
        },
        {
          "d": [
            4,
            4,
            4,
            4
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1507570033773
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "iqn": "iqn.2009-12.com.blockbridge:t-pjxazxi-gbliafkm:target-1",
  "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazxi-",
  "iqn_suffix": "gbliafkm:target-1",
  "alias": "target-1",
  "acl": [
    {
      "profile_id": "initiator_profile:9:10",
      "privacy": "no",
      "discover": "yes",
      "access": "yes"
    }
  ],
  "luns": [

  ],
  "automap": true,
  "replication": false,
  "sessions": [

  ],
  "portals": [
    {
      "hostname": null,
      "interface": "eth0",
      "up": true,
      "speed": null,
      "duplex": null,
      "ipaddrs": [
        {
          "addr": "10.10.200.23",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe6a:7c79%eth0",
          "port": 3260,
          "family": "IPv6"
        }
      ]
    }
  ]
}

Snapshot

You can take a point-in-time snapshot of a disk's contents to make a backup image, or to create a reference from which cloned disks may be created.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
ctimeintegersnapshot create time
Range: 0 <= value
mtimeintegersnapshot last modified time
Range: 0 <= value
labelnullable stringuser assigned label
Length: 1..64
notesnullable stringuser assigned notes
Length: 0..256
tagsarrayobject tags
vss_idstringvirtual storage service id
node_idstringstorage node id
account_idstringaccount id
vdisk_idstringvirtual disk id
serialstringsnapshot serial number
capacitynullable integersnapshot capacity (in bytes)
generationnullable integersnapshot generation
timestampnullable integersnapshot timestamp
Range: 0 <= value
transientbooleansnapshot transient
trashedbooleanwaiting for garbage collection
xmd_refsarrayarray of extensible metadata reference keys
xrefstringarbitrary string reference
Length: 1..256
vdisk_refs/idstringdependent vdisk id
vdisk_refs/serialstringdependent vdisk serial
vdisk_refs/labelnullable stringdependent vdisk label
Length: 1..64
status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detailnullable stringstatus detail
xmd/idstringno documentation
xmd/refstringarbitrary string reference key
Length: 1..256
xmd/mtimeintegerlast modified time of xmd
Range: 0 <= value
xmd/tagsarrayobject tags
xmd/selfbooleanno documentation
xmd/datanullable stringno documentation

Snapshot Info

Retrieve an existing virtual disk snapshot.

GET /snapshot/{snapshot_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/snapshot/snapshot:2:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:17 GMT
Server: Goliath
ETag: "d258b47c5ce32ea12920122a602d2a1b"
Content-Type: application/json
Content-Length: 787
{
  "id": "snapshot:2:10",
  "uuid": "a541db70-32fa-4f7d-b4a0-0edb93d391a6",
  "serial": "SNP3D62194C40626478",
  "evt_qry": "serial=SNP3D62194C40626478",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "vdisk_id": "vdisk:5:10",
  "ctime": 1507570037150,
  "mtime": 1507570037721,
  "seq": 1507570037742,
  "label": "snapshot",
  "notes": "snapshot name was updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570037213
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "vdisk_refs": [

  ],
  "tags": [

  ],
  "capacity": 1036871168,
  "generation": 1,
  "timestamp": 1507570037000
}

Snapshot List

Enumerate virtual disk snapshots.

GET /snapshot

Curl Example

$ curl https://mgmt-node/api/snapshot \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:17 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 768
[
  {
    "id": "snapshot:2:10",
    "uuid": "a541db70-32fa-4f7d-b4a0-0edb93d391a6",
    "serial": "SNP3D62194C40626478",
    "evt_qry": "serial=SNP3D62194C40626478",
    "account_id": "account:1:10",
    "node_id": "node:10000",
    "vss_id": "vss:4:10",
    "vdisk_id": "vdisk:5:10",
    "ctime": 1507570037150,
    "mtime": 1507570037309,
    "seq": 1507570037322,
    "label": "snapshot-2",
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": null,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "v": "dbg",
            "d": [
              0,
              0,
              0,
              0
            ]
          },
          {
            "v": "info",
            "d": [
              0,
              0,
              0,
              0
            ]
          },
          {
            "v": "warn",
            "d": [
              0,
              0,
              0,
              0
            ]
          },
          {
            "v": "err",
            "d": [
              0,
              0,
              0,
              0
            ]
          }
        ]
      },
      "status": "current",
      "seq": 1507570037213
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "vdisk_refs": [

    ],
    "tags": [

    ],
    "capacity": 1036871168,
    "generation": 1,
    "timestamp": 1507570037000
  }
]

Snapshot Create

Create a new snapshot of the contents of an internal virtual disk.

POST /snapshot

Required Parameters

NameTypeDescription
vdisk_idstringvirtual disk id

Optional Parameters

NameTypeDescription
uuiduuidsnapshot UUID
xmd_refsarrayarray of extensible metadata reference keys
xrefstringarbitrary string reference
Length: 1..256
labelnullable stringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
tagsarrayobject tags
transientbooleansnapshot created for a transient clone

Curl Example

$ curl -X POST https://mgmt-node/api/snapshot \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "vdisk_id": "vdisk:5:10"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:17 GMT
Server: Goliath
ETag: "8187479d36ea0802a5d369cb80eff844"
Content-Type: application/json
Content-Length: 766
{
  "id": "snapshot:2:10",
  "uuid": "a541db70-32fa-4f7d-b4a0-0edb93d391a6",
  "serial": "SNP3D62194C40626478",
  "evt_qry": "serial=SNP3D62194C40626478",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "vdisk_id": "vdisk:5:10",
  "ctime": 1507570037150,
  "mtime": 1507570037309,
  "seq": 1507570037322,
  "label": "snapshot-2",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570037213
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "vdisk_refs": [

  ],
  "tags": [

  ],
  "capacity": 1036871168,
  "generation": 1,
  "timestamp": 1507570037000
}

Snapshot Remove

Remove an existing virtual disk snapshot. Once the snapshot has been removed, the storage node starts reclaiming user data blocks that are no longer needed for other snapshots or for the virtual disk itself.

DELETE /snapshot/{snapshot_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/snapshot/snapshot:2:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:33 GMT
Server: Goliath

Snapshot Update

Change the configuration of an existing virtual disk snapshot.

PATCH /snapshot/{snapshot_id_or_serial}

Optional Parameters

NameTypeDescription
labelnullable stringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
xmd_refsarrayarray of extensible metadata reference keys
tagsarrayobject tags

Curl Example

$ curl -X PATCH https://mgmt-node/api/snapshot/snapshot:2:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "label": "snapshot",
  "notes": "snapshot name was updated"
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:17 GMT
Server: Goliath
ETag: "d258b47c5ce32ea12920122a602d2a1b"
Content-Type: application/json
Content-Length: 787
{
  "id": "snapshot:2:10",
  "uuid": "a541db70-32fa-4f7d-b4a0-0edb93d391a6",
  "serial": "SNP3D62194C40626478",
  "evt_qry": "serial=SNP3D62194C40626478",
  "account_id": "account:1:10",
  "node_id": "node:10000",
  "vss_id": "vss:4:10",
  "vdisk_id": "vdisk:5:10",
  "ctime": 1507570037150,
  "mtime": 1507570037721,
  "seq": 1507570037742,
  "label": "snapshot",
  "notes": "snapshot name was updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570037213
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "vdisk_refs": [

  ],
  "tags": [

  ],
  "capacity": 1036871168,
  "generation": 1,
  "timestamp": 1507570037000
}

Object Store

The Object Store is endpoint and authentication configuration to support data backup to an object store such as Amazon S3 or OpenStack Swift.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
ctimeintegerobject store create time
Range: 0 <= value
mtimeintegerobject store last modified time
Range: 0 <= value
serialstringobject store serial number
labelnullable stringuser assigned label
Length: 1..64
notesnullable stringuser assigned notes
Length: 0..256
account_idstringaccount id
location:countrystringISO 3166-1 alpha-3 country code
default: ""
location:latnumberlatitude
default: 0
location:longnumberlongitude
default: 0
location:citystringcity
default: ""
location:statestringstate as two-character USPS abbreviation
default: ""
verified:statusstringverified status
one of:"unverified" or "success" or "failed"
verified:timenullable integerlast verified time
Range: 0 <= value
verified:detailstringverified detail
typestringobject store type
one of:"s3"
bucket_namestringbucket name
host_namenullable stringhost name
protocolnullable stringprotocol
uri_stylenullable stringuri style
access_key_idnullable stringaccess key id
secret_access_key_setbooleansecret access key is set
security_token_setbooleansecurity token is set
default_wkey_password_setbooleandefault wkey password is set
status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detailnullable stringstatus detail

Object Store Info

Retrieve an existing object store definition.

GET /obj-store/{obj_store_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/obj-store/obj_store:7:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:54 GMT
Server: Goliath
ETag: "9b23b33078e4daada733eecef0802e36"
Content-Type: application/json
Content-Length: 888
{
  "id": "obj_store:7:10",
  "uuid": "01299a26-ac49-4db0-b2e8-a3d78cd92a8a",
  "serial": "OBJ4562194C4062642E",
  "evt_qry": "serial=OBJ4562194C4062642E",
  "account_id": "account:1:10",
  "ctime": 1507570013691,
  "mtime": 1507570014086,
  "seq": 1507570014094,
  "label": "cambridge bucket",
  "notes": null,
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "ec": {
    "status": "current",
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1507570013715
  },
  "rec_status": null,
  "type": [
    "s3"
  ],
  "location": {
    "country": "",
    "lat": 0,
    "long": 0,
    "city": "",
    "state": ""
  },
  "bucket_name": "bb-api-ox-test",
  "host_name": "ceph-s3.localnet:7480",
  "protocol": "http",
  "uri_style": "path",
  "access_key_id": "AWPTG56F131EAZIFSD04",
  "secret_access_key_set": true,
  "security_token_set": false,
  "default_wkey_password_set": true
}

Object Store List

Enumerate object stores.

GET /obj-store

Curl Example

$ curl https://mgmt-node/api/obj-store \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:53 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 889
[
  {
    "id": "obj_store:7:10",
    "uuid": "01299a26-ac49-4db0-b2e8-a3d78cd92a8a",
    "serial": "OBJ4562194C4062642E",
    "evt_qry": "serial=OBJ4562194C4062642E",
    "account_id": "account:1:10",
    "ctime": 1507570013691,
    "mtime": 1507570013728,
    "seq": 1507570013734,
    "label": "object-store-1",
    "notes": null,
    "status": {
      "indicator": "online",
      "value": "online",
      "detail": ""
    },
    "ec": {
      "status": "current",
      "table": {
        "time": null,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "dbg"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "seq": 1507570013715
    },
    "rec_status": null,
    "type": [
      "s3"
    ],
    "location": {
      "country": "",
      "lat": 0,
      "long": 0,
      "city": "",
      "state": ""
    },
    "bucket_name": "bb-api-ox-test",
    "host_name": "ceph-s3.localnet:7480",
    "protocol": "http",
    "uri_style": "path",
    "access_key_id": "AWPTG56F131EAZIFSD04",
    "secret_access_key_set": true,
    "security_token_set": false,
    "default_wkey_password_set": false
  }
]

Object Store List backups

Enumerate backups on an object-store.

GET /obj-store/{obj_store_id_or_serial}/backups

Optional Parameters

NameTypeDescription
max_resultsintegermaximum number of results to return
default: 256
tokennullable stringcontinuation token for paged enumeration

Curl Example

$ curl https://mgmt-node/api/obj-store/obj_store:7:10/backups \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:18 GMT
Server: Goliath
etag: "e71373c6a95370dc4c015178e4247af3c075035cfab70e1ff1dc5614b4a9b500"
Content-Type: application/json
Content-Length: 2289
[
  {
    "id": "a541db70-32fa-4f7d-b4a0-0edb93d391a6",
    "key": "a541db70-32fa-4f7d-b4a0-0edb93d391a6",
    "short_id": "snap-0edb93d391a6",
    "uuid": "8f729850-7cec-445d-92c2-65e9878d1946",
    "mode": "full",
    "progress": 100,
    "phase": "complete",
    "capacity": 1036871168,
    "size": 0,
    "comp_size": 0,
    "started_at": "2017-10-09T17:27+00:00",
    "completed_at": "2017-10-09T17:27+00:00",
    "description": "snap-0edb93d391a6 988.8 MiB"
  },
  {
    "id": "feb3e7d4-ad17-4f03-b249-d07c34f766d9",
    "key": "feb3e7d4-ad17-4f03-b249-d07c34f766d9",
    "short_id": "snap-d07c34f766d9",
    "uuid": "fb799644-033d-4ee1-bda1-30702f93cfaf",
    "mode": "full",
    "progress": 100,
    "phase": "complete",
    "capacity": 2073741824,
    "size": 0,
    "comp_size": 0,
    "started_at": "2017-08-06T02:35+00:00",
    "completed_at": "2017-08-06T02:35+00:00",
    "description": "snap-d07c34f766d9 1.9 GiB"
  },
  {
    "id": "ff97c7a7-1017-4a26-bc82-180b01efcecc",
    "key": "ff97c7a7-1017-4a26-bc82-180b01efcecc",
    "short_id": "snap-180b01efcecc",
    "uuid": "46d16646-4dc1-4b24-90a0-7fd578ada189",
    "mode": "full",
    "progress": 100,
    "phase": "complete",
    "capacity": 2073741824,
    "size": 0,
    "comp_size": 0,
    "started_at": "2017-06-28T09:39+00:00",
    "completed_at": "2017-06-28T09:39+00:00",
    "description": "snap-180b01efcecc 1.9 GiB"
  },
  {
    "id": "ffb1bfa2-da49-44e0-ab97-8d23577f4120",
    "key": "ffb1bfa2-da49-44e0-ab97-8d23577f4120",
    "short_id": "snap-8d23577f4120",
    "uuid": "895c0c59-5783-4e8f-9172-71b08c29f547",
    "mode": "full",
    "progress": 100,
    "phase": "complete",
    "capacity": 2073741824,
    "size": 0,
    "comp_size": 0,
    "started_at": "2017-06-14T05:53+00:00",
    "completed_at": "2017-06-14T05:53+00:00",
    "description": "snap-8d23577f4120 1.9 GiB"
  },
  {
    "id": "ffe1af43-e70c-40cc-81dd-c634c136b469",
    "key": "ffe1af43-e70c-40cc-81dd-c634c136b469",
    "short_id": "snap-c634c136b469",
    "uuid": "f4a4bc05-af59-4de3-bf08-7e7236bceb2f",
    "mode": "full",
    "progress": 100,
    "phase": "complete",
    "capacity": 2073741824,
    "size": 0,
    "comp_size": 0,
    "started_at": "2017-06-20T07:44+00:00",
    "completed_at": "2017-06-20T07:44+00:00",
    "description": "snap-c634c136b469 1.9 GiB"
  },
  {
    "id": "ffe32972-dca1-4f51-8567-33c1848461d7",
    "key": "ffe32972-dca1-4f51-8567-33c1848461d7",
    "short_id": "snap-33c1848461d7",
    "uuid": "35816b72-9ebb-4e38-b5c1-3328e44f6ce8",
    "mode": "full",
    "progress": 100,
    "phase": "complete",
    "capacity": 2073741824,
    "size": 0,
    "comp_size": 0,
    "started_at": "2017-07-18T11:07+00:00",
    "completed_at": "2017-07-18T11:07+00:00",
    "description": "snap-33c1848461d7 1.9 GiB"
  }
]

Object Store Remove backup

Delete a backup from an object-store.

DELETE /obj-store/{obj_store_id_or_serial}/backups/{obj_store_backup_id}

Optional Parameters

NameTypeDescription
forcebooleanremove in-progress backup

Curl Example

$ curl -X DELETE https://mgmt-node/api/obj-store/obj_store:7:10/backups/a541db70-32fa-4f7d-b4a0-0edb93d391a6 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:18 GMT
Server: Goliath

Object Store Create

Create an object store definition.

POST /obj-store

Required Parameters

NameTypeDescription
bucket_namestringbucket name
host_namestringhost name

Optional Parameters

NameTypeDescription
typestringobject store type
default: "s3"
one of:"s3"
access_key_idnullable stringaccess key id
secret_access_keynullable stringsecret access key
security_tokennullable stringsecurity token
labelnullable stringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
uuiduuidobject UUID
protocolnullable stringobject store protocol
default: "http"
one of:"http" or "https"
uri_stylenullable stringobject store uri style
default: "path"
one of:"virtual_host" or "path"
location:countrystringISO 3166-1 alpha-3 country code
default: ""
location:latnumberlatitude
default: 0
location:longnumberlongitude
default: 0
location:citystringcity
default: ""
location:statestringstate as two-character USPS abbreviation
default: ""
default_wkey_passwordnullable stringdefault wrap key passphrase
Length: 1..128

Curl Example

$ curl -X POST https://mgmt-node/api/obj-store \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "bucket_name": "bb-api-ox-test",
  "access_key_id": "AWPTG56F131EAZIFSD04",
  "secret_access_key": "w8SLNWrqDOfCIgJmYc39kQlFnDtqrT384e95JLNr",
  "host_name": "ceph-s3.localnet:7480"
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:26:53 GMT
Server: Goliath
ETag: "732b13e01fedb77d53fd884cfd646c25"
Content-Type: application/json
Content-Length: 887
{
  "id": "obj_store:7:10",
  "uuid": "01299a26-ac49-4db0-b2e8-a3d78cd92a8a",
  "serial": "OBJ4562194C4062642E",
  "evt_qry": "serial=OBJ4562194C4062642E",
  "account_id": "account:1:10",
  "ctime": 1507570013691,
  "mtime": 1507570013728,
  "seq": 1507570013734,
  "label": "object-store-1",
  "notes": null,
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "ec": {
    "status": "current",
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1507570013715
  },
  "rec_status": null,
  "type": [
    "s3"
  ],
  "location": {
    "country": "",
    "lat": 0,
    "long": 0,
    "city": "",
    "state": ""
  },
  "bucket_name": "bb-api-ox-test",
  "host_name": "ceph-s3.localnet:7480",
  "protocol": "http",
  "uri_style": "path",
  "access_key_id": "AWPTG56F131EAZIFSD04",
  "secret_access_key_set": true,
  "security_token_set": false,
  "default_wkey_password_set": false
}

Object Store Remove

Remove an obj_store definition.

DELETE /obj-store/{obj_store_id_or_serial}

Curl Example

$ curl -X DELETE https://mgmt-node/api/obj-store/obj_store:7:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:18 GMT
Server: Goliath

Object Store Update

Change the configuration of an existing object store definition.

PATCH /obj-store/{obj_store_id_or_serial}

Optional Parameters

NameTypeDescription
labelnullable stringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
bucket_namestringbucket name
host_namenullable stringhost name
access_key_idnullable stringaccess key id
secret_access_keynullable stringsecret access key
security_tokennullable stringsecurity token
protocolnullable stringobject store protocol
one of:"http" or "https"
location:countrystringISO 3166-1 alpha-3 country code
default: ""
location:latnumberlatitude
default: 0
location:longnumberlongitude
default: 0
location:citystringcity
default: ""
location:statestringstate as two-character USPS abbreviation
default: ""
typestringobject store type
one of:"s3"
uri_stylenullable stringobject store uri style
one of:"virtual_host" or "path"
default_wkey_passwordnullable stringdefault wrap key passphrase
Length: 1..128

Curl Example

$ curl -X PATCH https://mgmt-node/api/obj-store/obj_store:7:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "label": "cambridge bucket",
  "default_wkey_password": "foo"
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:54 GMT
Server: Goliath
ETag: "896f26b4fa665453b063a7bc96d80cea"
Content-Type: application/json
Content-Length: 910
{
  "id": "obj_store:7:10",
  "uuid": "01299a26-ac49-4db0-b2e8-a3d78cd92a8a",
  "serial": "OBJ4562194C4062642E",
  "evt_qry": "serial=OBJ4562194C4062642E",
  "account_id": "account:1:10",
  "ctime": 1507570013691,
  "mtime": 1507570014048,
  "seq": 1507570014053,
  "label": "cambridge bucket",
  "notes": null,
  "status": {
    "indicator": "degraded",
    "value": "degraded",
    "detail": "needs verification"
  },
  "ec": {
    "status": "current",
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "dbg"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1507570013715
  },
  "rec_status": null,
  "type": [
    "s3"
  ],
  "location": {
    "country": "",
    "lat": 0,
    "long": 0,
    "city": "",
    "state": ""
  },
  "bucket_name": "bb-api-ox-test",
  "host_name": "ceph-s3.localnet:7480",
  "protocol": "http",
  "uri_style": "path",
  "access_key_id": "AWPTG56F131EAZIFSD04",
  "secret_access_key_set": true,
  "security_token_set": false,
  "default_wkey_password_set": true
}

Events

The Blockbridge system maintains an extensive audit history of administrative actions and status changes for each configuration object. These events have a descriptive symbol, such as TARGET_LOGIN and several additional qualifiers, such as the ID and serial number of the affected objects, and in some cases the iSCSI initiator IQN, or the user's name.

Requesting events from the REST API opens a distributed query to retrieve events from throughout the Blockbridge managment network. If the response doesn't indicate end-of-file (eof), then increase the number of desired results with the num parameter, or shorten the specified time range.

Attributes

NameTypeDescription
eofbooleanend of results
batch/cstringcookie
batch/eofbooleanend of results
batch/dintegerprocess ID
batch/garrayclassification tags
batch/fstringtruncated source file
batch/istringprimary context id (pcid)
batch/hintegerHA cluster logical node ID
batch/kintegerquery sequence number
batch/mstringformatted message string
batch/lintegersource file line
batch/nstringnode ID
batch/qintegersequence number
batch/sstringmessage symbol
batch/rintegerreference sequence number
batch/tintegermilliseconds since epoch
Range: 0 <= value
batch/ystringdata type, set to 'e' for events
one of:"l" or "e" or "c" or "s" or "m" or "h"
batch/pstringprocess
one of:"unk" or "mp" or "cp" or "dcp" or "sp" or "con" or "slp" or "mlp" or "dlp" or "sl" or "ml" or "dl" or "dc" or "mclmon" or "sclmon" or "da" or "ha"
batch/pistringprimary ID
batch/bnullable stringcontext block
batch/vstringmessage severity
one of:"dev" or "dbg" or "info" or "note" or "warn" or "err" or "crit" or "alrt"
batch/xintegerSP complex ID

Events Query Account

Retrieve all events for the requestor's account.

GET /events

Required Parameters

NameTypeDescription
tstartintegerstart time for query in milliseconds since epoch
Range: 0 <= value
numintegernumber of events to return
Range: 1 <= value <= 8192

Optional Parameters

NameTypeDescription
tendintegerend time for query in milliseconds since epoch (0 or unspecified for now)
default: 0
Range: 0 <= value
sevstringminimum event severity
default: "info"
one of:"dbg" or "info" or "note" or "warn" or "err"

Curl Example

$ curl https://mgmt-node/api/events/account:10:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -G \
  -d num=2 \
  -d sev=info \
  -d tstart=0

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:40 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 23
{
  "batch": [

  ],
  "eof": true
}

Events Query

Retrieve user and administrative events for the specified id or serial number. Any type of id or serial number may be specified in place of {events_identity}.

GET /events/{events_identity}

Required Parameters

NameTypeDescription
tstartintegerstart time for query in milliseconds since epoch
Range: 0 <= value
numintegernumber of events to return
Range: 1 <= value <= 8192

Optional Parameters

NameTypeDescription
tendintegerend time for query in milliseconds since epoch (0 or unspecified for now)
default: 0
Range: 0 <= value
sevstringminimum event severity
default: "info"
one of:"dbg" or "info" or "note" or "warn" or "err"

Curl Example

$ curl https://mgmt-node/api/events \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -G \
  -d num=2 \
  -d sev=info \
  -d tstart=0

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:40 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1196
{
  "batch": [
    {
      "c": "e1507569969.226.010bcc:me5e01082d:a",
      "d": 14830,
      "g": [
        "task"
      ],
      "f": "v-create",
      "i": "node:10000",
      "k": 1,
      "m": " ",
      "l": 105,
      "n": "node:10",
      "q": 68556,
      "s": "OS_DEVICE_CREATE_INTERNAL_ERROR",
      "t": 1507569969226,
      "y": "e",
      "p": "mp",
      "pi": "os_device",
      "b": {
        "account.id": "account:1:10",
        "user.id": "user_profile:1:10",
        "user.serial": "USR1B62194C40626440",
        "user.login": "system",
        "user.ipaddr": "172.16.5.200",
        "task.id": "ptask:228:10",
        "task.serial": "TSK0A62194C40626A14",
        "node.id": "node:10000",
        "node.serial": "NOD0F68194C40601558",
        "os_device.id": "os_dev:13:10",
        "os_device.serial": "OSD0D62194C40626481"
      },
      "v": "err"
    },
    {
      "c": "e1507567945.502.009200:me5e01082d:a",
      "d": 14830,
      "g": [
        "task"
      ],
      "f": "v-create",
      "i": "node:10000",
      "k": 2,
      "m": " ",
      "l": 105,
      "n": "node:10",
      "q": 37376,
      "s": "OS_DEVICE_CREATE_INTERNAL_ERROR",
      "t": 1507567945502,
      "y": "e",
      "p": "mp",
      "pi": "os_device",
      "b": {
        "account.id": "account:1:10",
        "user.id": "user_profile:1:10",
        "user.serial": "USR1B62194C40626440",
        "user.login": "system",
        "user.ipaddr": "172.16.5.200",
        "task.id": "ptask:107:10",
        "task.serial": "TSK0A62194C406262EA",
        "node.id": "node:10000",
        "node.serial": "NOD0F68194C40601558",
        "os_device.id": "os_dev:9:10",
        "os_device.serial": "OSD0D62194C406264C0"
      },
      "v": "err"
    }
  ],
  "eof": false
}

Statistics

Blockbridge storage nodes keep a long history of how the node's storage resources have been used over time. You can retrieve time-series information information such as block usage for virtual disks, IOPS, or write bandwidth for various types of resources.

These statistics are grouped into snapshots of related data points called statistics blocks. Available statistics block types include:

  • vdisk_history: read/write bandwidth, I/O size histograms, IOPS and storage consumption for virtual disks
  • target_history: read/write bandwidth and IOPS, iSCSI PDUs sent and received for iSCSI targets
  • vss_history: storage consumption and IOPS usage for virtual storage services
  • sys_ds_history: storage consumption, IOPS, and other performance metrics for system datastores
  • node_usage_history: counters for devices, services, virtual disks, snapshots, etc. for a storage node

Requesting statistics from the REST API opens a query internally to the appropriate storage node. The statistics are reuturned in reverse time order, starting from tend. If the response doesn't indicate end-of-file (eof), then increase the number of desired results with the num parameter, or shorten the specified time range.

Attributes

NameTypeDescription
eofbooleanend of results
batch/astringaccount/admin ID
batch/cstringcookie
batch/eofbooleanend of results
batch/enullable stringextended key
batch/dnullable stringstatistics block sub-object, see additional notes
batch/rtbooleandata point obtained in real time (open-ended query only)
batch/kintegerquery sequence number
batch/ostringobject OID
batch/nstringnode ID
batch/tintegermilliseconds since epoch for measurement
Range: 0 <= value
batch/ystringdata type, set to 's' for statistics
one of:"l" or "e" or "c" or "s" or "m" or "h"
batch/xstringstatistics block type

Statistics Query

Retrieve statistics for the specified id or serial number. Any type of id or serial number may be specified in place of {stats_identity}.

GET /stats/{stats_identity}

Required Parameters

NameTypeDescription
tstartintegerstart time for query in milliseconds since epoch
Range: 0 <= value
periodintegerresolution to return data, in milliseconds (0 for all data)
Range: 0 <= value
numintegernumber of data points to return
Range: 1 <= value <= 8192

Optional Parameters

NameTypeDescription
tendintegerend time for query in milliseconds since epoch (0 or unspecified for now)
default: 0
Range: 0 <= value

Curl Example

$ curl https://mgmt-node/api/stats/vdisk:5:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -G \
  -d num=2 \
  -d period=0 \
  -d tstart=0

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:33 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 314
{
  "batch": [
    {
      "a": "account:1:10",
      "c": "x1507570024.225.1f0a000000000050.0 20:900000000027100",
      "d": {
        "rb": 0,
        "wb": 0,
        "ub": 0,
        "ro": 0,
        "wo": 0,
        "oo": 0,
        "i": 0,
        "rst": 0,
        "rsto": 0,
        "wst": 0,
        "wsto": 0,
        "tt": 0,
        "dt": 0,
        "qs": 0,
        "qsz": 0,
        "qes": 0
      },
      "k": 1,
      "o": "vdisk:5:10",
      "n": "node:10000",
      "t": 1507570024225,
      "y": "s",
      "x": "vdisk_history"
    }
  ],
  "eof": true
}

Extensible Metadata Record

The Extensible Metadata Record provides a way for applications to store free-form data in the Blockbridge management node. The data can include information of use to the client itself, to other clients, or to the storage administrator. The data can be associated with another object such as a virtual disk or service, so that it is removed when the associated object is deleted.

Attributes

NameTypeDescription
idstringobject id
uuiduuidobject uuid
ctimeintegerextensible metadata create time
Range: 0 <= value
mtimeintegerextensible metadata last modified time
Range: 0 <= value
serialstringextensible metadata serial number
labelnullable stringuser assigned label
Length: 1..64
account_idnullable stringaccount id
vss_idnullable stringoptional vss ref
refstringarbitrary string reference key
Length: 1..256
publishbooleanno documentation
typenullable stringno documentation
notesnullable stringuser assigned notes
Length: 0..256
tagsarrayobject tags
ext_statusnullable objectexternal application status
ext_status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
ext_status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
ext_status:detailnullable stringstatus detail
datanullable objectapplication-supplied data
systembooleansystem xmd
xmd_refsarrayarray of extensible metadata reference keys
xrefstringarbitrary string reference
Length: 1..256
status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detailnullable stringstatus detail
rdeps/idstringdependent object id
rdeps/serialstringdependent object serial number
rdeps/labelnullable stringdependent object label
rdeps/refstringdependent object reference key
Length: 1..256
rdeps/typestringdependent object type
rdeps/selfbooleandependent object references itself
xmd/idstringno documentation
xmd/refstringarbitrary string reference key
Length: 1..256
xmd/mtimeintegerlast modified time of xmd
Range: 0 <= value
xmd/tagsarrayobject tags
xmd/selfbooleanno documentation
xmd/datanullable stringno documentation

Extensible Metadata Record Info

Retrieve an existing external metadata object.

GET /xmd/{xmd_id_or_serial_or_ref}

Curl Example

$ curl https://mgmt-node/api/xmd/xmd:7:10 \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:39 GMT
Server: Goliath
ETag: "eb42871915d000bae233234b8619454c"
Content-Type: application/json
Content-Length: 709
{
  "id": "xmd:7:10",
  "uuid": "ff89ac1c-f779-4f41-be78-60bb62492d61",
  "serial": "XMD3962194C4062642D",
  "evt_qry": null,
  "account_id": "account:1:10",
  "ctime": 1507570059641,
  "mtime": 1507570059642,
  "seq": 1507570059689,
  "label": null,
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570059689
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "ref": "68d89b8c-75a9-484b-ac9f-99e1984a706f",
  "tags": [

  ],
  "data": {
    "example": {
      "data": {
      },
      "_schema": "terminal"
    }
  },
  "ext_status": null,
  "rdeps": [

  ]
}

Extensible Metadata Record List

Enumerate extensible metadata objects.

GET /xmd

Curl Example

$ curl https://mgmt-node/api/xmd \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:39 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 711
[
  {
    "id": "xmd:7:10",
    "uuid": "ff89ac1c-f779-4f41-be78-60bb62492d61",
    "serial": "XMD3962194C4062642D",
    "evt_qry": null,
    "account_id": "account:1:10",
    "ctime": 1507570059641,
    "mtime": 1507570059642,
    "seq": 1507570059689,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "ec": {
      "table": {
        "time": null,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "v": "dbg",
            "d": [
              0,
              0,
              0,
              0
            ]
          },
          {
            "v": "info",
            "d": [
              0,
              0,
              0,
              0
            ]
          },
          {
            "v": "warn",
            "d": [
              0,
              0,
              0,
              0
            ]
          },
          {
            "v": "err",
            "d": [
              0,
              0,
              0,
              0
            ]
          }
        ]
      },
      "status": "current",
      "seq": 1507570059689
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "ref": "68d89b8c-75a9-484b-ac9f-99e1984a706f",
    "tags": [

    ],
    "data": {
      "example": {
        "data": {
        },
        "_schema": "terminal"
      }
    },
    "ext_status": null,
    "rdeps": [

    ]
  }
]

Extensible Metadata Record Create

Create an extensible metadata object.

POST /xmd

Required Parameters

NameTypeDescription
refstringarbitrary string reference key
Length: 1..256

Optional Parameters

NameTypeDescription
vss_idstringvirtual storage service id
xmd_refsarrayarray of extensible metadata reference keys
xrefnullable stringarbitrary string reference
Length: 1..256
labelnullable stringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
tagsarrayobject tags
ext_status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
ext_status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
ext_status:detailnullable stringstatus detail
uuiduuidobject UUID
replacebooleanreplace existing xmd ref
typenullable stringno documentation
publishbooleanpublish xmd

Curl Example

$ curl -X POST https://mgmt-node/api/xmd \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "ref": "68d89b8c-75a9-484b-ac9f-99e1984a706f",
  "data": {
    "example": {
      "data": {
      },
      "_schema": "terminal"
    }
  }
}'

Response Example

201 Created
Date: Mon, 09 Oct 2017 17:27:39 GMT
Server: Goliath
ETag: "eb42871915d000bae233234b8619454c"
Content-Type: application/json
Content-Length: 709
{
  "id": "xmd:7:10",
  "uuid": "ff89ac1c-f779-4f41-be78-60bb62492d61",
  "serial": "XMD3962194C4062642D",
  "evt_qry": null,
  "account_id": "account:1:10",
  "ctime": 1507570059641,
  "mtime": 1507570059642,
  "seq": 1507570059689,
  "label": null,
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570059689
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "ref": "68d89b8c-75a9-484b-ac9f-99e1984a706f",
  "tags": [

  ],
  "data": {
    "example": {
      "data": {
      },
      "_schema": "terminal"
    }
  },
  "ext_status": null,
  "rdeps": [

  ]
}

Extensible Metadata Record Remove

Remove an extensible metadata object.

DELETE /xmd/{xmd_id_or_serial_or_ref}

Curl Example

$ curl -X DELETE https://mgmt-node/api/xmd/68d89b8c-75a9-484b-ac9f-99e1984a706f \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg"

Response Example

204 No Content
Date: Mon, 09 Oct 2017 17:27:40 GMT
Server: Goliath

Extensible Metadata Record Update

Change an extensible metadata object.

PATCH /xmd/{xmd_id_or_serial_or_ref}

Optional Parameters

NameTypeDescription
noent_actionstringresponse when metadata record not found
default: "fail"
one of:"fail" or "success" or "create"
modestringupdate mode
default: "replace"
one of:"replace" or "merge" or "patch"
xmd_refsarrayarray of extensible metadata reference keys
labelnullable stringuser assigned label
Length: 1..64
notesstringuser assigned notes
Length: 0..256
tagsarrayobject tags
ext_status:indicatorstringstatus indicator
one of:"online" or "degraded" or "offline" or "na"
ext_status:valuestringstatus value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
ext_status:detailnullable stringstatus detail
vss_idstringvss id
uuiduuidobject UUID
typenullable stringno documentation
xrefnullable stringarbitrary string reference
Length: 1..256
publishbooleanpublish xmd
new_refstringarbitrary string reference key
Length: 1..256

Curl Example

$ curl -X PATCH https://mgmt-node/api/xmd/68d89b8c-75a9-484b-ac9f-99e1984a706f \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -d \
'{
  "data": [
    {
      "path": "/example/data/lines",
      "value": [
        "Linux client 2.6.32-431.29.2.el6.x86_64"
      ],
      "op": "add"
    }
  ],
  "mode": "patch"
}'

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:27:40 GMT
Server: Goliath
ETag: "ff6827d4a5ba87024776fe031e07ecbe"
Content-Type: application/json
Content-Length: 760
{
  "id": "xmd:7:10",
  "uuid": "ff89ac1c-f779-4f41-be78-60bb62492d61",
  "serial": "XMD3962194C4062642D",
  "evt_qry": null,
  "account_id": "account:1:10",
  "ctime": 1507570059641,
  "mtime": 1507570060134,
  "seq": 1507570060146,
  "label": null,
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "ec": {
    "table": {
      "time": null,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "v": "dbg",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "info",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "warn",
          "d": [
            0,
            0,
            0,
            0
          ]
        },
        {
          "v": "err",
          "d": [
            0,
            0,
            0,
            0
          ]
        }
      ]
    },
    "status": "current",
    "seq": 1507570059689
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "ref": "68d89b8c-75a9-484b-ac9f-99e1984a706f",
  "tags": [

  ],
  "data": {
    "example": {
      "_schema": "terminal",
      "data": {
        "lines": [
          "Linux client 2.6.32-431.29.2.el6.x86_64"
        ]
      }
    }
  },
  "ext_status": null,
  "rdeps": [

  ]
}

CA Certificate

The Blockbridge management node may be configured with an embedded Certificate Authority that issues SSL certificates for clients to securely access to the API and the management web application. Install its CA certificate on client machines that will use Blockbridge management services. If no certificate authority is configured, SSL connections use self-signed certificates.

Attributes

NameTypeDescription
datastringencoded ca-certificate data
encodingstringadditional encoding of response data
one of:"base64"

CA Certificate Info

Retrieve the certificate authority certificate.

GET /ca-certificate

Optional Parameters

NameTypeDescription
cert_formatstringca cert format
default: "pem"
one of:"pem" or "der"

Curl Example

$ curl https://mgmt-node/api/ca-certificate \
  -H "Authorization: Bearer 0/ZWbIgDWDjWa86fkBeFN34C/p+TDTQf/2hFEomiWU2Q1lZ8iANYOHdg" \
  -G \
  -d cert_format=pem

Response Example

200 OK
Date: Mon, 09 Oct 2017 17:26:52 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2897
{
  "data": "-----BEGIN CERTIFICATE-----\nMIIH+jCCBeKgAwIBAgIJAIFqYjmDMSPJMA0GCSqGSIb3DQEBBQUAMIHPMQswCQYD\nVQQGEwJVUzEWMBQGA1UECAwNTWFzc2FjaHVzZXR0czESMBAGA1UEBwwJQ2FtYnJp\nZGdlMSIwIAYDVQQKDBlCbG9ja2JyaWRnZSBOZXR3b3JrcywgTExDMTAwLgYDVQQL\nDCdFbWJlZGRlZCBDQSAoTW9uIE9jdCAwOSAxNToyNyBVVEMgMjAxNykxGDAWBgNV\nBAMMD2Jsb2NrYnJpZGdlLmNvbTEkMCIGCSqGSIb3DQEJARYVYWRtaW5AYmxvY2ti\ncmlkZ2UuY29tMB4XDTE3MTAwOTE1MjcxNFoXDTM3MTAwOTE1MjcxNFowgc8xCzAJ\nBgNVBAYTAlVTMRYwFAYDVQQIDA1NYXNzYWNodXNldHRzMRIwEAYDVQQHDAlDYW1i\ncmlkZ2UxIjAgBgNVBAoMGUJsb2NrYnJpZGdlIE5ldHdvcmtzLCBMTEMxMDAuBgNV\nBAsMJ0VtYmVkZGVkIENBIChNb24gT2N0IDA5IDE1OjI3IFVUQyAyMDE3KTEYMBYG\nA1UEAwwPYmxvY2ticmlkZ2UuY29tMSQwIgYJKoZIhvcNAQkBFhVhZG1pbkBibG9j\na2JyaWRnZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDQ6UXb\nm1bCtko87HJRKaCfCNwOejG2vwTg4dKV715r/VmtpwQgoa1xZKHMI+9pzs33FNuj\nq/OEjk9gYIOnuGXO5J+Vh527RUscIpHhs9q02/6TIUoBV1NW0YyNZh19ZzFuanaO\nl2YPkXRaEMb0MadHd38+ItqVlFvl+PSfZOLeKgbYRJdE2OPk+K8VJZ2FD1PNmu6q\nCLk36PqMifFmPItDsUCZBL7f3xuVmnrdU3juGE8QXXPysBj8fU/5k5aMW31Pfc2m\nHojcXGsYqjoVEnvd89qzNJt3U8zc51XkrjnAxS68dV9lWAjuk5bF5ZYfhuYAKaH+\ngruiYOroyCq3RiPCXYTe7jk1tQMTR3V8Gr9N05B37uzYBJ3HQ8FdK6NgJ/z+68Y7\nOuVrDXbkBAK4DYcV2u2RSHe/RMCZT36rNQcjMv6r528XsIctxWktLeSHar5WdEC3\n6rbi0PE40hu6L10tViTI9hlU+ZjPEmjANpQtcluFY/pB0riOxNzEhEeIJ6pmahIu\n2X93SA1uds5NaiCLPwAC24hISeGv2xcGjx6QCgvPqE079bcWl/kwBxAosOdh8Shs\nCwXYjpcznNOXClvjNr6XErZpbkxIKsDdVS8YVxtrr7h1b09Y08tPDIdUy7SazE6t\nG8blN73oCCEMFXKaXWavBIbdv/XPVqG85xb4lQIDAQABo4IB1TCCAdEwIAYDVR0R\nBBkwF4EVYWRtaW5AYmxvY2ticmlkZ2UuY29tMA4GA1UdDwEB/wQEAwIBBjAPBgNV\nHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSSJ3ByGRWjRZF5pkcnXYEDNZQ85jARBglg\nhkgBhvhCAQEEBAMCAgQwggEEBgNVHSMEgfwwgfmAFJIncHIZFaNFkXmmRyddgQM1\nlDzmoYHVpIHSMIHPMQswCQYDVQQGEwJVUzEWMBQGA1UECAwNTWFzc2FjaHVzZXR0\nczESMBAGA1UEBwwJQ2FtYnJpZGdlMSIwIAYDVQQKDBlCbG9ja2JyaWRnZSBOZXR3\nb3JrcywgTExDMTAwLgYDVQQLDCdFbWJlZGRlZCBDQSAoTW9uIE9jdCAwOSAxNToy\nNyBVVEMgMjAxNykxGDAWBgNVBAMMD2Jsb2NrYnJpZGdlLmNvbTEkMCIGCSqGSIb3\nDQEJARYVYWRtaW5AYmxvY2ticmlkZ2UuY29tggkAgWpiOYMxI8kwIAYDVR0SBBkw\nF4EVYWRtaW5AYmxvY2ticmlkZ2UuY29tMDAGCWCGSAGG+EIBAwQjFiFodHRwOi8v\nd3d3LmJsb2NrYnJpZGdlLmNvbS9jYS5jcmwwDQYJKoZIhvcNAQEFBQADggIBAL++\n3zKnq/B+TaBe//w7/fLBJIhRmMUj852dUD1EWhFHnBeYU8wOzZ4nzOym95XZMVLg\nbC4WKUFr0C+oYOM7zz9M9GZUoLLGK1SFAKtP3BjJNCcBPmBpdUwFnTPXMLRx+pRy\nWl7iVrpG+jq2Oq0ubBzpP/kiJ06HMJNou6e1PNiMKGsupcvEICiu7w4LSkNX4z2I\nlj+cYRhNJBQrsbvWmorz1tU7DYLNLIvFlaMZRr4xQ0ZEiWVww4ojomS32Brl0JkN\nSSg5EG3zh1CkS8uy1lqiPCzSLFE0JYL2cVM1v0VKjppn7YzE7Zj4WUf+Ptdk8fs1\n1t69MC8o31h1BZ8JVLNK/Dm6MGyOf/a+LpdKGm5SM0WSbkAtatO7EJTK8Ee12Us8\nqH7jPFy2h0S7swRA0QNpPn5ujboSsycVi7difI7YekO2xX5fFZO+1iErrcrxPNRW\nYTZiRWYii+HOkq5SAteiwvt/IG5Ud/81XPlmqgV2bxEuA7Rx6Dbdef3S4Y9A7TPW\naXjYkOp8OJCs/YXHtJXO18UPEhqLh4V8OjuVP51EsMCJJsjaEPXBkbvurfpaKCkr\nKyS4M6ns8YmSCuvVINVdAcUTiraHXrnzVLcHnnUPWxfq230RRt0BlIp6SUO0kBXP\nJN9qm7geoCcdOz4pmC7W3r+OITOQtBp9feHoY74R\n-----END CERTIFICATE-----\n",
  "encoding": null
}
Web Analytics