Blockbridge REST API

Table Of Contents

Blockbridge REST API

Document last updated 2017-04-26T01:35:23

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.

Method Usage
GET Using 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.
DELETE Removes an object from the system. DELETE is idempotent, and multiple attempts to remove an object will receive the same result.
PATCH Updates an objects configuration. Blockbridge typically uses PATCH to effect partial updates, as there are very few cases where an object is replaced wholesale.
POST Creates a new object.
PUT Replaces 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

Status Description
200 OK request succeeded
201 Created resource created
204 No Content request 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

Status Description
400 Bad Request invalid request format
401 Unauthorized authentication required
403 Forbidden access denied to specified resource
404 Not Found resource not found
405 Method Not Allowed method not supported by resource
410 Resource Deleted resource has been deleted

Blockbridge Errors

Status Description
500 Internal Server Error unexpected server failure, internal error
503 Service Unavailable server 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.

Name Type Description Example
message string human-readable error message parameter validation failure
type string error type validation
errors array list of fields and corresponding errors
status integer HTTP status code 400

Each element in the errors array has the schema shown below

Validation Failure Error

Name Type Description Example
type string failure type missing
field string JSON field name /capacity
msg string human-readable error message must 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

Name Type Description
id string object id
uuid uuid object uuid
ctime integer account create time
Range: 0 <= value
mtime integer account last modified time
Range: 0 <= value
idp:id string no documentation
idp:label string no documentation
idp:type string identity provider type
one of:"internal" or "openstack"
serial string serial number
usage_id string account_usage id
disabled boolean account is disabled
name string account name
primary_contact:first_name string First Name
default: ""
primary_contact:last_name string Last Name
default: ""
primary_contact:company string company name
primary_contact:address:addr array physical address lines
primary_contact:address:city string city
primary_contact:address:state string state
primary_contact:address:zip string zip code
primary_contact:address:country string country
default: "US"
primary_contact:phone:number string Phone number
primary_contact:phone:valid boolean phone number has been verified for SMS
primary_contact:phone:token string SMS verification token
primary_contact:email:addr string email address
primary_contact:email:valid boolean address has been verified
primary_contact:email:token string address verification token
billing_contact nullable object billing contact information
billing_contact:first_name string First Name
default: ""
billing_contact:last_name string Last Name
default: ""
billing_contact:company string company name
billing_contact:address:addr array physical address lines
billing_contact:address:city string city
billing_contact:address:state string state
billing_contact:address:zip string zip code
billing_contact:address:country string country
default: "US"
billing_contact:phone:number string Phone number
billing_contact:phone:valid boolean phone number has been verified for SMS
billing_contact:phone:token string SMS verification token
billing_contact:email:addr string email address
billing_contact:email:valid boolean address has been verified
billing_contact:email:token string address verification token
admin_profile_id string account administrative user
limits:vss_num nullable integer number of virtual storage services
limits:size_reserve_total nullable integer maximum size of storage
provisioning:size_reserve_max nullable integer maximum size reserve of a single virtual storage service
provisioning:iops_reserve_max nullable integer maximum iops reserve of a single virtual storage service
provisioning:tags_include array tags included
default: []
provisioning:tags_exclude array tags excluded
default: []
provisioning:tags_permit nullable array tags permitted
provisioning:tags_permit nullable array tags permitted

Account Info

Retrieve an existing account.

