Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ Elastic Volume Service/ Referencia de la API/ API/ Gestión de etiquetas/ Consulta de detalles de discos EVS por etiqueta
Actualización más reciente 2024-09-04 GMT+08:00

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

Tabla 1 Parámetros de ruta

Parámetro

Obligatorio

Tipo

Descripción

project_id

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

Tabla 2 Parámetros de encabezado de solicitud

Parámetro

Obligatorio

Tipo

Descripción

X-Auth-Token

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.

Tabla 3 Parámetros del cuerpo de solicitud

Parámetro

Obligatorio

Tipo

Descripción

action

String

El identificador de operación.

Utilice filter para consultar los detalles de los discos por etiqueta.

Valor predeterminado: filter

Valores de enumeración:

  • filter

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

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.

Tabla 4 Match

Parámetro

Obligatorio

Tipo

Descripción

key

String

La clave. Las opciones son las siguientes: resource_name service_type

Valores de enumeración:

  • resource_name

  • service_type

value

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.

Tabla 5 TagsForListVolumes

Parámetro

Obligatorio

Tipo

Descripción

key

String

La clave de etiqueta.

values

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

Tabla 6 Parámetros del cuerpo de respuesta

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.

Tabla 7 Recurso

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.

Tabla 8 VolumeDetailForTag

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.

  • SSD: el tipo de E/S ultraalta

  • SAS: el tipo de E/S alta

  • SATA: el tipo de E/S común

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.

Tabla 10 Conexión

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.

Tabla 11 VolumeMetadata

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.

  • 0: clon enlazado

  • 1: clon completo

hw:passthrough

String

  • Si el valor de este parámetro es true, el tipo de dispositivo de disco es SCSI, lo que permite que los sistemas operativos de ECS accedan directamente a los medios de almacenamiento subyacentes. Se admiten comandos de reserva SCSI.

  • Si este parámetro se establece en false, el tipo de dispositivo de disco es VBD, que también es el tipo predeterminado. VBD solo admite los comandos simples de lectura/escritura de SCSI.

  • Si no se especifica este parámetro, el tipo de dispositivo de disco es VBD.

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

Tabla 12 Parámetros del cuerpo de respuesta

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.

Tabla 13 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.