Create Virtual Storage

Overview

Creates a virtual storage

Pre/Post Conditions

  • network and subnet must exist

  • a network can have a virtual storage

Classification

  • Create

Synchronous / Asynchronous

  • Asynchronous

Request

HTTP Request Method

  • POST

HTTP Request Path

{api_endpoint}/v1.0/{tenant_id}/virtual_storages

HTTP Request Header

Format

X-Auth-Token: <token>

HTTP Request Body

Request Parameter

Request Parameter

Parameter

Request Type

Type

Description

Required or Optional

Note

name

plain

String

Name of volume

Required

Name must be unique within tenant

description

plain

String

Description of volume

Optional

network_id

plain

String

ID(UUID) for network to be connected to the Virtual Storage

Required

subnet_id

plain

String

ID(UUID) for subnet to be connected to the Virtual Storage

Required

volume_type_id

plain

String

volume_type ID (UUID)

Required

ip_addr_pool

plain

AddressPool

IP address pool which specifies IP address range can be used by the Virtual Storage

Required

This range should be assigned within CIDR of the subnet

host_routes

plain

List of HostRoute

List of static routes to be set to this Virtual Storage

Optional

Response

HTTP Response Header

Response Code

Response Codes

Code

Description

Error?

Note

202

Accepted

No

Returned in case of success

400

Bad Request

Yes

401

Unauthorized

Yes

409

Tenant is busy

Yes

Returned if one of creation/update/deletion/restore request is already on-going

500

Internal Server Error

Yes

HTTP Response Body

Response Parameter

Response Parameters

Parameter

Type

Description

Note

api_error_message

String

Error message in API error case.

id

String

Virtual storage's ID (UUID)

network_id

String

Network ID (UUID)

subnet_id

String

Subnet ID (UUID)

ip_addr_pool

AddressPool

Specifies start/end of IP address pool

host_routes

List of HostRoute

Specifies static route settings for virtual storage

volume_type_id

String

Volume type ID (UUID) for virtual storage

name

String

Name of the volume

Must be unique by tenant

description

String

Description of the volume

status

String

Status of virtual storage

created_at

DateTime

Creation timestamp of virtual storage

updated_at

DateTime

Update timestamp of virtual storage

error_message

String

Error message of virtual storage

smb_properties

SMB Properties

SMB properties for the virtual storage and its volumes

Available for standard_smb_na volume_type.

Sample API Request and Response

Sample API Request

$ cat vs.json
{
    "virtual_storage": {
        "name": "vs01", 
        "description": "vs01",
        "volume_type_id": "6328d234-7939-4d61-9216-736de66d15f9", 
        "network_id": "c64e9be1-ba3b-4c2e-bfe9-265c5cf18c2f", 
        "subnet_id": "dd925847-4212-44a4-9deb-bc1436efb3b8", 
        "ip_addr_pool": {
            "start": "192.168.0.3", 
            "end": "192.168.0.7"
        },
        "host_routes": [
            {
                "destination": "0.0.0.0/0",
                "nexthop": "192.168.0.1"
            }
        ]
    }
}



$ curl -s -i -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'X-Auth-Token: 549b9d20836e4dc98fc7bede571fb09f' -X POST -d @./vs.json https://storage-jp1.ecl.api.ntt.com/v1.0/3f576e1e48034ef3ac8c1bafc07a9c43/virtual_storages

Sample API Response

HTTP/1.1 202 Accepted
Date: Thu, 3 Oct 2016 05:26:05 GMT
Content-Type: application/json
Content-Length: 239
Connection: keep-alive
Set-Cookie: TS0183560f=01cce65ce1f4efb39c7a6a5f67ccf6529ebb7618621090a8719e76769ba05d355c04ef7674; Path=/

{
    "api_error_message": "",
    "virtual_storage": {
        "id": "985d5c89-cdde-404f-b8e8-92ce5a63e55e",
        "name": "vs01",
        "description": "vs01",
        "network_id": "c64e9be1-ba3b-4c2e-bfe9-265c5cf18c2f",
        "subnet_id": "dd925847-4212-44a4-9deb-bc1436efb3b8",
        "ip_addr_pool": {
            "end": "192.168.0.7",
            "start": "192.168.0.3"
        },
        "volume_type_id": "6328d234-7939-4d61-9216-736de66d15f9"
        "status": "available",
        "error_message": "",
        "created_at": "2016-10-03T05:26:04+0000",
        "updated_at": null,
        "host_routes": [
            {
                "destination": "0.0.0.0/0",
                "nexthop": "192.168.0.1"
            }
        ]
    }
}