GET /account/{account_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/account/account:12:10 \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:37 GMT
Server: Goliath
ETag: "a274b0b534bb0f42c38cab1de76a9585"
Content-Type: application/json
Content-Length: 719
{
  "id": "account:12:10",
  "uuid": "70af56ac-7dc3-4a33-b823-c944d91fc915",
  "serial": "ACT0762F94C40626490",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053355276,
  "mtime": 1493053355538,
  "seq": 1493053355546,
  "status": null,
  "trashed": null,
  "ec": {
    "status": "retrieving",
    "table": null,
    "seq": 1493053355289
  },
  "rec_status": null,
  "usage_id": "account_usage:12:10",
  "name": "account42",
  "primary_contact": {
    "first_name": "",
    "last_name": ""
  },
  "billing_contact": null,
  "admin_profile_id": "user_profile:17: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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:35 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1641
[
  {
    "id": "account:12:10",
    "uuid": "70af56ac-7dc3-4a33-b823-c944d91fc915",
    "serial": "ACT0762F94C40626490",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": null,
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493053355276,
    "mtime": 1493053355538,
    "seq": 1493053355546,
    "status": null,
    "trashed": null,
    "ec": {
      "status": "retrieving",
      "table": null,
      "seq": 1493053355289
    },
    "rec_status": null,
    "usage_id": "account_usage:12:10",
    "name": "account42",
    "primary_contact": {
      "first_name": "",
      "last_name": ""
    },
    "billing_contact": null,
    "admin_profile_id": "user_profile:17: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
    }
  },
  {
    "id": "account:1:10",
    "uuid": "21d8f5ea-d05b-46e2-9d1a-ab7e386de584",
    "serial": "ACT0762594C40626440",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": null,
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046250427,
    "mtime": 1493052967195,
    "seq": 1493053355508,
    "status": null,
    "trashed": null,
    "ec": {
      "status": "current",
      "table": {
        "time": 1493053355000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              404,
              420,
              420,
              420
            ],
            "v": "dbg"
          },
          {
            "d": [
              280,
              282,
              282,
              282
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "seq": 1493053355508
    },
    "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
    }
  }
]

Account Create

Create a new account.

POST /account

Required Parameters

Name Type Description
name string account name

Optional Parameters

Name Type Description
password string password to set in primary user profile
permissions:realm:rights:can_switch_user boolean can SU to lower level user
permissions:realm:rights:manage_node_membership boolean accept or delete nodes from the management network
permissions:realm:rights:manage_accounts boolean can create or delete other accounts, users and their settings
permissions:realm:rights:view_logs boolean view administrative logs
permissions:realm:rights:run_admin_tasks boolean run realm administrative tasks
permissions:realm:rights:run_tests boolean run realm administrative tests
permissions:node:all_realm_scope boolean apply to all nodes in the realm
default: true
permissions:node:nodes array scope permissions to specific nodes
permissions:node:rights:manage_storage boolean configure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networks boolean configure networks
permissions:node:rights:provision_vss boolean manually provision virtual storage services
permissions:node:rights:remove_vss boolean remove virtual storage services
permissions:vss:all_account_scope boolean apply to all virtual storage services in the account
default: true
permissions:vss:vsses array limit scope to specified vsses
permissions:vss:rights:dismiss_tasks boolean dismiss tasks
permissions:vss:rights:update_vss boolean update vss configuration
permissions:vss:rights:remove_vss boolean remove vss
permissions:vss:rights:set_vss_quota boolean set vss quota
permissions:vss:rights:manage_internal_disks boolean manage internal disks
permissions:vss:rights:manage_external_disks boolean manage external disks
permissions:vss:rights:manage_removable_disks boolean manage removable disks
permissions:vss:rights:manage_disk_cryptography boolean manage disk cryptography
permissions:vss:rights:remove_locked_disks boolean remove locked disks
permissions:vss:rights:validate_data_integrity boolean validate data integrity
permissions:vss:rights:manage_targets boolean manage targets
permissions:vss:rights:manage_profiles boolean manage profiles
permissions:vss:rights:manage_secure_access_tokens boolean manage secure access tokens
permissions:vss:rights:manage_rules boolean manage rules
permissions:vss:rights:replicate_disks boolean replicate disks
permissions:vss:rights:synchronize_disks boolean synchronize disks
permissions:vss:rights:format_disks boolean format disks
permissions:vss:rights:resize_disks boolean resize disks
permissions:vss:rights:manage_snapshots boolean manage snapshots
permissions:vss:rights:backup_disks boolean backup disks
permissions:vss:rights:replicate_and_synchronize_disks boolean replicate and synchronize disks (DEPRECATED)
permissions:user:rights:manage_users boolean create or delete users in an account
permissions:user:rights:modify_user_contact_settings boolean modify user contact info
permissions:user:rights:reset_user_password boolean reset user password
permissions:user:rights:reset_user_two_factor boolean reset two factor authentication
permissions:user:rights:manage_authorizations boolean create or delete persistent authorizations
permissions:account:rights:modify_contact_settings boolean modify account contact settings
permissions:account:rights:view_events boolean view events
permissions:account:rights:view_statistics boolean view statistics
permissions:account:rights:manage_global_profiles boolean manage global profiles
permissions:account:rights:manage_global_secure_access_tokens boolean manage global secure access tokens
permissions:account:rights:query_catalog boolean query product catalog
permissions:account:rights:provision_vss boolean provision vss from catalog
permissions:account:rights:manage_obj_stores boolean manage obj stores
permissions:account:rights:read_object_storage boolean read from object storage
permissions:account:rights:write_object_storage boolean write to object storage
permissions:account:rights:delete_object_storage boolean delete from object storage
level integer privilege level
access:web boolean web access permitted
default: true
access:api boolean api access permitted
activated boolean user profile activated
primary_contact:first_name string First Name
default: ""
primary_contact:last_name string Last Name
default: ""
primary_contact:company string company name
primary_contact:address:addr array physical address lines
primary_contact:address:city string city
primary_contact:address:state string state
primary_contact:address:zip string zip code
primary_contact:address:country string country
default: "US"
primary_contact:phone string phone number
primary_contact:email email email address
billing_contact:first_name string First Name
default: ""
billing_contact:last_name string Last Name
default: ""
billing_contact:company string company name
billing_contact:address:addr array physical address lines
billing_contact:address:city string city
billing_contact:address:state string state
billing_contact:address:zip string zip code
billing_contact:address:country string country
default: "US"
billing_contact:phone string phone number
billing_contact:email email email address
limits:vss_num nullable integer number of virtual storage services
limits:size_reserve_total nullable integer maximum size of storage
provisioning:size_reserve_max nullable integer maximum size reserve of a single virtual storage service
provisioning:iops_reserve_max nullable integer maximum iops reserve of a single virtual storage service
provisioning:tags_include array tags included
default: []
provisioning:tags_exclude array tags excluded
default: []
provisioning:tags_permit nullable array tags permitted
provisioning:tags_permit nullable array tags permitted
uuid uuid account UUID
user_uuid uuid user profile UUID
template string accounte template

Curl Example

$ curl -X POST https://mgmt-node/api/account \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "name": "account42"
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:35 GMT
Server: Goliath
ETag: "05ce88bc851cf4d9be63f08f1d1155ff"
Content-Type: application/json
Content-Length: 721
{
  "id": "account:12:10",
  "uuid": "70af56ac-7dc3-4a33-b823-c944d91fc915",
  "serial": "ACT0762F94C40626490",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053355276,
  "mtime": 1493053355276,
  "seq": 1493053355289,
  "status": null,
  "trashed": null,
  "ec": {
    "status": "retrieving",
    "table": null,
    "seq": 1493053355289
  },
  "rec_status": null,
  "usage_id": "account_usage:12:10",
  "name": "account42",
  "primary_contact": {
    "first_name": "",
    "last_name": ""
  },
  "billing_contact": null,
  "admin_profile_id": "user_profile:17: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:11:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56:39 GMT
Server: Goliath

Account Update

Change the configuration of an existing account.

PATCH /account/{account_id_or_serial}

Optional Parameters

Name Type Description
host string server hostname originating request (for url)
primary_contact:first_name string First Name
primary_contact:last_name string Last Name
primary_contact:company string company name
primary_contact:address:addr array physical address lines
primary_contact:address:city string city
primary_contact:address:state string state
primary_contact:address:zip string zip code
primary_contact:address:country string country
primary_contact:phone string phone number
primary_contact:email email email address
billing_contact:first_name string First Name
billing_contact:last_name string Last Name
billing_contact:company string company name
billing_contact:address:addr array physical address lines
billing_contact:address:city string city
billing_contact:address:state string state
billing_contact:address:zip string zip code
billing_contact:address:country string country
billing_contact:phone string phone number
billing_contact:email email email address
password string password of primary user profile
limits:vss_num nullable integer number of virtual storage services
limits:size_reserve_total nullable integer maximum size of storage
provisioning:size_reserve_max nullable integer maximum size reserve of a single virtual storage service
provisioning:iops_reserve_max nullable integer maximum iops reserve of a single virtual storage service
provisioning:tags_include array tags included
provisioning:tags_exclude array tags excluded
provisioning:tags_permit nullable array tags permitted
provisioning:tags_permit nullable array tags permitted

Curl Example

$ curl -X PATCH https://mgmt-node/api/account/account:12:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "limits": {
    "vss_num": 32
  }
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:35 GMT
Server: Goliath
ETag: "a274b0b534bb0f42c38cab1de76a9585"
Content-Type: application/json
Content-Length: 719
{
  "id": "account:12:10",
  "uuid": "70af56ac-7dc3-4a33-b823-c944d91fc915",
  "serial": "ACT0762F94C40626490",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053355276,
  "mtime": 1493053355538,
  "seq": 1493053355546,
  "status": null,
  "trashed": null,
  "ec": {
    "status": "retrieving",
    "table": null,
    "seq": 1493053355289
  },
  "rec_status": null,
  "usage_id": "account_usage:12:10",
  "name": "account42",
  "primary_contact": {
    "first_name": "",
    "last_name": ""
  },
  "billing_contact": null,
  "admin_profile_id": "user_profile:17: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:12:10/usage \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:35 GMT
Server: Goliath
ETag: "94557080ac58507ba2c3291d41f12cdd"
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

Name Type Description
id string object id
uuid uuid object uuid
ctime integer user profile create time
Range: 0 <= value
mtime integer user profile last modified time
Range: 0 <= value
email_notify boolean email notifications enabled
email email email address
email_verified boolean email address has been verified
sms_notify boolean SMS notifications enabled
sms nullable object notification number for SMS
sms:number string Phone number
sms:valid boolean phone number has been verified for SMS
sms:token string SMS verification token
login string username
password_set boolean is password non-null?
allow_su boolean admin allowed to SU to this user
level integer user privilege level
timezone string timezone
one of:"local"
activated boolean user profile activated
idp:id string no documentation
idp:label string no documentation
idp:type string identity provider type
one of:"internal" or "openstack"
account_admin boolean user has account-wide administrative control
two_factor:auth string two-factor authentication type
one of:"none" or "yubikey" or "google"
two_factor:yubikey_id string yubikey OTP for binding unique yubikey to profile
two_factor:security_email nullable object security email address
two_factor:security_email:addr email security email address
two_factor:security_email:verified boolean security email address has been verified
two_factor:security_email:bounce boolean email is bouncing to security_email_addr
permissions:realm:rights:can_switch_user boolean can SU to lower level user
permissions:realm:rights:manage_node_membership boolean accept or delete nodes from the management network
permissions:realm:rights:manage_accounts boolean can create or delete other accounts, users and their settings
permissions:realm:rights:view_logs boolean view administrative logs
permissions:realm:rights:run_admin_tasks boolean run realm administrative tasks
permissions:realm:rights:run_tests boolean run realm administrative tests
permissions:node:all_realm_scope boolean apply to all nodes in the realm
permissions:node:nodes array scope permissions to specific nodes
permissions:node:rights:manage_storage boolean configure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networks boolean configure networks
permissions:node:rights:provision_vss boolean manually provision virtual storage services
permissions:node:rights:remove_vss boolean remove virtual storage services
permissions:vss:all_account_scope boolean apply to all virtual storage services in the account
permissions:vss:vsses array limit scope to specified vsses
permissions:vss:rights:dismiss_tasks boolean dismiss tasks
permissions:vss:rights:update_vss boolean update vss configuration
permissions:vss:rights:remove_vss boolean remove vss
permissions:vss:rights:set_vss_quota boolean set vss quota
permissions:vss:rights:manage_internal_disks boolean manage internal disks
permissions:vss:rights:manage_external_disks boolean manage external disks
permissions:vss:rights:manage_removable_disks boolean manage removable disks
permissions:vss:rights:manage_disk_cryptography boolean manage disk cryptography
permissions:vss:rights:remove_locked_disks boolean remove locked disks
permissions:vss:rights:validate_data_integrity boolean validate data integrity
permissions:vss:rights:manage_targets boolean manage targets
permissions:vss:rights:manage_profiles boolean manage profiles
permissions:vss:rights:manage_secure_access_tokens boolean manage secure access tokens
permissions:vss:rights:manage_rules boolean manage rules
permissions:vss:rights:replicate_disks boolean replicate disks
permissions:vss:rights:synchronize_disks boolean synchronize disks
permissions:vss:rights:format_disks boolean format disks
permissions:vss:rights:resize_disks boolean resize disks
permissions:vss:rights:manage_snapshots boolean manage snapshots
permissions:vss:rights:backup_disks boolean backup disks
permissions:vss:rights:replicate_and_synchronize_disks boolean replicate and synchronize disks (DEPRECATED)
permissions:user:rights:manage_users boolean create or delete users in an account
permissions:user:rights:modify_user_contact_settings boolean modify user contact info
permissions:user:rights:reset_user_password boolean reset user password
permissions:user:rights:reset_user_two_factor boolean reset two factor authentication
permissions:user:rights:manage_authorizations boolean create or delete persistent authorizations
permissions:account:rights:modify_contact_settings boolean modify account contact settings
permissions:account:rights:view_events boolean view events
permissions:account:rights:view_statistics boolean view statistics
permissions:account:rights:manage_global_profiles boolean manage global profiles
permissions:account:rights:manage_global_secure_access_tokens boolean manage global secure access tokens
permissions:account:rights:query_catalog boolean query product catalog
permissions:account:rights:provision_vss boolean provision vss from catalog
permissions:account:rights:manage_obj_stores boolean manage obj stores
permissions:account:rights:read_object_storage boolean read from object storage
permissions:account:rights:write_object_storage boolean write to object storage
permissions:account:rights:delete_object_storage boolean delete from object storage
access:web boolean web access permitted
access:api boolean API access permitted
app_default string default web-ui application
one of:"storage" or "infrastructure" or "account" or "securedrive"
account_id string account ref
serial string user profile serial number
xmd_refs array array of extensible metadata reference keys
xref string arbitrary string reference
sessions/serial string session serial number
sessions/id string session id
sessions/created_ms integer creation time, in milliseconds since epoch
Range: 0 <= value
sessions/last_ms integer time of last activity on session
Range: 0 <= value
sessions/addr nullable string source IP of last request on session
xmd/id string no documentation
xmd/ref string arbitrary string reference key
xmd/mtime integer last modified time of xmd
Range: 0 <= value
xmd/tags array object tags
xmd/self boolean no documentation
xmd/data nullable string no 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:18:10 \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:37 GMT
Server: Goliath
ETag: "cf2a4df21637c6c768b7b5c8bb3c9ae4"
Content-Type: application/json
Content-Length: 2122
{
  "id": "user_profile:18:10",
  "uuid": "f8eeb03a-93c5-4c8f-8335-6a3c73e999de",
  "serial": "USR1B62E94C40626570",
  "evt_query": null,
  "account_id": "account:12:10",
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053356651,
  "mtime": 1493053357006,
  "seq": 1493053357020,
  "label": null,
  "status": null,
  "trashed": null,
  "ec": {
    "table": null,
    "status": "retrieving",
    "seq": 1493053356659
  },
  "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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:36 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 8037
[
  {
    "id": "user_profile:1:10",
    "uuid": "03428d1a-8df5-4612-9946-c45846ae00b6",
    "serial": "USR1B62094C40626440",
    "evt_query": null,
    "account_id": "account:1:10",
    "sds_id": null,
    "node_id": null,
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046250427,
    "mtime": 1493046277904,
    "seq": 1493053356508,
    "label": null,
    "status": null,
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493053356000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              410,
              426,
              426,
              426
            ],
            "v": "dbg"
          },
          {
            "d": [
              286,
              287,
              287,
              287
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1493053356508
    },
    "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": "SES1662B94C40626440",
        "id": "session:1:10",
        "created_ms": 1493051386141,
        "last_ms": 1493051490405,
        "addr": "172.16.100.33"
      },
      {
        "serial": "SES1662394C40626470",
        "id": "session:2:10",
        "created_ms": 1493051455000,
        "last_ms": 1493051455000,
        "addr": "172.16.100.33"
      },
      {
        "serial": "SES1662294C40626410",
        "id": "session:4:10",
        "created_ms": 1493051525145,
        "last_ms": 1493051528924,
        "addr": "172.16.100.33"
      },
      {
        "serial": "SES1662A94C40626400",
        "id": "session:5:10",
        "created_ms": 1493051556432,
        "last_ms": 1493051556432,
        "addr": "172.16.5.200"
      },
      {
        "serial": "SES1662894C406264C0",
        "id": "session:9:10",
        "created_ms": 1493051667923,
        "last_ms": 1493053348626,
        "addr": "172.16.5.200"
      },
      {
        "serial": "SES1662894C406264E0",
        "id": "session:11:10",
        "created_ms": 1493051858677,
        "last_ms": 1493051862828,
        "addr": "172.16.100.33"
      },
      {
        "serial": "SES1662D94C40626540",
        "id": "session:17:10",
        "created_ms": 1493052172770,
        "last_ms": 1493052176506,
        "addr": "172.16.100.33"
      },
      {
        "serial": "SES1662594C40626570",
        "id": "session:18:10",
        "created_ms": 1493052181286,
        "last_ms": 1493052181286,
        "addr": "172.16.5.200"
      },
      {
        "serial": "SES1662D94C40626560",
        "id": "session:19:10",
        "created_ms": 1493052737326,
        "last_ms": 1493052737326,
        "addr": "172.16.5.200"
      },
      {
        "serial": "SES1662494C40626510",
        "id": "session:20:10",
        "created_ms": 1493052893801,
        "last_ms": 1493052962918,
        "addr": "172.16.9.2"
      },
      {
        "serial": "SES1662C94C40626500",
        "id": "session:21:10",
        "created_ms": 1493052949961,
        "last_ms": 1493052949961,
        "addr": "172.16.5.200"
      },
      {
        "serial": "SES1662494C40626530",
        "id": "session:22:10",
        "created_ms": 1493053352669,
        "last_ms": 1493053352669,
        "addr": "172.16.5.200"
      }
    ]
  },
  {
    "id": "user_profile:17:10",
    "uuid": "59d64918-97eb-499d-9e84-07f2aae7ae79",
    "serial": "USR1B62694C40626540",
    "evt_query": null,
    "account_id": "account:12:10",
    "sds_id": null,
    "node_id": null,
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493053355276,
    "mtime": 1493053355277,
    "seq": 1493053355289,
    "label": null,
    "status": null,
    "trashed": null,
    "ec": {
      "table": null,
      "status": "retrieving",
      "seq": 1493053355289
    },
    "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": [

    ]
  },
  {
    "id": "user_profile:18:10",
    "uuid": "f8eeb03a-93c5-4c8f-8335-6a3c73e999de",
    "serial": "USR1B62E94C40626570",
    "evt_query": null,
    "account_id": "account:12:10",
    "sds_id": null,
    "node_id": null,
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493053356651,
    "mtime": 1493053356651,
    "seq": 1493053356659,
    "label": null,
    "status": null,
    "trashed": null,
    "ec": {
      "table": null,
      "status": "retrieving",
      "seq": 1493053356659
    },
    "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 Create

Create a new user profile.

POST /user-profile

Required Parameters

Name Type Description
username string user-assigned portion of username (username@account)

Optional Parameters

Name Type Description
xmd_refs array array of extensible metadata reference keys
xref string arbitrary string reference
host string server hostname originating request (for url)
password nullable string user-assigned password
two_factor:auth string two-factor authentication type
default: "none"
one of:"none" or "yubikey" or "google"
two_factor:otp string one-time-password from authentication device
two_factor:secret string shared AES secret
pattern: [a-fA-F0-9]*
two_factor:private_id string yubikey private ID
pattern: [a-fA-F0-9]*
two_factor:security_email email security email for lost authenticator recovery
permissions:realm:rights:can_switch_user boolean can SU to lower level user
permissions:realm:rights:manage_node_membership boolean accept or delete nodes from the management network
permissions:realm:rights:manage_accounts boolean can create or delete other accounts, users and their settings
permissions:realm:rights:view_logs boolean view administrative logs
permissions:realm:rights:run_admin_tasks boolean run realm administrative tasks
permissions:realm:rights:run_tests boolean run realm administrative tests
permissions:node:all_realm_scope boolean apply to all nodes in the realm
default: true
permissions:node:nodes array scope permissions to specific nodes
permissions:node:rights:manage_storage boolean configure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networks boolean configure networks
permissions:node:rights:provision_vss boolean manually provision virtual storage services
permissions:node:rights:remove_vss boolean remove virtual storage services
permissions:vss:all_account_scope boolean apply to all virtual storage services in the account
default: true
permissions:vss:vsses array limit scope to specified vsses
permissions:vss:rights:dismiss_tasks boolean dismiss tasks
permissions:vss:rights:update_vss boolean update vss configuration
permissions:vss:rights:remove_vss boolean remove vss
permissions:vss:rights:set_vss_quota boolean set vss quota
permissions:vss:rights:manage_internal_disks boolean manage internal disks
permissions:vss:rights:manage_external_disks boolean manage external disks
permissions:vss:rights:manage_removable_disks boolean manage removable disks
permissions:vss:rights:manage_disk_cryptography boolean manage disk cryptography
permissions:vss:rights:remove_locked_disks boolean remove locked disks
permissions:vss:rights:validate_data_integrity boolean validate data integrity
permissions:vss:rights:manage_targets boolean manage targets
permissions:vss:rights:manage_profiles boolean manage profiles
permissions:vss:rights:manage_secure_access_tokens boolean manage secure access tokens
permissions:vss:rights:manage_rules boolean manage rules
permissions:vss:rights:replicate_disks boolean replicate disks
permissions:vss:rights:synchronize_disks boolean synchronize disks
permissions:vss:rights:format_disks boolean format disks
permissions:vss:rights:resize_disks boolean resize disks
permissions:vss:rights:manage_snapshots boolean manage snapshots
permissions:vss:rights:backup_disks boolean backup disks
permissions:vss:rights:replicate_and_synchronize_disks boolean replicate and synchronize disks (DEPRECATED)
permissions:user:rights:manage_users boolean create or delete users in an account
permissions:user:rights:modify_user_contact_settings boolean modify user contact info
permissions:user:rights:reset_user_password boolean reset user password
permissions:user:rights:reset_user_two_factor boolean reset two factor authentication
permissions:user:rights:manage_authorizations boolean create or delete persistent authorizations
permissions:account:rights:modify_contact_settings boolean modify account contact settings
permissions:account:rights:view_events boolean view events
permissions:account:rights:view_statistics boolean view statistics
permissions:account:rights:manage_global_profiles boolean manage global profiles
permissions:account:rights:manage_global_secure_access_tokens boolean manage global secure access tokens
permissions:account:rights:query_catalog boolean query product catalog
permissions:account:rights:provision_vss boolean provision vss from catalog
permissions:account:rights:manage_obj_stores boolean manage obj stores
permissions:account:rights:read_object_storage boolean read from object storage
permissions:account:rights:write_object_storage boolean write to object storage
permissions:account:rights:delete_object_storage boolean delete from object storage
access:web boolean web access permitted
default: true
access:api boolean API access permitted
default: true
allow_su boolean admin allowed to SU to user
email_notify boolean email notifications enabled
email nullable email email address
email_verify boolean require email address verification
sms_notify boolean SMS notifications enabled
sms string notification number for SMS messages
sms_verify boolean require SMS number verification
app_default string default web-ui application
default: "storage"
one of:"storage" or "infrastructure" or "account" or "securedrive"
account_id string account id
level integer user privilege level
uuid uuid object UUID

Curl Example

$ curl -X POST https://mgmt-node/api/user-profile \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "username": "account421",
  "password": "password421",
  "account_id": "account:12:10"
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:36 GMT
Server: Goliath
ETag: "4866ac1f05b6103feffe3867cfdb5065"
Content-Type: application/json
Content-Length: 2121
{
  "id": "user_profile:18:10",
  "uuid": "f8eeb03a-93c5-4c8f-8335-6a3c73e999de",
  "serial": "USR1B62E94C40626570",
  "evt_query": null,
  "account_id": "account:12:10",
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053356651,
  "mtime": 1493053356651,
  "seq": 1493053356659,
  "label": null,
  "status": null,
  "trashed": null,
  "ec": {
    "table": null,
    "status": "retrieving",
    "seq": 1493053356659
  },
  "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

Name Type Description
account_id string account id

Curl Example

$ curl -X DELETE https://mgmt-node/api/user-profile/user_profile:18:10 \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 17:02:37 GMT
Server: Goliath

User Profile Update

Change the configuration of an existing user profile.

PATCH /user-profile/{user_profile_id_or_serial}

Optional Parameters

Name Type Description
xmd_refs array array of extensible metadata reference keys
host string server hostname originating request (for url)
new_password nullable string new password
auth_password string current password; required when changing password for non-admin users
two_factor:auth string two-factor authentication type
one of:"none" or "yubikey" or "google"
two_factor:otp string one-time-password from authentication device
two_factor:secret string shared AES secret
pattern: [a-fA-F0-9]*
two_factor:private_id string yubikey private ID
pattern: [a-fA-F0-9]*
two_factor:security_email email security email for lost authenticator recovery
two_factor:state string enable or disable two-factor authentication
one of:"enable" or "disable"
email_notify boolean email notifications are enabled
email nullable email notification email address
email_verify boolean require email address verification
sms_notify boolean SMS notifications enabled
sms string notification number for SMS messages
sms_verify boolean require SMS number verification
app_default string default web-ui application
one of:"storage" or "infrastructure" or "account" or "securedrive"
activated boolean user profile activated
ext_auth:key nullable string no documentation
ext_auth:scope nullable string name of external authentication scope
ext_auth:login nullable string mapped external login
ext_auth:domain nullable string mapped external domain
ext_auth:domain_function nullable string mapped external domain function
permissions:realm:rights:can_switch_user boolean can SU to lower level user
permissions:realm:rights:manage_node_membership boolean accept or delete nodes from the management network
permissions:realm:rights:manage_accounts boolean can create or delete other accounts, users and their settings
permissions:realm:rights:view_logs boolean view administrative logs
permissions:realm:rights:run_admin_tasks boolean run realm administrative tasks
permissions:realm:rights:run_tests boolean run realm administrative tests
permissions:node:all_realm_scope boolean apply to all nodes in the realm
default: true
permissions:node:nodes array scope permissions to specific nodes
permissions:node:rights:manage_storage boolean configure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networks boolean configure networks
permissions:node:rights:provision_vss boolean manually provision virtual storage services
permissions:node:rights:remove_vss boolean remove virtual storage services
permissions:vss:all_account_scope boolean apply to all virtual storage services in the account
default: true
permissions:vss:vsses array limit scope to specified vsses
permissions:vss:rights:dismiss_tasks boolean dismiss tasks
permissions:vss:rights:update_vss boolean update vss configuration
permissions:vss:rights:remove_vss boolean remove vss
permissions:vss:rights:set_vss_quota boolean set vss quota
permissions:vss:rights:manage_internal_disks boolean manage internal disks
permissions:vss:rights:manage_external_disks boolean manage external disks
permissions:vss:rights:manage_removable_disks boolean manage removable disks
permissions:vss:rights:manage_disk_cryptography boolean manage disk cryptography
permissions:vss:rights:remove_locked_disks boolean remove locked disks
permissions:vss:rights:validate_data_integrity boolean validate data integrity
permissions:vss:rights:manage_targets boolean manage targets
permissions:vss:rights:manage_profiles boolean manage profiles
permissions:vss:rights:manage_secure_access_tokens boolean manage secure access tokens
permissions:vss:rights:manage_rules boolean manage rules
permissions:vss:rights:replicate_disks boolean replicate disks
permissions:vss:rights:synchronize_disks boolean synchronize disks
permissions:vss:rights:format_disks boolean format disks
permissions:vss:rights:resize_disks boolean resize disks
permissions:vss:rights:manage_snapshots boolean manage snapshots
permissions:vss:rights:backup_disks boolean backup disks
permissions:vss:rights:replicate_and_synchronize_disks boolean replicate and synchronize disks (DEPRECATED)
permissions:user:rights:manage_users boolean create or delete users in an account
permissions:user:rights:modify_user_contact_settings boolean modify user contact info
permissions:user:rights:reset_user_password boolean reset user password
permissions:user:rights:reset_user_two_factor boolean reset two factor authentication
permissions:user:rights:manage_authorizations boolean create or delete persistent authorizations
permissions:account:rights:modify_contact_settings boolean modify account contact settings
permissions:account:rights:view_events boolean view events
permissions:account:rights:view_statistics boolean view statistics
permissions:account:rights:manage_global_profiles boolean manage global profiles
permissions:account:rights:manage_global_secure_access_tokens boolean manage global secure access tokens
permissions:account:rights:query_catalog boolean query product catalog
permissions:account:rights:provision_vss boolean provision vss from catalog
permissions:account:rights:manage_obj_stores boolean manage obj stores
permissions:account:rights:read_object_storage boolean read from object storage
permissions:account:rights:write_object_storage boolean write to object storage
permissions:account:rights:delete_object_storage boolean delete from object storage
permissions_update_mode string user permissions update mode
default: "merge"
one of:"replace" or "merge"
allow_su boolean admin allowed to SU to user
account_id string account id

Curl Example

$ curl -X PATCH https://mgmt-node/api/user-profile/user_profile:18:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "activated": false
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:37 GMT
Server: Goliath
ETag: "cf2a4df21637c6c768b7b5c8bb3c9ae4"
Content-Type: application/json
Content-Length: 2122
{
  "id": "user_profile:18:10",
  "uuid": "f8eeb03a-93c5-4c8f-8335-6a3c73e999de",
  "serial": "USR1B62E94C40626570",
  "evt_query": null,
  "account_id": "account:12:10",
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053356651,
  "mtime": 1493053357006,
  "seq": 1493053357020,
  "label": null,
  "status": null,
  "trashed": null,
  "ec": {
    "table": null,
    "status": "retrieving",
    "seq": 1493053356659
  },
  "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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:37 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

Name Type Description
grant_type string type of grant request

Optional Parameters

Name Type Description
client_id string (optional) client id of request
client_secret string (optional) client supplied secret
code string (optional) code
redirect_url string (optional) redirect url
username string username to request token for
password string password for username
method string (optional) method of authorization
expires_in integer when 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, 24 Apr 2017 17:02:32 GMT
Server: Goliath
Cache-Control: no-store
Pragma: no-cache
Content-Type: application/json
Content-Length: 305
{
  "access_token": "0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw",
  "token_type": "Bearer",
  "expires_in": 3599,
  "user": {
    "id": "session:22:10",
    "user": {
      "name": "system",
      "id": "user_profile:1:10",
      "serial": "USR1B62094C40626440"
    },
    "account": {
      "name": "system",
      "id": "account:1:10",
      "serial": "ACT0762594C40626440"
    }
  }
}

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

Name Type Description
id string object id
uuid uuid object uuid
ctime integer authorization create time
Range: 0 <= value
mtime integer authorization last modified time
Range: 0 <= value
serial string authorization serial number
xref string arbitrary string reference
notes nullable string user assigned notes
account_id string no documentation
user_id string no documentation
fingerprint nullable string client-side differentiator to permit multiple authorizations per application/user
enabled boolean authorization is enabled
default: true
app_id nullable string associated client application (null = no/unspecified application)
scope nullable string authorization scope (null maps to referenced user permissions)
access_type string authorization access type (offline access includes a refresh token)
default: "online"
one of:"online" or "offline"
lifetime nullable integer access token lifetime, in seconds since created_at (null = eternal)
restrict string how to restrict user-profile permissions when calculating effective perms
one of:"none" or "auth"
enforce_two_factor boolean enforce user two-factor auth (if configured)
created_at string authorization create time
updated_at string authorization last updated time
expires_in nullable integer authorization time remaining
access_token_digest string base64-encoded SHA256 digest of access token
access_token_suffix string access token suffix
refresh_token_digest nullable string base64-encoded SHA256 digest of refresh token (for offline token refresh)
permissions nullable object user permissions
permissions:realm:rights:can_switch_user boolean can SU to lower level user
permissions:realm:rights:manage_node_membership boolean accept or delete nodes from the management network
permissions:realm:rights:manage_accounts boolean can create or delete other accounts, users and their settings
permissions:realm:rights:view_logs boolean view administrative logs
permissions:realm:rights:run_admin_tasks boolean run realm administrative tasks
permissions:realm:rights:run_tests boolean run realm administrative tests
permissions:node:all_realm_scope boolean apply to all nodes in the realm
default: true
permissions:node:nodes array scope permissions to specific nodes
permissions:node:rights:manage_storage boolean configure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networks boolean configure networks
permissions:node:rights:provision_vss boolean manually provision virtual storage services
permissions:node:rights:remove_vss boolean remove virtual storage services
permissions:vss:all_account_scope boolean apply to all virtual storage services in the account
default: true
permissions:vss:vsses array limit scope to specified vsses
permissions:vss:rights:dismiss_tasks boolean dismiss tasks
permissions:vss:rights:update_vss boolean update vss configuration
permissions:vss:rights:remove_vss boolean remove vss
permissions:vss:rights:set_vss_quota boolean set vss quota
permissions:vss:rights:manage_internal_disks boolean manage internal disks
permissions:vss:rights:manage_external_disks boolean manage external disks
permissions:vss:rights:manage_removable_disks boolean manage removable disks
permissions:vss:rights:manage_disk_cryptography boolean manage disk cryptography
permissions:vss:rights:remove_locked_disks boolean remove locked disks
permissions:vss:rights:validate_data_integrity boolean validate data integrity
permissions:vss:rights:manage_targets boolean manage targets
permissions:vss:rights:manage_profiles boolean manage profiles
permissions:vss:rights:manage_secure_access_tokens boolean manage secure access tokens
permissions:vss:rights:manage_rules boolean manage rules
permissions:vss:rights:replicate_disks boolean replicate disks
permissions:vss:rights:synchronize_disks boolean synchronize disks
permissions:vss:rights:format_disks boolean format disks
permissions:vss:rights:resize_disks boolean resize disks
permissions:vss:rights:manage_snapshots boolean manage snapshots
permissions:vss:rights:backup_disks boolean backup disks
permissions:vss:rights:replicate_and_synchronize_disks boolean replicate and synchronize disks (DEPRECATED)
permissions:user:rights:manage_users boolean create or delete users in an account
permissions:user:rights:modify_user_contact_settings boolean modify user contact info
permissions:user:rights:reset_user_password boolean reset user password
permissions:user:rights:reset_user_two_factor boolean reset two factor authentication
permissions:user:rights:manage_authorizations boolean create or delete persistent authorizations
permissions:account:rights:modify_contact_settings boolean modify account contact settings
permissions:account:rights:view_events boolean view events
permissions:account:rights:view_statistics boolean view statistics
permissions:account:rights:manage_global_profiles boolean manage global profiles
permissions:account:rights:manage_global_secure_access_tokens boolean manage global secure access tokens
permissions:account:rights:query_catalog boolean query product catalog
permissions:account:rights:provision_vss boolean provision vss from catalog
permissions:account:rights:manage_obj_stores boolean manage obj stores
permissions:account:rights:read_object_storage boolean read from object storage
permissions:account:rights:write_object_storage boolean write to object storage
permissions:account:rights:delete_object_storage boolean delete from object storage
effective_scope nullable string authorization effective scope

Authorization Info

Retrieve existing authorizations.

GET /authorization/{authz_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/authorization/authz:7:10 \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:37 GMT
Server: Goliath
ETag: "54782a2db86dd6c59ccd26e59ed5b522"
Content-Type: application/json
Content-Length: 2577
{
  "id": "authz:7:10",
  "serial": "ATH4762094C40626420",
  "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-04-24T17:02:37.545+00:00",
  "updated_at": "2017-04-24T17:02:37.545+00:00",
  "expires_in": null,
  "access_token_digest": "p9kku5ycVvoGP6S7iUBybGwW0C/3ryjSfMNr9JpSKBs",
  "access_token_suffix": "XGvYUOJQ",
  "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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:37 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 10627
[
  {
    "id": "authz:4:10",
    "serial": "ATH4762894C40626410",
    "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-04-24T16:32:36.520+00:00",
    "updated_at": "2017-04-24T16:32:36.520+00:00",
    "expires_in": null,
    "access_token_digest": "GZK6xbWMPP4QmZDug+nLxSMuaxjG0ckDsKKCOX2KBqI",
    "access_token_suffix": "Fz2hEtmg",
    "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": "ATH4762094C40626400",
    "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-04-24T16:52:22.202+00:00",
    "updated_at": "2017-04-24T16:52:22.667+00:00",
    "expires_in": null,
    "access_token_digest": "HT9dJ+V3E+xri090we+/cbeR8dEpQ9eCKWnsDp9Durc",
    "access_token_suffix": "+Rs7GQbg",
    "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": "ATH4762194C40626440",
    "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-04-24T15:04:10.320+00:00",
    "updated_at": "2017-04-24T15:04:10.320+00:00",
    "expires_in": null,
    "access_token_digest": "9xONLhTnqBI++xQPuuepgyh2GPfnen7xOvTTlM+a91o",
    "access_token_suffix": "QnCiXsfQ",
    "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:7:10",
    "serial": "ATH4762094C40626420",
    "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-04-24T17:02:37.545+00:00",
    "updated_at": "2017-04-24T17:02:37.545+00:00",
    "expires_in": null,
    "access_token_digest": "p9kku5ycVvoGP6S7iUBybGwW0C/3ryjSfMNr9JpSKBs",
    "access_token_suffix": "XGvYUOJQ",
    "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

Name Type Description
fingerprint nullable string client-side differentiator to permit multiple authorizations per application/user
app_id nullable string associated client application (null = no/unspecified application)
notes nullable string user assigned notes
scope nullable string authorization scope (null maps to referenced user permissions)
enabled boolean authorization is enabled
default: true
access_type string authorization access type (offline access includes a refresh token)
default: "online"
one of:"online" or "offline"
restrict string specify how the user permissions are mapped/filtered
default: "auth"
one of:"none" or "auth"
permissions:realm:rights:can_switch_user boolean can SU to lower level user
permissions:realm:rights:manage_node_membership boolean accept or delete nodes from the management network
permissions:realm:rights:manage_accounts boolean can create or delete other accounts, users and their settings
permissions:realm:rights:view_logs boolean view administrative logs
permissions:realm:rights:run_admin_tasks boolean run realm administrative tasks
permissions:realm:rights:run_tests boolean run realm administrative tests
permissions:node:all_realm_scope boolean apply to all nodes in the realm
default: true
permissions:node:nodes array scope permissions to specific nodes
permissions:node:rights:manage_storage boolean configure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networks boolean configure networks
permissions:node:rights:provision_vss boolean manually provision virtual storage services
permissions:node:rights:remove_vss boolean remove virtual storage services
permissions:vss:all_account_scope boolean apply to all virtual storage services in the account
default: true
permissions:vss:vsses array limit scope to specified vsses
permissions:vss:rights:dismiss_tasks boolean dismiss tasks
permissions:vss:rights:update_vss boolean update vss configuration
permissions:vss:rights:remove_vss boolean remove vss
permissions:vss:rights:set_vss_quota boolean set vss quota
permissions:vss:rights:manage_internal_disks boolean manage internal disks
permissions:vss:rights:manage_external_disks boolean manage external disks
permissions:vss:rights:manage_removable_disks boolean manage removable disks
permissions:vss:rights:manage_disk_cryptography boolean manage disk cryptography
permissions:vss:rights:remove_locked_disks boolean remove locked disks
permissions:vss:rights:validate_data_integrity boolean validate data integrity
permissions:vss:rights:manage_targets boolean manage targets
permissions:vss:rights:manage_profiles boolean manage profiles
permissions:vss:rights:manage_secure_access_tokens boolean manage secure access tokens
permissions:vss:rights:manage_rules boolean manage rules
permissions:vss:rights:replicate_disks boolean replicate disks
permissions:vss:rights:synchronize_disks boolean synchronize disks
permissions:vss:rights:format_disks boolean format disks
permissions:vss:rights:resize_disks boolean resize disks
permissions:vss:rights:manage_snapshots boolean manage snapshots
permissions:vss:rights:backup_disks boolean backup disks
permissions:vss:rights:replicate_and_synchronize_disks boolean replicate and synchronize disks (DEPRECATED)
permissions:user:rights:manage_users boolean create or delete users in an account
permissions:user:rights:modify_user_contact_settings boolean modify user contact info
permissions:user:rights:reset_user_password boolean reset user password
permissions:user:rights:reset_user_two_factor boolean reset two factor authentication
permissions:user:rights:manage_authorizations boolean create or delete persistent authorizations
permissions:account:rights:modify_contact_settings boolean modify account contact settings
permissions:account:rights:view_events boolean view events
permissions:account:rights:view_statistics boolean view statistics
permissions:account:rights:manage_global_profiles boolean manage global profiles
permissions:account:rights:manage_global_secure_access_tokens boolean manage global secure access tokens
permissions:account:rights:query_catalog boolean query product catalog
permissions:account:rights:provision_vss boolean provision vss from catalog
permissions:account:rights:manage_obj_stores boolean manage obj stores
permissions:account:rights:read_object_storage boolean read from object storage
permissions:account:rights:write_object_storage boolean write to object storage
permissions:account:rights:delete_object_storage boolean delete from object storage
uuid uuid object UUID
xref string arbitrary string reference
enforce_two_factor boolean enforce user two-factor auth (if configured)

Curl Example

$ curl -X POST https://mgmt-node/api/authorization \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:37 GMT
Server: Goliath
Cache-Control: no-store
Pragma: no-cache
Content-Type: application/json
Content-Length: 2672
{
  "id": "authz:7:10",
  "serial": "ATH4762094C40626420",
  "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-04-24T17:02:37.545+00:00",
  "updated_at": "2017-04-24T17:02:37.545+00:00",
  "expires_in": null,
  "access_token_digest": "p9kku5ycVvoGP6S7iUBybGwW0C/3ryjSfMNr9JpSKBs",
  "access_token_suffix": "XGvYUOJQ",
  "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/pU11xr2FBGSKSf9CksSQEPQwwho9PeNXvjHUgcNSJ1XVTXXGvYUOJQ",
  "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:6:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56:39 GMT
Server: Goliath

Authorization Update

Change a persistent API authorization token.

PATCH /authorization/{authz_id_or_serial}

Optional Parameters

Name Type Description
enabled boolean authorization is enabled
default: true
notes nullable string user assigned notes
scope nullable string authorization scope (null maps to referenced user permissions)
permissions:realm:rights:can_switch_user boolean can SU to lower level user
permissions:realm:rights:manage_node_membership boolean accept or delete nodes from the management network
permissions:realm:rights:manage_accounts boolean can create or delete other accounts, users and their settings
permissions:realm:rights:view_logs boolean view administrative logs
permissions:realm:rights:run_admin_tasks boolean run realm administrative tasks
permissions:realm:rights:run_tests boolean run realm administrative tests
permissions:node:all_realm_scope boolean apply to all nodes in the realm
default: true
permissions:node:nodes array scope permissions to specific nodes
permissions:node:rights:manage_storage boolean configure OS devices, iSCSI devices, and system datastores
permissions:node:rights:manage_networks boolean configure networks
permissions:node:rights:provision_vss boolean manually provision virtual storage services
permissions:node:rights:remove_vss boolean remove virtual storage services
permissions:vss:all_account_scope boolean apply to all virtual storage services in the account
default: true
permissions:vss:vsses array limit scope to specified vsses
permissions:vss:rights:dismiss_tasks boolean dismiss tasks
permissions:vss:rights:update_vss boolean update vss configuration
permissions:vss:rights:remove_vss boolean remove vss
permissions:vss:rights:set_vss_quota boolean set vss quota
permissions:vss:rights:manage_internal_disks boolean manage internal disks
permissions:vss:rights:manage_external_disks boolean manage external disks
permissions:vss:rights:manage_removable_disks boolean manage removable disks
permissions:vss:rights:manage_disk_cryptography boolean manage disk cryptography
permissions:vss:rights:remove_locked_disks boolean remove locked disks
permissions:vss:rights:validate_data_integrity boolean validate data integrity
permissions:vss:rights:manage_targets boolean manage targets
permissions:vss:rights:manage_profiles boolean manage profiles
permissions:vss:rights:manage_secure_access_tokens boolean manage secure access tokens
permissions:vss:rights:manage_rules boolean manage rules
permissions:vss:rights:replicate_disks boolean replicate disks
permissions:vss:rights:synchronize_disks boolean synchronize disks
permissions:vss:rights:format_disks boolean format disks
permissions:vss:rights:resize_disks boolean resize disks
permissions:vss:rights:manage_snapshots boolean manage snapshots
permissions:vss:rights:backup_disks boolean backup disks
permissions:vss:rights:replicate_and_synchronize_disks boolean replicate and synchronize disks (DEPRECATED)
permissions:user:rights:manage_users boolean create or delete users in an account
permissions:user:rights:modify_user_contact_settings boolean modify user contact info
permissions:user:rights:reset_user_password boolean reset user password
permissions:user:rights:reset_user_two_factor boolean reset two factor authentication
permissions:user:rights:manage_authorizations boolean create or delete persistent authorizations
permissions:account:rights:modify_contact_settings boolean modify account contact settings
permissions:account:rights:view_events boolean view events
permissions:account:rights:view_statistics boolean view statistics
permissions:account:rights:manage_global_profiles boolean manage global profiles
permissions:account:rights:manage_global_secure_access_tokens boolean manage global secure access tokens
permissions:account:rights:query_catalog boolean query product catalog
permissions:account:rights:provision_vss boolean provision vss from catalog
permissions:account:rights:manage_obj_stores boolean manage obj stores
permissions:account:rights:read_object_storage boolean read from object storage
permissions:account:rights:write_object_storage boolean write to object storage
permissions:account:rights:delete_object_storage boolean delete from object storage
enforce_two_factor boolean enforce user two-factor auth (if configured)

Curl Example

$ curl -X PATCH https://mgmt-node/api/authorization/authz:7:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "enabled": false,
  "notes": "authz updated to be disabled"
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:38 GMT
Server: Goliath
ETag: "281aa27337d90522a176cf994590fc77"
Content-Type: application/json
Content-Length: 2604
{
  "id": "authz:7:10",
  "serial": "ATH4762094C40626420",
  "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-04-24T17:02:37.545+00:00",
  "updated_at": "2017-04-24T17:02:37.999+00:00",
  "expires_in": null,
  "access_token_digest": "p9kku5ycVvoGP6S7iUBybGwW0C/3ryjSfMNr9JpSKBs",
  "access_token_suffix": "XGvYUOJQ",
  "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

Name Type Description
id string object id
uuid uuid object uuid
label string user assigned label
serial string node serial number
install_token string generated installation token
install_mode string installation mode
activation_code string generated activation code
activation_state string activation state
license:type string license type
one of:"none" or "development" or "evaluation" or "production"
license:minutes_remaining integer license minutes remaining
license:token string license token
eula:accepted boolean end user license accepted
eula:accepted_at nullable integer end user license accepted at (time)
Range: 0 <= value
registration:allow boolean allow registrations for this node
notes nullable string user assigned notes
ctime integer node create time
Range: 0 <= value
mtime integer node last modified time
Range: 0 <= value
site_id string site node is located in
type string node type
one of:"management" or "storage" or "disk"
ip nullable object node ip address for management
ip:pub_addr ipv4 public address of service target interface
ip:pub_desc string public address description
ip:prv_addr ipv4 private address of system interface
ip:prv_desc string private address description
infra:last_archived nullable integer time infrastructure configuration was last archived
Range: 0 <= value
management:ca string no documentation
one of:"none" or "embedded"
management:hostname string no documentation
openstack_idp:id nullable string no documentation
openstack_idp:uuid nullable uuid no documentation
openstack_idp:label string no documentation
openstack_idp:type string identity provider type
one of:"internal" or "openstack"
openstack_idp:enabled boolean identity provider enabled
openstack_idp:url nullable string idP API endpoint
openstack_idp:auth:user:id nullable string look up user by idp-specific index
openstack_idp:auth:user:name nullable string look up user by name/login
openstack_idp:auth:user:password nullable string authenticate using supplied password
openstack_idp:auth:project:id nullable string look up project by idp-specific index
openstack_idp:auth:project:name nullable string look up project by name
openstack_idp:auth:domain:id nullable string look up domain by idp-specific index
openstack_idp:auth:domain:name nullable string look up domain by name
openstack_idp:auto_create_account boolean automatically create mapped accounts
openstack_idp:auto_create_user boolean automatically create mapped users
openstack_idp:accepted_roles array accepted roles
openstack_idp:recheck_interval nullable integer time after which a token must be re-validated (in seconds)
params:scheduling_algorithms/type string scheduling algorithm type
one of:"ideal_usage"
params:scheduling_algorithms/label nullable string no documentation
params:scheduling_algorithms/ideal_usage_pct nullable string no documentation
params:scheduling_algorithms/min_usage_pct nullable string no documentation
params:scheduling_algorithms/capacity_weight_pct nullable string no documentation
params:scheduling_algorithms/iops_weight_pct nullable string no documentation
params:scheduling_algorithms/default nullable string no documentation
params:service_templates/type string service type name
params:service_templates/description string service type description
params:service_templates/default boolean default template
params:service_templates/tags:include array include array
params:service_templates/tags:exclude array exclude array
params:service_templates/size:reserve_min nullable integer minimum size reserve
params:service_templates/size:reserve_max nullable integer maximum size reserve
params:service_templates/size:limit_percent nullable integer Set 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:ratio nullable integer baseline IOPS ratio, specified as a ratio of IOPS to reserved size (in IOPS/GiB)
params:service_templates/iops:burst nullable integer IOPS burst limit (in IOPS)
params:service_templates/iops:burst_credit nullable integer maximum burst credits (in IOPS credits); not supported with provisioned IOPS
params:service_templates/iops:min nullable integer minimum IOPS
params:service_templates/iops:max nullable integer maximum IOPS
params:service_templates/piops:type string how provisioned IOPS are specified
one of:"disabled" or "admin-fixed" or "capacity-scaled" or "user-specified"
params:service_templates/piops:value nullable integer fixed IOPS value
Range: 1 <= value
params:service_templates/piops:ratio nullable integer baseline provisioned IOPS ratio, specified as a ratio of IOPS to reserved size (in IOPS/GiB)
params:service_templates/piops:min nullable integer minimum provisioned IOPS
params:service_templates/piops:max nullable integer maximum provisioned IOPS
params:account_templates/provisioning:size_reserve_max nullable integer maximum size reserve of a single virtual storage service
params:account_templates/provisioning:iops_reserve_max nullable integer maximum iops reserve of a single virtual storage service
params:account_templates/provisioning:tags_include array tags included
params:account_templates/provisioning:tags_exclude array tags excluded
params:account_templates/provisioning:tags_permit nullable array tags permitted
params:account_templates/provisioning:tags_permit nullable array tags permitted
params:account_templates/limits:vss_num nullable integer number of virtual storage services
params:account_templates/limits:size_reserve_total nullable integer maximum size of storage
params:account_templates/permissions:realm:rights:can_switch_user boolean can SU to lower level user
params:account_templates/permissions:realm:rights:manage_node_membership boolean accept or delete nodes from the management network
params:account_templates/permissions:realm:rights:manage_accounts boolean can create or delete other accounts, users and their settings
params:account_templates/permissions:realm:rights:view_logs boolean view administrative logs
params:account_templates/permissions:realm:rights:run_admin_tasks boolean run realm administrative tasks
params:account_templates/permissions:realm:rights:run_tests boolean run realm administrative tests
params:account_templates/permissions:node:all_realm_scope boolean apply to all nodes in the realm
params:account_templates/permissions:node:nodes array scope permissions to specific nodes
params:account_templates/permissions:node:rights:manage_storage boolean configure OS devices, iSCSI devices, and system datastores
params:account_templates/permissions:node:rights:manage_networks boolean configure networks
params:account_templates/permissions:node:rights:provision_vss boolean manually provision virtual storage services
params:account_templates/permissions:node:rights:remove_vss boolean remove virtual storage services
params:account_templates/permissions:vss:all_account_scope boolean apply to all virtual storage services in the account
params:account_templates/permissions:vss:vsses array limit scope to specified vsses
params:account_templates/permissions:vss:rights:dismiss_tasks boolean dismiss tasks
params:account_templates/permissions:vss:rights:update_vss boolean update vss configuration
params:account_templates/permissions:vss:rights:remove_vss boolean remove vss
params:account_templates/permissions:vss:rights:set_vss_quota boolean set vss quota
params:account_templates/permissions:vss:rights:manage_internal_disks boolean manage internal disks
params:account_templates/permissions:vss:rights:manage_external_disks boolean manage external disks
params:account_templates/permissions:vss:rights:manage_removable_disks boolean manage removable disks
params:account_templates/permissions:vss:rights:manage_disk_cryptography boolean manage disk cryptography
params:account_templates/permissions:vss:rights:remove_locked_disks boolean remove locked disks
params:account_templates/permissions:vss:rights:replicate_and_synchronize_disks boolean replicate and synchronize disks
params:account_templates/permissions:vss:rights:validate_data_integrity boolean validate data integrity
params:account_templates/permissions:vss:rights:manage_targets boolean manage targets
params:account_templates/permissions:vss:rights:manage_profiles boolean manage profiles
params:account_templates/permissions:vss:rights:manage_secure_access_tokens boolean manage secure access tokens
params:account_templates/permissions:vss:rights:manage_rules boolean manage rules
params:account_templates/permissions:vss:rights:replicate_disks boolean replicate disks
params:account_templates/permissions:vss:rights:synchronize_disks boolean synchronize disks
params:account_templates/permissions:vss:rights:format_disks boolean format disks
params:account_templates/permissions:vss:rights:resize_disks boolean resize disks
params:account_templates/permissions:vss:rights:backup_disks boolean backup disks
params:account_templates/permissions:vss:rights:manage_snapshots boolean manage snapshots
params:account_templates/permissions:user:rights:manage_users boolean create or delete users in an account
params:account_templates/permissions:user:rights:modify_user_contact_settings boolean modify user contact info
params:account_templates/permissions:user:rights:reset_user_password boolean reset user password
params:account_templates/permissions:user:rights:reset_user_two_factor boolean reset two factor authentication
params:account_templates/permissions:user:rights:manage_authorizations boolean create or delete persistent authorizations
params:account_templates/permissions:account:rights:modify_contact_settings boolean modify account contact settings
params:account_templates/permissions:account:rights:view_events boolean view events
params:account_templates/permissions:account:rights:view_statistics boolean view statistics
params:account_templates/permissions:account:rights:manage_global_profiles boolean manage global profiles
params:account_templates/permissions:account:rights:manage_global_secure_access_tokens boolean manage global secure access tokens
params:account_templates/permissions:account:rights:query_catalog boolean query product catalog
params:account_templates/permissions:account:rights:provision_vss boolean provision vss from catalog
params:account_templates/permissions:account:rights:manage_obj_stores boolean manage object stores
params:account_templates/permissions:account:rights:read_object_storage boolean read from object storage
params:account_templates/permissions:account:rights:write_object_storage boolean write to object storage
params:account_templates/permissions:account:rights:delete_object_storage boolean delete from object storage
params:account_templates/type string account template name
params:account_templates/description string account template description
params:account_templates/default boolean default template
status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detail nullable string status detail
isotime nullable date-time local time on node
humantime nullable string human-readable time on node
build_version nullable string version of software running on node
build_time nullable string time and date that node software was built
version nullable object build version
version:hash string build hash
version:minor integer build minor version
version:major integer build major version
version:timestamp integer build timestamp
version:patch integer build patch version
version:tag string build tag
version:release string build release
cpu_processors nullable integer number of processors on node
cpu_model nullable integer vendor and model of first CPU on node
mem_total nullable integer system memory on node
sn:data_cache_size nullable integer size of storage node data cache
sn:meta_cache_size_limit nullable integer limit on total memory that may be reserved for metadata caching
sn:max_data_log_size nullable integer maximum data log size that may be created
sn:max_meta_cache_size nullable integer maximum metadata cache size that may be specified
sn:usage:vdisk_int nullable integer internal virtual disks on node
sn:usage:rules nullable integer rules on node
sn:usage:vss nullable integer virtual storage services on node
sn:usage:targets nullable integer targets on node
sn:usage:removable nullable integer removable virtual disks on node
sn:usage:sds nullable integer datastores on node
sn:usage:clones nullable integer cloned disks on node
sn:usage:iscsi_dev nullable integer iSCSI devices on node
sn:usage:snapshots nullable integer snapshots on node
sn:usage:repl_slaves nullable integer replication slave virtual disks on node
sn:usage:vdisk_int_cap_mb nullable integer sum of internal virtual disk capacities in megabytes
sn:usage:conn_secure nullable integer secure iSCSI session connections to node targets
sn:usage:conn_insecure nullable integer insecure iSCSI session connections to node targets
sn:usage:vdisk_ext nullable integer external virtual disks on node
sn:usage:os_dev nullable integer OS devices on node
sn:usage:sessions nullable integer iSCSI sessions connected to node targets
sn:usage:accounts nullable integer accounts on node
sn:usage:profiles nullable integer initiator profiles on node
sn:usage:repl_masters nullable integer replication master virtual disks on node
sn:usage:vss_max nullable integer maximum number of virtual storage services on the node
sn:usage:session_max nullable integer maximum number of iSCSI sessions on the node
sn:usage:target_max nullable integer maximum number of iSCSI targets on the node
sn:usage:vdisk_max nullable integer maximum number of virtual disks on the node
sn:usage:os_dev_max nullable integer maximum number of configurable os devices on the node
sn:usage:profile_max nullable integer maximum number of initiator profiles on the node
sn:usage:rule_max nullable integer maximum number of rules on the node
restore:start_time nullable integer node restore start time
Range: 0 <= value
restore:end_time nullable integer node restore end time (success or failure)
Range: 0 <= value
restore:state nullable string node restore job state
one of:"starting" or "running" or "success" or "failed"
restore:errors nullable integer count of errors during node restore, see event log for details
restore:phase nullable string description of current node restore phase
restore:failure nullable string on node restore failure, description of reason
cluster:reports/id string name of cluster member that generated this report
cluster:reports/members/active nullable boolean cluster member is actively hosting services
cluster:reports/members/cluster_ip nullable ipv4 cluster network address of member
cluster:reports/members/role nullable string cluster member role
one of:"active" or "passive" or "vote"
cluster:reports/members/failover nullable boolean this cluster member is passive and ready for accept failover
cluster:reports/members/status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
cluster:reports/members/status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
cluster:reports/members/status:detail nullable string status detail
cluster:reports/members/status_ip nullable ipv4 address of cluster member from which it reports status
cluster:reports/members/id string cluster member name
cluster:reports/members/state nullable string cluster member state
one of:"dirty" or "standby" or "maintenance" or "clean" or "offline"
cluster:reports/members/online nullable boolean cluster member is online
cluster:reports/failover nullable string cluster member failover capability
one of:"available" or "unavailable"
cluster:reports/status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
cluster:reports/status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
cluster:reports/status:detail nullable string status detail
cluster:members/active nullable boolean cluster member is actively hosting services
cluster:members/cluster_ip nullable ipv4 cluster network address of member
cluster:members/role nullable string cluster member role
one of:"active" or "passive" or "vote"
cluster:members/failover nullable boolean this cluster member is passive and ready for accept failover
cluster:members/status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
cluster:members/status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
cluster:members/status:detail nullable string status detail
cluster:members/status_ip nullable ipv4 address of cluster member from which it reports status
cluster:members/id string cluster member name
cluster:members/state nullable string cluster member state
one of:"dirty" or "standby" or "maintenance" or "clean" or "offline"
cluster:members/online nullable boolean cluster member is online
cluster:failover nullable string cluster failover capability
one of:"available" or "unavailable"
cluster:status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
cluster:status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
cluster:status:detail nullable string status detail
cluster:is_cluster nullable boolean node 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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:33 GMT
Server: Goliath
ETag: "828cfe3cddad73576b7fc62d708a7eb1"
Content-Type: application/json
Content-Length: 2225
{
  "id": "node:10000",
  "uuid": "92fcf6e7-58e7-4131-a212-b5cc9f69260d",
  "serial": "NOD0F68894C40601550",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493046250242,
  "mtime": 1493052950631,
  "seq": 1493053350510,
  "label": "node101",
  "notes": "node updated to 101",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053350000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            246,
            278,
            278,
            278
          ],
          "v": "dbg"
        },
        {
          "d": [
            127,
            145,
            145,
            145
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1493053350510
  },
  "rec_status": null,
  "site_id": "site:10",
  "type": [
    "storage"
  ],
  "license": {
    "type": [
      "evaluation"
    ],
    "minutes_remaining": 43132,
    "token": "ef43004a2a6f729b8f53fc1dc849fb2b"
  },
  "activation_code": null,
  "activation_state": "activated",
  "install_mode": "solo",
  "install_token": "WyJpMiIsIm1hc3Rlci1ob28yd29vMWFlcGhlaTZjIiwic3MiLCJodHRwOlwvXC9kaXN0XC9yZWxlYXNlXC9yZWxlYXNlc1wvbWFzdGVyXC8zOTczLjRcLyIsMjQzODc0NTEzNF0=",
  "ip": {
    "pub_addr": "127.0.0.1",
    "prv_addr": "127.0.0.1"
  },
  "build_time": "Wed Apr 19 18:12 UTC 2017",
  "build_version": "3.1.1-3973.4",
  "cpu_model": "Intel Core Processor (Haswell)",
  "cpu_processors": 1,
  "mem_total": 1929072640,
  "humantime": "Mon Apr 24 17:02 UTC 2017",
  "isotime": "2017-04-24T17:02+00:00",
  "version": {
    "major": 3,
    "minor": 1,
    "patch": 1,
    "release": "3973.4",
    "tag": "",
    "hash": "124a0ae3faae6c1034b8da9fd488646b7246d106",
    "timestamp": 1492625532000
  },
  "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": 7,
      "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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:32 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 6847
[
  {
    "id": "node:10000",
    "uuid": "92fcf6e7-58e7-4131-a212-b5cc9f69260d",
    "serial": "NOD0F68894C40601550",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": null,
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046250242,
    "mtime": 1493052950631,
    "seq": 1493053350510,
    "label": "node101",
    "notes": "node updated to 101",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493053350000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              246,
              278,
              278,
              278
            ],
            "v": "dbg"
          },
          {
            "d": [
              127,
              145,
              145,
              145
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1493053350510
    },
    "rec_status": null,
    "site_id": "site:10",
    "type": [
      "storage"
    ],
    "license": {
      "type": [
        "evaluation"
      ],
      "minutes_remaining": 43132,
      "token": "ef43004a2a6f729b8f53fc1dc849fb2b"
    },
    "activation_code": null,
    "activation_state": "activated",
    "install_mode": "solo",
    "install_token": "WyJpMiIsIm1hc3Rlci1ob28yd29vMWFlcGhlaTZjIiwic3MiLCJodHRwOlwvXC9kaXN0XC9yZWxlYXNlXC9yZWxlYXNlc1wvbWFzdGVyXC8zOTczLjRcLyIsMjQzODc0NTEzNF0=",
    "ip": {
      "pub_addr": "127.0.0.1",
      "prv_addr": "127.0.0.1"
    },
    "build_time": "Wed Apr 19 18:12 UTC 2017",
    "build_version": "3.1.1-3973.4",
    "cpu_model": "Intel Core Processor (Haswell)",
    "cpu_processors": 1,
    "mem_total": 1929072640,
    "humantime": "Mon Apr 24 17:02 UTC 2017",
    "isotime": "2017-04-24T17:02+00:00",
    "version": {
      "major": 3,
      "minor": 1,
      "patch": 1,
      "release": "3973.4",
      "tag": "",
      "hash": "124a0ae3faae6c1034b8da9fd488646b7246d106",
      "timestamp": 1492625532000
    },
    "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": 7,
        "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": "e0c65556-6277-4429-9aaf-fe9435d3a6c8",
    "serial": "NOD0F68D94C406264F0",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": null,
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046249492,
    "mtime": 1493053268503,
    "seq": 1493053268523,
    "label": "management node",
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "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": 1493046257565
    },
    "rec_status": null,
    "site_id": "site:10",
    "type": [
      "management"
    ],
    "license": {
      "type": [
        "evaluation"
      ],
      "minutes_remaining": 43132,
      "token": "ef43004a2a6f729b8f53fc1dc849fb2b"
    },
    "eula": {
      "accepted": true,
      "accepted_at": 1493052899152
    },
    "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": "0a11ad3d-46f4-41a6-9d1b-bfe74dd1aec3",
      "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": "10.10.10.157",
      "pub_addr_user_set": true,
      "prv_addr": "10.10.10.157",
      "prv_addr_user_set": true
    },
    "build_time": "Wed Apr 19 18:12 UTC 2017",
    "build_version": "3.1.1-3973.4",
    "cpu_model": null,
    "cpu_processors": null,
    "mem_total": null,
    "humantime": "Mon Apr 24 17:01 UTC 2017",
    "isotime": "2017-04-24T17:01+00:00",
    "version": {
      "major": 3,
      "minor": 1,
      "patch": 1,
      "release": "3973.4",
      "tag": "",
      "hash": "124a0ae3faae6c1034b8da9fd488646b7246d106",
      "timestamp": 1492625532000
    },
    "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

Name Type Description
site_id string site id
type string type of processing node
one of:"management" or "storage" or "disk"

Optional Parameters

Name Type Description
uuid uuid UUID to use for created object
label string user assigned label
notes string user assigned notes
license string software license bundle
mode string node clustering mode
default: "solo"
one of:"solo" or "cluster"
pub_ipaddr ipv4 node public IP address
pub_ipaddr_desc string node public IP address description
prv_ipaddr ipv4 node private IP address
prv_ipaddr_desc string node private IP address description
maintenance:mode string maintenance mode
one of:"none" or "restrict" or "rendezvous"
maintenance:restrict/type string restriction 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/set boolean restriction set
maintenance:reason string reason for restriction
params:scheduling_algorithms/type string scheduling algorithm type
one of:"ideal_usage"
params:scheduling_algorithms/label nullable string no documentation
params:scheduling_algorithms/ideal_usage_pct nullable string no documentation
params:scheduling_algorithms/min_usage_pct nullable string no documentation
params:scheduling_algorithms/capacity_weight_pct nullable string no documentation
params:scheduling_algorithms/iops_weight_pct nullable string no documentation
params:scheduling_algorithms/default nullable string no documentation
params:service_templates/type string service type name
params:service_templates/description string service type description
params:service_templates/default boolean default template
params:service_templates/tags:include array include array
params:service_templates/tags:exclude array exclude array
params:service_templates/size:reserve_min nullable integer minimum size reserve
params:service_templates/size:reserve_max nullable integer maximum size reserve
params:service_templates/size:limit_percent nullable integer Set 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:ratio nullable integer baseline IOPS ratio, specified as a ratio of IOPS to reserved size (in IOPS/GiB)
params:service_templates/iops:burst nullable integer IOPS burst limit (in IOPS)
params:service_templates/iops:burst_credit nullable integer maximum burst credits (in IOPS credits); not supported with provisioned IOPS
params:service_templates/iops:min nullable integer minimum IOPS
params:service_templates/iops:max nullable integer maximum IOPS
params:service_templates/piops:type string how provisioned IOPS are specified
default: "disabled"
one of:"disabled" or "admin-fixed" or "capacity-scaled" or "user-specified"
params:service_templates/piops:value nullable integer fixed IOPS value
Range: 1 <= value
params:service_templates/piops:ratio nullable integer baseline provisioned IOPS ratio, specified as a ratio of IOPS to reserved size (in IOPS/GiB)
params:service_templates/piops:min nullable integer minimum provisioned IOPS
params:service_templates/piops:max nullable integer maximum provisioned IOPS
cert_fingerprint string TLS certificate fingerprint
openstack_idp:id nullable string no documentation
openstack_idp:uuid nullable uuid no documentation
openstack_idp:label string no documentation
default: "openstack"
openstack_idp:type string identity provider type
default: "openstack"
one of:"internal" or "openstack"
openstack_idp:enabled boolean identity provider enabled
openstack_idp:url nullable string idP API endpoint
openstack_idp:auth:user:id nullable string look up user by idp-specific index
openstack_idp:auth:user:name nullable string look up user by name/login
default: "admin"
openstack_idp:auth:user:password nullable string authenticate using supplied password
openstack_idp:auth:project:id nullable string look up project by idp-specific index
openstack_idp:auth:project:name nullable string look up project by name
default: "admin"
openstack_idp:auth:domain:id nullable string look up domain by idp-specific index
default: "default"
openstack_idp:auth:domain:name nullable string look up domain by name
openstack_idp:auto_create_account boolean automatically create mapped accounts
default: true
openstack_idp:auto_create_user boolean automatically create mapped users
default: true
openstack_idp:accepted_roles array accepted roles
default: []
openstack_idp:recheck_interval nullable integer time after which a token must be re-validated (in seconds)
default: 60

Curl Example

$ curl -X POST https://mgmt-node/api/node \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -d \
'{
  "label": "node100",
  "site_id": "site:13",
  "type": [
    "storage"
  ]
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 16:56:40 GMT
Server: Goliath
ETag: "72426c91fa9182cacb902c8ab4dcc113"
Content-Type: application/json
Content-Length: 1875
{
  "id": "node:10002",
  "uuid": "67b1b731-0db5-4130-b200-e47b08893521",
  "serial": "NOD0F68894C40601570",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053000191,
  "mtime": 1493053000191,
  "seq": 1493053000227,
  "label": "node100",
  "notes": null,
  "status": {
    "value": "degraded",
    "indicator": "degraded",
    "detail": "node not registered"
  },
  "trashed": null,
  "ec": {
    "table": null,
    "status": "retrieving",
    "seq": 1493053000227
  },
  "rec_status": null,
  "site_id": "site:13",
  "type": [
    "storage"
  ],
  "license": {
    "type": [
      "none"
    ],
    "token": "ef43004a2a6f729b8f53fc1dc849fb2b"
  },
  "activation_code": "WyJhMSIsIjEwLjEwLjEwLjE1NyIsMjA0MDAsMTAwMDIsInN0b3JhZ2UiLCI5YTRiMjdiZGZlNjg0ZDMzY2M5MmExZTFlNGJkOTVhNiJd",
  "activation_state": "node not registered",
  "install_mode": "solo",
  "install_token": "WyJpMiIsIm1hc3Rlci1ob28yd29vMWFlcGhlaTZjIiwic3MiLCJodHRwOlwvXC9kaXN0XC9yZWxlYXNlXC9yZWxlYXNlc1wvbWFzdGVyXC8zOTczLjRcLyIsMjQzODc0NTEzNF0=",
  "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:10002 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56:41 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

Name Type Description
label string user assigned label
notes string user assigned notes
enabled boolean node enabled for use
maintenance:mode string maintenance mode
one of:"none" or "restrict" or "rendezvous"
maintenance:restrict/type string restriction 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/set boolean restriction set
maintenance:reason string reason for restriction
management:ca string no documentation
one of:"none" or "embedded"
management:hostname string no documentation
pub_ipaddr ipv4 node public IP address
pub_ipaddr_desc string node public IP address description
prv_ipaddr ipv4 node private IP address
prv_ipaddr_desc string node private IP address description
params:scheduling_algorithms/type string scheduling algorithm type
one of:"ideal_usage"
params:scheduling_algorithms/label nullable string no documentation
params:scheduling_algorithms/ideal_usage_pct nullable string no documentation
params:scheduling_algorithms/min_usage_pct nullable string no documentation
params:scheduling_algorithms/capacity_weight_pct nullable string no documentation
params:scheduling_algorithms/iops_weight_pct nullable string no documentation
params:scheduling_algorithms/default nullable string no documentation
params:service_templates/type string service type name
params:service_templates/description string service type description
params:service_templates/default boolean default template
params:service_templates/tags:include array include array
params:service_templates/tags:exclude array exclude array
params:service_templates/size:reserve_min nullable integer minimum size reserve
params:service_templates/size:reserve_max nullable integer maximum size reserve
params:service_templates/size:limit_percent nullable integer Set 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:ratio nullable integer baseline IOPS ratio, specified as a ratio of IOPS to reserved size (in IOPS/GiB)
params:service_templates/iops:burst nullable integer IOPS burst limit (in IOPS)
params:service_templates/iops:burst_credit nullable integer maximum burst credits (in IOPS credits); not supported with provisioned IOPS
params:service_templates/iops:min nullable integer minimum IOPS
params:service_templates/iops:max nullable integer maximum IOPS
params:service_templates/piops:type string how provisioned IOPS are specified
default: "disabled"
one of:"disabled" or "admin-fixed" or "capacity-scaled" or "user-specified"
params:service_templates/piops:value nullable integer fixed IOPS value
Range: 1 <= value
params:service_templates/piops:ratio nullable integer baseline provisioned IOPS ratio, specified as a ratio of IOPS to reserved size (in IOPS/GiB)
params:service_templates/piops:min nullable integer minimum provisioned IOPS
params:service_templates/piops:max nullable integer maximum provisioned IOPS
params:account_templates/type string account template name
params:account_templates/description string account template description
params:account_templates/default boolean default template
params:account_templates/provisioning:size_reserve_max nullable integer maximum size reserve of a single virtual storage service
params:account_templates/provisioning:iops_reserve_max nullable integer maximum iops reserve of a single virtual storage service
params:account_templates/provisioning:tags_include array tags included
default: []
params:account_templates/provisioning:tags_exclude array tags excluded
default: []
params:account_templates/provisioning:tags_permit nullable array tags permitted
params:account_templates/provisioning:tags_permit nullable array tags permitted
params:account_templates/limits:vss_num nullable integer number of virtual storage services
params:account_templates/limits:size_reserve_total nullable integer maximum size of storage
params:account_templates/permissions:realm:rights:can_switch_user boolean can SU to lower level user
params:account_templates/permissions:realm:rights:manage_node_membership boolean accept or delete nodes from the management network
params:account_templates/permissions:realm:rights:manage_accounts boolean can create or delete other accounts, users and their settings
params:account_templates/permissions:realm:rights:view_logs boolean view administrative logs
params:account_templates/permissions:realm:rights:run_admin_tasks boolean run realm administrative tasks
params:account_templates/permissions:realm:rights:run_tests boolean run realm administrative tests
params:account_templates/permissions:node:all_realm_scope boolean apply to all nodes in the realm
default: true
params:account_templates/permissions:node:nodes array scope permissions to specific nodes
params:account_templates/permissions:node:rights:manage_storage boolean configure OS devices, iSCSI devices, and system datastores
params:account_templates/permissions:node:rights:manage_networks boolean configure networks
params:account_templates/permissions:node:rights:provision_vss boolean manually provision virtual storage services
params:account_templates/permissions:node:rights:remove_vss boolean remove virtual storage services
params:account_templates/permissions:vss:all_account_scope boolean apply to all virtual storage services in the account
default: true
params:account_templates/permissions:vss:vsses array limit scope to specified vsses
params:account_templates/permissions:vss:rights:dismiss_tasks boolean dismiss tasks
params:account_templates/permissions:vss:rights:update_vss boolean update vss configuration
params:account_templates/permissions:vss:rights:remove_vss boolean remove vss
params:account_templates/permissions:vss:rights:set_vss_quota boolean set vss quota
params:account_templates/permissions:vss:rights:manage_internal_disks boolean manage internal disks
params:account_templates/permissions:vss:rights:manage_external_disks boolean manage external disks
params:account_templates/permissions:vss:rights:manage_removable_disks boolean manage removable disks
params:account_templates/permissions:vss:rights:manage_disk_cryptography boolean manage disk cryptography
params:account_templates/permissions:vss:rights:remove_locked_disks boolean remove locked disks
params:account_templates/permissions:vss:rights:replicate_and_synchronize_disks boolean replicate and synchronize disks
params:account_templates/permissions:vss:rights:validate_data_integrity boolean validate data integrity
params:account_templates/permissions:vss:rights:manage_targets boolean manage targets
params:account_templates/permissions:vss:rights:manage_profiles boolean manage profiles
params:account_templates/permissions:vss:rights:manage_secure_access_tokens boolean manage secure access tokens
params:account_templates/permissions:vss:rights:manage_rules boolean manage rules
params:account_templates/permissions:vss:rights:replicate_disks boolean replicate disks
params:account_templates/permissions:vss:rights:synchronize_disks boolean synchronize disks
params:account_templates/permissions:vss:rights:format_disks boolean format disks
params:account_templates/permissions:vss:rights:resize_disks boolean resize disks
params:account_templates/permissions:vss:rights:backup_disks boolean backup disks
params:account_templates/permissions:vss:rights:manage_snapshots boolean manage snapshots
params:account_templates/permissions:user:rights:manage_users boolean create or delete users in an account
params:account_templates/permissions:user:rights:modify_user_contact_settings boolean modify user contact info
params:account_templates/permissions:user:rights:reset_user_password boolean reset user password
params:account_templates/permissions:user:rights:reset_user_two_factor boolean reset two factor authentication
params:account_templates/permissions:user:rights:manage_authorizations boolean create or delete persistent authorizations
params:account_templates/permissions:account:rights:modify_contact_settings boolean modify account contact settings
params:account_templates/permissions:account:rights:view_events boolean view events
params:account_templates/permissions:account:rights:view_statistics boolean view statistics
params:account_templates/permissions:account:rights:manage_global_profiles boolean manage global profiles
params:account_templates/permissions:account:rights:manage_global_secure_access_tokens boolean manage global secure access tokens
params:account_templates/permissions:account:rights:query_catalog boolean query product catalog
params:account_templates/permissions:account:rights:provision_vss boolean provision vss from catalog
params:account_templates/permissions:account:rights:manage_obj_stores boolean manage object stores
params:account_templates/permissions:account:rights:read_object_storage boolean read from object storage
params:account_templates/permissions:account:rights:write_object_storage boolean write to object storage
params:account_templates/permissions:account:rights:delete_object_storage boolean delete from object storage
cert_fingerprint string TLS certificate fingerprint
license string software license bundle
registration:allow boolean allow registrations for this node
openstack_idp:label string no documentation
openstack_idp:enabled boolean identity provider enabled
openstack_idp:auto_create_account boolean automatically create mapped accounts
openstack_idp:auto_create_user boolean automatically create mapped users
openstack_idp:url nullable string idP API endpoint
openstack_idp:auth:user:id nullable string look up user by idp-specific index
openstack_idp:auth:user:name nullable string look up user by name/login
openstack_idp:auth:user:password nullable string authenticate using supplied password
openstack_idp:auth:project:id nullable string look up project by idp-specific index
openstack_idp:auth:project:name nullable string look up project by name
openstack_idp:auth:domain:id nullable string look up domain by idp-specific index
openstack_idp:auth:domain:name nullable string look up domain by name
openstack_idp:accepted_roles array accepted roles
eula:accepted boolean eula accepted

Curl Example

$ curl -X PATCH https://mgmt-node/api/node/node:10000 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "label": "node101",
  "notes": "node updated to 101"
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:33 GMT
Server: Goliath
ETag: "6bac5ace9cc6e92e470216abe97e5bc5"
Content-Type: application/json
Content-Length: 2225
{
  "id": "node:10000",
  "uuid": "92fcf6e7-58e7-4131-a212-b5cc9f69260d",
  "serial": "NOD0F68894C40601550",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493046250242,
  "mtime": 1493053353384,
  "seq": 1493053353403,
  "label": "node101",
  "notes": "node updated to 101",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053350000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            246,
            278,
            278,
            278
          ],
          "v": "dbg"
        },
        {
          "d": [
            127,
            145,
            145,
            145
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1493053350510
  },
  "rec_status": null,
  "site_id": "site:10",
  "type": [
    "storage"
  ],
  "license": {
    "type": [
      "evaluation"
    ],
    "minutes_remaining": 43132,
    "token": "ef43004a2a6f729b8f53fc1dc849fb2b"
  },
  "activation_code": null,
  "activation_state": "activated",
  "install_mode": "solo",
  "install_token": "WyJpMiIsIm1hc3Rlci1ob28yd29vMWFlcGhlaTZjIiwic3MiLCJodHRwOlwvXC9kaXN0XC9yZWxlYXNlXC9yZWxlYXNlc1wvbWFzdGVyXC8zOTczLjRcLyIsMjQzODc0NTEzNF0=",
  "ip": {
    "pub_addr": "127.0.0.1",
    "prv_addr": "127.0.0.1"
  },
  "build_time": "Wed Apr 19 18:12 UTC 2017",
  "build_version": "3.1.1-3973.4",
  "cpu_model": "Intel Core Processor (Haswell)",
  "cpu_processors": 1,
  "mem_total": 1929072640,
  "humantime": "Mon Apr 24 17:02 UTC 2017",
  "isotime": "2017-04-24T17:02+00:00",
  "version": {
    "major": 3,
    "minor": 1,
    "patch": 1,
    "release": "3973.4",
    "tag": "",
    "hash": "124a0ae3faae6c1034b8da9fd488646b7246d106",
    "timestamp": 1492625532000
  },
  "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": 7,
      "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

Name Type Description
type string device type
default: "block"
one of:"block"
subsystem nullable string device subsystem
one of:"scsi" or "xen"

Curl Example

$ curl https://mgmt-node/api/node/node:10000/devices \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:32 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 5667
[
  {
    "name": "sde",
    "desc": "disk",
    "path": "/dev/sde",
    "preferred_path": "/dev/disk/by-id/wwn-0x60a010a02e3925b91962894c40616f90",
    "parent": "",
    "devlinks": [
      "/dev/bb/340581dd-00b3-4dd2-8f01-ed3db925392",
      "/dev/disk/by-id/scsi-360a010a02e3925b91962894c40616f90",
      "/dev/disk/by-id/wwn-0x60a010a02e3925b91962894c40616f90",
      "/dev/disk/by-path/ip-172.16.5.148:3260-iscsi-iqn.2009-12.com.blockbridge:t-pjvhdizuehom-hphhmcmm-lun-0"
    ],
    "syspath": "/sys/devices/platform/host6/session5/target6:0:0/6:0:0:0/block/sde",
    "type": [
      "block"
    ],
    "subsystem": "scsi",
    "driver": "sd",
    "raw_size": 107374182400,
    "properties": [
      {
        "name": "DEVLINKS",
        "value": "/dev/bb/340581dd-00b3-4dd2-8f01-ed3db925392 /dev/disk/by-id/scsi-360a010a02e3925b91962894c40616f90 /dev/disk/by-id/wwn-0x60a010a02e3925b91962894c40616f90 /dev/disk/by-path/ip-172.16.5.148:3260-iscsi-iqn.2009-12.com.blockbridge:t-pjvhdizuehom-hphhmcmm-lun-0"
      },
      {
        "name": "DEVNAME",
        "value": "/dev/sde"
      },
      {
        "name": "DEVPATH",
        "value": "/devices/platform/host6/session5/target6:0:0/6:0:0:0/block/sde"
      },
      {
        "name": "DEVTYPE",
        "value": "disk"
      },
      {
        "name": "DM_MULTIPATH_TIMESTAMP",
        "value": "1493046232"
      },
      {
        "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-pjvhdizuehom-hphhmcmm-lun-0"
      },
      {
        "name": "ID_PATH_TAG",
        "value": "ip-172_16_5_148_3260-iscsi-iqn_2009-12_com_blockbridge_t-pjvhdizuehom-hphhmcmm-lun-0"
      },
      {
        "name": "ID_REVISION",
        "value": "3.1"
      },
      {
        "name": "ID_SCSI",
        "value": "1"
      },
      {
        "name": "ID_SCSI_SERIAL",
        "value": "340581dd-00b3-4dd2-8f01-ed3db925392"
      },
      {
        "name": "ID_SERIAL",
        "value": "360a010a02e3925b91962894c40616f90"
      },
      {
        "name": "ID_SERIAL_SHORT",
        "value": "60a010a02e3925b91962894c40616f90"
      },
      {
        "name": "ID_TYPE",
        "value": "disk"
      },
      {
        "name": "ID_VENDOR",
        "value": "B_BRIDGE"
      },
      {
        "name": "ID_VENDOR_ENC",
        "value": "B\\x2aBRIDGE"
      },
      {
        "name": "ID_WWN",
        "value": "0x60a010a02e3925b9"
      },
      {
        "name": "ID_WWN_VENDOR_EXTENSION",
        "value": "0x1962894c40616f90"
      },
      {
        "name": "ID_WWN_WITH_EXTENSION",
        "value": "0x60a010a02e3925b91962894c40616f90"
      },
      {
        "name": "MAJOR",
        "value": "8"
      },
      {
        "name": "MINOR",
        "value": "64"
      },
      {
        "name": "MPATH_SBIN_PATH",
        "value": "/sbin"
      },
      {
        "name": "SUBSYSTEM",
        "value": "block"
      },
      {
        "name": "TAGS",
        "value": ":systemd:"
      },
      {
        "name": "USEC_INITIALIZED",
        "value": "5926097"
      }
    ],
    "wwn": "0x60a010a02e3925b91962894c40616f90",
    "inuse": true
  },
  {
    "name": "md126",
    "desc": "disk",
    "path": "/dev/md126",
    "preferred_path": "/dev/disk/by-id/md-name-mirror1",
    "parent": "",
    "devlinks": [
      "/dev/disk/by-id/md-name-mirror1",
      "/dev/disk/by-id/md-uuid-fdcc0e9f:a15642d7:881830f3:e14f73c5",
      "/dev/md/mirror1"
    ],
    "syspath": "/sys/devices/virtual/block/md126",
    "type": [
      "block"
    ],
    "subsystem": "",
    "driver": "",
    "raw_size": 107307073536,
    "properties": [
      {
        "name": "DEVLINKS",
        "value": "/dev/disk/by-id/md-name-mirror1 /dev/disk/by-id/md-uuid-fdcc0e9f:a15642d7:881830f3:e14f73c5 /dev/md/mirror1"
      },
      {
        "name": "DEVNAME",
        "value": "/dev/md126"
      },
      {
        "name": "DEVPATH",
        "value": "/devices/virtual/block/md126"
      },
      {
        "name": "DEVTYPE",
        "value": "disk"
      },
      {
        "name": "DM_MULTIPATH_TIMESTAMP",
        "value": "1493046232"
      },
      {
        "name": "MAJOR",
        "value": "9"
      },
      {
        "name": "MD_DEVICES",
        "value": "2"
      },
      {
        "name": "MD_DEVICE_sdc_DEV",
        "value": "/dev/sdc"
      },
      {
        "name": "MD_DEVICE_sdc_ROLE",
        "value": "0"
      },
      {
        "name": "MD_DEVICE_sdd_DEV",
        "value": "/dev/sdd"
      },
      {
        "name": "MD_DEVICE_sdd_ROLE",
        "value": "1"
      },
      {
        "name": "MD_DEVNAME",
        "value": "mirror1"
      },
      {
        "name": "MD_LEVEL",
        "value": "raid10"
      },
      {
        "name": "MD_METADATA",
        "value": "1.2"
      },
      {
        "name": "MD_NAME",
        "value": "mirror1"
      },
      {
        "name": "MD_UUID",
        "value": "fdcc0e9f:a15642d7:881830f3:e14f73c5"
      },
      {
        "name": "MINOR",
        "value": "126"
      },
      {
        "name": "MPATH_SBIN_PATH",
        "value": "/sbin"
      },
      {
        "name": "SUBSYSTEM",
        "value": "block"
      },
      {
        "name": "SYSTEMD_WANTS",
        "value": "mdmonitor.service"
      },
      {
        "name": "TAGS",
        "value": ":systemd:"
      },
      {
        "name": "USEC_INITIALIZED",
        "value": "275325118"
      }
    ],
    "inuse": true
  },
  {
    "name": "md127p6",
    "desc": "partition",
    "path": "/dev/md127p6",
    "preferred_path": "/dev/md127p6",
    "parent": "/dev/md127",
    "devlinks": [
      "/dev/disk/by-id/md-name-bb:system-array-part6",
      "/dev/disk/by-id/md-uuid-3ae96c70:32943a6c:9a4bbf07:5023c4f6-part6",
      "/dev/md/bb:system-array6"
    ],
    "syspath": "/sys/devices/virtual/block/md127/md127p6",
    "type": [
      "block"
    ],
    "subsystem": "block",
    "driver": "",
    "raw_size": 18185436672,
    "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-3ae96c70:32943a6c:9a4bbf07:5023c4f6-part6 /dev/md/bb:system-array6"
      },
      {
        "name": "DEVNAME",
        "value": "/dev/md127p6"
      },
      {
        "name": "DEVPATH",
        "value": "/devices/virtual/block/md127/md127p6"
      },
      {
        "name": "DEVTYPE",
        "value": "partition"
      },
      {
        "name": "ID_PART_ENTRY_DISK",
        "value": "9:127"
      },
      {
        "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": "35518431"
      },
      {
        "name": "ID_PART_ENTRY_TYPE",
        "value": "0fc63daf-8483-4772-8e79-3d69d8477de4"
      },
      {
        "name": "ID_PART_ENTRY_UUID",
        "value": "f8ac2c3c-a8e7-4c8c-a8ba-1c61369973b8"
      },
      {
        "name": "MAJOR",
        "value": "259"
      },
      {
        "name": "MD_DEVICES",
        "value": "2"
      },
      {
        "name": "MD_DEVICE_sda_DEV",
        "value": "/dev/sda"
      },
      {
        "name": "MD_DEVICE_sda_ROLE",
        "value": "0"
      },
      {
        "name": "MD_DEVICE_sdb_DEV",
        "value": "/dev/sdb"
      },
      {
        "name": "MD_DEVICE_sdb_ROLE",
        "value": "1"
      },
      {
        "name": "MD_DEVNAME",
        "value": "bb:system-array"
      },
      {
        "name": "MD_LEVEL",
        "value": "raid1"
      },
      {
        "name": "MD_METADATA",
        "value": "1.2"
      },
      {
        "name": "MD_NAME",
        "value": "bb:system-array"
      },
      {
        "name": "MD_UUID",
        "value": "3ae96c70:32943a6c:9a4bbf07:5023c4f6"
      },
      {
        "name": "MINOR",
        "value": "5"
      },
      {
        "name": "SUBSYSTEM",
        "value": "block"
      },
      {
        "name": "SYSTEMD_WANTS",
        "value": "mdmonitor.service"
      },
      {
        "name": "TAGS",
        "value": ":systemd:"
      },
      {
        "name": "USEC_INITIALIZED",
        "value": "4038105"
      }
    ],
    "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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:33 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 900
[
  {
    "interface": "eth0",
    "hwaddr": "FA:16:3E:51:64:69",
    "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.10.157",
        "family": "IPv4"
      },
      {
        "addr": "fe80::f816:3eff:fe51:6469%eth0",
        "family": "IPv6"
      }
    ],
    "inuse": true,
    "config": {
      "net_id": "net:4: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

Name Type Description
id string object id
uuid uuid object uuid
ctime integer site create time
Range: 0 <= value
mtime integer site last modified time
Range: 0 <= value
serial string site serial number
label string user assigned label
notes nullable string user assigned notes
location:country string ISO 3166-1 alpha-3 country code
default: ""
location:lat number latitude
default: 0
location:long number longitude
default: 0
location:city string city
default: ""
location:state string state as two-character USPS abbreviation
default: ""
zip_code string site zip code
tier string datacenter infrastructure tier
one of:"I" or "II" or "III" or "IV"
email:type string email type
one of:"none" or "smtp" or "mailgun"
email:smtp:server_ssl string SMTP server SSL/TLS
one of:"none" or "required" or "optional"
email:smtp:server_addr hostname SMTP server hostname
email:smtp:mail_from email mail from email address
email:smtp:server_username string SMTP authentication username
email:smtp:server_auth boolean SMTP authentication enabled
email:smtp:server_port integer SMTP server port
default: 587
Range: 1 <= value <= 65535
status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detail nullable string status detail

Site Info

Retrieve an existing site.

GET /site/{site_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/site/site:14 \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:35 GMT
Server: Goliath
ETag: "bde3eefd77b7c2e3f0353301ecba3f16"
Content-Type: application/json
Content-Length: 742
{
  "id": "site:14",
  "uuid": "ed2b1018-419c-4383-8542-66d76a3c5a1f",
  "serial": "SIT1468494C406264B0",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053354606,
  "mtime": 1493053354842,
  "seq": 1493053354852,
  "label": "virginia1",
  "notes": "site updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053354615
  },
  "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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:34 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1483
[
  {
    "id": "site:10",
    "uuid": "aae33912-c9d9-410b-a774-42b2f8ec5e5f",
    "serial": "SIT1468594C406264F0",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": null,
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046249486,
    "mtime": 1493046257708,
    "seq": 1493053353517,
    "label": "packet.net",
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493053353000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              2,
              10,
              10,
              10
            ],
            "v": "dbg"
          },
          {
            "d": [
              6,
              86,
              86,
              86
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1493053353517
    },
    "rec_status": null,
    "tier": "IV",
    "location": {
      "country": "USA",
      "lat": 40,
      "long": -43,
      "city": "Newark",
      "state": "NJ"
    },
    "email": {
      "type": [
        "none"
      ]
    }
  },
  {
    "id": "site:14",
    "uuid": "ed2b1018-419c-4383-8542-66d76a3c5a1f",
    "serial": "SIT1468494C406264B0",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": null,
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493053354606,
    "mtime": 1493053354842,
    "seq": 1493053354852,
    "label": "virginia1",
    "notes": "site updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "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": 1493053354615
    },
    "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

Name Type Description
label string user assigned label
notes string user assigned notes
location:country string ISO 3166-1 alpha-3 country code
default: ""
location:lat number latitude
default: 0
location:long number longitude
default: 0
location:city string city
default: ""
location:state string state as two-character USPS abbreviation
default: ""
tier string datacenter infrastructure tier
default: "IV"
one of:"I" or "II" or "III" or "IV"
email:type string email type
one of:"none" or "smtp" or "mailgun"
email:smtp:mail_from email mail from email address
email:smtp:server_ssl string smtp server ssl
one of:"none" or "required" or "optional"
email:smtp:server_addr hostname smtp server name
email:smtp:server_password string smtp auth password
email:smtp:server_username string smtp auth username
email:smtp:server_auth boolean smtp auth enabled
email:smtp:server_port integer smtp server port
default: 587
Range: 1 <= value <= 65535
uuid uuid object UUID

Curl Example

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

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:34 GMT
Server: Goliath
ETag: "8ec512216736891faa4157db03707d28"
Content-Type: application/json
Content-Length: 731
{
  "id": "site:14",
  "uuid": "ed2b1018-419c-4383-8542-66d76a3c5a1f",
  "serial": "SIT1468494C406264B0",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053354606,
  "mtime": 1493053354606,
  "seq": 1493053354615,
  "label": "virginia",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053354615
  },
  "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/SIT1468C94C40626480 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56:41 GMT
Server: Goliath

Site Update

Change the configuration of an existing site.

PATCH /site/{site_id_or_serial}

Optional Parameters

Name Type Description
notes string user assigned notes
label string user assigned label
location:country string ISO 3166-1 alpha-3 country code
default: ""
location:lat number latitude
default: 0
location:long number longitude
default: 0
location:city string city
default: ""
location:state string state as two-character USPS abbreviation
default: ""
zip_code string ZIP code
tier string datacenter infrastructure tier
one of:"I" or "II" or "III" or "IV"
email:type string email type
one of:"none" or "smtp" or "mailgun"
email:smtp:server_port integer SMTP server port
default: 587
Range: 1 <= value <= 65535
email:smtp:mail_from email alternative mail-from email address
email:smtp:server_ssl string SMTP server SSL/TLS
one of:"none" or "required" or "optional"
email:smtp:server_addr hostname SMTP server name
email:smtp:server_password string SMTP authentication password
email:smtp:server_username string SMTP authentication username
email:smtp:server_auth boolean SMTP authentication is enabled

Curl Example

$ curl -X PATCH https://mgmt-node/api/site/SIT1468494C406264B0 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "label": "virginia1",
  "notes": "site updated"
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:34 GMT
Server: Goliath
ETag: "bde3eefd77b7c2e3f0353301ecba3f16"
Content-Type: application/json
Content-Length: 742
{
  "id": "site:14",
  "uuid": "ed2b1018-419c-4383-8542-66d76a3c5a1f",
  "serial": "SIT1468494C406264B0",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053354606,
  "mtime": 1493053354842,
  "seq": 1493053354852,
  "label": "virginia1",
  "notes": "site updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053354615
  },
  "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

Name Type Description
id string object id
uuid uuid object uuid
label string user assigned label
serial string network interface serial number
ctime integer network interface create time
Range: 0 <= value
mtime integer network interface last modified time
Range: 0 <= value
notes nullable string user assigned notes
node_id string storage node id
enabled boolean service is enabled on this network interface
interface string network interface device name
nat_addr nullable ipv4 NAT address assigned to interface
hostname nullable hostname hostname assigned to interface
service:application:enabled boolean application service enabled
service:management:enabled boolean management service enabled
service:storage:enabled boolean storage service enabled
service:storage:shared boolean service is shared
service:replication:enabled boolean replication service enabled
service:infrastructure:enabled boolean infrastructure service enabled
service:external:enabled boolean external service enabled
status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detail nullable string status detail
network nullable object network interface description
network:interface string interface name
network:hwaddr string hardware address (MAC)
network:mtu integer MTU
network:flags:up boolean up
network:flags:broadcast boolean broadcast
network:flags:debug boolean debug
network:flags:loopback boolean loopback
network:flags:pointopoint boolean pointopoint
network:flags:notrailers boolean notrailers
network:flags:running boolean running
network:flags:noarp boolean noarp
network:flags:promisc boolean promisc
network:flags:master boolean master
network:flags:slave boolean slave
network:flags:multicast boolean multicast
network:link:detected nullable boolean media link detected
network:link:speed nullable string network interface speed in Mb/s
one of:"10" or "100" or "1000" or "2500" or "10000" or "25000" or "40000" or "50000" or "56000" or "100000" or "unknown"
network:link:duplex nullable string network interface duplex
one of:"half" or "full" or "unknown"
network:link:port nullable string network 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:name nullable string driver name
network:driver:version nullable string driver version
network:driver:fw_version nullable string driver firmware version
network:driver:bus nullable string driver bus
network:stats:tx_packets integer tx packets
network:stats:tx_bytes integer tx bytes
network:stats:tx_errors integer tx errors
network:stats:tx_dropped integer tx dropped
network:stats:rx_packets integer rx packets
network:stats:rx_bytes integer rx bytes
network:stats:rx_errors integer rx errors
network:stats:rx_dropped integer rx dropped
network:ipaddrs/addr string ip address
network:ipaddrs/family string address family
one of:"IPv4" or "IPv6" or "unknown"
network:inuse boolean network interface configured
network:config:net_id string network interface id
network:config:service:application:enabled boolean service enabled
network:config:service:management:enabled boolean service enabled
network:config:service:storage:enabled boolean service enabled
network:config:service:storage:shared boolean service shared
network:config:service:replication:enabled boolean service enabled
network:config:service:infrastructure:enabled boolean service enabled
network:config:service:external:enabled boolean service enabled
network:config:nat_addr string NAT address

Network Interface Info

Retrieve an existing network interface.

GET /net/{net_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/net/net:4:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:39 GMT
Server: Goliath
ETag: "2915661bb76173b69d63e8bfa8ba67dd"
Content-Type: application/json
Content-Length: 1553
{
  "id": "net:4:10",
  "uuid": "6d656c32-4628-4cbc-b2fa-45ca0bd3a951",
  "serial": "NET1C62494C40626410",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493052951276,
  "mtime": 1493052951276,
  "seq": 1493052952528,
  "label": "net-1",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493052951000,
      "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": 1493052951522
  },
  "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:51:64:69",
    "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.10.157",
        "family": "IPv4"
      },
      {
        "addr": "fe80::f816:3eff:fe51:6469%eth0",
        "family": "IPv6"
      }
    ]
  }
}

Network Interface List

Enumerate network interfaces.

GET /net

Curl Example

$ curl https://mgmt-node/api/net \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:33 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1555
[
  {
    "id": "net:4:10",
    "uuid": "6d656c32-4628-4cbc-b2fa-45ca0bd3a951",
    "serial": "NET1C62494C40626410",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493052951276,
    "mtime": 1493052951343,
    "seq": 1493053010045,
    "label": "net-1",
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493052951000,
        "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": 1493052951522
    },
    "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:51:64:69",
      "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.10.157",
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe51:6469%eth0",
          "family": "IPv6"
        }
      ]
    }
  }
]

Network Interface Create

Register a new network interface.

POST /net

Required Parameters

Name Type Description
node_id string node id
interface string interface name

Optional Parameters

Name Type Description
label string user assigned label
notes string user assigned notes
enabled boolean service is enabled on this network interface
default: true
nat_addr nullable ipv4 NAT IP address
hostname nullable hostname hostname
service:application:enabled boolean application service enabled
service:management:enabled boolean management service enabled
service:storage:enabled boolean storage service enabled
default: true
service:storage:shared boolean storage service shared
default: true
service:replication:enabled boolean replication service enabled
default: true
service:infrastructure:enabled boolean infrastructure service enabled
default: true
service:external:enabled boolean external service enabled
default: true
uuid uuid object UUID

Curl Example

$ curl -X POST https://mgmt-node/api/net \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "node_id": "node:10000",
  "interface": "eth0"
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:34 GMT
Server: Goliath
ETag: "3d87a8200ab1309baf953993b45654e1"
Content-Type: application/json
Content-Length: 936
{
  "id": "net:5:10",
  "uuid": "4d0db6aa-ba4f-4866-8d50-7c8477ee7ef6",
  "serial": "NET1C62C94C40626400",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053354066,
  "mtime": 1493053354066,
  "seq": 1493053354081,
  "label": "net-1",
  "notes": null,
  "status": {
    "value": "pending",
    "indicator": "degraded",
    "detail": "retrieving status; please wait"
  },
  "trashed": null,
  "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": 1493053354081
  },
  "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:4:10 \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 17:02:33 GMT
Server: Goliath

Network Interface Update

Change the configuration of an existing network interface.

PATCH /net/{net_id_or_serial}

Optional Parameters

Name Type Description
label string user assigned label
notes string user assigned notes
enabled boolean service is enabled on this network interface
interface string interface name
nat_addr nullable ipv4 NAT IP address
hostname nullable hostname hostname
service:application:enabled boolean application service enabled
service:management:enabled boolean management service enabled
service:storage:enabled boolean storage service enabled
service:storage:shared boolean storage service shared
service:replication:enabled boolean replication service enabled
service:infrastructure:enabled boolean infrastructure service enabled
service:external:enabled boolean external service enabled

Curl Example

$ curl -X PATCH https://mgmt-node/api/net/net:5:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:34 GMT
Server: Goliath
ETag: "3d87a8200ab1309baf953993b45654e1"
Content-Type: application/json
Content-Length: 936
{
  "id": "net:5:10",
  "uuid": "4d0db6aa-ba4f-4866-8d50-7c8477ee7ef6",
  "serial": "NET1C62C94C40626400",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053354066,
  "mtime": 1493053354066,
  "seq": 1493053354081,
  "label": "net-1",
  "notes": null,
  "status": {
    "value": "pending",
    "indicator": "degraded",
    "detail": "retrieving status; please wait"
  },
  "trashed": null,
  "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": 1493053354081
  },
  "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

Name Type Description
id string object id
uuid uuid object uuid
label string user assigned label
notes nullable string user assigned notes
serial string OS device serial number
ctime integer OS device create time
Range: 0 <= value
mtime integer OS device last modified time
Range: 0 <= value
node_id string storage node id
initialized boolean device is initialized
enabled boolean device is enabled
align_writes_4k nullable boolean align all writes to 4KiB boundaries, executing read requests as necessary
size nullable integer raw device size
path nullable string device path
sds_id nullable string system datastore id
parent nullable object parent device reference
parent:type string type of identified resource
status:indicator string status indicator
one of:"online" or "degraded" or "offline"
status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detail nullable string status detail
usable nullable integer usable device size (in bytes)
used nullable integer number of bytes of device that have been consumed
rebalance_delta nullable integer remainder of rebalancing goal, bytes (negative: moving extents away)
vendor_id string device vendor id
prod_id string device product id
prod_rev string device product revision
usn string device unit serial number
t10_vendor_specific_id string device t10 vendor specific device id
naa_id string device naa id
eui64_id string device eui64 id
logical_block_size nullable integer device logical block size
physical_block_size nullable integer device physical block size

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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:38 GMT
Server: Goliath
ETag: "b72b5594b8df1fc08247c53531cad412"
Content-Type: application/json
Content-Length: 1216
{
  "id": "os_dev:4:10",
  "uuid": "bdc27795-bd8b-4a96-b643-30222cae13ae",
  "serial": "OSD0D62A94C40626410",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493046263141,
  "mtime": 1493053358857,
  "seq": 1493053358866,
  "label": "device-1",
  "notes": "device label updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053350000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            6,
            10,
            10,
            10
          ],
          "v": "dbg"
        },
        {
          "d": [
            3,
            4,
            4,
            4
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1493053350512
  },
  "rec_status": null,
  "path": "/dev/bb/cace3ac0-a14e-4f64-8e43-e9ddfb8a1e4",
  "size": 107374182400,
  "initialized": false,
  "enabled": false,
  "parent": {
    "type": [
      "os_dev"
    ],
    "id": "os_dev:7:10"
  },
  "meta": {
    "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
    "blockbridge_md": false
  },
  "usable": null,
  "used": null,
  "device_info": {
    "dsn": null,
    "enclosure": null,
    "present": true,
    "owner": "Volume Manager",
    "devname": "sdd",
    "display_name": "scsi/sdd",
    "serial": "cace3ac0-a14e-4f64-8e43-e9ddfb8a1e4",
    "vendor": "B*BRIDGE",
    "model": "SECURE DRIVE",
    "bus": "scsi",
    "rotational": false,
    "type": [
      "disk"
    ]
  },
  "smart_info": null,
  "md_info": null
}

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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:38 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 10268
[
  {
    "id": "os_dev:4:10",
    "uuid": "bdc27795-bd8b-4a96-b643-30222cae13ae",
    "serial": "OSD0D62A94C40626410",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046263141,
    "mtime": 1493053350179,
    "seq": 1493053350512,
    "label": "device-2",
    "notes": "device label updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493053350000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              6,
              10,
              10,
              10
            ],
            "v": "dbg"
          },
          {
            "d": [
              3,
              4,
              4,
              4
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1493053350512
    },
    "rec_status": null,
    "path": "/dev/bb/cace3ac0-a14e-4f64-8e43-e9ddfb8a1e4",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:7:10"
    },
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": false
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "Volume Manager",
      "devname": "sdd",
      "display_name": "scsi/sdd",
      "serial": "cace3ac0-a14e-4f64-8e43-e9ddfb8a1e4",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ]
    },
    "smart_info": null,
    "md_info": null
  },
  {
    "id": "os_dev:5:10",
    "uuid": "c3a7bd26-fbe7-45c6-a462-8370c8f41bd6",
    "serial": "OSD0D62294C40626400",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046263267,
    "mtime": 1493046268718,
    "seq": 1493046270542,
    "label": null,
    "notes": "Agent detected disk ID e3fd4142-e97e-492b-b708-cc395c80a0c",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493046268000,
        "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": 1493046270542
    },
    "rec_status": null,
    "path": "/dev/bb/e3fd4142-e97e-492b-b708-cc395c80a0c",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:6:10"
    },
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": false
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "System",
      "devname": "sda",
      "display_name": "scsi/sda",
      "serial": "e3fd4142-e97e-492b-b708-cc395c80a0c",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ]
    },
    "smart_info": null,
    "md_info": null
  },
  {
    "id": "os_dev:1:10",
    "uuid": "e48d8521-28e3-42cf-aebf-8f3040b3660c",
    "serial": "OSD0D62394C40626440",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046262510,
    "mtime": 1493052999299,
    "seq": 1493052999353,
    "label": null,
    "notes": "Agent detected disk ID 340581dd-00b3-4dd2-8f01-ed3db925392",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493052992000,
        "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": 1493052993530
    },
    "rec_status": null,
    "path": "/dev/bb/340581dd-00b3-4dd2-8f01-ed3db925392",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": null,
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": false
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": null,
      "devname": "sde",
      "display_name": "scsi/sde",
      "serial": "340581dd-00b3-4dd2-8f01-ed3db925392",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ]
    },
    "smart_info": null,
    "md_info": null
  },
  {
    "id": "os_dev:2:10",
    "uuid": "6ee1c180-cb02-48e4-b41a-51fa8df5076a",
    "serial": "OSD0D62B94C40626470",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046262725,
    "mtime": 1493051491051,
    "seq": 1493051652733,
    "label": null,
    "notes": "device label updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493051491000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              8,
              8,
              8
            ],
            "v": "dbg"
          },
          {
            "d": [
              3,
              4,
              4,
              4
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1493051652733
    },
    "rec_status": null,
    "path": "/dev/bb/6d69bd9b-6534-42ab-b28c-be70c7a9074",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:7:10"
    },
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": false
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "Volume Manager",
      "devname": "sdc",
      "display_name": "scsi/sdc",
      "serial": "6d69bd9b-6534-42ab-b28c-be70c7a9074",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ]
    },
    "smart_info": null,
    "md_info": null
  },
  {
    "id": "os_dev:6:10",
    "uuid": "f8ac2c3c-a8e7-4c8c-a8ba-1c61369973b8",
    "serial": "OSD0D62A94C40626430",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046263434,
    "mtime": 1493052996779,
    "seq": 1493052997623,
    "label": null,
    "notes": "Agent detected disk ID f8ac2c3c-a8e7-4c8c-a8ba-1c61369973b8",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493052996000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              8,
              11,
              11,
              11
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1493052997547
    },
    "rec_status": null,
    "path": "/dev/disk/by-id/md-uuid-3ae96c70:32943a6c:9a4bbf07:5023c4f6-part6",
    "size": 18185436672,
    "initialized": false,
    "enabled": false,
    "parent": null,
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": true
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": null,
      "devname": "md127p6",
      "display_name": "md/system",
      "serial": null,
      "vendor": null,
      "model": null,
      "bus": null,
      "rotational": false,
      "type": [
        "md"
      ]
    },
    "smart_info": null,
    "md_info": {
      "chunk_size": null,
      "state": "active",
      "degraded": false,
      "mismatch_cnt": 0,
      "created": 1493046142000,
      "modified": 1493046262000,
      "active_disks": 2,
      "working_disks": 2,
      "failed_disks": 0,
      "spare_disks": 0,
      "metadata": {
        "version": "1.2.3"
      },
      "bitmap": {
        "chunk_size": 268435456,
        "location": "+8",
        "metadata": "internal",
        "space": 0,
        "backlog": 0,
        "max_backlog_used": 0
      },
      "raid": {
        "rebuild_min": 1024000,
        "rebuild_max": 204800000,
        "level": "raid1",
        "layout": null,
        "disks_num": 2
      },
      "sync_action": {
        "action": "none"
      },
      "disks": [
        {
          "size": 107307073536,
          "slot": 0,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:0",
          "dev": "/dev/sda",
          "flags": [
            "active",
            "in-sync"
          ],
          "oid": "os_dev:5:10",
          "uuid": "c3a7bd26-fbe7-45c6-a462-8370c8f41bd6"
        },
        {
          "size": 107307073536,
          "slot": 1,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:16",
          "dev": "/dev/sdb",
          "flags": [
            "active",
            "in-sync"
          ],
          "oid": "os_dev:3:10",
          "uuid": "9d94788c-82fc-4bde-937a-24417edf46b8"
        }
      ],
      "flags": [
        "active"
      ]
    }
  },
  {
    "id": "os_dev:3:10",
    "uuid": "9d94788c-82fc-4bde-937a-24417edf46b8",
    "serial": "OSD0D62394C40626460",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046262885,
    "mtime": 1493046268650,
    "seq": 1493046270544,
    "label": null,
    "notes": "Agent detected disk ID 756c851f-7711-4a4b-91df-1ae9d75dea6",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493046268000,
        "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": 1493046270544
    },
    "rec_status": null,
    "path": "/dev/bb/756c851f-7711-4a4b-91df-1ae9d75dea6",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:6:10"
    },
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": false
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "System",
      "devname": "sdb",
      "display_name": "scsi/sdb",
      "serial": "756c851f-7711-4a4b-91df-1ae9d75dea6",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ]
    },
    "smart_info": null,
    "md_info": null
  },
  {
    "id": "os_dev:7:10",
    "uuid": "fdcc0e9f-a156-42d7-8818-30f3e14f73c5",
    "serial": "OSD0D62294C40626420",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046268764,
    "mtime": 1493052913855,
    "seq": 1493052913873,
    "label": null,
    "notes": "Agent detected disk ID fdcc0e9f-a156-42d7-8818-30f3e14f73c5",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493051498000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              3,
              3,
              3
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1493051652740
    },
    "rec_status": null,
    "path": "/dev/disk/by-id/md-uuid-fdcc0e9f:a15642d7:881830f3:e14f73c5",
    "size": 107307073536,
    "initialized": false,
    "enabled": false,
    "parent": null,
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": true
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": null,
      "devname": "md126",
      "display_name": "md/mirror1",
      "serial": null,
      "vendor": null,
      "model": null,
      "bus": null,
      "rotational": true,
      "type": [
        "md"
      ]
    },
    "smart_info": null,
    "md_info": {
      "chunk_size": 131072,
      "state": "clean",
      "degraded": false,
      "mismatch_cnt": 0,
      "created": 1493046260000,
      "modified": 1493046260000,
      "active_disks": 2,
      "working_disks": 2,
      "failed_disks": 0,
      "spare_disks": 0,
      "metadata": {
        "version": "1.2.3"
      },
      "bitmap": {
        "chunk_size": null,
        "location": "none",
        "metadata": "internal",
        "space": 0,
        "backlog": 0,
        "max_backlog_used": 0
      },
      "raid": {
        "rebuild_min": 1024000,
        "rebuild_max": 204800000,
        "level": "raid10",
        "layout": 258,
        "disks_num": 2
      },
      "sync_action": {
        "action": "none"
      },
      "disks": [
        {
          "size": 107307073536,
          "slot": 0,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:32",
          "dev": "/dev/sdc",
          "flags": [
            "active",
            "in-sync"
          ],
          "oid": "os_dev:2:10",
          "uuid": "6ee1c180-cb02-48e4-b41a-51fa8df5076a"
        },
        {
          "size": 107307073536,
          "slot": 1,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:48",
          "dev": "/dev/sdd",
          "flags": [
            "active",
            "in-sync"
          ],
          "oid": "os_dev:4:10",
          "uuid": "bdc27795-bd8b-4a96-b643-30222cae13ae"
        }
      ],
      "flags": [
        "clean"
      ]
    }
  }
]

