Creating an EVS Snapshot
Function
This API is used to create an EVS snapshot.
Calling Method
For details, see Calling APIs.
URI
POST /v2/{project_id}/cloudsnapshots
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
project_id |
Yes |
String |
Definition The project ID. For details about how to obtain the project ID, see Obtaining a Project ID. Constraints N/A Range N/A Default Value N/A |
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
X-Auth-Token |
Yes |
String |
Definition The user token. You can obtain it by calling the IAM API. The value of X-Subject-Token in the response header is the user token. Constraints N/A Range N/A Default Value N/A |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
snapshot |
Yes |
CreateSnapshotOption object |
Definition The snapshot information. Constraints N/A Range N/A Default Value N/A |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
volume_id |
Yes |
String |
Definition The source disk ID. You can obtain it on the disk list page of the EVS console. Constraints N/A Range N/A Default Value N/A |
force |
No |
Boolean |
Definition Whether to force the snapshot creation. Constraints If this parameter value is false, snapshots are not created when the disk status is attaching. If this parameter value is true, snapshots can be created even when the disk status is attaching. Range false or true Default Value false |
metadata |
No |
Map<String,String> |
Definition The snapshot metadata. Constraints N/A Range N/A Default Value N/A |
description |
No |
String |
Definition The snapshot description. Constraints N/A Range It can contain a maximum of 85 characters. Default Value N/A |
name |
No |
String |
Definition The snapshot name. When a backup is created for a disk, a snapshot will also be created and named with the autobk_snapshot_ prefix. Operations cannot be performed on such snapshots. You are advised not to use autobk_snapshot_ as the prefix of snapshot names to avoid any inconvenience. Constraints N/A Range It can contain a maximum of 64 characters. Default Value N/A |
Response Parameters
Status code: 202
Parameter |
Type |
Description |
---|---|---|
snapshot |
SnapshotDetails object |
Definition The snapshot information. Range N/A |
Parameter |
Type |
Description |
---|---|---|
id |
String |
Definition The snapshot ID. Range N/A |
status |
String |
Definition The snapshot status. Range For details, see EVS Snapshot Status. |
name |
String |
Definition The snapshot name. Range N/A |
description |
String |
Definition The snapshot description. Range N/A |
created_at |
String |
Definition The time when the snapshot was created. Range Time format: UTC YYYY-MM-DDTHH:MM:SS.XXXXXX |
updated_at |
String |
Definition The time when the snapshot was updated. Range Time format: UTC YYYY-MM-DDTHH:MM:SS.XXXXXX |
metadata |
Object |
Definition The snapshot metadata. Range N/A |
volume_id |
String |
Definition The ID of the snapshot's source disk. Range N/A |
size |
Integer |
Definition The snapshot size, in GiB. Range N/A |
os-extended-snapshot-attributes:project_id |
String |
Definition The reserved field. Range N/A |
os-extended-snapshot-attributes:progress |
String |
Definition The reserved field. Range N/A |
Status code: 400
Parameter |
Type |
Description |
---|---|---|
error |
Error object |
Definition The error code returned if an error occurs. For the error codes and their meanings, see Error Codes. Range N/A |
Parameter |
Type |
Description |
---|---|---|
code |
String |
Definition The error code returned if an error occurs. Range For the error codes and their meanings, see Error Codes. |
message |
String |
Definition The error message returned if an error occurs. Range N/A |
Example Requests
Creating a snapshot (If the source EVS disk is attached, the snapshot cannot be forcibly created.)
POST https://{endpoint}/v2/{project_id}/cloudsnapshots { "snapshot" : { "name" : "snap-001", "description" : "Daily backup", "volume_id" : "5aa119a8-d25b-45a7-8d1b-88e127885635", "force" : false, "metadata" : { "key_string" : "value_string" } } }
Example Responses
Status code: 202
Accepted
{ "snapshot" : { "status" : "creating", "description" : "Daily backup", "created_at" : "2013-02-25T03:56:53.081642", "metadata" : { }, "volume_id" : "5aa119a8-d25b-45a7-8d1b-88e127885635", "size" : 1, "id" : "ffa9bc5e-1172-4021-acaf-cdcd78a9584d", "name" : "snap-001", "updated_at" : "2013-02-25T03:56:53.081642" } }
Status code: 400
Bad Request
{ "error" : { "message" : "XXXX", "code" : "XXX" } }
SDK Sample Code
The SDK sample code is as follows.
Java
Creating a snapshot (If the source EVS disk is attached, the snapshot cannot be forcibly created.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.evs.v2.region.EvsRegion; import com.huaweicloud.sdk.evs.v2.*; import com.huaweicloud.sdk.evs.v2.model.*; import java.util.Map; import java.util.HashMap; public class CreateSnapshotSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); EvsClient client = EvsClient.newBuilder() .withCredential(auth) .withRegion(EvsRegion.valueOf("<YOUR REGION>")) .build(); CreateSnapshotRequest request = new CreateSnapshotRequest(); CreateSnapshotRequestBody body = new CreateSnapshotRequestBody(); Map<String, String> listSnapshotMetadata = new HashMap<>(); listSnapshotMetadata.put("key_string", "value_string"); CreateSnapshotOption snapshotbody = new CreateSnapshotOption(); snapshotbody.withVolumeId("5aa119a8-d25b-45a7-8d1b-88e127885635") .withForce(false) .withMetadata(listSnapshotMetadata) .withDescription("Daily backup") .withName("snap-001"); body.withSnapshot(snapshotbody); request.withBody(body); try { CreateSnapshotResponse response = client.createSnapshot(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
Python
Creating a snapshot (If the source EVS disk is attached, the snapshot cannot be forcibly created.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkevs.v2.region.evs_region import EvsRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkevs.v2 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = EvsClient.new_builder() \ .with_credentials(credentials) \ .with_region(EvsRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateSnapshotRequest() listMetadataSnapshot = { "key_string": "value_string" } snapshotbody = CreateSnapshotOption( volume_id="5aa119a8-d25b-45a7-8d1b-88e127885635", force=False, metadata=listMetadataSnapshot, description="Daily backup", name="snap-001" ) request.body = CreateSnapshotRequestBody( snapshot=snapshotbody ) response = client.create_snapshot(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
Go
Creating a snapshot (If the source EVS disk is attached, the snapshot cannot be forcibly created.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" evs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/evs/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/evs/v2/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/evs/v2/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := evs.NewEvsClient( evs.EvsClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreateSnapshotRequest{} var listMetadataSnapshot = map[string]string{ "key_string": "value_string", } forceSnapshot:= false descriptionSnapshot:= "Daily backup" nameSnapshot:= "snap-001" snapshotbody := &model.CreateSnapshotOption{ VolumeId: "5aa119a8-d25b-45a7-8d1b-88e127885635", Force: &forceSnapshot, Metadata: listMetadataSnapshot, Description: &descriptionSnapshot, Name: &nameSnapshot, } request.Body = &model.CreateSnapshotRequestBody{ Snapshot: snapshotbody, } response, err := client.CreateSnapshot(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
More
For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.
Status Codes
Status Code |
Description |
---|---|
202 |
Accepted |
400 |
Bad Request |
Error Codes
See Error Codes.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot