Consulta de detalhes de discos EVS por tag
Função
Esta API é usada para consultar os detalhes dos discos EVS por tag.
Método de chamada
Para obter detalhes, consulte Chamada de APIs.
URI
POST /v2/{project_id}/cloudvolumes/resource_instances/action
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. |
Parâmetros 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âmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
action |
Sim |
String |
O identificador da operação. Para consultar os detalhes dos discos por tag, use filter. Padrão: filter Valores de enumeração:
|
limit |
Não |
Integer |
O número de registros de consulta. O valor varia de 1 a 1000 e o valor padrão é 1000. O valor retornado não pode exceder esse limite. Mínimo: 1 Máximo: 1000 Padrão: 1000 |
matches |
Não |
Array of Match objects |
Os critérios de pesquisa suportados pelos discos. As chaves de tag em uma lista de tags devem ser exclusivas. |
offset |
Não |
Integer |
A localização do índice. O valor mínimo é 0, que também é o valor padrão. O primeiro registro no resultado da consulta é o registro "offset+1" que atende aos critérios da consulta. Por exemplo, há um total de 30 discos EVS. Se você definir offset para 11 e limit para 10, a consulta começará a partir do décimo segundo disco e um máximo de 10 discos poderão ser consultados por vez. Padrão: 0 |
tags |
Sim |
Array of TagsForListVolumes objects |
Os pares chave e valor de tags. Uma lista de tags pode conter no máximo 10 chaves. As chaves de tag em uma lista de tags devem ser exclusivas. Quando várias chaves são especificadas em uma lista de tags, somente os discos com todas as chaves especificadas são consultados. |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
key |
Sim |
String |
A chave. As opções são as seguintes: resource_name service_type Valores de enumeração:
|
value |
Sim |
String |
O valor, que pode conter no máximo 255 caracteres. Se resource_name for especificado para key, o valor da tag usa uma correspondência difusa. |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
key |
Sim |
String |
A chave de tag. |
values |
Sim |
Array of strings |
O valor da tag. Uma lista de tags pode conter no máximo 10 valores. Os valores de tag em uma lista de tags devem ser exclusivos. Se a lista de valores de tag estiver vazia, os discos que contêm qualquer chave poderão ser consultados. Quando há vários valores e os principais requisitos são atendidos, os discos que têm qualquer um dos valores especificados são consultados. |
Parâmetros de resposta
Código de status: 200
Parâmetro |
Tipo |
Descrição |
---|---|---|
total_count |
Integer |
O número de discos que atendem ao critério de consulta. |
resources |
Array of Resource objects |
A lista de discos que atendem ao critério de consulta. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
resource_id |
String |
O ID do recurso. |
resource_name |
String |
O nome do recurso. |
resource_detail |
VolumeDetailForTag object |
Os detalhes do recurso. |
tags |
Array of Map<String,String> objects |
A lista de tags. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
id |
String |
O ID do disco. |
links |
Array of Link objects |
O URI do disco. |
name |
String |
O nome do disco. |
status |
String |
O status do disco. Para obter detalhes, consulte Status do disco EVS. |
attachments |
Array of Attachment objects |
As informações de anexo do disco. |
availability_zone |
String |
A AZ à qual o disco pertence. |
os-vol-host-attr:host |
String |
O campo reservado. |
source_volid |
String |
O ID do disco de origem. Este parâmetro tem um valor se o disco for criado a partir de um disco de origem. Este campo não é suportado no momento. |
snapshot_id |
String |
O ID do snapshot. Este parâmetro tem um valor se o disco for criado a partir de um snapshot. |
description |
String |
A descrição do disco. |
created_at |
String |
A hora em que o disco foi criado. Formato da hora: UTC AAAA-MM-DDTHH:MM:SS.XXXXXX |
os-vol-tenant-attr:tenant_id |
String |
O ID do locatário ao qual o disco pertence. O ID do locatário é o mesmo que o ID do projeto. |
volume_image_metadata |
Map<String,Object> |
Os metadados da imagem de disco.
NOTA:
Para obter detalhes sobre o campo volume_image_metadata, consulte Consulta de detalhes da imagem (API OpenStack nativo). |
volume_type |
String |
O tipo de disco. O valor pode ser SSD, SAS ou SATA.
|
size |
Integer |
O tamanho do disco, em GiB. |
consistencygroup_id |
String |
O campo reservado. |
bootable |
String |
Se o disco é inicializável. true: o disco é inicializável. false: o disco não é inicializável. |
metadata |
VolumeMetadata object |
Os metadados do disco. |
updated_at |
String |
A hora em que o disco foi atualizado. Formato da hora: UTC AAAA-MM-DDTHH:MM:SS.XXXXXX |
encrypted |
Boolean |
Este campo não é suportado no momento. |
replication_status |
String |
O campo reservado. |
os-volume-replication:extended_status |
String |
O campo reservado. |
os-vol-mig-status-attr:migstat |
String |
O campo reservado. |
os-vol-mig-status-attr:name_id |
String |
O campo reservado. |
shareable |
Boolean |
Se o disco é compartilhável. O valor pode ser true (compartilhável) ou false (não compartilhável). Este campo foi preterido. Use multiattach. |
user_id |
String |
O campo reservado. |
service_type |
String |
O tipo de serviço. Os serviços suportados são EVS, DSS e DESS. |
multiattach |
Boolean |
Se o disco é compartilhável. |
dedicated_storage_id |
String |
O ID do pool de armazenamento dedicado que aloja o disco. |
dedicated_storage_name |
String |
O nome do pool de armazenamento dedicado que aloja o disco. |
tags |
Map<String,String> |
As tags do disco. Este campo tem valores se o disco tiver tags. Ou, é deixado vazio. |
wwn |
String |
O identificador exclusivo usado ao anexar o disco. |
enterprise_project_id |
String |
O ID do projeto empresarial ao qual o disco foi adicionado. Para obter mais detalhes sobre projetos empresariais e como obter IDs de projeto empresarial, consulte Visão geral. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
href |
String |
O link de atalho correspondente. |
rel |
String |
O nome do marcador do link de atalho. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
attached_at |
String |
A hora em que o disco foi anexado. Formato da hora: UTC AAAA-MM-DDTHH:MM:SS.XXXXXX |
attachment_id |
String |
O ID do anexo. |
device |
String |
O nome do dispositivo. |
host_name |
String |
O nome do host físico que hospeda o servidor de nuvem ao qual o disco está anexado. |
id |
String |
O ID do disco anexado. |
server_id |
String |
O ID do servidor ao qual o disco está anexado. |
volume_id |
String |
O ID do disco. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
__system__cmkid |
String |
O ID da CMK de encriptação em metadata. Este parâmetro é utilizado em conjunto com __system__encrypted para encriptação. O comprimento do cmkid é fixado em 36 bytes. Para obter detalhes sobre como obter o ID de chave, consulte Consulta da lista de chaves. |
__system__encrypted |
String |
O campo de encriptação nos metadata. O valor pode ser 0 (não criptografado) ou 1 (criptografado). Se esse parâmetro não for especificado, o atributo de encriptação do disco será o mesmo da fonte de dados. Se o disco não for criado a partir de uma fonte de dados, o disco não será criptografado por padrão. |
full_clone |
String |
O método de criação quando o disco é criado a partir de um snapshot.
|
hw:passthrough |
String |
|
orderID |
String |
O parâmetro que descreve o modo de cobrança do disco em metadata. Se esse parâmetro tiver um valor, o disco será cobrado anualmente/mensalmente. Caso contrário, o disco é cobrado em uma base de pagamento por uso. |
Código de status: 400
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. |
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
Consulta de detalhes do disco shared01 usando as tags key_string,value_string e key_string02,value_string02 (A consulta começa no décimo registro. O número de registros retornados não pode exceder 100.)
POST https://{endpoint}/v2/{project_id}/cloudvolumes/resource_instances/action { "offset" : 9, "limit" : 100, "action" : "filter", "tags" : [ { "key" : "key_string", "values" : [ "value_string" ] }, { "key" : "key_string02", "values" : [ "value_string02" ] } ], "matches" : [ { "key" : "resource_name", "value" : "shared01" }, { "key" : "service_type", "value" : "EVS" } ] }
Exemplo de respostas
Código de status: 200
As informações do disco são retornadas.
{ "total_count" : 1, "resources" : [ { "resource_name" : "resource1", "resource_detail" : { "attachments" : [ { "server_id" : "2080869e-ba46-4ea5-b45e-3191ac0f1d54", "attachment_id" : "1335f039-7a42-4d1e-be49-ac584db0ba0b", "attached_at" : "2019-08-06T07:00:21.842812", "volume_id" : "7fa6b592-ac75-460d-a28a-bb17429d1eb2", "device" : "/dev/vda", "id" : "7fa6b592-ac75-460d-a28a-bb17429d1eb2" } ], "links" : [ { "href" : "https://volume.Region.dc1.domainname.com/v2/051375756c80d5eb2ff0c014498645fb/volumes/7fa6b592-ac75-460d-a28a-bb17429d1eb2", "rel" : "self" }, { "href" : "https://volume.Region.dc1.domainname.com/051375756c80d5eb2ff0c014498645fb/volumes/7fa6b592-ac75-460d-a28a-bb17429d1eb2", "rel" : "bookmark" } ], "availability_zone" : "kvmxen.dc1", "os-vol-host-attr:host" : "az21.dc1#2", "enterprise_project_id" : "0", "updated_at" : "2019-08-09T06:19:35.874737", "replication_status" : "disabled", "id" : "7fa6b592-ac75-460d-a28a-bb17429d1eb2", "size" : 40, "user_id" : "75f26e17348643bfb7718578b04635c2", "os-vol-tenant-attr:tenant_id" : "051375756c80d5eb2ff0c014498645fb", "service_type" : "EVS", "metadata" : { }, "status" : "in-use", "volume_image_metadata" : { "size" : "0", "__quick_start" : "False", "container_format" : "bare", "min_ram" : "0", "image_name" : "test-hua-centos7.3-0725", "image_id" : "c6c153a6-dde8-4bac-8e40-3d7619436934", "__os_type" : "Linux", "min_disk" : "20", "__support_kvm" : "true", "virtual_env_type" : "FusionCompute", "__description" : "", "__os_version" : "CentOS 7.3 64bit", "__os_bit" : "64", "__image_source_type" : "uds", "__support_xen" : "true", "file_format" : "zvhd2", "checksum" : "d41d8cd98f00b204e9800998ecf8427e", "__imagetype" : "gold", "disk_format" : "zvhd2", "__image_cache_type" : "Not_Cache", "__isregistered" : "true", "__image_location" : "192.149.46.200:5443:pcsimssouthchina:c6c153a6-dde8-4bac-8e40-3d7619436934", "__image_size" : "911269888", "__platform" : "CentOS" }, "description" : "", "multiattach" : false, "name" : "resource1", "bootable" : "true", "created_at" : "2019-08-06T06:59:03.056682", "volume_type" : "SAS", "shareable" : false }, "tags" : [ { "key" : "key1", "value" : "value1" }, { "key" : "key1", "value" : "value2" } ], "resource_id" : "7fa6b592-ac75-460d-a28a-bb17429d1eb2" } ] }
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
Consulta de detalhes do disco shared01 usando as tags key_string,value_string e key_string02,value_string02 (A consulta começa no décimo registro. O número de registros retornados não pode exceder 100.)
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
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.List; import java.util.ArrayList; public class ListVolumesByTagsSolution { 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(); ListVolumesByTagsRequest request = new ListVolumesByTagsRequest(); ListVolumesByTagsRequestBody body = new ListVolumesByTagsRequestBody(); List<String> listTagsValues = new ArrayList<>(); listTagsValues.add("value_string02"); List<String> listTagsValues1 = new ArrayList<>(); listTagsValues1.add("value_string"); List<TagsForListVolumes> listbodyTags = new ArrayList<>(); listbodyTags.add( new TagsForListVolumes() .withKey("key_string") .withValues(listTagsValues1) ); listbodyTags.add( new TagsForListVolumes() .withKey("key_string02") .withValues(listTagsValues) ); List<Match> listbodyMatches = new ArrayList<>(); listbodyMatches.add( new Match() .withKey(Match.KeyEnum.fromValue("resource_name")) .withValue("shared01") ); listbodyMatches.add( new Match() .withKey(Match.KeyEnum.fromValue("service_type")) .withValue("EVS") ); body.withTags(listbodyTags); body.withOffset(9); body.withMatches(listbodyMatches); body.withLimit(100); body.withAction(ListVolumesByTagsRequestBody.ActionEnum.fromValue("filter")); request.withBody(body); try { ListVolumesByTagsResponse response = client.listVolumesByTags(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
Consulta de detalhes do disco shared01 usando as tags key_string,value_string e key_string02,value_string02 (A consulta começa no décimo registro. O número de registros retornados não pode exceder 100.)
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 61 62 |
# 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 = ListVolumesByTagsRequest() listValuesTags = [ "value_string02" ] listValuesTags1 = [ "value_string" ] listTagsbody = [ TagsForListVolumes( key="key_string", values=listValuesTags1 ), TagsForListVolumes( key="key_string02", values=listValuesTags ) ] listMatchesbody = [ Match( key="resource_name", value="shared01" ), Match( key="service_type", value="EVS" ) ] request.body = ListVolumesByTagsRequestBody( tags=listTagsbody, offset=9, matches=listMatchesbody, limit=100, action="filter" ) response = client.list_volumes_by_tags(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
Consulta de detalhes do disco shared01 usando as tags key_string,value_string e key_string02,value_string02 (A consulta começa no décimo registro. O número de registros retornados não pode exceder 100.)
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 61 62 63 64 65 66 67 68 69 70 |
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.ListVolumesByTagsRequest{} var listValuesTags = []string{ "value_string02", } var listValuesTags1 = []string{ "value_string", } var listTagsbody = []model.TagsForListVolumes{ { Key: "key_string", Values: listValuesTags1, }, { Key: "key_string02", Values: listValuesTags, }, } var listMatchesbody = []model.Match{ { Key: model.GetMatchKeyEnum().RESOURCE_NAME, Value: "shared01", }, { Key: model.GetMatchKeyEnum().SERVICE_TYPE, Value: "EVS", }, } offsetListVolumesByTagsRequestBody:= int32(9) limitListVolumesByTagsRequestBody:= int32(100) request.Body = &model.ListVolumesByTagsRequestBody{ Tags: listTagsbody, Offset: &offsetListVolumesByTagsRequestBody, Matches: &listMatchesbody, Limit: &limitListVolumesByTagsRequestBody, Action: model.GetListVolumesByTagsRequestBodyActionEnum().FILTER, } response, err := client.ListVolumesByTags(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 |
As informações do disco são retornadas. |
400 |
Bad Request |
Códigos de erro
Consulte Códigos de erro.