Operating System Device Create

Register a new operating system storage device, creating its configuration. Once the device has been initialized, it may be incorporated into the storage pool of a system datastore.

POST /os-dev

Required Parameters

Name Type Description
path string device path string
node_id string storage node id
raw_size integer raw device size in bytes
Range: 1000000000 <= value
parent:type string type of identified resource

Optional Parameters

Name Type Description
label nullable string user assigned label
notes string user assigned notes
align_writes_4k boolean align all writes to 4KiB boundaries, executing read requests as necessary
uuid nullable uuid object UUID

Curl Example

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

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:38 GMT
Server: Goliath
ETag: "06126b48f136c10ce06a4e0f55fff3d7"
Content-Type: application/json
Content-Length: 831
{
  "id": "os_dev:11:10",
  "uuid": "33cad6f8-4a59-412c-93a5-e4340dddf9f1",
  "serial": "OSD0D62094C406264E0",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053358238,
  "mtime": 1493053358309,
  "seq": 1493053358321,
  "label": "osdev_file",
  "notes": null,
  "status": {
    "value": "pending",
    "indicator": "degraded",
    "detail": "retrieving status; please wait"
  },
  "trashed": null,
  "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": 1493053358253
  },
  "rec_status": null,
  "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
}

Operating System Device Initialize

