Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-09-25 GMT+08:00

Consulta de detalhes sobre snapshots do EVS

Função

Esta API é usada para consultar detalhes sobre os snapshots do EVS.

Método de chamada

Para obter detalhes, consulte Chamada de APIs.

URI

GET /v2/{project_id}/cloudsnapshots/detail

Tabela 1 Parâmetros de caminho

Parâmetro

Obrigatório

Tipo

Descrição

project_id

Sim

String

O ID do projeto.

Para obter detalhes sobre como obter o ID de projeto, consulte Obtenção de um ID de projeto.

Tabela 2 Parâmetros de consulta

Parâmetro

Obrigatório

Tipo

Descrição

offset

Não

Integer

O deslocamento. Esse parâmetro é usado quando snapshots são consultados por página e é usado em conjunto com o parâmetro limit. Por exemplo, há um total de 30 snapshots. Se você definir offset para 11 e limit para 10, a consulta começará a partir do décimo segundo snapshot e um máximo de 10 snapshots poderão ser consultados por vez.

limit

Não

Integer

O número máximo de resultados de consulta que podem ser retornados. O valor deve ser um número inteiro maior que 0. O valor padrão é 1000.

name

Não

String

O nome do snapshot. Você pode inserir até 64 caracteres.

status

Não

String

O status do snapshot. Para obter detalhes, consulte Status do snapshot do EVS.

volume_id

Não

String

O ID do disco de origem do snapshot.

availability_zone

Não

String

A AZ do disco de origem do snapshot.

id

Não

String

O ID do snapshot para filtragem. Vários IDs podem ser transferidos para filtragem. O formato é id=id1&id=id2&id=id3.

dedicated_storage_name

Não

String

O nome do pool de armazenamento dedicado.

dedicated_storage_id

Não

String

O ID do pool de armazenamento dedicado.

service_type

Não

String

O tipo de serviço. O valor pode ser EVS, DSS ou DESS.

enterprise_project_id

Não

String

O ID do projeto empresarial, que é usada para filtragem. Se all_granted_eps for transferido, os discos em todos os projetos empresariais que estão dentro do escopo de permissão serão consultados.

NOTA:

Para obter detalhes sobre como obter IDs de projeto empresarial e recursos de projeto empresarial, consulte Visão geral.

Parâmetros de solicitação

Tabela 3 Parâmetros de cabeçalho de solicitação

Parâmetro

Obrigatório

Tipo

Descrição

X-Auth-Token

Sim

String

O token do usuário. Ele pode ser obtido chamando a API do IAM usada para obter um token de usuário. O valor de X-Subject-Token no cabeçalho da resposta é o token do usuário.

Parâmetros de resposta

Código de status: 200

Tabela 4 Parâmetros do corpo de resposta

Parâmetro

Tipo

Descrição

count

Integer

O número total de snapshots. Este valor não é afetado pelo parâmetro limit.

snapshots

Array of SnapshotList objects

As informações do snapshot.

snapshots_links

Array of Link objects

O marcador de posição da consulta na lista de snapshots. Esse campo é retornado somente quando limit é especificado na solicitação, e esse campo indica que apenas alguns snapshots são retornados nessa consulta.

Tabela 5 SnapshotList

Parâmetro

Tipo

Descrição

id

String

O ID do snapshot.

status

String

O status do snapshot.

name

String

O nome do snapshot.

description

String

A descrição do snapshot.

created_at

String

A hora em que o snapshot foi criado.

updated_at

String

A hora em que o snapshot foi atualizado.

metadata

Map<String,String>

Os metadados do snapshot.

volume_id

String

O disco de origem do snapshot.

size

Integer

O tamanho do snapshot.

os-extended-snapshot-attributes:project_id

String

O ID do projeto.

os-extended-snapshot-attributes:progress

String

O progresso da criação do snapshot.

dedicated_storage_id

String

O ID do pool de armazenamento dedicado.

dedicated_storage_name

String

O nome do pool de armazenamento dedicado.

service_type

String

O tipo de serviço.

Código de status: 400

Tabela 7 Parâmetros do corpo de resposta

Parâmetro

Tipo

Descrição

error

Error object

A mensagem de erro retornada se ocorrer um erro. Para obter detalhes, consulte Parâmetros no campo error.

Tabela 8 Error

Parâmetro

Tipo

Descrição

code

String

O código de erro retornado se ocorrer um erro. Para os códigos de erro e seus significados, consulte Códigos de erro.

message

String

A mensagem de erro retornada se ocorrer um erro.

Exemplo de solicitações

  • Consultar detalhes de snapshots (os IDs de snapshot são c311bb8d-17f1-4e99-aaf9-e132c0391a73 e c7691083-15fa-4045-956c-2bcbfe1b9976. A consulta começa a partir do primeiro registro. O número de registros retornados não pode exceder 100.)

    GET https://{endpoint}/v2/{project_id}/cloudsnapshots/detail?id=c311bb8d-17f1-4e99-aaf9-e132c0391a73&id=c7691083-15fa-4045-956c-2bcbfe1b9976&offset=0&limit=100
  • Consultar detalhes de todos os snapshots do disco EVS cujo ID é f8c7cce6-ec47-43ca-9297-b5604668b08f

    GET https://{endpoint}/v2/{project_id}/cloudsnapshots/detail?volume_id=f8c7cce6-ec47-43ca-9297-b5604668b08f&service_type=EVS

