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

Atualização de um disco EVS

Função

Esta API é usada para atualizar o nome e a descrição de um disco EVS.

Método de chamada

Para obter detalhes, consulte Chamada de APIs.

URI

PUT /v2/{project_id}/cloudvolumes/{volume_id}

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.

volume_id

Sim

String

O ID do disco.

Parâmetros de solicitação

Tabela 2 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.

Tabela 3 Parâmetros do corpo da solicitação

Parâmetro

Obrigatório

Tipo

Descrição

volume

Sim

UpdateVolumeOption object

As informações do disco a ser modificado.

Tabela 4 UpdateVolumeOption

Parâmetro

Obrigatório

Tipo

Descrição

description

Não

String

A nova descrição do disco. name e description não podem ser nulos ao mesmo tempo. Você pode inserir até 85 caracteres.

name

Não

String

O novo nome do disco. name e description não podem ser nulos ao mesmo tempo. Você pode inserir até 64 caracteres.

Parâmetros de resposta

Código de status: 200

Tabela 5 Parâmetros do corpo de resposta

Parâmetro

Tipo

Descrição

attachments

Array of Attachment objects

Se o disco está anexado.

availability_zone

String

A AZ à qual o disco pertence.

bootable

String

Se o disco é inicializável.

created_at

String

A hora em que o disco foi criado.

id

String

O ID do disco.

links

Array of Link objects

O URI do disco.

metadata

VolumeMetadata object

Os metadados do disco.

multiattach

Boolean

Se o disco é compartilhável.

name

String

O nome do disco.

os-vol-host-attr:host

String

O campo reservado.

os-vol-tenant-attr:tenant_id

String

O ID do projeto ao qual o disco pertence.

shareable

String

Se o disco é compartilhável.

size

Integer

O tamanho do disco.

snapshot_id

String

O ID do snapshot.

source_volid

String

O campo reservado.

status

String

O status do disco.

volume_image_metadata

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.

description

String

A descrição do disco.

os-volume-replication:extended_status

String

O campo reservado.

Tabela 6 Attachment

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.

Tabela 8 VolumeMetadata

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.

  • 0: clone vinculado

  • 1: clone completo

hw:passthrough

String

  • Se esse parâmetro for definido como true, o tipo de dispositivo de disco será SCSI, o que permite que os OSs do ECS acessem diretamente a mídia de armazenamento subjacente. Os comandos de reserva SCSI são suportados.

  • Se esse parâmetro for definido como false, o tipo de dispositivo de disco será VBD, que também é o tipo padrão. O VBD suporta apenas comandos simples de leitura/gravação de SCSI.

  • Se esse parâmetro não for especificado, o tipo de dispositivo de disco será VBD.

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

Tabela 9 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 10 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

Atualizar o nome e a descrição do disco EVS

PUT https://{endpoint}/v2/{project_id}/cloudvolumes/{volume_id}

{
  "volume" : {
    "name" : "test_volume",
    "description" : "test"
  }
}

Exemplo de respostas

Código de status: 200

OK

{
  "id" : "36ba39af-3579-4e6e-adfc-b764349c0f77",
  "links" : [ {
    "href" : "https://volume.region.xxx.xxx-tsi.de/v2/3cfb09080bd944d0b4cdd72ef26857bd/volumes/36ba39af-3579-4e6e-adfc-b764349c0f77",
    "rel" : "self"
  }, {
    "href" : "https://volume.region.xxx.xxx-tsi.de/3cfb09080bd944d0b4cdd72ef26857bd/volumes/36ba39af-3579-4e6e-adfc-b764349c0f77",
    "rel" : "bookmark"
  } ],
  "name" : "newVolume",
  "status" : "in-use",
  "attachments" : [ {
    "server_id" : "c3d3250c-7ce5-42cc-b620-dd2b63d19ca5",
    "attachment_id" : "011a2bdb-a033-4479-845b-50bd8ed7f4d4",
    "attached_at" : "2017-05-23T11:27:38.604815",
    "volume_id" : "36ba39af-3579-4e6e-adfc-b764349c0f77",
    "device" : "/dev/sdf",
    "id" : "36ba39af-3579-4e6e-adfc-b764349c0f77"
  } ],
  "description" : "new volume",
  "multiattach" : false,
  "shareable" : false,
  "size" : 10,
  "metadata" : {
    "hw:passthrough" : "false"
  },
  "bootable" : "false",
  "availability_zone" : "az-dc-1",
  "created_at" : "2017-05-23T09:49:44.481299",
  "volume_type" : "SATA"
}

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

Atualizar o nome e a descrição do disco EVS

 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
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 UpdateVolumeSolution {

    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();
        UpdateVolumeRequest request = new UpdateVolumeRequest();
        UpdateVolumeRequestBody body = new UpdateVolumeRequestBody();
        UpdateVolumeOption volumebody = new UpdateVolumeOption();
        volumebody.withDescription("test")
            .withName("test_volume");
        body.withVolume(volumebody);
        request.withBody(body);
        try {
            UpdateVolumeResponse response = client.updateVolume(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

Atualizar o nome e a descrição do disco EVS

 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
# 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 = UpdateVolumeRequest()
        volumebody = UpdateVolumeOption(
            description="test",
            name="test_volume"
        )
        request.body = UpdateVolumeRequestBody(
            volume=volumebody
        )
        response = client.update_volume(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

Atualizar o nome e a descrição do disco EVS

 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
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.UpdateVolumeRequest{}
	descriptionVolume:= "test"
	nameVolume:= "test_volume"
	volumebody := &model.UpdateVolumeOption{
		Description: &descriptionVolume,
		Name: &nameVolume,
	}
	request.Body = &model.UpdateVolumeRequestBody{
		Volume: volumebody,
	}
	response, err := client.UpdateVolume(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.