Initialize an operating system storage device. This action causes the storage node to write configuration data to the start and end of the storage device. On completion, the device can be incorporated into the storage pool of a system datastore.

POST /os-dev/{os_dev_id_or_serial}/actions/initialize

Optional Parameters

Name Type Description
mrdb_size integer metadata region database size in bytes

Curl Example

$ curl -X POST FIXME

Response Example

HTTP/1.1 200 OK

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/OSD0D62094C406264E0 \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 17:02:38 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

Name Type Description
path string device path
label nullable string user assigned label
notes string user assigned notes
align_writes_4k boolean align all writes to 4KiB boundaries, executing read requests as necessary
parent:type string type 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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "label": "device-1",
  "notes": "device label updated"
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:38 GMT
Server: Goliath
ETag: "b72b5594b8df1fc08247c53531cad412"
Content-Type: application/json
Content-Length: 1216
{
  "id": "os_dev:4:10",
  "uuid": "bdc27795-bd8b-4a96-b643-30222cae13ae",
  "serial": "OSD0D62A94C40626410",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493046263141,
  "mtime": 1493053358857,
  "seq": 1493053358866,
  "label": "device-1",
  "notes": "device label updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053350000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            6,
            10,
            10,
            10
          ],
          "v": "dbg"
        },
        {
          "d": [
            3,
            4,
            4,
            4
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "status": "current",
    "seq": 1493053350512
  },
  "rec_status": null,
  "path": "/dev/bb/cace3ac0-a14e-4f64-8e43-e9ddfb8a1e4",
  "size": 107374182400,
  "initialized": false,
  "enabled": false,
  "parent": {
    "type": [
      "os_dev"
    ],
    "id": "os_dev:7:10"
  },
  "meta": {
    "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
    "blockbridge_md": false
  },
  "usable": null,
  "used": null,
  "device_info": {
    "dsn": null,
    "enclosure": null,
    "present": true,
    "owner": "Volume Manager",
    "devname": "sdd",
    "display_name": "scsi/sdd",
    "serial": "cace3ac0-a14e-4f64-8e43-e9ddfb8a1e4",
    "vendor": "B*BRIDGE",
    "model": "SECURE DRIVE",
    "bus": "scsi",
    "rotational": false,
    "type": [
      "disk"
    ]
  },
  "smart_info": null,
  "md_info": null
}

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