Exemplo de respostas

Código de status: 200

OK

{
  "count" : 3,
  "snapshots_links" : [ {
    "href" : "https://{endpoint}/v2/20a68d6b7a124ae2b6b8a22046ee5966/cloudsnapshots/detail?limit=1&marker=fc05d5d7-7e99-42fb-b6f2-9ddd1b990e67",
    "rel" : "next"
  } ],
  "snapshots" : [ {
    "status" : "available",
    "updated_at" : "2018-06-06T10:58:47.349051",
    "volume_id" : "f687bd70-37b3-4f00-a900-0ba1cfaa5196",
    "id" : "fc05d5d7-7e99-42fb-b6f2-9ddd1b990e67",
    "size" : 1,
    "os-extended-snapshot-attributes:progress" : "100%",
    "name" : "test03",
    "os-extended-snapshot-attributes:project_id" : "20a68d6b7a124ae2b6b8a22046ee5966",
    "service_type" : "EVS",
    "created_at" : "2018-05-30T03:14:44.457975",
    "metadata" : { }
  } ]
}

Código de status: 400

Bad Request

{
  "error" : {
    "message" : "XXXX",
    "code" : "XXX"
  }
}

Código de amostra do SDK

O código de amostra do SDK é o seguinte.

Java

 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
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.*;


public class ListSnapshotsSolution {

    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");

        ICredential auth = new BasicCredentials()
                .withAk(ak)
                .withSk(sk);

        EvsClient client = EvsClient.newBuilder()
                .withCredential(auth)
                .withRegion(EvsRegion.valueOf("<YOUR REGION>"))
                .build();
        ListSnapshotsRequest request = new ListSnapshotsRequest();
        request.withOffset(<offset>);
        request.withLimit(<limit>);
        request.withName("<name>");
        request.withStatus("<status>");
        request.withVolumeId("<volume_id>");
        request.withAvailabilityZone("<availability_zone>");
        request.withId("<id>");
        request.withDedicatedStorageName("<dedicated_storage_name>");
        request.withDedicatedStorageId("<dedicated_storage_id>");
        request.withServiceType("<service_type>");
        request.withEnterpriseProjectId("<enterprise_project_id>");
        try {
            ListSnapshotsResponse response = client.listSnapshots(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

 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
# coding: utf-8

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 = __import__('os').getenv("CLOUD_SDK_AK")
    sk = __import__('os').getenv("CLOUD_SDK_SK")

    credentials = BasicCredentials(ak, sk) \

    client = EvsClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(EvsRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = ListSnapshotsRequest()
        request.offset = <offset>
        request.limit = <limit>
        request.name = "<name>"
        request.status = "<status>"
        request.volume_id = "<volume_id>"
        request.availability_zone = "<availability_zone>"
        request.id = "<id>"
        request.dedicated_storage_name = "<dedicated_storage_name>"
        request.dedicated_storage_id = "<dedicated_storage_id>"
        request.service_type = "<service_type>"
        request.enterprise_project_id = "<enterprise_project_id>"
        response = client.list_snapshots(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

 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
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")

    auth := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        Build()

    client := evs.NewEvsClient(
        evs.EvsClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.ListSnapshotsRequest{}
	offsetRequest:= int32(<offset>)
	request.Offset = &offsetRequest
	limitRequest:= int32(<limit>)
	request.Limit = &limitRequest
	nameRequest:= "<name>"
	request.Name = &nameRequest
	statusRequest:= "<status>"
	request.Status = &statusRequest
	volumeIdRequest:= "<volume_id>"
	request.VolumeId = &volumeIdRequest
	availabilityZoneRequest:= "<availability_zone>"
	request.AvailabilityZone = &availabilityZoneRequest
	idRequest:= "<id>"
	request.Id = &idRequest
	dedicatedStorageNameRequest:= "<dedicated_storage_name>"
	request.DedicatedStorageName = &dedicatedStorageNameRequest
	dedicatedStorageIdRequest:= "<dedicated_storage_id>"
	request.DedicatedStorageId = &dedicatedStorageIdRequest
	serviceTypeRequest:= "<service_type>"
	request.ServiceType = &serviceTypeRequest
	enterpriseProjectIdRequest:= "<enterprise_project_id>"
	request.EnterpriseProjectId = &enterpriseProjectIdRequest
	response, err := client.ListSnapshots(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

Mais

Para obter o código de amostra do SDK de mais linguagens de programação, consulte a guia Código de amostra no API Explorer. O código de amostra do SDK pode ser gerado automaticamente.

Códigos de status

Código de status

Descrição

200

OK

400

Bad Request

Códigos de erro

Consulte Códigos de erro.