Consulta de detalles de discos EVS por etiqueta
Función
Esta API se utiliza para consultar los detalles de los discos EVS por etiqueta.
Método de invocación
Para obtener más información, consulte Invocación a las API.
URI
POST /v2/{project_id}/cloudvolumes/resource_instances/action
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
project_id |
Sí |
String |
El ID del proyecto. Para obtener más información sobre cómo obtener el ID de proyecto, consulte Obtención de un ID de proyecto. |
Parámetros de solicitud
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
X-Auth-Token |
Sí |
String |
El token del usuario. Se puede obtener invocando a la API de IAM utilizada para obtener un token de usuario. El valor de X-Subject-Token en el encabezado de respuesta es el token de usuario. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
action |
Sí |
String |
El identificador de operación. Utilice filter para consultar los detalles de los discos por etiqueta. Valor predeterminado: filter Valores de enumeración:
|
limit |
No |
Integer |
El número de registros de consulta. El valor oscila entre 1 y 1000 y el valor predeterminado es 1000. El valor devuelto no puede exceder este límite. Mínimo: 1 Máximo: 1000 Predeterminado: 1000 |
matches |
No |
Array of Match objects |
Los criterios de búsqueda admitidos por los discos. Las claves de etiqueta de una lista de etiquetas deben ser únicas. |
offset |
No |
Integer |
La ubicación del índice. El valor mínimo es 0, que también es el valor predeterminado. El primer registro del resultado de la consulta es el registro "offset+1" que cumple los criterios de la consulta. Por ejemplo, hay un total de 30 discos de EVS. Si configura offset como 11 y limit como 10, la consulta comienza en el duodécimo disco, y se puede consultar un máximo de 10 discos a la vez. Predeterminado: 0 |
tags |
Sí |
Array of TagsForListVolumes objects |
Los pares de etiquetas clave-valor. Una lista de etiquetas puede contener un máximo de 10 claves. Las claves de etiqueta de una lista de etiquetas deben ser únicas. Cuando se especifican varias claves en una lista de etiquetas, solo se consultan los discos que tienen todas las claves especificadas. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
key |
Sí |
String |
La clave. Las opciones son las siguientes: resource_name service_type Valores de enumeración:
|
value |
Sí |
String |
El valor, que puede contener un máximo de 255 caracteres. Si se especifica resource_name para key, el valor de etiqueta utiliza una coincidencia difusa. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
key |
Sí |
String |
La clave de etiqueta. |
values |
Sí |
Array of strings |
El valor de la etiqueta. Una lista de etiquetas puede contener un máximo de 10 valores. Los valores de etiqueta de una lista de etiquetas deben ser únicos. Si la lista de valores de etiqueta está vacía, se pueden consultar los discos que contengan cualquier clave. Cuando existen varios valores y se cumplen los requisitos de clave, se consultan los discos que tienen cualquiera de los valores especificados. |
Parámetros de respuesta
Código de estado: 200
Parámetro |
Tipo |
Descripción |
---|---|---|
total_count |
Integer |
El número de discos que cumplen los criterios de consulta. |
resources |
Array of Resource objects |
La lista de discos que cumplen los criterios de consulta. |
Parámetro |
Tipo |
Descripción |
---|---|---|
resource_id |
String |
El ID del recurso. |
resource_name |
String |
El nombre del recurso. |
resource_detail |
VolumeDetailForTag object |
Los detalles del recurso. |
tags |
Array of Map<String,String> objects |
La lista de etiquetas. |
Parámetro |
Tipo |
Descripción |
---|---|---|
id |
String |
El ID del disco. |
links |
Array of Link objects |
El URI del disco. |
name |
String |
El nombre del disco. |
status |
String |
El estado del disco. Para obtener más detalles, consulte Estado del disco de EVS. |
attachments |
Array of Attachment objects |
La información de conexión de disco. |
availability_zone |
String |
La AZ a la que pertenece el disco. |
os-vol-host-attr:host |
String |
El campo reservado. |
source_volid |
String |
El ID del disco de origen. Este parámetro tiene un valor si el disco se crea a partir de un disco de origen. Este campo no se admite actualmente. |
snapshot_id |
String |
El ID de la instantánea. Este parámetro tiene un valor si el disco se crea a partir de una instantánea. |
description |
String |
La descripción del disco. |
created_at |
String |
La hora en que se creó el disco. Formato de hora: UTC AAAA-MM-DDTHH:MM:SS.XXXXXX |
os-vol-tenant-attr:tenant_id |
String |
El ID del tenant al que pertenece el disco. El ID del tenant es el mismo que el ID del proyecto. |
volume_image_metadata |
Map<String,Object> |
Los metadatos de la imagen de disco.
NOTA:
Para obtener más detalles sobre el campo volume_image_metadata, véase Consulta de detalles de imagen (API nativa de OpenStack). |
volume_type |
String |
El tipo de disco. El valor puede ser SSD, SAS o SATA.
|
size |
Integer |
El tamaño del disco, en GiB. |
consistencygroup_id |
String |
El campo reservado. |
bootable |
String |
Si el disco es arrancable. true: el disco es arrancable. false: el disco no se puede arrancar. |
metadata |
VolumeMetadata object |
Los metadatos del disco. |
updated_at |
String |
La hora en que se actualizó el disco. Formato de hora: UTC AAAA-MM-DDTHH:MM:SS.XXXXXX |
encrypted |
Boolean |
Este campo no se admite actualmente. |
replication_status |
String |
El campo reservado. |
os-volume-replication:extended_status |
String |
El campo reservado. |
os-vol-mig-status-attr:migstat |
String |
El campo reservado. |
os-vol-mig-status-attr:name_id |
String |
El campo reservado. |
shareable |
Boolean |
Si el disco se puede compartir. El valor puede ser true (se puede compartir) o false (no se puede compartir). Este campo ha sido obsoleto. Use multiattach. |
user_id |
String |
El campo reservado. |
service_type |
String |
El tipo de servicio. EVS, DSS y DESS son servicios soportados. |
multiattach |
Boolean |
Si el disco se puede compartir. |
dedicated_storage_id |
String |
El ID del grupo de almacenamiento dedicado que aloja el disco. |
dedicated_storage_name |
String |
El nombre del grupo de almacenamiento dedicado que aloja el disco. |
tags |
Map<String,String> |
Las etiquetas de disco. Este campo tiene valores si el disco tiene etiquetas. O, se deja vacío. |
wwn |
String |
El identificador único utilizado al conectar el disco. |
enterprise_project_id |
String |
El ID del proyecto de empresa al que se ha agregado el disco. Para obtener más información sobre los proyectos empresariales y cómo obtener identificadores de proyectos empresariales, consulte Descripción general. |
Parámetro |
Tipo |
Descripción |
---|---|---|
href |
String |
El enlace de acceso directo correspondiente. |
rel |
String |
El nombre del marcador de enlace de acceso directo. |
Parámetro |
Tipo |
Descripción |
---|---|---|
attached_at |
String |
La hora a la que se ha conectado el disco. Formato de hora: UTC AAAA-MM-DDTHH:MM:SS.XXXXXX |
attachment_id |
String |
El ID del archivo adjunto. |
device |
String |
El nombre del dispositivo. |
host_name |
String |
Nombre del host físico que alberga el servidor en la nube al que está conectado el disco. |
id |
String |
El ID del disco conectado. |
server_id |
String |
El ID del servidor al que está conectado el disco. |
volume_id |
String |
El ID del disco. |
Parámetro |
Tipo |
Descripción |
---|---|---|
__system__cmkid |
String |
El ID de CMK de encriptación de metadata. Este parámetro se utiliza junto con __system__encrypted para la encriptación. La longitud de cmkid se fija en 36 bytes. Para obtener detalles sobre cómo obtener el ID de clave, véase Consulta de la lista de claves. |
__system__encrypted |
String |
El campo de encriptación de metadata. El valor puede ser 0 (sin encriptación) o 1 (encriptación). Si no se especifica este parámetro, el atributo de encriptación del disco es el mismo que el del origen de datos. Si el disco no se crea a partir de un origen de datos, el disco no se cifra de forma predeterminada. |
full_clone |
String |
El método de creación cuando el disco se crea a partir de una instantánea.
|
hw:passthrough |
String |
|
orderID |
String |
El parámetro que describe el modo de facturación de disco de metadata. Si este parámetro tiene un valor, el disco se factura anualmente/mensualmente. Si no es así, el disco se factura sobre una base de pago por uso. |
Código de estado: 400
Parámetro |
Tipo |
Descripción |
---|---|---|
error |
Error object |
El mensaje de error devuelto si se produce un error. Para obtener más detalles, consulte Parámetros en el campo error. |
Parámetro |
Tipo |
Descripción |
---|---|---|
code |
String |
El código de error devuelto si se produce un error. Para conocer los códigos de error y sus significados, véase Códigos de error. |
message |
String |
El mensaje de error devuelto si se produce un error. |
Ejemplo de solicitudes
Consulta de los detalles del disco shared01 con las etiquetas key_string, value_string y key_string02, value_string02 (la consulta comienza desde el décimo registro. El número de registros devueltos no puede ser superior a 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" } ] }
Ejemplo de respuestas
Código de estado: 200
Se devuelve la información del disco.
{ "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 estado: 400
Error en la solicitud
{ "error" : { "message" : "XXXX", "code" : "XXX" } }
Ejemplo de código del SDK
El ejemplo de código del SDK es el siguiente.
Java
Consulta de los detalles del disco shared01 con las etiquetas key_string, value_string y key_string02, value_string02 (la consulta comienza desde el décimo registro. El número de registros devueltos no puede ser superior a 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 los detalles del disco shared01 con las etiquetas key_string, value_string y key_string02, value_string02 (la consulta comienza desde el décimo registro. El número de registros devueltos no puede ser superior a 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 los detalles del disco shared01 con las etiquetas key_string, value_string y key_string02, value_string02 (la consulta comienza desde el décimo registro. El número de registros devueltos no puede ser superior a 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) } } |
Otro más
Para obtener un ejemplo de código del SDK de más lenguajes de programación, consulta la ficha Ejemplo de código en API Explorer. El ejemplo de código del SDK se puede generar automáticamente.
Códigos de estado
Código de estado |
Descripción |
---|---|
200 |
Se devuelve la información del disco. |
400 |
Error en la solicitud |
Códigos de error
Consulte Códigos de error.