Name Type Description
id string object id
uuid uuid object uuid
label string user assigned label
notes nullable string user assigned notes
serial string system datastore serial number
ctime integer system datastore create time
Range: 0 <= value
mtime integer system datastore last modified time
Range: 0 <= value
site_id string site id
product_id string product id
node_id string node id
size_reserve_pct nullable integer size of system datastore storage that is reserved (percent)
iops_rating nullable integer system datastore IOPS rating
iops_scheduling nullable boolean system datastore supports provisioned IOPS
iops_reserve_pct nullable integer percent of IOPS reserved
vss_provisioning boolean virtual storage services are allowed to provision out of this system datastore
label_tag nullable boolean automatically use the system datastore label as a provisioning tag
vdisk_capacity_max nullable integer maximum provisioned capacity of a virtual disk
vdisk_capacity_min nullable integer minimum provisioned capacity of a virtual disk
blk_encode_default nullable string default block format for virtual disks
one of:"aes256-gcm-4k" or "aes128-xts-4k"
pool nullable object system datastore pool configuration
pool:strategy string pool allocation strategy
one of:"weighted" or "ranked" or "ranked_weighted" or "balanced_unused_percentage" or "balanced_unused"
pool:devs/dev_id string device id
pool:devs/allocation boolean data allocation is permitted
pool:devs/rank integer allocation rank
Range: 1 <= value <= 255
pool:devs/weight integer allocation weight
Range: 1 <= value <= 255
data:log_dev_id string system datastore log device
data:log_compress nullable boolean enable data log compression
meta:dev_id string device to use for metasystem
meta:cache_size integer metasystem cache size
product:notes string user assigned notes
product:tags array provisioning tags
status:indicator string status indicator
one of:"online" or "degraded" or "offline"
status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detail nullable string status detail
size nullable integer total size of system datastore (in bytes)
used nullable integer used size of system datastore (in bytes)
reserve_size nullable integer total reserve size of system datastore (in bytes)
reserve_used nullable integer used reserve size of system datastore (in bytes)
reserve_iops nullable integer total reserved IOPS of system datastore
iops_read nullable integer Read operations per second, normalized to 4K
iops_write nullable integer Write operations per second, normalized to 4K
iosz nullable integer I/O size in bytes
data_rts:log_size nullable integer runtime system datastore log size (in bytes)
data_rts:log_compress_ratio nullable number data log compression ratio
meta_rts:size nullable integer runtime system datastore metasystem size (in bytes)
meta_rts:log_size nullable integer runtime system datastore metasystem log size (in bytes)
meta_rts:page_size nullable integer metasystem page size (in bytes)
meta_rts:pages nullable integer total number of pages in metasystem
meta_rts:pages_used nullable integer number of pages consumed in metasystem
meta_rts:pages_cached nullable integer number of pages in cache in metasystem
meta_rts:pages_dirty nullable integer number of dirty pages in cache in metasystem
meta_rts:pages_pinned nullable integer number of pages pinned into cache in metasystem
meta_rts:pages_compressed nullable integer of total, number of pages that are compressed in cache

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:6:10 \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:41 GMT
Server: Goliath
ETag: "2cc99a34728556018ffe679076e6691b"
Content-Type: application/json
Content-Length: 1762
{
  "id": "sys_ds:6:10",
  "uuid": "ab7c4916-bb71-4791-bc22-0b7f96e0975c",
  "serial": "SDS1F62594C40626430",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053359313,
  "mtime": 1493053361679,
  "seq": 1493053361700,
  "label": "datastore-1",
  "notes": "sys-ds label_tag updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053361000,
      "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": 1493053361547
  },
  "rec_status": null,
  "product_id": "product:6:10",
  "size_reserve_pct": 200,
  "iops_reserve_pct": 100,
  "iops_rating": 100000,
  "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:1:10",
        "allocation": true,
        "rank": 1,
        "weight": 1
      },
      {
        "dev_id": "os_dev:6:10",
        "allocation": true,
        "rank": 1,
        "weight": 1
      }
    ]
  },
  "meta": {
    "dev_id": "os_dev:1: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:1:10"
  },
  "blk_encode_default": "aes128-xts-4k",
  "size": 107248353280,
  "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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:40 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1632
[
  {
    "id": "sys_ds:6:10",
    "uuid": "ab7c4916-bb71-4791-bc22-0b7f96e0975c",
    "serial": "SDS1F62594C40626430",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493053359313,
    "mtime": 1493053360737,
    "seq": 1493053360757,
    "label": "datastore-1",
    "notes": "sys-ds label_tag updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493053360000,
        "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": 1493053360525
    },
    "rec_status": null,
    "product_id": "product:6:10",
    "size_reserve_pct": 200,
    "iops_reserve_pct": 100,
    "iops_rating": 100000,
    "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:1: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:1: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

Name Type Description
data:log_dev_id string data journal device id
data:log_size integer data journal size in bytes
default: 8388608
Range: 2097152 <= value <= 17179869184
data:log_compress boolean enable data log compression
meta:dev_id string thin-provisioning metadata device id
meta:size integer thin-provisioning metadata size in bytes
default: 16777216
Range: 16777216 <= value
meta:log_size integer thin-provisioning metadata journal size in bytes (encapsulated inside metadata)
default: 8388608
Range: 4194304 <= value
meta:cache_size integer thin-provisioning metadata cache size
default: 16777216
Range: 4194304 <= value
node_id string node id

Optional Parameters

Name Type Description
label string user assigned label
notes string user assigned notes
strategy string pool allocation strategy
default: "weighted"
one of:"weighted" or "ranked" or "ranked_weighted" or "balanced_unused_percentage" or "balanced_unused"
size_reserve_pct integer percent of storage that may be reserved by disks and services
default: 100
Range: 0 <= value <= 16000
iops_reserve_pct integer percent of storage IOPS that may be reserved by services
default: 100
Range: 0 <= value <= 100
iops_rating integer administrator assigned storage subsystem rating in I/O operations per second
default: 50000
Range: 100 <= value <= 1000000
iops_scheduling boolean IOPS scheduling is enabled
vss_provisioning boolean virtual storage service provisioning is enabled
default: true
vdisk_capacity_max integer maximum virtual disk capacity
default: 1099511627776
Range: 1048576 <= value <= 1125899906842624
vdisk_capacity_min integer minimum virtual disk capacity
default: 33554432
Range: 1048576 <= value <= 1125899906842624
label_tag boolean system datastore label automatically entered as a provisioning tag
default: true
product:tags array array of product tags
blk_encode_default string default block encoding for user data
one of:"aes256-gcm-4k" or "aes128-xts-4k"
backup_mrdb_size integer configuration backup database size on metadata device
default: 4194304
Range: 1048576 <= value <= 16777216
uuid uuid object UUID

Curl Example

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

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:40 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1608
{
  "id": "sys_ds:6:10",
  "uuid": "ab7c4916-bb71-4791-bc22-0b7f96e0975c",
  "serial": "SDS1F62594C40626430",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053359313,
  "mtime": 1493053360376,
  "seq": 1493053360396,
  "label": "datastore-1",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053359000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            1,
            1,
            1,
            1
          ],
          "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": 1493053359535
  },
  "rec_status": null,
  "product_id": "product:6:10",
  "size_reserve_pct": 200,
  "iops_reserve_pct": 100,
  "iops_rating": 100000,
  "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:1: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:1: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/SDS1F62D94C40626400 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56:39 GMT
Server: Goliath

System Datastore Update

Change the configuration of an existing system datastore.

PATCH /sys-ds/{sys_ds_id_or_serial}

Optional Parameters

Name Type Description
label string user assigned label
notes string user assigned notes
data:cache_size integer data cache size in bytes
data:log_compress boolean enable data log compression
meta:cache_size integer thin-provisioning metadata cache size in bytes
pool:strategy string pool allocation strategy
one of:"weighted" or "ranked" or "ranked_weighted" or "balanced_unused_percentage" or "balanced_unused"
pool:devs/dev_id string device id
pool:devs/allocation boolean data allocation is permitted
pool:devs/rank integer allocation rank
Range: 1 <= value <= 255
pool:devs/weight integer allocation weight
Range: 1 <= value <= 255
iops_reserve_pct integer percent of storage IOPS that may be reserved by services
Range: 0 <= value <= 100
size_reserve_pct integer percent of storage that may be reserved by disks and services
Range: 0 <= value <= 16000
iops_rating integer administrator assigned storage subsystem rating in I/O operations per second
Range: 100 <= value <= 1000000
iops_scheduling boolean IOPS scheduling is enabled
vss_provisioning boolean virtual storage service provisioning is enabled
vdisk_capacity_max integer maximum virtual disk capacity
Range: 1048576 <= value <= 1125899906842624
vdisk_capacity_min integer minimum virtual disk capacity
Range: 1048576 <= value <= 1125899906842624
label_tag boolean system datastore label automatically entered as a provisioning tag
product:tags array array of product tags
product:notes string user assigned notes

Curl Example

$ curl -X PATCH https://mgmt-node/api/sys-ds/sys_ds:6:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "label_tag": true,
  "notes": "sys-ds label_tag updated"
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:40 GMT
Server: Goliath
ETag: "2ce9ac806adf2c650310c42ce9619a81"
Content-Type: application/json
Content-Length: 1630
{
  "id": "sys_ds:6:10",
  "uuid": "ab7c4916-bb71-4791-bc22-0b7f96e0975c",
  "serial": "SDS1F62594C40626430",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053359313,
  "mtime": 1493053360737,
  "seq": 1493053360757,
  "label": "datastore-1",
  "notes": "sys-ds label_tag updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053360000,
      "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": 1493053360525
  },
  "rec_status": null,
  "product_id": "product:6:10",
  "size_reserve_pct": 200,
  "iops_reserve_pct": 100,
  "iops_rating": 100000,
  "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:1: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:1: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

Name Type Description
dev_id string device id

Optional Parameters

Name Type Description
allocation boolean data allocation is enabled
default: true
rank integer allocation rank
default: 1
Range: 1 <= value <= 255
weight integer allocation weight
default: 1
Range: 1 <= value <= 255

Curl Example

$ curl -X POST https://mgmt-node/api/sys-ds/sys_ds:6:10/actions/pool-add \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "dev_id": "os_dev:1:10"
}'

Response Example

204 No Content
Date: Mon, 24 Apr 2017 17:02:41 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

Name Type Description
dev_id string device 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/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -d \
'{
  "dev_id": "os_dev:1:10"
}'

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56: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

Name Type Description
dev_id string device id

Optional Parameters

Name Type Description
limit_bandwidth boolean limit bandwidth usage
bandwidth integer bandwidth 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/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -d \
'{
  "dev_id": "os_dev:1:10"
}'

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56: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

Name Type Description
range integer byte range of test
Range: 1048576 <= value
workload string benchmark workload type
one of:"sequential" or "random"
preformat boolean write entire range prior to test

Optional Parameters

Name Type Description
read_percent integer percentage of read I/Os
default: 50
Range: 0 <= value <= 100
encoding string block encoding
one of:"aes256-gcm-4k" or "aes128-xts-4k"
duration integer time in seconds to run test
default: 300
iosize_min integer minimum I/O size
default: 4096
Range: 512 <= value <= 1048576
iosize_max integer maximum I/O size
default: 4096
Range: 512 <= value <= 1048576
align integer I/O offset alignment
default: 4096
Range: 512 <= value <= 1048576
queue_depth integer maximum number of I/O's outstanding
default: 64
Range: 1 <= value <= 1024
compressibility integer percentage 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/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -d \
'{
  "range": 1048576,
  "workload": "sequential",
  "preformat": false,
  "duration": 10
}'

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56: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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:42 GMT
Server: Goliath
ETag: "e491f5c19b25c77c2665471e762fc9a3"
Content-Type: application/json
Content-Length: 1216
{
  "id": "os_dev:4:10",
  "uuid": "bdc27795-bd8b-4a96-b643-30222cae13ae",
  "serial": "OSD0D62A94C40626410",
  "evt_query": null,
  "account_id": null,
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493046263141,
  "mtime": 1493053358857,
  "seq": 1493053359529,
  "label": "device-1",
  "notes": "device label updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053358000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            8,
            12,
            12,
            12
          ],
          "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": 1493053359529
  },
  "rec_status": null,
  "path": "/dev/bb/cace3ac0-a14e-4f64-8e43-e9ddfb8a1e4",
  "size": 107374182400,
  "initialized": false,
  "enabled": false,
  "parent": {
    "type": [
      "os_dev"
    ],
    "id": "os_dev:7:10"
  },
  "meta": {
    "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
    "blockbridge_md": false
  },
  "usable": null,
  "used": null,
  "device_info": {
    "dsn": null,
    "enclosure": null,
    "present": true,
    "owner": "Volume Manager",
    "devname": "sdd",
    "display_name": "scsi/sdd",
    "serial": "cace3ac0-a14e-4f64-8e43-e9ddfb8a1e4",
    "vendor": "B*BRIDGE",
    "model": "SECURE DRIVE",
    "bus": "scsi",
    "rotational": false,
    "type": [
      "disk"
    ]
  },
  "smart_info": null,
  "md_info": null
}

System Datastore Device List

List existing devs.

GET /dev

Curl Example

$ curl https://mgmt-node/api/dev \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:41 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 10306
[
  {
    "id": "os_dev:4:10",
    "uuid": "bdc27795-bd8b-4a96-b643-30222cae13ae",
    "serial": "OSD0D62A94C40626410",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046263141,
    "mtime": 1493053358857,
    "seq": 1493053359529,
    "label": "device-1",
    "notes": "device label updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493053358000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              8,
              12,
              12,
              12
            ],
            "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": 1493053359529
    },
    "rec_status": null,
    "path": "/dev/bb/cace3ac0-a14e-4f64-8e43-e9ddfb8a1e4",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:7:10"
    },
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": false
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "Volume Manager",
      "devname": "sdd",
      "display_name": "scsi/sdd",
      "serial": "cace3ac0-a14e-4f64-8e43-e9ddfb8a1e4",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ]
    },
    "smart_info": null,
    "md_info": null
  },
  {
    "id": "os_dev:5:10",
    "uuid": "c3a7bd26-fbe7-45c6-a462-8370c8f41bd6",
    "serial": "OSD0D62294C40626400",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046263267,
    "mtime": 1493046268718,
    "seq": 1493046270542,
    "label": null,
    "notes": "Agent detected disk ID e3fd4142-e97e-492b-b708-cc395c80a0c",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493046268000,
        "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": 1493046270542
    },
    "rec_status": null,
    "path": "/dev/bb/e3fd4142-e97e-492b-b708-cc395c80a0c",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:6:10"
    },
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": false
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "System",
      "devname": "sda",
      "display_name": "scsi/sda",
      "serial": "e3fd4142-e97e-492b-b708-cc395c80a0c",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ]
    },
    "smart_info": null,
    "md_info": null
  },
  {
    "id": "os_dev:1:10",
    "uuid": "e48d8521-28e3-42cf-aebf-8f3040b3660c",
    "serial": "OSD0D62394C40626440",
    "evt_query": null,
    "account_id": null,
    "sds_id": "sys_ds:6:10",
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046262510,
    "mtime": 1493053361201,
    "seq": 1493053361551,
    "label": null,
    "notes": "Agent detected disk ID 340581dd-00b3-4dd2-8f01-ed3db925392",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493053361000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              8,
              9,
              9,
              9
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1493053361551
    },
    "rec_status": null,
    "path": "/dev/bb/340581dd-00b3-4dd2-8f01-ed3db925392",
    "size": 107374182400,
    "initialized": true,
    "enabled": true,
    "parent": null,
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": false
    },
    "usable": 107248353280,
    "used": 0,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "Storage Processor",
      "devname": "sde",
      "display_name": "scsi/sde",
      "serial": "340581dd-00b3-4dd2-8f01-ed3db925392",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ]
    },
    "smart_info": null,
    "md_info": null
  },
  {
    "id": "os_dev:2:10",
    "uuid": "6ee1c180-cb02-48e4-b41a-51fa8df5076a",
    "serial": "OSD0D62B94C40626470",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046262725,
    "mtime": 1493051491051,
    "seq": 1493051652733,
    "label": null,
    "notes": "device label updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493051491000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              4,
              8,
              8,
              8
            ],
            "v": "dbg"
          },
          {
            "d": [
              3,
              4,
              4,
              4
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1493051652733
    },
    "rec_status": null,
    "path": "/dev/bb/6d69bd9b-6534-42ab-b28c-be70c7a9074",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:7:10"
    },
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": false
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "Volume Manager",
      "devname": "sdc",
      "display_name": "scsi/sdc",
      "serial": "6d69bd9b-6534-42ab-b28c-be70c7a9074",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ]
    },
    "smart_info": null,
    "md_info": null
  },
  {
    "id": "os_dev:6:10",
    "uuid": "f8ac2c3c-a8e7-4c8c-a8ba-1c61369973b8",
    "serial": "OSD0D62A94C40626430",
    "evt_query": null,
    "account_id": null,
    "sds_id": "sys_ds:6:10",
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046263434,
    "mtime": 1493053361680,
    "seq": 1493053361694,
    "label": null,
    "notes": "Agent detected disk ID f8ac2c3c-a8e7-4c8c-a8ba-1c61369973b8",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493052996000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              8,
              11,
              11,
              11
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1493052997547
    },
    "rec_status": null,
    "path": "/dev/disk/by-id/md-uuid-3ae96c70:32943a6c:9a4bbf07:5023c4f6-part6",
    "size": 18185436672,
    "initialized": true,
    "enabled": true,
    "parent": null,
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": true
    },
    "usable": 18118213632,
    "used": 0,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": null,
      "devname": "md127p6",
      "display_name": "md/system",
      "serial": null,
      "vendor": null,
      "model": null,
      "bus": null,
      "rotational": false,
      "type": [
        "md"
      ]
    },
    "smart_info": null,
    "md_info": {
      "chunk_size": null,
      "state": "active",
      "degraded": false,
      "mismatch_cnt": 0,
      "created": 1493046142000,
      "modified": 1493046262000,
      "active_disks": 2,
      "working_disks": 2,
      "failed_disks": 0,
      "spare_disks": 0,
      "metadata": {
        "version": "1.2.3"
      },
      "bitmap": {
        "chunk_size": 268435456,
        "location": "+8",
        "metadata": "internal",
        "space": 0,
        "backlog": 0,
        "max_backlog_used": 0
      },
      "raid": {
        "rebuild_min": 1024000,
        "rebuild_max": 204800000,
        "level": "raid1",
        "layout": null,
        "disks_num": 2
      },
      "sync_action": {
        "action": "none"
      },
      "disks": [
        {
          "size": 107307073536,
          "slot": 0,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:0",
          "dev": "/dev/sda",
          "flags": [
            "active",
            "in-sync"
          ],
          "oid": "os_dev:5:10",
          "uuid": "c3a7bd26-fbe7-45c6-a462-8370c8f41bd6"
        },
        {
          "size": 107307073536,
          "slot": 1,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:16",
          "dev": "/dev/sdb",
          "flags": [
            "active",
            "in-sync"
          ],
          "oid": "os_dev:3:10",
          "uuid": "9d94788c-82fc-4bde-937a-24417edf46b8"
        }
      ],
      "flags": [
        "active"
      ]
    }
  },
  {
    "id": "os_dev:3:10",
    "uuid": "9d94788c-82fc-4bde-937a-24417edf46b8",
    "serial": "OSD0D62394C40626460",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046262885,
    "mtime": 1493046268650,
    "seq": 1493046270544,
    "label": null,
    "notes": "Agent detected disk ID 756c851f-7711-4a4b-91df-1ae9d75dea6",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493046268000,
        "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": 1493046270544
    },
    "rec_status": null,
    "path": "/dev/bb/756c851f-7711-4a4b-91df-1ae9d75dea6",
    "size": 107374182400,
    "initialized": false,
    "enabled": false,
    "parent": {
      "type": [
        "os_dev"
      ],
      "id": "os_dev:6:10"
    },
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": false
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": "System",
      "devname": "sdb",
      "display_name": "scsi/sdb",
      "serial": "756c851f-7711-4a4b-91df-1ae9d75dea6",
      "vendor": "B*BRIDGE",
      "model": "SECURE DRIVE",
      "bus": "scsi",
      "rotational": false,
      "type": [
        "disk"
      ]
    },
    "smart_info": null,
    "md_info": null
  },
  {
    "id": "os_dev:7:10",
    "uuid": "fdcc0e9f-a156-42d7-8818-30f3e14f73c5",
    "serial": "OSD0D62294C40626420",
    "evt_query": null,
    "account_id": null,
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493046268764,
    "mtime": 1493052913855,
    "seq": 1493052913873,
    "label": null,
    "notes": "Agent detected disk ID fdcc0e9f-a156-42d7-8818-30f3e14f73c5",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493051498000,
        "hdrs": [
          3600000,
          86400000,
          604800000,
          2629800000
        ],
        "rows": [
          {
            "d": [
              0,
              2,
              2,
              2
            ],
            "v": "dbg"
          },
          {
            "d": [
              1,
              3,
              3,
              3
            ],
            "v": "info"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "warn"
          },
          {
            "d": [
              0,
              0,
              0,
              0
            ],
            "v": "err"
          }
        ]
      },
      "status": "current",
      "seq": 1493051652740
    },
    "rec_status": null,
    "path": "/dev/disk/by-id/md-uuid-fdcc0e9f:a15642d7:881830f3:e14f73c5",
    "size": 107307073536,
    "initialized": false,
    "enabled": false,
    "parent": null,
    "meta": {
      "blockbridge_agent": "1b592978-b6db-40a6-a316-675d1b22aef0",
      "blockbridge_md": true
    },
    "usable": null,
    "used": null,
    "device_info": {
      "dsn": null,
      "enclosure": null,
      "present": true,
      "owner": null,
      "devname": "md126",
      "display_name": "md/mirror1",
      "serial": null,
      "vendor": null,
      "model": null,
      "bus": null,
      "rotational": true,
      "type": [
        "md"
      ]
    },
    "smart_info": null,
    "md_info": {
      "chunk_size": 131072,
      "state": "clean",
      "degraded": false,
      "mismatch_cnt": 0,
      "created": 1493046260000,
      "modified": 1493046260000,
      "active_disks": 2,
      "working_disks": 2,
      "failed_disks": 0,
      "spare_disks": 0,
      "metadata": {
        "version": "1.2.3"
      },
      "bitmap": {
        "chunk_size": null,
        "location": "none",
        "metadata": "internal",
        "space": 0,
        "backlog": 0,
        "max_backlog_used": 0
      },
      "raid": {
        "rebuild_min": 1024000,
        "rebuild_max": 204800000,
        "level": "raid10",
        "layout": 258,
        "disks_num": 2
      },
      "sync_action": {
        "action": "none"
      },
      "disks": [
        {
          "size": 107307073536,
          "slot": 0,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:32",
          "dev": "/dev/sdc",
          "flags": [
            "active",
            "in-sync"
          ],
          "oid": "os_dev:2:10",
          "uuid": "6ee1c180-cb02-48e4-b41a-51fa8df5076a"
        },
        {
          "size": 107307073536,
          "slot": 1,
          "state": "in_sync",
          "errors": null,
          "bad_blocks": null,
          "blockdev": "8:48",
          "dev": "/dev/sdd",
          "flags": [
            "active",
            "in-sync"
          ],
          "oid": "os_dev:4:10",
          "uuid": "bdc27795-bd8b-4a96-b643-30222cae13ae"
        }
      ],
      "flags": [
        "clean"
      ]
    }
  }
]

Product

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

Attributes

Name Type Description
id string object id
uuid uuid object uuid
ctime integer product create time
Range: 0 <= value
mtime integer product last modified time
Range: 0 <= value
site_id string site product is located in
description string product description
tags array array of product tags

Product Search Create

Query the storage product catalog.

POST /product/search

Required Parameters

Name Type Description
capacity integer capacity to reserve

Optional Parameters

Name Type Description
iops integer IOPS to reserve
scheduling_algorithm string scheduling algorithm label
tags:include array include array
tags:exclude array exclude array
count integer number of results
default: 3
template string service template

Curl Example

$ curl -X POST https://mgmt-node/api/product/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "capacity": 1073741824,
  "template": "gp"
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:45 GMT
Server: Goliath
Location: /api/product/search/87c9351606060184e4c284c4ecc29a402b91c189a42537b02721b425918918cd4f20606000797070bf
Content-Type: application/json
Content-Length: 418
{
  "status": "success",
  "products": [
    {
      "id": "product:6:10",
      "serial": "PRD1262E94C40626430",
      "node": "NOD0F68894C40601550",
      "tags": [
        "datastore-1",
        "NOD0F68894C40601550"
      ],
      "score": 6.0,
      "token": "5b313439333035333336353335332c2270726f647563743a363a3130222c313037333734313832342c226770225d"
    }
  ],
  "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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:42 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",
    "NOD0F68894C40601550"
  ],
  "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

