Add Block Storage for a VM Using the REST API
In this example, let's consider that you want to create a storage volume with the name /Compute-acme/jack.jones@example.com/vol1
and attach it to an existing instance named /Compute-acme/jack.jones@example.com/instance1
. After creating the storage volume, you can create a storage attachment to attach the storage volume to the instance.
To provide block storage capacity for a Compute Classic instance, you must create one or more storage volumes and attach them to the instance.
-
Identify the REST endpoint URL and the two-part user name. If you don't know the REST endpoint URL and user name, follow the instructions in Prepare to Use the REST API.
In this example,
https://api-z999.compute.us0.oraclecloud.com
and/Compute-acme/jack.jones@example.com
are the example values for REST endpoint URL and the two-part user name respectively. -
To send REST API calls to Compute Classic, you need a valid authentication token. If you obtained a token less than 30 minutes ago, then you can use that token. Otherwise, get a new token as described in Get an Authentication Token.
-
Specify the details of the storage volume that you want to create in a JSON file.
The following shows an example of the request body content in the
storageVolume.json
file.{ "size": "10G", "properties": ["/oracle/public/storage/default"], "name": "/Compute-acme/jack.jones@example.com/vol1" }
-
Create a storage volume by sending the
POST /storage/volume/
HTTP request.Syntax
curl -X POST \ -H "Cookie: $COMPUTE_COOKIE" \ -H "Content-Type: application/oracle-compute-v3+json" \ -H "Accept: application/oracle-compute-v3+json" \ -d "@storageVolume.json" \ {restEndpointURL}/storage/volume/
Example
curl -i -X POST \ -H "Cookie: $COMPUTE_COOKIE" \ -H "Content-Type: application/oracle-compute-v3+json" \ -H "Accept: application/oracle-compute-v3+json" \ -d "@storageVolume.json" \ https://api-z999.compute.us0.oraclecloud.com/storage/volume/
Example of Response Body
The following example shows the response body in JSON format.
{ "status": "Initializing", "account": "/Compute-acme/default", "writecache": false, "managed": true, "description": null, "tags": [], "bootable": false, "hypervisor": null, "quota": null, "uri": "https://api-z999.compute.us0.oraclecloud.com/storage/volume/Compute-acme/jack.jones@example.com/vol1", "status_detail": "The storage volume is currently being initialized.", "imagelist_entry": -1, "storage_pool": "/Compute-acme/storagepool/iscsi/thruput_1", "machineimage_name": null, "status_timestamp": "2015-06-01T11:15:57Z", "shared": false, "imagelist": null, "size": "10737418240", "properties": ["/oracle/public/storage/default"], "name": "/Compute-acme/jack.jones@example.com/vol1" }
-
Retrieve details of the storage volume to check if the storage volume was created successfully by sending the
GET /storage/volume/{name}
HTTP request.Syntax
curl -X GET \ -H "Cookie: $COMPUTE_COOKIE" \ -H "Accept: application/oracle-compute-v3+json" \ {restEndpointURL}/storage/volume/{userName}/{storageVolumeName}
Examplecurl -i -X GET \ -H "Cookie: $COMPUTE_COOKIE" \ -H "Accept: application/oracle-compute-v3+json" \ https://api-z999.compute.us0.oraclecloud.com/storage/volume/Compute-acme/jack.jones@example.com/vol1
Look at the value of the
status
field. When the storage volume is created, the value of thestatus
field isonline
. -
Specify the details of the storage attachment that you want to create in a JSON file. You have to specify the name of the storage volume and the name of the instance to which you want to attach the storage volume.
Example of Request Body
The following shows an example of the request body content in the
storageAttach.json
file.{ "index": 1, "storage_volume_name": "/Compute-acme/jack.jones@example.com/vol1", "instance_name": "/Compute-acme/jack.jones@example.com/instance1" }
-
Create a storage attachment to attach the storage volume to your instance by sending the
POST /storage/attachment/
HTTP request.Syntax
curl -X POST \ -H "Cookie: $COMPUTE_COOKIE" \ -H "Content-Type: application/oracle-compute-v3+json" \ -H "Accept: application/oracle-compute-v3+json" \ -d "@storageAttach.json" \ {restEndpointURL}/storage/attachment/
Example
curl -i -X POST -H "Cookie: $COMPUTE_COOKIE" -H "Content-Type: application/oracle-compute-v3+json" -H "Accept: application/oracle-compute-v3+json" -d "@storageAttach.json" https://api-z999.compute.us0.oraclecloud.com/storage/attachment/
Example of Response Body
The following example shows the response body in JSON format.
{ "index": 1, "account": null, "storage_volume_name": "/Compute-acme/jack.jones@example.com/vol1", "hypervisor": null, "uri": "https://api-z999.compute.us0.oraclecloud.com/storage/attachment/Compute-acme/jack.jones@example.com/instance1/a7fb4550-df19-497c-a19f-44fc176e1fc2", "instance_name": "/Compute-acme/jack.jones@example.com/instance1", "state": "attaching", "readonly": false, "name": "/Compute-acme/jack.jones@example.com/instance1/a7fb4550-df19-497c-a19f-44fc176e1fc2" }
In the response, note the name of the storage attachment.
-
Check whether the volume is attached by sending the
GET /storage/attachment/{name}
HTTP request.Syntax
curl -X GET \ -H "Cookie: $COMPUTE_COOKIE" \ -H "Accept: application/oracle-compute-v3+json" \ {restEndpointURL}/storage/volume/{userName}/{instanceName}/{storageAttachmentName}
Examplecurl -i -X GET \ -H "Cookie: $COMPUTE_COOKIE" \ -H "Accept: application/oracle-compute-v3+json" \ https://api-z999.compute.us0.oraclecloud.com/storage/attachment/Compute-acme/jack.jones@example.com/instance1/a7fb4550-df19-497c-a19f-44fc176e1fc2
Look at the value of the
status
field. After the volume is attached, thestatus
field showsattached
. -
Mount and format the disk that you just attached. See Mounting and Unmounting a Storage Volume in Using Oracle Cloud Infrastructure Compute Classic.
See Also:
About Storage Volumes in Using Oracle Cloud Infrastructure Compute Classic.