Name Type Description
id string object id
uuid uuid object uuid
ctime integer virtual stroage service create time
Range: 0 <= value
mtime integer virtual storage service last modified time
Range: 0 <= value
label nullable string user assigned label
notes nullable string user assigned notes
node_id string storage node id
node_serial string storage node serial
account_id string account id
product_id string product id
location:country string ISO 3166-1 alpha-3 country code
default: ""
location:lat number latitude
default: 0
location:long number longitude
default: 0
location:city string city
default: ""
location:state string state as two-character USPS abbreviation
default: ""
location_str string location short string
tier string datacenter infrastructure tier
one of:"I" or "II" or "III" or "IV"
serial string virtual storage service serial number
cap_size_ratio nullable number ratio of user addressable capacity to size
quota nullable object restrictions on virtual storage service size and IOPS
quota:size:limit nullable integer upper hard limit on size
quota:size:notify nullable integer notification threshold for size
quota:size:reserve integer guaranteed storage resources
quota:iops:limit nullable integer limit on sustained I/O operations per second
quota:iops:reserve integer reserve I/O operations per second
quota:iops:burst nullable integer upper limit for rate that burst credits can be spent
quota:iops:burst_credits nullable integer upper limit on the number bursting credits that may be accumulated
trashed boolean waiting for garbage collection
xmd_refs array array of extensible metadata reference keys
xref string arbitrary string reference
status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detail nullable string status detail
isotime nullable date-time local time on node
humantime nullable string human-readable time on node
build_version nullable string version of software running on node
build_time nullable string time and date that node software was built
version nullable object build version
version:hash string build hash
version:minor integer build minor version
version:major integer build major version
version:timestamp integer build timestamp
version:patch integer build patch version
version:tag string build tag
version:release string build release
sizing nullable object virtual storage service sizing information
sizing:size nullable integer size of virtual storage service (in bytes)
sizing:snapshot nullable integer snapshot size (in bytes)
sizing:fragments nullable integer fragment size (in bytes)
sizing:reserve_total nullable integer reserved size of all disks or the virtual storage service reserve, whichever is greater (in bytes)
xmd/id string no documentation
xmd/ref string arbitrary string reference key
xmd/mtime integer last modified time of xmd
Range: 0 <= value
xmd/tags array object tags
xmd/self boolean no documentation
xmd/data nullable string no 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:25:10 \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:46 GMT
Server: Goliath
ETag: "b98984a3c7fb96408514cdb42a661910"
Content-Type: application/json
Content-Length: 1291
{
  "id": "vss:25:10",
  "uuid": "6ffe73e7-1e3a-4cb2-bfbc-6c0ba3b7171e",
  "serial": "VSS1862494C406265C0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053365635,
  "mtime": 1493053366624,
  "seq": 1493053366737,
  "label": "vss1",
  "notes": "vss label updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053366000,
      "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": 1493053366721
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "node_serial": "NOD0F68894C40601550",
  "location": {
    "country": "USA",
    "lat": 40,
    "long": -43,
    "city": "Newark",
    "state": "NJ"
  },
  "tier": "IV",
  "quota": {
    "size": {
      "limit": 1073741824,
      "notify": 1073741824,
      "reserve": 1073741824
    },
    "iops": {
      "limit": null,
      "reserve": 0,
      "burst": null,
      "burst_credits": null
    }
  },
  "cap_size_ratio": 1.0,
  "isotime": "2017-04-24T17:02+00:00",
  "build_version": "3.1.1-3973.4",
  "build_time": "Wed Apr 19 18:12 UTC 2017",
  "version": {
    "major": 3,
    "minor": 1,
    "patch": 1,
    "release": "3973.4",
    "tag": "",
    "hash": "124a0ae3faae6c1034b8da9fd488646b7246d106",
    "timestamp": 1492625532000
  },
  "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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:45 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

Name Type Description
token string provision token
pattern: [a-fA-F0-9]*
vss:label nullable string label
vss:xmd_refs array array of extensible metadata reference keys
vss:xref string arbitrary string reference
vss:notes string user assigned notes
disk:create boolean create disk
disk:label nullable string label
disk:tags array disk tags
disk:xmd_refs array array of extensible metadata reference keys
disk:xref string arbitrary string reference
disk:obj_store_id string object store id from which virtual disk is cloned
disk:backup_id string backup ID from which virtual disk is cloned
profile:create boolean create profile
profile:label nullable string label
profile:xmd_refs array array of extensible metadata reference keys
profile:xref string arbitrary string reference
target:create boolean create target
target:label nullable string label
target:xmd_refs array array of extensible metadata reference keys
target:xref string arbitrary string reference
target:map_disk boolean map created disk into target
default: true
target:allow_profile boolean add profile to access control list
default: true
xmd:create boolean create xmd
xmd:ref string arbitrary string reference key
xmd:label nullable string label
xmd:notes string user assigned notes
xmd:tags array tags
xmd:xmd_refs array array of extensible metadata reference keys
xmd:xref string arbitrary string reference
xmd:publish boolean publish xmd
xmd:reservation boolean reserve xmd grouping
xmd:exists_ok boolean create is idempotent
account_id string account id
query:capacity integer capacity to reserve
query:iops integer IOPS to reserve
query:scheduling_algorithm string scheduling algorithm label
query:tags:include array include array
query:tags:exclude array exclude array
query:count integer number of results
default: 1
query:template string service template

Curl Example

$ curl -X POST https://mgmt-node/api/vss \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "token": "5b313439333035333336353335332c2270726f647563743a363a3130222c313037333734313832342c226770225d"
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:45 GMT
Server: Goliath
ETag: "1f7c466f62d151b2d542318e2f624fb0"
Content-Type: application/json
Content-Length: 1222
{
  "id": "vss:25:10",
  "uuid": "6ffe73e7-1e3a-4cb2-bfbc-6c0ba3b7171e",
  "serial": "VSS1862494C406265C0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053365635,
  "mtime": 1493053365814,
  "seq": 1493053365829,
  "label": "service-7",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053365731
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "node_serial": "NOD0F68894C40601550",
  "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-04-24T17:02+00:00",
  "build_version": "3.1.1-3973.4",
  "build_time": "Wed Apr 19 18:12 UTC 2017",
  "version": {
    "major": 3,
    "minor": 1,
    "patch": 1,
    "release": "3973.4",
    "tag": "",
    "hash": "124a0ae3faae6c1034b8da9fd488646b7246d106",
    "timestamp": 1492625532000
  },
  "sizing": null
}

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:22:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56: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

Name Type Description
xmd_refs array array of extensible metadata reference keys
label nullable string user assigned label
notes string user assigned notes

Curl Example

$ curl -X PATCH https://mgmt-node/api/vss/vss:25:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "label": "vss1",
  "notes": "vss label updated"
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:46 GMT
Server: Goliath
ETag: "4878416f37f3553beee3cc09df9b40e1"
Content-Type: application/json
Content-Length: 1232
{
  "id": "vss:25:10",
  "uuid": "6ffe73e7-1e3a-4cb2-bfbc-6c0ba3b7171e",
  "serial": "VSS1862494C406265C0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053365635,
  "mtime": 1493053366243,
  "seq": 1493053366252,
  "label": "vss1",
  "notes": "vss label updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053365731
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "node_serial": "NOD0F68894C40601550",
  "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-04-24T17:02+00:00",
  "build_version": "3.1.1-3973.4",
  "build_time": "Wed Apr 19 18:12 UTC 2017",
  "version": {
    "major": 3,
    "minor": 1,
    "patch": 1,
    "release": "3973.4",
    "tag": "",
    "hash": "124a0ae3faae6c1034b8da9fd488646b7246d106",
    "timestamp": 1492625532000
  },
  "sizing": null
}

Virtual Storage Service Quota Update

Change the quota for a virtual storage service.

PUT /vss/{vss_id_or_serial}/quota

Optional Parameters

Name Type Description
size:limit nullable integer upper hard limit on size
size:notify nullable integer notification threshold for size
size:reserve integer guaranteed storage resources
default: 0
iops:limit nullable integer limit on sustained I/O operations per second
iops:reserve integer reserve I/O operations per second
default: 0
iops:burst nullable integer upper limit for rate that burst credits can be spent
iops:burst_credits nullable integer upper limit on the number bursting credits that may be accumulated

Curl Example

$ curl -X PUT https://mgmt-node/api/vss/vss:25:10/quota \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "size": {
    "limit": 1073741824,
    "notify": 1073741824,
    "reserve": 1073741824
  }
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:46 GMT
Server: Goliath
ETag: "2eb73dbe3a90d331645fba2b412af0b2"
Content-Type: application/json
Content-Length: 1236
{
  "id": "vss:25:10",
  "uuid": "6ffe73e7-1e3a-4cb2-bfbc-6c0ba3b7171e",
  "serial": "VSS1862494C406265C0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053365635,
  "mtime": 1493053366624,
  "seq": 1493053366639,
  "label": "vss1",
  "notes": "vss label updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053365731
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "node_serial": "NOD0F68894C40601550",
  "location": {
    "country": "USA",
    "lat": 40,
    "long": -43,
    "city": "Newark",
    "state": "NJ"
  },
  "tier": "IV",
  "quota": {
    "size": {
      "limit": 1073741824,
      "notify": 1073741824,
      "reserve": 1073741824
    },
    "iops": {
      "limit": null,
      "reserve": 0,
      "burst": null,
      "burst_credits": null
    }
  },
  "cap_size_ratio": 1.0,
  "isotime": "2017-04-24T17:02+00:00",
  "build_version": "3.1.1-3973.4",
  "build_time": "Wed Apr 19 18:12 UTC 2017",
  "version": {
    "major": 3,
    "minor": 1,
    "patch": 1,
    "release": "3973.4",
    "tag": "",
    "hash": "124a0ae3faae6c1034b8da9fd488646b7246d106",
    "timestamp": 1492625532000
  },
  "sizing": null
}

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

Name Type Description
id string object id
uuid uuid object uuid
ctime integer virtual disk create time
Range: 0 <= value
mtime integer virtual disk last modified time
Range: 0 <= value
type string vdisk type
one of:"internal" or "external"
label nullable string user assigned label
notes nullable string user assigned notes
tags array object tags
vss_id string virtual storage service id
node_id string storage node id
account_id string account id
basis_id nullable string snapshot id from which disk is cloned (if clone)
object_basis nullable object object basis for clone
object_basis:obj_store_id string object store id from which virtual disk is cloned
object_basis:object_key string object key from which virtual disk is cloned
transient boolean disk is transient
capacity nullable integer user addressable capacity in bytes
blk_encoding nullable string encryption type and format of virtual blocks
one of:"aes256-gcm-4k" or "aes128-xts-4k"
cap_size_ratio nullable number ratio of user addressable capacity to size
quota nullable object restrictions on virtual disk size and IOPS
quota:size:limit nullable integer upper hard limit on size
quota:size:notify nullable integer notification threshold for size
quota:size:reserve integer guaranteed storage resources
quota:iops:limit nullable integer limit on sustained I/O operations per second
quota:workload nullable string workload hint
one of:"lower_iops" or "normal_iops" or "higher_iops"
locked boolean virtual disk is locked
caps:dif nullable boolean disk supports SCSI data integrity field
caps:encryption nullable string encryption technique for stored data blocks
caps:eval nullable boolean disk is non-persistent, for demonstration use only
scsi:protocol string SCSI protocol compatibility set
scsi:tagged_queuing boolean tagged queuing
default: true
scsi:reservations boolean persistent reservations
default: true
scsi:lu_serial string logical unit serial number
scsi:vendor_id nullable string SCSI vendor id string
scsi:eui64_id nullable string EUI-64 id string
scsi:t10_id nullable string T10 id string
scsi:naa_id nullable string Network Address Authority id string
scsi:ua_interlock nullable boolean unit attention interlock
scsi:aca nullable boolean auto-contingent alliegance
scsi:vendor_ext nullable boolean vendor extensions
scsi:dif nullable boolean data integrity field
scsi:multi_map nullable boolean multi-map permitted
scsi:read_only nullable boolean read-only disk
scsi:removable nullable boolean removable disk emulation
scsi:advise_lbp nullable boolean advisory logical block provisioning
scsi:features string SCSI features summary
scsi:write_once nullable boolean Write-once disk
replication nullable object virtual disk replication parameters
replication:master nullable object replication master parameters
replication:master:disk_id string master virtual disk id
replication:master:disk_serial string master virtual disk serial number
replication:slaves/state string slave state
one of:"disabled" or "enabled" or "suspended"
replication:slaves/disk_id string slave virtual disk id
replication:slaves/disk_serial string slave virtual disk serial number
replication:slaves/config:mode string replication mode
one of:"async" or "sync" or "async-ordered"
replication:slaves/config:max_lag_cmds integer maximum commands to lag behind during async replication
replication:slaves/config:max_lag_bytes integer maximum bytes to lag behind during async replication
replication:slaves/config:recovery string recovery options
one of:"none" or "drl"
replication:slaves/config:rebuild_bandwidth integer rebuild bandwidth limit in bytes/sec
default: 0
replication:slaves/config:rebuild_hash boolean use a hashing optimization to reduce network traffic during rebuild
default: true
replication:slaves/config:timeout integer time to wait (in milliseconds) before stopping an unresponsive slave
default: 20000
Range: 100 <= value
replication:slaves/policy nullable string replication policy
serial string virtual disk serial number
task:id string running task id
task:op string task state
one of:"none" or "backup" or "format" or "verify" or "synchronize" or "resize"
trashed boolean object is awaiting garbage collection
xmd_refs array array of extensible metadata reference keys
xref string arbitrary string reference
readahead:mode nullable string readahead mode control
one of:"none" or "constant"
readahead:size integer readahead size
Range: value <= 4194304
encryption nullable object virtual disk encryption details
encryption:method string encryption method keyword
encryption:method_desc string human-readable encryption method description
encryption:cipher string encryption cipher keyword
encryption:cipher_desc string human-readable encryption cipher description
encryption:mode string encryption mode keyword
encryption:mode_desc string human-readable encryption mode description
encryption:key_desc string human-readable encryption key description
data_cache nullable boolean data read from disk will be cached
status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detail nullable string status detail
scsi_reservations nullable object virtual disk scsi reservations
scsi_reservations:generation integer SCSI reservation generation
scsi_reservations:persist boolean persist through power loss
scsi_reservations:reserve6:ini_id string reservation initiator id
scsi_reservations:reserve6:isid integer reservation iSCSI session id
Range: value <= 281474976710660
scsi_reservations:reservations/holder boolean reservation holder
scsi_reservations:reservations/ini_id string reservation initiator id
scsi_reservations:reservations/isid integer reservation iSCSI session id
Range: value <= 281474976710660
scsi_reservations:reservations/key integer reservation key
scsi_reservations:reservations/type string reservation 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_loaded nullable boolean removable media loaded (if removable)
loaded_profile_id nullable string loaded initiator profile (if removable)
loaded_profile_serial nullable string loaded initiator profile serial number (if removable)
sizing:size nullable integer size in bytes
sizing:snapshot nullable integer total snapshot size in bytes
replication_rts nullable object virtual disk replication run-time state
replication_rts:master nullable object replication master status, from slave
replication_rts:master:state nullable string virtual disk slave-side replication state
one of:"initializing" or "attached" or "detaching" or "rendezvous"
replication_rts:master:consistency:master_serial nullable string slave consistency reported with respect to specified master virtual disk serial number
replication_rts:master:consistency:master nullable string slave consistency reported with respect to specified master virtual disk ID
replication_rts:master:consistency:time nullable integer slave is consistent with master as of this time
Range: 0 <= value
replication_rts:master:consistency:repl_id nullable string virtual disk SCSI id
replication_rts:slaves/disk_id string replication slave virtual disk id
replication_rts:slaves/syndromes array master-side slave state syndrome list, if available
replication_rts:slaves/state nullable string virtual 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/rebuild nullable object statistics for the replication rebuild phase
replication_rts:slaves/rebuild:elapsed integer elapsed time of rebuild in milliseconds
replication_rts:slaves/rebuild:bandwidth integer interval SCSI end-to-end bandwidth in bytes/second
replication_rts:slaves/rebuild:goal integer estimated total SCSI transfer bytes
replication_rts:slaves/rebuild:mode string replication rebuild mode
one of:"unknown" or "initial" or "recovery"
replication_rts:slaves/rebuild:evaluated integer of estimated transfer bytes, number evaluated
replication_rts:slaves/rebuild:transfer integer total number of bytes written to destination
replication_rts:slaves/rebuild:progress integer percent complete
Range: 0 <= value <= 100
replication_rts:slaves/rebuild:ettc nullable integer estimated time to completion in milliseconds
Range: 0 <= value <= 2147483647000
replication_rts:slaves/rebuild:start_time integer start time of this rebuild in milliseconds since epoch
Range: 0 <= value
replication_rts:slaves/active nullable object stats for the replication rebuild phase
replication_rts:slaves/active:bandwidth integer average network bandwidth in bytes/second
replication_rts:slaves/active:cmd_lag integer command lag
replication_rts:slaves/active:byte_lag integer transfer lag
replication_rts:slaves/active:latency integer write latency in milliseconds
replication_rts:slaves/active:history/bandwidth integer average network bandwidth in bytes/second
replication_rts:slaves/active:history/cmd_lag integer command lag
replication_rts:slaves/active:history/byte_lag integer transfer lag
replication_rts:slaves/active:history/latency integer write latency in milliseconds
replication_rts:slaves/active:history/timestamp integer timestamp of this snapshot
Range: 0 <= value
replication_rts:slaves/active:transfer integer bytes transferred
replication_rts:slaves/repair nullable string replication slave repair method
one of:"repair" or "synchronize"
iops nullable integer normalized 4K I/O operations per second
xmd/id string no documentation
xmd/ref string arbitrary string reference key
xmd/mtime integer last modified time of xmd
Range: 0 <= value
xmd/tags array object tags
xmd/self boolean no documentation
xmd/data nullable string no documentation

Virtual Disk Info

Retrieve an existing virtual disk.

GET /vdisk/{vdisk_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/vdisk/vdisk:24:10 \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:48 GMT
Server: Goliath
ETag: "430ee5303dceeb39bd8eb4b7ab337142"
Content-Type: application/json
Content-Length: 2026
{
  "id": "vdisk:24:10",
  "uuid": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
  "serial": "DSK1962394C406265D0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:25:10",
  "vdisk_id": null,
  "ctime": 1493053366990,
  "mtime": 1493053368587,
  "seq": 1493053368716,
  "label": "disk-1",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053368000,
      "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": 1493053368716
  },
  "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.DSK1962394C406265D0",
    "vendor_id": "B*BRIDGE",
    "t10_id": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
    "naa_id": "naa.60a010a0d8d7e4a41962394c406265d0"
  },
  "caps": {
    "encryption": "XTS-AES-128",
    "eval": false
  },
  "task": {
    "op": "none"
  },
  "capacity": 2073741824,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 79869184
    },
    "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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:47 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1293
[
  {
    "id": "vss:25:10",
    "uuid": "6ffe73e7-1e3a-4cb2-bfbc-6c0ba3b7171e",
    "serial": "VSS1862494C406265C0",
    "evt_query": null,
    "account_id": "account:1:10",
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493053365635,
    "mtime": 1493053366624,
    "seq": 1493053366737,
    "label": "vss1",
    "notes": "vss label updated",
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "table": {
        "time": 1493053366000,
        "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": 1493053366721
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "node_serial": "NOD0F68894C40601550",
    "location": {
      "country": "USA",
      "lat": 40,
      "long": -43,
      "city": "Newark",
      "state": "NJ"
    },
    "tier": "IV",
    "quota": {
      "size": {
        "limit": 1073741824,
        "notify": 1073741824,
        "reserve": 1073741824
      },
      "iops": {
        "limit": null,
        "reserve": 0,
        "burst": null,
        "burst_credits": null
      }
    },
    "cap_size_ratio": 1.0,
    "isotime": "2017-04-24T17:02+00:00",
    "build_version": "3.1.1-3973.4",
    "build_time": "Wed Apr 19 18:12 UTC 2017",
    "version": {
      "major": 3,
      "minor": 1,
      "patch": 1,
      "release": "3973.4",
      "tag": "",
      "hash": "124a0ae3faae6c1034b8da9fd488646b7246d106",
      "timestamp": 1492625532000
    },
    "sizing": {
      "size": 0,
      "snapshot": 0,
      "reserve_total": 1073741824
    }
  }
]

Virtual Disk Create

Create a new internal virtual disk.

POST /vdisk

Required Parameters

Name Type Description
vss_id string virtual storage service id
capacity integer capacity in bytes
Range: 1048576 <= value <= 1125899906842624

Optional Parameters

Name Type Description
uuid uuid virtual disk UUID
label nullable string user assigned label
xmd_refs array array of extensible metadata reference keys
xref string arbitrary string reference
multi_map boolean virtual disk can be mapped into multiple targets
read_only boolean virtual disk is read-only
removable boolean virtual disk is removable
notes string user assigned notes
scsi_advise_lbp boolean advisory SCSI logical block provisioning (internal use only)
tags array object tags
quota:size:limit nullable integer upper hard limit on size
quota:size:notify nullable integer notification threshold for size
quota:size:reserve integer guaranteed storage resources
default: 0
quota:iops:limit nullable integer limit on sustained I/O operations per second
quota:workload nullable string workload hint
default: "normal_iops"
one of:"lower_iops" or "normal_iops" or "higher_iops"
fs_type string filesystem formatting type
one of:"ntfs" or "ext4" or "hfsplus"
fs_options:fs_type string filesystem formatting type
one of:"ntfs" or "ext4" or "hfsplus"
readahead:mode string readahead mode control
default: "constant"
one of:"none" or "constant"
readahead:size integer readahead size in bytes (rounded internally to 512-byte blocks)
default: 131072
Range: 4096 <= value <= 4194304
write_once boolean disk is write-once (block can not be re-written)
data_cache boolean data read from disk will be cached
default: true

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "vss_id": "vss:25:10",
  "capacity": 1048576
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:47 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2003
{
  "id": "vdisk:24:10",
  "uuid": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
  "serial": "DSK1962394C406265D0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:25:10",
  "vdisk_id": null,
  "ctime": 1493053366990,
  "mtime": 1493053367117,
  "seq": 1493053367156,
  "label": "disk-1",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053367013
  },
  "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.DSK1962394C406265D0",
    "vendor_id": "B*BRIDGE",
    "t10_id": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
    "naa_id": "naa.60a010a0d8d7e4a41962394c406265d0"
  },
  "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:19:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56:34 GMT
Server: Goliath

Virtual Disk Update

Change the configuration of an existing internal virtual disk.

PATCH /vdisk/{vdisk_id_or_serial}

Optional Parameters

Name Type Description
xmd_refs array array of extensible metadata reference keys
multi_map boolean virtual disk can be mapped in multiple targets
read_only boolean virtual disk is read-only
removable boolean virtual disk is removable
ua_interlock boolean support for SCSI unit attention interlock
dif boolean support for SCSI data integrity field
scsi_advise_lbp boolean advisory SCSI logical block provisioning (internal use only)
label nullable string user assigned label
notes string user assigned notes
tags array object tags
readahead:mode string readahead mode control
one of:"none" or "constant"
readahead:size integer readahead size in bytes (rounded internally to 512-byte blocks)
Range: 4096 <= value <= 4194304
write_once boolean disk is write-once (blocks can not be re-written)
data_cache boolean data read from disk will be cached

Curl Example

$ curl -X PATCH https://mgmt-node/api/vdisk/vdisk:24:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "label": "disk",
  "notes": "vdisk label changed"
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:49 GMT
Server: Goliath
ETag: "3794df7438c834654a44f971d5646e88"
Content-Type: application/json
Content-Length: 2041
{
  "id": "vdisk:24:10",
  "uuid": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
  "serial": "DSK1962394C406265D0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:25:10",
  "vdisk_id": null,
  "ctime": 1493053366990,
  "mtime": 1493053368986,
  "seq": 1493053368997,
  "label": "disk",
  "notes": "vdisk label changed",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053368000,
      "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": 1493053368716
  },
  "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.DSK1962394C406265D0",
    "vendor_id": "B*BRIDGE",
    "t10_id": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
    "naa_id": "naa.60a010a0d8d7e4a41962394c406265d0"
  },
  "caps": {
    "encryption": "XTS-AES-128",
    "eval": false
  },
  "task": {
    "op": "none"
  },
  "capacity": 2073741824,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 79869184
    },
    "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

Name Type Description
size:limit nullable integer upper hard limit on size
size:notify nullable integer notification threshold for size
size:reserve integer guaranteed storage resources
default: 0
iops:limit nullable integer limit on sustained I/O operations per second
workload nullable string workload 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:24:10/quota \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "size": {
    "reserve": 79869184
  }
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:47 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2010
{
  "id": "vdisk:24:10",
  "uuid": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
  "serial": "DSK1962394C406265D0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:25:10",
  "vdisk_id": null,
  "ctime": 1493053366990,
  "mtime": 1493053367609,
  "seq": 1493053367623,
  "label": "disk-1",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053367013
  },
  "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.DSK1962394C406265D0",
    "vendor_id": "B*BRIDGE",
    "t10_id": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
    "naa_id": "naa.60a010a0d8d7e4a41962394c406265d0"
  },
  "caps": {
    "encryption": null,
    "eval": null
  },
  "task": {
    "op": "none"
  },
  "capacity": 1048576,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 79869184
    },
    "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 Add Replication Master

Add a replication master or slave virtual disk.

POST /vdisk/{vdisk_id_or_serial}/replication/master

Required Parameters

Name Type Description
vdisk_id string virtual disk id to add as replica

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:26:10/replication/master \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "vdisk_id": "vdisk:25:10"
}'

Response Example

204 No Content
Date: Mon, 24 Apr 2017 17:02:52 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:26:10/replication/master/vdisk:25:10 \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 17:02:52 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

Name Type Description
vdisk_id string virtual disk id to add as replica

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:25:10/replication/slaves \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "vdisk_id": "vdisk:26:10"
}'

Response Example

204 No Content
Date: Mon, 24 Apr 2017 17:02:52 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

Name Type Description
state string state transition to perform
one of:"enable" or "disable" or "suspend" or "resume"
config:mode string replication mode
one of:"async" or "sync" or "async-ordered"
config:max_lag_cmds integer maximum commands to lag behind during async replication
default: 0
config:max_lag_bytes integer maximum bytes to lag behind during async replication
default: 0
config:recovery string recovery options
default: "drl"
one of:"none" or "drl"
config:rebuild_bandwidth integer rebuild bandwidth limit in bytes/sec
default: 0
config:rebuild_hash boolean use a hashing optimization to reduce network traffic during rebuild
default: true
config:timeout integer time 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:25:10/replication/slaves/vdisk:26:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "state": "enable",
  "config": {
    "mode": "async-ordered"
  }
}'

Response Example

204 No Content
Date: Mon, 24 Apr 2017 17:02:52 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:25:10/replication/slaves/vdisk:26:10 \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 17:02:53 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

Name Type Description
master_id string virtual disk id of replica master
slave_id string virtual 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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "master_id": "vdisk:26:10",
  "slave_id": "vdisk:25:10"
}'

Response Example

204 No Content
Date: Mon, 24 Apr 2017 17:02:54 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

Name Type Description
master_id string virtual disk id of replica master
slave_id string virtual 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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "master_id": "vdisk:25:10",
  "slave_id": "vdisk:26:10"
}'

Response Example

204 No Content
Date: Mon, 24 Apr 2017 17:02:54 GMT
Server: Goliath

Virtual Disk Rebuild Replication Slave

Rebuild a replication slave virtual disk.

POST /vdisk/actions/replication/rebuild

Required Parameters

Name Type Description
master_id string virtual disk id of replica master
slave_id string virtual 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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "master_id": "vdisk:25:10",
  "slave_id": "vdisk:26:10"
}'

Response Example

204 No Content
Date: Mon, 24 Apr 2017 17:02:54 GMT
Server: Goliath

Virtual Disk Resize

Change the size of an internal virtual disk

POST /vdisk/{vdisk_id_or_serial}/actions/resize

Required Parameters

Name Type Description
capacity integer new user addressable capacity in bytes
Range: 1048576 <= value <= 1125899906842624

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:24:10/actions/resize \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "capacity": 2073741824
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:48 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2027
{
  "id": "vdisk:24:10",
  "uuid": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
  "serial": "DSK1962394C406265D0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:25:10",
  "vdisk_id": null,
  "ctime": 1493053366990,
  "mtime": 1493053368263,
  "seq": 1493053368274,
  "label": "disk-1",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053367000,
      "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": 1493053367734
  },
  "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.DSK1962394C406265D0",
    "vendor_id": "B*BRIDGE",
    "t10_id": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
    "naa_id": "naa.60a010a0d8d7e4a41962394c406265d0"
  },
  "caps": {
    "encryption": "XTS-AES-128",
    "eval": false
  },
  "task": {
    "op": "none"
  },
  "capacity": 2073741824,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 79869184
    },
    "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 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

Name Type Description
passphrase string passphrase

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:24:10/actions/lock \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "passphrase": "foo"
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:48 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2026
{
  "id": "vdisk:24:10",
  "uuid": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
  "serial": "DSK1962394C406265D0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:25:10",
  "vdisk_id": null,
  "ctime": 1493053366990,
  "mtime": 1493053368587,
  "seq": 1493053368600,
  "label": "disk-1",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053367000,
      "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": 1493053367734
  },
  "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.DSK1962394C406265D0",
    "vendor_id": "B*BRIDGE",
    "t10_id": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
    "naa_id": "naa.60a010a0d8d7e4a41962394c406265d0"
  },
  "caps": {
    "encryption": "XTS-AES-128",
    "eval": false
  },
  "task": {
    "op": "none"
  },
  "capacity": 2073741824,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 79869184
    },
    "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

Name Type Description
passphrase string passphrase

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:24:10/actions/unlock \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "passphrase": "foo"
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:49 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2042
{
  "id": "vdisk:24:10",
  "uuid": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
  "serial": "DSK1962394C406265D0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:25:10",
  "vdisk_id": null,
  "ctime": 1493053366990,
  "mtime": 1493053369306,
  "seq": 1493053369319,
  "label": "disk",
  "notes": "vdisk label changed",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493053368000,
      "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": 1493053368716
  },
  "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.DSK1962394C406265D0",
    "vendor_id": "B*BRIDGE",
    "t10_id": "278b1828-65c2-44d3-be0a-e983a4e4d7d8",
    "naa_id": "naa.60a010a0d8d7e4a41962394c406265d0"
  },
  "caps": {
    "encryption": "XTS-AES-128",
    "eval": false
  },
  "task": {
    "op": "none"
  },
  "capacity": 2073741824,
  "quota": {
    "size": {
      "limit": null,
      "notify": null,
      "reserve": 79869184
    },
    "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

Name Type Description
profile_id string initiator profile id (for which virtual disk is loaded)

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:22:10/actions/load \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -d \
'{
  "profile_id": "initiator_profile:45:10"
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 16:56:16 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2033
{
  "id": "vdisk:22:10",
  "uuid": "8586e30f-55dd-42b4-8ad5-19acee4a5b4d",
  "serial": "DSK1962194C40626530",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:22:10",
  "vdisk_id": null,
  "ctime": 1493052975625,
  "mtime": 1493052975754,
  "seq": 1493052975941,
  "label": "rmv",
  "notes": "removable virtual disk",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493052975000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            2,
            2,
            2,
            2
          ],
          "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": 1493052975925
  },
  "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.DSK1962194C40626530",
    "vendor_id": "B*BRIDGE",
    "t10_id": "8586e30f-55dd-42b4-8ad5-19acee4a5b4d",
    "naa_id": "naa.60a010a04d5b4aee1962194c40626530"
  },
  "caps": {
    "encryption": "XTS-AES-128",
    "eval": false
  },
  "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": 0,
    "snapshot": 0
  },
  "media_loaded": false,
  "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

Name Type Description
profile_id string initiator profile id (for which virtual disk is loaded)

Optional Parameters

Name Type Description
label string user assigned label

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:19:10/actions/load-clone \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -d \
'{
  "profile_id": "initiator_profile:45:10",
  "label": "clone-disk"
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 16:56:17 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2034
{
  "id": "vdisk:23:10",
  "uuid": "3bbb58c6-df47-4e3d-9fcb-be4a6eddde63",
  "serial": "DSK1962994C40626520",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:22:10",
  "vdisk_id": null,
  "ctime": 1493052976447,
  "mtime": 1493052976840,
  "seq": 1493052977010,
  "label": "clone-disk",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "table": {
      "time": 1493052976000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            1,
            1,
            1,
            1
          ],
          "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": 1493052976950
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "basis_id": "snapshot:7: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.DSK1962994C40626520",
    "vendor_id": "B*BRIDGE",
    "t10_id": "3bbb58c6-df47-4e3d-9fcb-be4a6eddde63",
    "naa_id": "naa.60a010a063dedd6e1962994c40626520"
  },
  "caps": {
    "encryption": "XTS-AES-128",
    "eval": false
  },
  "task": {
    "op": "none"
  },
  "capacity": 2073741824,
  "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": 0,
    "snapshot": 0
  },
  "media_loaded": false,
  "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:22:10/actions/eject \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56:17 GMT
Server: Goliath

Virtual Disk Backup

Initiate a backup.

POST /vdisk/{vdisk_id_or_serial}/actions/backup

Required Parameters

Name Type Description
snapshot_id string snapshot id
obj_store_id string object store id

Optional Parameters

Name Type Description
uuid uuid backup UUID
object_key nullable string object store base key string

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:19:10/actions/backup \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -d \
'{
  "snapshot_id": "snapshot:8:10",
  "obj_store_id": "obj_store:6:10"
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 16:56:19 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 163
{
  "status": "success",
  "task_id": "ptask:584:10",
  "task_context": "a02c6c36-9002-4ea0-b4c7-ac07b0621e9f",
  "backup_id": "e68a37f1-bbfb-4421-814a-fdbaddc4f6e2",
  "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

Name Type Description
uuid uuid barrier UUID
expires integer relative expiration time (in ms)
vdisk_id string virtual disk ID

Curl Example

$ curl -X POST https://mgmt-node/api/vdisk/vdisk:24:10/barrier \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -d \
'{
  "uuid": "58308c7f-9501-4a03-a36d-31e2be6eb015",
  "expires": 5000
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:47 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 55
{
  "status": "success",
  "start": 1493053367867,
  "headers": {
  }
}

Virtual Disk Barrier Remove

Remove a virtual disk I/O barrier.

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

Required Parameters

Name Type Description
uuid uuid object uuid
vdisk_id string virtual disk ID

Curl Example

$ curl -X DELETE https://mgmt-node/api/vdisk/vdisk:24:10/barrier/58308c7f-9501-4a03-a36d-31e2be6eb015 \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:47 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

Name Type Description
id string object id
uuid uuid object uuid
ctime integer initiator profile create time
Range: 0 <= value
mtime integer initiator profile last modified time
Range: 0 <= value
label nullable string user assigned label
access_token:valid boolean access token is valid
access_token:created_stamp integer token created timestamp
Range: 0 <= value
access_token:id string access token id
iscsi:auth_method string authentication method string
iscsi:initiator_login string initator CHAP username
iscsi:initiator_login_suffix string initiator CHAP username suffix (account name)
iscsi:initiator_pass_set boolean password is set
iscsi:suggested_base_iqn string suggested IQN string for this profile
iscsi:initiator_list array initiator access list
iscsi:initiator_chap_mode string initiator CHAP mode
one of:"username" or "token"
iscsi:mutual_auth string mutual authentication administrative state
one of:"disabled" or "optional" or "required"
iscsi:target_login string mutual authentication target CHAP username
transport:mode string secure transport mode
one of:"tls" or "ikev2" or "ikev1" or "insecure"
transport:encryption_policy string transport encryption policy
default: "disallowed"
one of:"disallowed" or "optional" or "required"
transport:ikev1:mode string no documentation
one of:"transport"
transport:ikev1:auth string client authentication mode
one of:"psk"
transport:ikev2:mode string no documentation
one of:"transport" or "tunnel"
transport:ikev2:subnet string private subnet designation
default: "172_31"
one of:"172_31" or "172_30" or "10_1"
transport:ikev2:auth string client authentication mode
one of:"mschapv2"
transport:ikev2:mschapv2_user string MSCHAPv2 username
transport:tls:portal_ipaddr ipv4 virtual target portal ip address
transport:tls:portal_ipport integer virtual target portal ip port
account_id string account ref
serial string initiator profile serial number
vss_id nullable string virtual storage service id (if not global)
notes nullable string user assigned notes
replication boolean is profile for replication
xmd_refs array array of extensible metadata reference keys
xref nullable string arbitrary string reference
rules:options:timezone string timezone
one of:"local"
rules:access:ip/type string access type
one of:"allow" or "deny"
rules:access:ip/ip ipv4 IP address
rules:access:ip/mask ipv4 netmask
rules:access:weekly/type string access type
one of:"allow" or "deny"
rules:access:weekly/start integer start time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:access:weekly/end integer end time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:throttle:weekly/bandwidth integer bandwidth limit
rules:throttle:weekly/start integer start time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:throttle:weekly/end integer end time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:disk:commands string data commands
one of:"read-write" or "read-only" or "write-only"
status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detail nullable string status detail
xmd/id string no documentation
xmd/ref string arbitrary string reference key
xmd/mtime integer last modified time of xmd
Range: 0 <= value
xmd/tags array object tags
xmd/self boolean no documentation
xmd/data nullable string no 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:45:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:13 GMT
Server: Goliath
ETag: "8b19df695497139c5c9e0f9ffbb0e446"
Content-Type: application/json
Content-Length: 1469
{
  "id": "initiator_profile:45:10",
  "uuid": "90c0eaea-c74c-427f-9e2b-42fa3a411a61",
  "serial": "PRF0062794C40626680",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493052972221,
  "mtime": 1493052972738,
  "seq": 1493052972916,
  "label": "global_profile",
  "notes": "initiator profile was updated with chap info",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "status": "current",
    "table": {
      "time": 1493052972000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            3,
            3,
            3,
            3
          ],
          "v": "dbg"
        },
        {
          "d": [
            5,
            5,
            5,
            5
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1493052972916
  },
  "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-pjxazwbm",
    "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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:55 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2995
[
  {
    "id": "initiator_profile:50:10",
    "uuid": "8f43ddf2-7ac3-4124-a1f9-2914b7249eed",
    "serial": "PRF0062B94C40626770",
    "evt_query": null,
    "account_id": "account:1:10",
    "sds_id": null,
    "node_id": null,
    "vss_id": "vss:26:10",
    "vdisk_id": null,
    "ctime": 1493053373902,
    "mtime": 1493053373902,
    "seq": 1493053374718,
    "label": "replication-dsk1962b94c406265c0-e6029e5bfb28af21953f3b9e4637a545",
    "notes": null,
    "status": {
      "indicator": "online",
      "value": "online",
      "detail": ""
    },
    "trashed": null,
    "ec": {
      "status": "current",
      "table": {
        "time": 1493053374000,
        "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": 1493053374718
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "access_token": {
      "valid": false
    },
    "iscsi": {
      "auth_method": "Challenge-Handshake Authentication Protocol (CHAP)",
      "initiator_login": "replication-dsk1962b94c406265c0-e6029e5bfb28af21953f3b9e4637a545",
      "initiator_login_suffix": "@system",
      "initiator_pass_set": true,
      "suggested_base_iqn": "iqn.2009-12.com.blockbridge:i-pjxazwcb",
      "initiator_list": [
        "iqn.2009-12.com.blockbridge:i-pjxazwcb-replication-e6029e5bfb28af21953f3b9e4637a545"
      ],
      "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:51:10",
    "uuid": "8cfa11b9-24ee-4b4c-a5c8-87f176bcc958",
    "serial": "PRF0062394C40626760",
    "evt_query": null,
    "account_id": "account:1:10",
    "sds_id": null,
    "node_id": null,
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493053374939,
    "mtime": 1493053374939,
    "seq": 1493053374950,
    "label": "profile-1",
    "notes": null,
    "status": {
      "indicator": "online",
      "value": "online",
      "detail": ""
    },
    "trashed": null,
    "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": 1493053374950
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "access_token": {
      "valid": false
    },
    "iscsi": {
      "auth_method": "Challenge-Handshake Authentication Protocol (CHAP)",
      "initiator_login": "PRF0062394C40626760",
      "initiator_login_suffix": "@system",
      "initiator_pass_set": false,
      "suggested_base_iqn": "iqn.2009-12.com.blockbridge:i-pjxazwcc",
      "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

Name Type Description
xmd_refs array array of extensible metadata reference keys
xref string arbitrary string reference
label nullable string user assigned label
enabled boolean initiator profile enabled for access
default: true
initiator_login string initiator CHAP username
initiator_pass string initiator CHAP password
vss_id string profile is local to specified virtual storage service
initiator_list array initiator access list
initiator_chap_mode string initiator CHAP mode
one of:"username" or "token"
mutual_auth string mutual authentication
default: "disabled"
one of:"disabled" or "optional" or "required"
target_login string mutual authentication target CHAP username
target_pass string mutual authentication target CHAP password
transport:mode string secure transport mode
default: "insecure"
one of:"tls" or "ikev2" or "ikev1" or "insecure"
transport:encryption_policy string transport encryption policy
default: "disallowed"
one of:"disallowed" or "optional" or "required"
transport:ikev1:mode string no documentation
one of:"transport"
transport:ikev1:auth string client authentication mode
one of:"psk"
transport:ikev1:psk string pre-shared secret key
transport:ikev1:psk_confirm string no documentation
transport:ikev2:mode string no documentation
one of:"transport" or "tunnel"
transport:ikev2:subnet string private subnet designation
default: "172_31"
one of:"172_31" or "172_30" or "10_1"
transport:ikev2:auth string client authentication mode
one of:"mschapv2"
transport:ikev2:mschapv2_user string MSCHAPv2 username
transport:ikev2:mschapv2_pass string MSCHAPv2 password
transport:ikev2:mschapv2_pass_confirm string mschapv2 password (confirmation)
transport:tls:portal_ipaddr ipv4 virtual target portal ip address
default: "127.0.0.1"
transport:tls:portal_ipport integer virtual target portal ip port
default: 3260
rules:options:timezone string timezone
one of:"local"
rules:disk:commands string data commands
default: "read-write"
one of:"read-write" or "read-only" or "write-only"
rules:access:ip/type string access type
one of:"allow" or "deny"
rules:access:ip/ip ipv4 IP address
rules:access:ip/mask ipv4 netmask
rules:access:weekly/type string access type
one of:"allow" or "deny"
rules:access:weekly/start integer start time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:access:weekly/end integer end time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:throttle:weekly/bandwidth integer bandwidth limit
rules:throttle:weekly/start integer start time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:throttle:weekly/end integer end time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
notes string user assigned notes
uuid uuid object UUID

Curl Example

$ curl -X POST https://mgmt-node/api/initiator-profile \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

201 Created
Date: Mon, 24 Apr 2017 17:02:55 GMT
Server: Goliath
ETag: "ab0eb598f9a1f098b8c83857310c42bd"
Content-Type: application/json
Content-Length: 1371
{
  "id": "initiator_profile:51:10",
  "uuid": "8cfa11b9-24ee-4b4c-a5c8-87f176bcc958",
  "serial": "PRF0062394C40626760",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053374939,
  "mtime": 1493053374939,
  "seq": 1493053374950,
  "label": "profile-1",
  "notes": null,
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053374950
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "access_token": {
    "valid": false
  },
  "iscsi": {
    "auth_method": "Challenge-Handshake Authentication Protocol (CHAP)",
    "initiator_login": "PRF0062394C40626760",
    "initiator_login_suffix": "@system",
    "initiator_pass_set": false,
    "suggested_base_iqn": "iqn.2009-12.com.blockbridge:i-pjxazwcc",
    "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:45:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56: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

Name Type Description
xmd_refs array array of extensible metadata reference keys
enabled boolean initiator profile enabled for access
initiator_login string initiator CHAP username
initiator_pass string initiator CHAP password
initiator_list array initiator access list
initiator_chap_mode string initiator CHAP mode
one of:"username" or "token"
mutual_auth string mutual authentication
one of:"disabled" or "optional" or "required"
target_login string mutual authentication target CHAP username
target_pass string mutual authentication target CHAP password
transport:mode string secure transport mode
one of:"tls" or "ikev2" or "ikev1" or "insecure"
transport:encryption_policy string transport encryption policy
default: "disallowed"
one of:"disallowed" or "optional" or "required"
transport:ikev1:mode string no documentation
one of:"transport"
transport:ikev1:auth string client authentication mode
one of:"psk"
transport:ikev1:psk string pre-shared secret key
transport:ikev1:psk_confirm string no documentation
transport:ikev2:mode string no documentation
one of:"transport" or "tunnel"
transport:ikev2:subnet string private subnet designation
default: "172_31"
one of:"172_31" or "172_30" or "10_1"
transport:ikev2:auth string client authentication mode
one of:"mschapv2"
transport:ikev2:mschapv2_user string MSCHAPv2 username
transport:ikev2:mschapv2_pass string MSCHAPv2 password
transport:ikev2:mschapv2_pass_confirm string mschapv2 password (confirmation)
transport:tls:portal_ipaddr ipv4 virtual target portal ip address
default: "127.0.0.1"
transport:tls:portal_ipport integer virtual target portal ip port
default: 3260
rules:options:timezone string timezone
one of:"local"
rules:disk:commands string data commands
one of:"read-write" or "read-only" or "write-only"
rules:access:ip/type string access type
one of:"allow" or "deny"
rules:access:ip/ip ipv4 IP address
rules:access:ip/mask ipv4 netmask
rules:access:weekly/type string access type
one of:"allow" or "deny"
rules:access:weekly/start integer start time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:access:weekly/end integer end time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:throttle:weekly/bandwidth integer bandwidth limit
rules:throttle:weekly/start integer start time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
rules:throttle:weekly/end integer end time in milliseconds since the start of the week (Monday 00:00:00.000)
Range: 0 <= value <= 604799000
label nullable string user assigned label
notes string user assigned notes

Curl Example

$ curl -X PATCH https://mgmt-node/api/initiator-profile/initiator_profile:45:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -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, 24 Apr 2017 16:56:12 GMT
Server: Goliath
ETag: "8b19df695497139c5c9e0f9ffbb0e446"
Content-Type: application/json
Content-Length: 1469
{
  "id": "initiator_profile:45:10",
  "uuid": "90c0eaea-c74c-427f-9e2b-42fa3a411a61",
  "serial": "PRF0062794C40626680",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493052972221,
  "mtime": 1493052972738,
  "seq": 1493052972916,
  "label": "global_profile",
  "notes": "initiator profile was updated with chap info",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "status": "current",
    "table": {
      "time": 1493052972000,
      "hdrs": [
        3600000,
        86400000,
        604800000,
        2629800000
      ],
      "rows": [
        {
          "d": [
            3,
            3,
            3,
            3
          ],
          "v": "dbg"
        },
        {
          "d": [
            5,
            5,
            5,
            5
          ],
          "v": "info"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "warn"
        },
        {
          "d": [
            0,
            0,
            0,
            0
          ],
          "v": "err"
        }
      ]
    },
    "seq": 1493052972916
  },
  "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-pjxazwbm",
    "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

Name Type Description
tok_hash string cryptographic hash of access token (sha-256)
pad string random pad used during access token creation

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:45:10/token \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56:13 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

Name Type Description
id string object id
uuid uuid object uuid
ctime integer iSCSI target create time
Range: 0 <= value
mtime integer iSCSI target last modified time
Range: 0 <= value
iqn_base string base of iSCSI target IQN
pattern: ^iqn.\d{4}-\d{2}((?<!-).(?!-)[a-zA-Z0-9-]+){1,63}(?<!-)(?<!.)(:[^:]+)?}$
iqn_suffix string suffix of iSCSI target IQN
pattern: ^[a-z0-9.-]*$
iqn string iSCSI target IQN
pattern: ^iqn.\d{4}-\d{2}((?<!-).(?!-)[a-zA-Z0-9-]+){1,63}(?<!-)(?<!.)(:[^:]+)?}$
label nullable string user assigned label
alias string iSCSI target alias
account_id string account id
node_id string storage node id
vss_id string virtual storage service id
acl/profile_id string profile ref
acl/privacy string privacy permission level
default: "no"
one of:"yes" or "no"
acl/discover string discovery permission level
default: "no"
one of:"yes" or "no"
acl/access string access permission level
default: "no"
one of:"yes" or "no"
luns/lun integer SCSI logical unit number
Range: 0 <= value <= 16384
luns/vdisk_id string no documentation
notes nullable string user assigned notes
serial string iSCSI target serial number
automap boolean iSCSI target supports automapped LUNS
replication boolean iSCSI target is the virtual storage service replication target
xmd_refs array array of extensible metadata reference keys
xref string arbitrary string reference
status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detail nullable string status detail
sessions nullable array array of active iSCSI target sessions
sessions/profile_id string initiator profile ID
sessions/ini_id string initiator id
sessions/isid integer iSCSI session ID
Range: value <= 281474976710660
sessions/ini_alias string initiator alias
sessions/tsih integer target session identifying handle
Range: 0 <= value <= 65535
sessions/age integer session age (in milliseconds)
sessions/prm:max_conn integer max connections
Range: 1 <= value <= 65535
sessions/prm:erlvl integer error recovery level
Range: 0 <= value <= 2
sessions/prm:immed boolean immediate data
sessions/prm:init_r2t boolean initial R2T
sessions/prm:inrd_data boolean In Order Data
sessions/prm:inrd_seq boolean In Order Sequence
sessions/prm:fbl integer first burst length
Range: 512 <= value <= 16777215
sessions/prm:mbl integer maximum burst length
Range: 512 <= value <= 16777215
sessions/conns/cid integer connection ID
Range: 0 <= value <= 65535
sessions/conns/port integer initiator TCP port
sessions/conns/hdr_dig boolean Header Digest
sessions/conns/dat_dig boolean Data Digest
sessions/conns/rcv_win integer TCP Receive Window
sessions/conns/latency integer latency in milliseconds
sessions/conns/sec_mode string security mode
one of:"insecure" or "ssl" or "ipsec"
sessions/conns/ipsec:crypt_alg string crypto algorithm
sessions/conns/ipsec:auth_mode string authentication cipher mode
sessions/conns/ipsec:tunnel boolean tunnel mode
sessions/conns/ipsec:auth_len integer authentication key length
sessions/conns/ipsec:auth_alg string authentication algorithm
sessions/conns/ipsec:crypt_len integer crypto key length
sessions/conns/ipsec:crypt_mode string crypto cipher mode
sessions/conns/ssl:comp boolean is compressed
sessions/conns/ssl:comp_alg string compression algorithm
sessions/conns/ssl:version string SSL version
sessions/conns/peer_inner nullable ipv4 initiator IP address, tunnel mode inner
sessions/conns/peer_outer ipv4 initiator IP address, public
sessions/conns/host_inner nullable ipv4 target IP address, tunnel mode inner
sessions/conns/host_outer ipv4 target IP address, public
portals/hostname nullable hostname iSCSI target portal DNS hostname
portals/interface nullable string iSCSI target portal network interface
portals/up nullable boolean iSCSI target portal network interface is up
portals/speed nullable integer iSCSI target portal network interface link speed
portals/duplex nullable string network interface duplex
one of:"half" or "full" or "unknown"
portals/ipaddrs/addr ipv4 iSCSI target portal ip address
portals/ipaddrs/port integer iSCSI target portal ip port
portals/ipaddrs/family string network interface family
one of:"IPv4" or "IPv6" or "unknown"
portals/ipaddrs/detail string iSCSI target portal ip detail
pps nullable integer iSCSI PDUs per second
xmd/id string no documentation
xmd/ref string arbitrary string reference key
xmd/mtime integer last modified time of xmd
Range: 0 <= value
xmd/tags array object tags
xmd/self boolean no documentation
xmd/data nullable string no documentation

iSCSI Target Info

Retrieve an existing iSCSI target.

GET /target/{target_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/target/target:45:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:14 GMT
Server: Goliath
ETag: "0d01a146a60280106b48f60b7f110530"
Content-Type: application/json
Content-Length: 1242
{
  "id": "target:45:10",
  "uuid": "76ddad9a-f078-4022-994c-4ec3ba302279",
  "serial": "TGT1D62D94C40626680",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:22:10",
  "vdisk_id": null,
  "ctime": 1493052973500,
  "mtime": 1493052974014,
  "seq": 1493052974022,
  "label": "target",
  "notes": "target was updated",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "status": "current",
    "table": {
      "time": 1493052973000,
      "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"
        }
      ]
    },
    "seq": 1493052973920
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "iqn": "iqn.2009-12.com.blockbridge:t-pjxazwbm-fobmkfhp:target-1",
  "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazwbm-",
  "iqn_suffix": "fobmkfhp:target-1",
  "alias": "target-1",
  "acl": [
    {
      "profile_id": "initiator_profile:45: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.10.157",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe51:6469%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/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:13 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1134
[
  {
    "id": "target:45:10",
    "uuid": "76ddad9a-f078-4022-994c-4ec3ba302279",
    "serial": "TGT1D62D94C40626680",
    "evt_query": null,
    "account_id": "account:1:10",
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": "vss:22:10",
    "vdisk_id": null,
    "ctime": 1493052973500,
    "mtime": 1493052973500,
    "seq": 1493052973519,
    "label": "target-1",
    "notes": null,
    "status": {
      "indicator": "online",
      "value": "online",
      "detail": ""
    },
    "trashed": null,
    "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": 1493052973519
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "iqn": "iqn.2009-12.com.blockbridge:t-pjxazwbm-fobmkfhp:target-1",
    "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazwbm-",
    "iqn_suffix": "fobmkfhp: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.10.157",
            "port": 3260,
            "family": "IPv4"
          },
          {
            "addr": "fe80::f816:3eff:fe51:6469%eth0",
            "port": 3260,
            "family": "IPv6"
          }
        ]
      }
    ]
  }
]

iSCSI Target Create

Create a new iSCSI target.

POST /target

Required Parameters

Name Type Description
vss_id string virtual storage service id

Optional Parameters

Name Type Description
label nullable string user assigned label
xmd_refs array array of extensible metadata reference keys
xref string arbitrary string reference
iqn_suffix string suffix for generated iSCSI target IQN
pattern: ^[a-z0-9.-]*$
alias string iSCSI target alias
acl/profile_id string profile ref
acl/privacy string privacy permission level
default: "no"
one of:"yes" or "no"
acl/discover string discovery permission level
default: "no"
one of:"yes" or "no"
acl/access string access permission level
default: "no"
one of:"yes" or "no"
luns/lun integer SCSI logical unit number
Range: 0 <= value <= 16384
luns/vdisk_id string no documentation
notes string user assigned notes
automap boolean target allows automap
uuid uuid object UUID

Curl Example

$ curl -X POST https://mgmt-node/api/target \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -d \
'{
  "vss_id": "vss:22:10"
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 16:56:13 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1132
{
  "id": "target:45:10",
  "uuid": "76ddad9a-f078-4022-994c-4ec3ba302279",
  "serial": "TGT1D62D94C40626680",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:22:10",
  "vdisk_id": null,
  "ctime": 1493052973500,
  "mtime": 1493052973500,
  "seq": 1493052973519,
  "label": "target-1",
  "notes": null,
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493052973519
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "iqn": "iqn.2009-12.com.blockbridge:t-pjxazwbm-fobmkfhp:target-1",
  "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazwbm-",
  "iqn_suffix": "fobmkfhp: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.10.157",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe51:6469%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:45:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56:33 GMT
Server: Goliath

iSCSI Target Update

Change the configuration of an existing iSCSI target.

PATCH /target/{target_id_or_serial}

Optional Parameters

Name Type Description
xmd_refs array array of extensible metadata reference keys
acl/profile_id string profile ref
acl/privacy string privacy permission level
default: "no"
one of:"yes" or "no"
acl/discover string discovery permission level
default: "no"
one of:"yes" or "no"
acl/access string access permission level
default: "no"
one of:"yes" or "no"
luns/lun integer SCSI logical unit number
Range: 0 <= value <= 16384
luns/vdisk_id string no documentation
iqn_suffix string suffix for generated iSCSI target IQN
pattern: ^[a-z0-9.-]*$
label nullable string user assigned label
alias string iSCSI target alias
notes string user assigned notes
automap boolean target allows automap

Curl Example

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

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:14 GMT
Server: Goliath
ETag: "0d01a146a60280106b48f60b7f110530"
Content-Type: application/json
Content-Length: 1242
{
  "id": "target:45:10",
  "uuid": "76ddad9a-f078-4022-994c-4ec3ba302279",
  "serial": "TGT1D62D94C40626680",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:22:10",
  "vdisk_id": null,
  "ctime": 1493052973500,
  "mtime": 1493052974014,
  "seq": 1493052974022,
  "label": "target",
  "notes": "target was updated",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "status": "current",
    "table": {
      "time": 1493052973000,
      "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"
        }
      ]
    },
    "seq": 1493052973920
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "iqn": "iqn.2009-12.com.blockbridge:t-pjxazwbm-fobmkfhp:target-1",
  "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazwbm-",
  "iqn_suffix": "fobmkfhp:target-1",
  "alias": "target-1",
  "acl": [
    {
      "profile_id": "initiator_profile:45: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.10.157",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe51:6469%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

Name Type Description
vdisk_id string virtual disk id

Curl Example

$ curl -X PUT https://mgmt-node/api/target/target:45:10/luns/42 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -d \
'{
  "vdisk_id": "vdisk:19:10"
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:15 GMT
Server: Goliath
ETag: "a7146a843caff5c7beacac22986b2708"
Content-Type: application/json
Content-Length: 1277
{
  "id": "target:45:10",
  "uuid": "76ddad9a-f078-4022-994c-4ec3ba302279",
  "serial": "TGT1D62D94C40626680",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:22:10",
  "vdisk_id": null,
  "ctime": 1493052973500,
  "mtime": 1493052975018,
  "seq": 1493052975028,
  "label": "target",
  "notes": "target was updated",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "status": "current",
    "table": {
      "time": 1493052974000,
      "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"
        }
      ]
    },
    "seq": 1493052974919
  },
  "rec_status": null,
  "xmd_refs": [

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

  ],
  "portals": [
    {
      "hostname": null,
      "interface": "eth0",
      "up": true,
      "speed": null,
      "duplex": null,
      "ipaddrs": [
        {
          "addr": "10.10.10.157",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe51:6469%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:45:10/luns/42 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:15 GMT
Server: Goliath
ETag: "67a009e2eed8799937b9421177981946"
Content-Type: application/json
Content-Length: 1242
{
  "id": "target:45:10",
  "uuid": "76ddad9a-f078-4022-994c-4ec3ba302279",
  "serial": "TGT1D62D94C40626680",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:22:10",
  "vdisk_id": null,
  "ctime": 1493052973500,
  "mtime": 1493052975303,
  "seq": 1493052975310,
  "label": "target",
  "notes": "target was updated",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "status": "current",
    "table": {
      "time": 1493052974000,
      "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"
        }
      ]
    },
    "seq": 1493052974919
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "iqn": "iqn.2009-12.com.blockbridge:t-pjxazwbm-fobmkfhp:target-1",
  "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazwbm-",
  "iqn_suffix": "fobmkfhp:target-1",
  "alias": "target-1",
  "acl": [
    {
      "profile_id": "initiator_profile:45: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.10.157",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe51:6469%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

Name Type Description
lun integer SCSI LUN assignment (automatic if unspecified)
Range: 0 <= value <= 16384
lun_max integer maximum LUN value for automatic assignment

Curl Example

$ curl -X PUT https://mgmt-node/api/target/target:45:10/disks/vdisk:19:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -d \
'{
  "vdisk_id": "vdisk:19:10"
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:14 GMT
Server: Goliath
ETag: "08f5997b93111eebc4615600db750f97"
Content-Type: application/json
Content-Length: 1276
{
  "id": "target:45:10",
  "uuid": "76ddad9a-f078-4022-994c-4ec3ba302279",
  "serial": "TGT1D62D94C40626680",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:22:10",
  "vdisk_id": null,
  "ctime": 1493052973500,
  "mtime": 1493052974439,
  "seq": 1493052974455,
  "label": "target",
  "notes": "target was updated",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "status": "current",
    "table": {
      "time": 1493052973000,
      "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"
        }
      ]
    },
    "seq": 1493052973920
  },
  "rec_status": null,
  "xmd_refs": [

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

  ],
  "portals": [
    {
      "hostname": null,
      "interface": "eth0",
      "up": true,
      "speed": null,
      "duplex": null,
      "ipaddrs": [
        {
          "addr": "10.10.10.157",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe51:6469%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:45:10/disks/vdisk:19:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:14 GMT
Server: Goliath
ETag: "44de0c8713df2c05988de93a66375a2b"
Content-Type: application/json
Content-Length: 1242
{
  "id": "target:45:10",
  "uuid": "76ddad9a-f078-4022-994c-4ec3ba302279",
  "serial": "TGT1D62D94C40626680",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:22:10",
  "vdisk_id": null,
  "ctime": 1493052973500,
  "mtime": 1493052974730,
  "seq": 1493052974739,
  "label": "target",
  "notes": "target was updated",
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "trashed": null,
  "ec": {
    "status": "current",
    "table": {
      "time": 1493052973000,
      "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"
        }
      ]
    },
    "seq": 1493052973920
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "iqn": "iqn.2009-12.com.blockbridge:t-pjxazwbm-fobmkfhp:target-1",
  "iqn_base": "iqn.2009-12.com.blockbridge:t-pjxazwbm-",
  "iqn_suffix": "fobmkfhp:target-1",
  "alias": "target-1",
  "acl": [
    {
      "profile_id": "initiator_profile:45: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.10.157",
          "port": 3260,
          "family": "IPv4"
        },
        {
          "addr": "fe80::f816:3eff:fe51:6469%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

Name Type Description
id string object id
uuid uuid object uuid
ctime integer snapshot create time
Range: 0 <= value
mtime integer snapshot last modified time
Range: 0 <= value
label nullable string user assigned label
notes nullable string user assigned notes
tags array object tags
vss_id string virtual storage service id
node_id string storage node id
account_id string account id
vdisk_id string virtual disk id
serial string snapshot serial number
capacity nullable integer snapshot capacity (in bytes)
generation nullable integer snapshot generation
timestamp nullable integer snapshot timestamp
Range: 0 <= value
transient boolean snapshot transient
trashed boolean waiting for garbage collection
xmd_refs array array of extensible metadata reference keys
xref string arbitrary string reference
vdisk_refs/id string dependent vdisk id
vdisk_refs/serial string dependent vdisk serial
vdisk_refs/label string dependent vdisk label
status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detail nullable string status detail
xmd/id string no documentation
xmd/ref string arbitrary string reference key
xmd/mtime integer last modified time of xmd
Range: 0 <= value
xmd/tags array object tags
xmd/self boolean no documentation
xmd/data nullable string no documentation

Snapshot Info

Retrieve an existing virtual disk snapshot.

GET /snapshot/{snapshot_id_or_serial}

Curl Example

$ curl https://mgmt-node/api/snapshot/snapshot:8:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:18 GMT
Server: Goliath
ETag: "7c33fc783645df2d9f94b3b04a21f7f4"
Content-Type: application/json
Content-Length: 796
{
  "id": "snapshot:8:10",
  "uuid": "e68a37f1-bbfb-4421-814a-fdbaddc4f6e2",
  "serial": "SNP3D62B94C406264D0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:22:10",
  "vdisk_id": "vdisk:19:10",
  "ctime": 1493052977834,
  "mtime": 1493052978523,
  "seq": 1493052978543,
  "label": "snapshot",
  "notes": "snapshot name was updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493052977904
  },
  "rec_status": null,
  "xmd_refs": [

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

  ],
  "tags": [

  ],
  "capacity": 2073741824,
  "generation": 1,
  "timestamp": 1493052977000
}

Snapshot List

Enumerate virtual disk snapshots.

GET /snapshot

Curl Example

$ curl https://mgmt-node/api/snapshot \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:18 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 777
[
  {
    "id": "snapshot:8:10",
    "uuid": "e68a37f1-bbfb-4421-814a-fdbaddc4f6e2",
    "serial": "SNP3D62B94C406264D0",
    "evt_query": null,
    "account_id": "account:1:10",
    "sds_id": null,
    "node_id": "node:10000",
    "vss_id": "vss:22:10",
    "vdisk_id": "vdisk:19:10",
    "ctime": 1493052977834,
    "mtime": 1493052978067,
    "seq": 1493052978119,
    "label": "snapshot-2",
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "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": 1493052977904
    },
    "rec_status": null,
    "xmd_refs": [

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

    ],
    "tags": [

    ],
    "capacity": 2073741824,
    "generation": 1,
    "timestamp": 1493052977000
  }
]

Snapshot Create

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

POST /snapshot

Required Parameters

Name Type Description
vdisk_id string virtual disk id

Optional Parameters

Name Type Description
uuid uuid snapshot UUID
xmd_refs array array of extensible metadata reference keys
xref string arbitrary string reference
label nullable string user assigned label
notes string user assigned notes
tags array object tags
transient boolean snapshot created for a transient clone

Curl Example

$ curl -X POST https://mgmt-node/api/snapshot \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -d \
'{
  "vdisk_id": "vdisk:19:10"
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 16:56:18 GMT
Server: Goliath
ETag: "316e2648efe8929cbd76dd6fba27c61d"
Content-Type: application/json
Content-Length: 775
{
  "id": "snapshot:8:10",
  "uuid": "e68a37f1-bbfb-4421-814a-fdbaddc4f6e2",
  "serial": "SNP3D62B94C406264D0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:22:10",
  "vdisk_id": "vdisk:19:10",
  "ctime": 1493052977834,
  "mtime": 1493052978067,
  "seq": 1493052978119,
  "label": "snapshot-2",
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493052977904
  },
  "rec_status": null,
  "xmd_refs": [

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

  ],
  "tags": [

  ],
  "capacity": 2073741824,
  "generation": 1,
  "timestamp": 1493052977000
}

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:8:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56:32 GMT
Server: Goliath

Snapshot Update

Change the configuration of an existing virtual disk snapshot.

PATCH /snapshot/{snapshot_id_or_serial}

Optional Parameters

Name Type Description
label nullable string user assigned label
notes string user assigned notes
xmd_refs array array of extensible metadata reference keys
tags array object tags

Curl Example

$ curl -X PATCH https://mgmt-node/api/snapshot/snapshot:8:10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -d \
'{
  "label": "snapshot",
  "notes": "snapshot name was updated"
}'

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:18 GMT
Server: Goliath
ETag: "7c33fc783645df2d9f94b3b04a21f7f4"
Content-Type: application/json
Content-Length: 796
{
  "id": "snapshot:8:10",
  "uuid": "e68a37f1-bbfb-4421-814a-fdbaddc4f6e2",
  "serial": "SNP3D62B94C406264D0",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": "node:10000",
  "vss_id": "vss:22:10",
  "vdisk_id": "vdisk:19:10",
  "ctime": 1493052977834,
  "mtime": 1493052978523,
  "seq": 1493052978543,
  "label": "snapshot",
  "notes": "snapshot name was updated",
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493052977904
  },
  "rec_status": null,
  "xmd_refs": [

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

  ],
  "tags": [

  ],
  "capacity": 2073741824,
  "generation": 1,
  "timestamp": 1493052977000
}

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

Name Type Description
id string object id
uuid uuid object uuid
ctime integer object store create time
Range: 0 <= value
mtime integer object store last modified time
Range: 0 <= value
serial string object store serial number
label nullable string user assigned label
notes nullable string user assigned notes
account_id string account id
location:country string ISO 3166-1 alpha-3 country code
default: ""
location:lat number latitude
default: 0
location:long number longitude
default: 0
location:city string city
default: ""
location:state string state as two-character USPS abbreviation
default: ""
verified:status string verified status
one of:"unverified" or "success" or "failed"
verified:time nullable integer last verified time
Range: 0 <= value
verified:detail string verified detail
type string object store type
one of:"s3"
bucket_name string bucket name
host_name nullable string host name
protocol nullable string protocol
uri_style nullable string uri style
access_key_id nullable string access key id
secret_access_key_set boolean secret access key is set
security_token_set boolean security token is set
default_wkey_password_set boolean default wkey password is set
status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detail nullable string status 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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:36 GMT
Server: Goliath
ETag: "0a2af8656d8c82003dc6a68f9a9d7f7e"
Content-Type: application/json
Content-Length: 940
{
  "id": "obj_store:7:10",
  "uuid": "c6709864-ecfc-4378-84a6-1f96b17b4179",
  "serial": "OBJ4562E94C40626420",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053355954,
  "mtime": 1493053356358,
  "seq": 1493053356366,
  "label": "cambridge bucket",
  "notes": null,
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053355964
  },
  "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/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw"

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:36 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 941
[
  {
    "id": "obj_store:7:10",
    "uuid": "c6709864-ecfc-4378-84a6-1f96b17b4179",
    "serial": "OBJ4562E94C40626420",
    "evt_query": null,
    "account_id": "account:1:10",
    "sds_id": null,
    "node_id": null,
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493053355954,
    "mtime": 1493053355979,
    "seq": 1493053355988,
    "label": "object-store-1",
    "notes": null,
    "status": {
      "indicator": "online",
      "value": "online",
      "detail": ""
    },
    "trashed": null,
    "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": 1493053355964
    },
    "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

Name Type Description
max_results integer maximum number of results to return
default: 256
token nullable string continuation token for paged enumeration

Curl Example

$ curl https://mgmt-node/api/obj-store/obj_store:6:10/backups \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:19 GMT
Server: Goliath
etag: "ed96953bdf8e1b9c05f0ea5e5439a9ff7e84d4c6402451baec8b7d2ee0d05ebd"
Content-Type: application/json
Content-Length: 382
[
  {
    "id": "e68a37f1-bbfb-4421-814a-fdbaddc4f6e2",
    "key": "e68a37f1-bbfb-4421-814a-fdbaddc4f6e2",
    "short_id": "snap-fdbaddc4f6e2",
    "uuid": "4c08a9cf-ef9f-43c9-bafc-1975efdf7b78",
    "mode": "full",
    "progress": 100,
    "phase": "complete",
    "capacity": 2073741824,
    "size": 0,
    "comp_size": 0,
    "started_at": "2017-04-24T16:56+00:00",
    "completed_at": "2017-04-24T16:56+00:00",
    "description": "snap-fdbaddc4f6e2 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

Name Type Description
force boolean remove in-progress backup

Curl Example

$ curl -X DELETE https://mgmt-node/api/obj-store/obj_store:6:10/backups/e68a37f1-bbfb-4421-814a-fdbaddc4f6e2 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56:19 GMT
Server: Goliath

Object Store Create

Create an object store definition.

POST /obj-store

Required Parameters

Name Type Description
bucket_name string bucket name
host_name string host name

Optional Parameters

Name Type Description
type string object store type
default: "s3"
one of:"s3"
access_key_id nullable string access key id
secret_access_key nullable string secret access key
security_token nullable string security token
label nullable string user assigned label
notes string user assigned notes
uuid uuid object UUID
protocol nullable string object store protocol
default: "http"
one of:"http" or "https"
uri_style nullable string object store uri style
default: "path"
one of:"virtual_host" or "path"
location:country string ISO 3166-1 alpha-3 country code
default: ""
location:lat number latitude
default: 0
location:long number longitude
default: 0
location:city string city
default: ""
location:state string state as two-character USPS abbreviation
default: ""
default_wkey_password nullable string default wrap key passphrase

Curl Example

$ curl -X POST https://mgmt-node/api/obj-store \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -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, 24 Apr 2017 17:02:35 GMT
Server: Goliath
ETag: "429317b4432eb9a942f571dbb435d320"
Content-Type: application/json
Content-Length: 939
{
  "id": "obj_store:7:10",
  "uuid": "c6709864-ecfc-4378-84a6-1f96b17b4179",
  "serial": "OBJ4562E94C40626420",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053355954,
  "mtime": 1493053355979,
  "seq": 1493053355988,
  "label": "object-store-1",
  "notes": null,
  "status": {
    "indicator": "online",
    "value": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053355964
  },
  "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:6:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56:19 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

Name Type Description
label nullable string user assigned label
notes string user assigned notes
bucket_name string bucket name
host_name nullable string host name
access_key_id nullable string access key id
secret_access_key nullable string secret access key
security_token nullable string security token
protocol nullable string object store protocol
one of:"http" or "https"
location:country string ISO 3166-1 alpha-3 country code
default: ""
location:lat number latitude
default: 0
location:long number longitude
default: 0
location:city string city
default: ""
location:state string state as two-character USPS abbreviation
default: ""
type string object store type
one of:"s3"
uri_style nullable string object store uri style
one of:"virtual_host" or "path"
default_wkey_password nullable string default wrap key passphrase

Curl Example

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

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:36 GMT
Server: Goliath
ETag: "1553eb8926d4f0d72ba909c6fa54e905"
Content-Type: application/json
Content-Length: 962
{
  "id": "obj_store:7:10",
  "uuid": "c6709864-ecfc-4378-84a6-1f96b17b4179",
  "serial": "OBJ4562E94C40626420",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053355954,
  "mtime": 1493053356309,
  "seq": 1493053356319,
  "label": "cambridge bucket",
  "notes": null,
  "status": {
    "indicator": "degraded",
    "value": "degraded",
    "detail": "needs verification"
  },
  "trashed": null,
  "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": 1493053355964
  },
  "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

Name Type Description
eof boolean end of results
batch/c string cookie
batch/eof boolean end of results
batch/d integer process ID
batch/g array classification tags
batch/f string truncated source file
batch/i string primary context id (pcid)
batch/h integer HA cluster logical node ID
batch/k integer query sequence number
batch/m string formatted message string
batch/l integer source file line
batch/n string node ID
batch/q integer sequence number
batch/s string message symbol
batch/r integer reference sequence number
batch/t integer milliseconds since epoch
Range: 0 <= value
batch/y string data type, set to 'e' for events
one of:"l" or "e" or "c" or "s" or "m" or "h"
batch/p string process
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/pi string primary ID
batch/b nullable string context block
batch/v string message severity
one of:"dev" or "dbg" or "info" or "note" or "warn" or "err" or "crit" or "alrt"

Events Query Account

Retrieve all events for the requestor's account.

GET /events

Required Parameters

Name Type Description
tstart integer start time for query in milliseconds since epoch
Range: 0 <= value
num integer number of events to return
Range: 1 <= value <= 8192

Optional Parameters

Name Type Description
tend integer end time for query in milliseconds since epoch (0 or unspecified for now)
default: 0
Range: 0 <= value
sev string minimum event severity
default: "note"
one of:"dbg" or "note" or "warn" or "err"

Curl Example

$ curl https://mgmt-node/api/events/account:11:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -G \
  -d num=2 \
  -d sev=info \
  -d tstart=0

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:41 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

Name Type Description
tstart integer start time for query in milliseconds since epoch
Range: 0 <= value
num integer number of events to return
Range: 1 <= value <= 8192

Optional Parameters

Name Type Description
tend integer end time for query in milliseconds since epoch (0 or unspecified for now)
default: 0
Range: 0 <= value
sev string minimum event severity
default: "note"
one of:"dbg" or "note" or "warn" or "err"

Curl Example

$ curl https://mgmt-node/api/events \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -G \
  -d num=2 \
  -d sev=info \
  -d tstart=0

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:41 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2111
{
  "batch": [
    {
      "c": "e1493052970.054.0004d3:sw48010906:2710",
      "d": 27323,
      "g": [
        "target"
      ],
      "f": "targ-evt",
      "i": "account:1:10",
      "k": 1,
      "m": " ",
      "l": 492,
      "n": "node:10000",
      "q": 1235,
      "s": "TARGET_ISCSI_LOGOUT_ACL",
      "t": 1493052970054,
      "y": "e",
      "p": "sp",
      "pi": "target",
      "b": {
        "account.id": "account:1:10",
        "security": "ssl",
        "mode": "TLSv1.2 (version), NONE (compression)",
        "initiator_IP": "10.10.10.157",
        "initiator_IP_inner": "",
        "initiator_IP_outer": "",
        "initiator_port": "48820",
        "initiator_name": "iqn.2009-12.com.blockbridge:i-pjxazwbk-replication-c101e3c738a048363d3566146c1642b2",
        "profile.label": "replication-dsk1962994c40626500-c101e3c738a048363d3566146c1642b2",
        "profile.id": "initiator_profile:43:10",
        "profile.serial": "PRF0062694C406266E0",
        "target_IP": "10.10.10.157",
        "target_IP_inner": "",
        "target_IP_outer": "",
        "target_port": "3260",
        "target_name": "iqn.2009-12.com.blockbridge:t-pjxazwbk-replication-c101e3c738a048363d3566146c1642b2",
        "target.label": "replication-dsk1962994c40626500-c101e3c738a048363d3566146c1642b2",
        "target.id": "target:43:10",
        "target.serial": "TGT1D62C94C406266E0"
      },
      "v": "warn"
    },
    {
      "c": "e1493051468.358.0004a5:sw48010906:2710",
      "d": 26332,
      "g": [
        "target"
      ],
      "f": "targ-evt",
      "i": "account:1:10",
      "k": 2,
      "m": " ",
      "l": 492,
      "n": "node:10000",
      "q": 1189,
      "s": "TARGET_ISCSI_LOGOUT_ACL",
      "t": 1493051468358,
      "y": "e",
      "p": "sp",
      "pi": "target",
      "b": {
        "account.id": "account:1:10",
        "security": "ssl",
        "mode": "TLSv1.2 (version), NONE (compression)",
        "initiator_IP": "10.10.10.157",
        "initiator_IP_inner": "",
        "initiator_IP_outer": "",
        "initiator_port": "46814",
        "initiator_name": "iqn.2009-12.com.blockbridge:i-pjxazxd-replication-3e545ffa4f933f6862b6d469dfb9a097",
        "profile.label": "replication-dsk1962e94c40626460-3e545ffa4f933f6862b6d469dfb9a097",
        "profile.id": "initiator_profile:4:10",
        "profile.serial": "PRF0062194C40626410",
        "target_IP": "10.10.10.157",
        "target_IP_inner": "",
        "target_IP_outer": "",
        "target_port": "3260",
        "target_name": "iqn.2009-12.com.blockbridge:t-pjxazxd-replication-3e545ffa4f933f6862b6d469dfb9a097",
        "target.label": "replication-dsk1962e94c40626460-3e545ffa4f933f6862b6d469dfb9a097",
        "target.id": "target:4:10",
        "target.serial": "TGT1D62B94C40626410"
      },
      "v": "warn"
    }
  ],
  "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

Name Type Description
eof boolean end of results
batch/a string account/admin ID
batch/c string cookie
batch/eof boolean end of results
batch/e nullable string extended key
batch/d nullable string statistics block sub-object, see additional notes
batch/rt boolean data point obtained in real time (open-ended query only)
batch/k integer query sequence number
batch/o string object OID
batch/n string node ID
batch/t integer milliseconds since epoch for measurement
Range: 0 <= value
batch/y string data type, set to 's' for statistics
one of:"l" or "e" or "c" or "s" or "m" or "h"
batch/x string statistics 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

Name Type Description
tstart integer start time for query in milliseconds since epoch
Range: 0 <= value
period integer resolution to return data, in milliseconds (0 for all data)
Range: 0 <= value
num integer number of data points to return
Range: 1 <= value <= 8192

Optional Parameters

Name Type Description
tend integer end 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:19:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -G \
  -d num=2 \
  -d period=0 \
  -d tstart=0

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:33 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 315
{
  "batch": [
    {
      "a": "account:1:10",
      "c": "x1493052964.092.1f0a000000000130.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:19:10",
      "n": "node:10000",
      "t": 1493052964092,
      "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

Name Type Description
id string object id
uuid uuid object uuid
ctime integer extensible metadata create time
Range: 0 <= value
mtime integer extensible metadata last modified time
Range: 0 <= value
serial string extensible metadata serial number
label nullable string user assigned label
account_id nullable string account id
node_id nullable string optional node ref
vss_id nullable string optional vss ref
ref string arbitrary string reference key
publish boolean no documentation
type nullable string no documentation
notes nullable string user assigned notes
tags array object tags
ext_status nullable object external application status
ext_status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
ext_status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
ext_status:detail nullable string status detail
data nullable object application-supplied data
xmd_refs array array of extensible metadata reference keys
xref string arbitrary string reference
status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
status:detail nullable string status detail
rdeps/id string dependent object id
rdeps/serial string dependent object serial number
rdeps/label nullable string dependent object label
rdeps/ref string dependent object reference key
rdeps/type string dependent object type
rdeps/self boolean dependent object references itself
xmd/id string no documentation
xmd/ref string arbitrary string reference key
xmd/mtime integer last modified time of xmd
Range: 0 <= value
xmd/tags array object tags
xmd/self boolean no documentation
xmd/data nullable string no 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:39:10 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:40 GMT
Server: Goliath
ETag: "e32d64254b9cd45feb07dd86232123cb"
Content-Type: application/json
Content-Length: 786
{
  "id": "xmd:39:10",
  "uuid": "d085ed9b-6b51-45b5-96ee-6ee8a229677a",
  "serial": "XMD3962094C40626620",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053000609,
  "mtime": 1493053000609,
  "seq": 1493053000622,
  "label": null,
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053000622
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "ref": "e64c961a-7f04-4ee1-b1a1-c880e7015086",
  "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/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

200 OK
Date: Mon, 24 Apr 2017 16:56:40 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 1516
[
  {
    "id": "xmd:7:10",
    "uuid": "23ea80ac-6266-469d-992a-ecc0c68f0c0e",
    "serial": "XMD3962D94C40626420",
    "evt_query": null,
    "account_id": "account:1:10",
    "sds_id": null,
    "node_id": null,
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493051573871,
    "mtime": 1493051573871,
    "seq": 1493052996547,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "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": 1493052996547
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "ref": "docker-volumes-cache",
    "tags": [

    ],
    "data": {
    },
    "ext_status": null,
    "rdeps": [

    ]
  },
  {
    "id": "xmd:39:10",
    "uuid": "d085ed9b-6b51-45b5-96ee-6ee8a229677a",
    "serial": "XMD3962094C40626620",
    "evt_query": null,
    "account_id": "account:1:10",
    "sds_id": null,
    "node_id": null,
    "vss_id": null,
    "vdisk_id": null,
    "ctime": 1493053000609,
    "mtime": 1493053000609,
    "seq": 1493053000622,
    "label": null,
    "notes": null,
    "status": {
      "value": "online",
      "indicator": "online",
      "detail": ""
    },
    "trashed": null,
    "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": 1493053000622
    },
    "rec_status": null,
    "xmd_refs": [

    ],
    "xref": null,
    "xmd": null,
    "ref": "e64c961a-7f04-4ee1-b1a1-c880e7015086",
    "tags": [

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

    ]
  }
]

Extensible Metadata Record Create

Create an extensible metadata object.

POST /xmd

Required Parameters

Name Type Description
ref string arbitrary string reference key

Optional Parameters

Name Type Description
vss_id string virtual storage service id
xmd_refs array array of extensible metadata reference keys
xref string arbitrary string reference
label nullable string user assigned label
notes string user assigned notes
tags array object tags
ext_status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
ext_status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
ext_status:detail nullable string status detail
uuid uuid object UUID
replace boolean replace existing xmd ref
type nullable string no documentation
publish boolean publish xmd

Curl Example

$ curl -X POST https://mgmt-node/api/xmd \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -d \
'{
  "ref": "e64c961a-7f04-4ee1-b1a1-c880e7015086",
  "data": {
    "example": {
      "data": {
      },
      "_schema": "terminal"
    }
  }
}'

Response Example

201 Created
Date: Mon, 24 Apr 2017 16:56:40 GMT
Server: Goliath
ETag: "e32d64254b9cd45feb07dd86232123cb"
Content-Type: application/json
Content-Length: 786
{
  "id": "xmd:39:10",
  "uuid": "d085ed9b-6b51-45b5-96ee-6ee8a229677a",
  "serial": "XMD3962094C40626620",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053000609,
  "mtime": 1493053000609,
  "seq": 1493053000622,
  "label": null,
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053000622
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "ref": "e64c961a-7f04-4ee1-b1a1-c880e7015086",
  "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/e64c961a-7f04-4ee1-b1a1-c880e7015086 \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q"

Response Example

204 No Content
Date: Mon, 24 Apr 2017 16:56:41 GMT
Server: Goliath

Extensible Metadata Record Update

Change an extensible metadata object.

PATCH /xmd/{xmd_id_or_serial_or_ref}

Optional Parameters

Name Type Description
noent_action string response when metadata record not found
default: "fail"
one of:"fail" or "success" or "create"
mode string update mode
default: "replace"
one of:"replace" or "merge" or "patch"
xmd_refs array array of extensible metadata reference keys
label nullable string user assigned label
notes string user assigned notes
tags array object tags
ext_status:indicator string status indicator
one of:"online" or "degraded" or "offline" or "na"
ext_status:value string status value
one of:"online" or "degraded" or "offline" or "pending" or "payment"
ext_status:detail nullable string status detail
vss_id string vss id
uuid uuid object UUID
type nullable string no documentation
xref string arbitrary string reference
publish boolean publish xmd

Curl Example

$ curl -X PATCH https://mgmt-node/api/xmd/e64c961a-7f04-4ee1-b1a1-c880e7015086 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 0/IVWUsELl3+WRCm10aRrDtRJ7FdkwxKWo8gI1uVXgI+hxVJSwQuXV9Q" \
  -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, 24 Apr 2017 16:56:41 GMT
Server: Goliath
ETag: "2c14bbeb081e1984edf52e90a916f625"
Content-Type: application/json
Content-Length: 837
{
  "id": "xmd:39:10",
  "uuid": "d085ed9b-6b51-45b5-96ee-6ee8a229677a",
  "serial": "XMD3962094C40626620",
  "evt_query": null,
  "account_id": "account:1:10",
  "sds_id": null,
  "node_id": null,
  "vss_id": null,
  "vdisk_id": null,
  "ctime": 1493053000609,
  "mtime": 1493053001066,
  "seq": 1493053001079,
  "label": null,
  "notes": null,
  "status": {
    "value": "online",
    "indicator": "online",
    "detail": ""
  },
  "trashed": null,
  "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": 1493053000622
  },
  "rec_status": null,
  "xmd_refs": [

  ],
  "xref": null,
  "xmd": null,
  "ref": "e64c961a-7f04-4ee1-b1a1-c880e7015086",
  "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

Name Type Description
data string encoded ca-certificate data
encoding string additional encoding of response data
one of:"base64"

CA Certificate Info

Retrieve the certificate authority certificate.

GET /ca-certificate

Optional Parameters

Name Type Description
cert_format string ca cert format
default: "pem"
one of:"pem" or "der"

Curl Example

$ curl https://mgmt-node/api/ca-certificate \
  -H "Authorization: Bearer 0/yMt3EuZYjE+XMRFFRlyFgoL+yn9/LvMXGTuaLvTXQs6oyncS5liGXw" \
  -G \
  -d cert_format=pem

Response Example

200 OK
Date: Mon, 24 Apr 2017 17:02:34 GMT
Server: Goliath
Content-Type: application/json
Content-Length: 2897
{
  "data": "-----BEGIN CERTIFICATE-----\nMIIH+jCCBeKgAwIBAgIJALPVAiY73BkPMA0GCSqGSIb3DQEBBQUAMIHPMQswCQYD\nVQQGEwJVUzEWMBQGA1UECAwNTWFzc2FjaHVzZXR0czESMBAGA1UEBwwJQ2FtYnJp\nZGdlMSIwIAYDVQQKDBlCbG9ja2JyaWRnZSBOZXR3b3JrcywgTExDMTAwLgYDVQQL\nDCdFbWJlZGRlZCBDQSAoTW9uIEFwciAyNCAxNTowNCBVVEMgMjAxNykxGDAWBgNV\nBAMMD2Jsb2NrYnJpZGdlLmNvbTEkMCIGCSqGSIb3DQEJARYVYWRtaW5AYmxvY2ti\ncmlkZ2UuY29tMB4XDTE3MDQyNDE1MDQxMFoXDTM3MDQyNDE1MDQxMFowgc8xCzAJ\nBgNVBAYTAlVTMRYwFAYDVQQIDA1NYXNzYWNodXNldHRzMRIwEAYDVQQHDAlDYW1i\ncmlkZ2UxIjAgBgNVBAoMGUJsb2NrYnJpZGdlIE5ldHdvcmtzLCBMTEMxMDAuBgNV\nBAsMJ0VtYmVkZGVkIENBIChNb24gQXByIDI0IDE1OjA0IFVUQyAyMDE3KTEYMBYG\nA1UEAwwPYmxvY2ticmlkZ2UuY29tMSQwIgYJKoZIhvcNAQkBFhVhZG1pbkBibG9j\na2JyaWRnZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwY7oQ\nLuahEa9iAi4rSkMJq5yW10Qaf7caVJ9UoV5fXWZGvxnWYHDrmQlZW45Xl3oNgAUx\nrteCToNBxReJa8iE0DmiwCFu72EErQH/RFfkGmA1KCGvgs9rvFZzTvi6JUHLtzD6\nuqkHsurICi6z6aQ4YHR9xUTZUFdN2c7p41xcBkJGOuioAHLDViYlAxXFx1jTiMf6\nHEb5KePS4dOwY7QhdUJ6aZNzjZ1Lu0jZtP0Htalyns8AfZ+OP5Nqylqr9liPju46\ncfxMEzoETnqILf6jo3urqCbC5QmlGPpzzODEyeQcEJF6VtcXroonaxBdtFFC1+y/\ntVtdlZWJbE3+Jzm0/Gv04VMS9LbcOFISDKz6/fD5XMq1EGirCbpu6rR+aevGf0NV\nvBE/dGTvVkKT2aEGW/df8rwNNUd5AKLvIRi3UXpkHb5xBV1RVsbT/5ZRG7IMMOET\niV2h+xwBpXhZPEqJqWMHiLGBzBTOwyAmNr0xGjNK3jYPIf9yXWXzbG7rPRW/a0Tm\nHTRkDQuKwk65FY1wA6ip1zxIiUmri9CDUiE6naaUiqutSf4FCjj6WRo5O5cxudZU\neHyVeEl0v+tWbK2ZdfR4c/uIScUlBclXBYw3RAPoML6+lcXtev9fMfw0X9APo5RA\nLUFbRJXsguffFGphriBLOgGhMfbIh1gOodWtTQIDAQABo4IB1TCCAdEwIAYDVR0R\nBBkwF4EVYWRtaW5AYmxvY2ticmlkZ2UuY29tMA4GA1UdDwEB/wQEAwIBBjAPBgNV\nHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQ0feDJSmJsi+p6RCWhIJD78zvIwTARBglg\nhkgBhvhCAQEEBAMCAgQwggEEBgNVHSMEgfwwgfmAFDR94MlKYmyL6npEJaEgkPvz\nO8jBoYHVpIHSMIHPMQswCQYDVQQGEwJVUzEWMBQGA1UECAwNTWFzc2FjaHVzZXR0\nczESMBAGA1UEBwwJQ2FtYnJpZGdlMSIwIAYDVQQKDBlCbG9ja2JyaWRnZSBOZXR3\nb3JrcywgTExDMTAwLgYDVQQLDCdFbWJlZGRlZCBDQSAoTW9uIEFwciAyNCAxNTow\nNCBVVEMgMjAxNykxGDAWBgNVBAMMD2Jsb2NrYnJpZGdlLmNvbTEkMCIGCSqGSIb3\nDQEJARYVYWRtaW5AYmxvY2ticmlkZ2UuY29tggkAs9UCJjvcGQ8wIAYDVR0SBBkw\nF4EVYWRtaW5AYmxvY2ticmlkZ2UuY29tMDAGCWCGSAGG+EIBAwQjFiFodHRwOi8v\nd3d3LmJsb2NrYnJpZGdlLmNvbS9jYS5jcmwwDQYJKoZIhvcNAQEFBQADggIBAFR6\nm86sUhxnGB/pjWob3caydcosPuVtqz3SG8IPQUU0aEc3bLDUy3vr/YGLAifRuzZk\nvV/fGwu/w23HKbtidnARtZa1q3/1/KK5rbe8jb0Z7M2cApxGck30tVGmY3TAtXyT\n+GKSgbiSh91MgcFXUTC4DZhYKEDB+jD4zCDqCHAlECGk/DFRfqPD7htussatfdNr\niZM0o2U0gNTeJxkA5yh5aSMg6bpHB0NCG/sF4Oi1UpW1IWHEUVX4zjCQV4XwKXIT\nSF+bIrDsLGgg1+fkJA7BgfLKJAlDtIEmpPu02xZyFN8ASKRDRp2oaDb26vl3LJN9\nqM420AgXZWD7A/UrKu1aOhy30KWNhpFKr7QrJTDE8SMxk//RaS4EDt1wEDdM1vRd\nXOc99U9VXliEwJdljrLRkpC9zGGYNHMMgsKRNnEAg+itJw+GaeW3yTLsAHb5I4+q\nzBC2Gs97/0qeaY5zWK9phkA8+6VjkqWYDUWfqFbhPgcnQfPoSxHaJB7jag+ivmbp\nfVAosvfmH+m+9qDTSKXyms1VhFuC8Y/4iuVL9IG3Ey0ued40c7LDNFfep0qCnslH\nRMbWeM2X2IAqqevS0sVw3MMc78AE2I3eLFVWC29r+72apf/gq1UppbSuQh63Q39k\nXa3HxM+BLnI8nmEbedlu6f1bmla7mmuqSgRhrHVq\n-----END CERTIFICATE-----\n",
  "encoding": null
}
Web Analytics