Seleção do tipo ou versão da API
Tipos de API
As API do ECS são classificadas da seguinte forma:
- As API para ECS com especificações personalizadas
- As API OpenStack nativo que estão em conformidade com as especificações da comunidade do OpenStack
Os dois tipos das API oferecem funções semelhantes, mas são usados em diferentes cenários de aplicativos. As API OpenStack são usadas para se interconectar com ferramentas de ecossistema de código aberto. As API do ECS aprimoraram certas funções com base nas API do OpenStack. Para usar melhor as API OpenStack, é aconselhável aprender sobre os conceitos e conhecimentos do OpenStack.
Versões
As API para ECS incluem as API OpenStack nativo e as API de ECS. As API do ECS podem ser V1 ou V1.1. Recomendamos que você use as APIs do ECS.
As API OpenStack podem ser V2 ou V2.1. A V2.1 suporta todas as funções suportadas pela V2. Além disso, a V2.1 suporta microversões. Se as API OpenStack forem usadas, as API V2.1 são recomendadas.
Para mudar uma API do OpenStack da V2.1 para a V2, altere 2.1 no URI da API nativa para 2.
Microversões
As microversões especificam pequenas alterações na API. Uma API V2.1 permite que você especifique uma microversão para novas funções de API relacionadas. Para obter as versões principais suportadas e as microversões máximas e mínimas, consulte Consulta de todas as versões da API.
Para habilitar recursos de microversão, adicione cabeçalho X-OpenStack-Nova-API-Version ou OpenStack-API-Version à solicitação ao chamar uma API OpenStack. Por exemplo, para ativar os recursos do microversion V2.26, adicione o seguinte cabeçalho à solicitação HTTPS:
X-OpenStack-Nova-API-Version: 2.26 ou OpenStack-API-Version: compute 2.26
Se você não especificar o cabeçalho de uma API V2.1, o sistema usará o cabeçalho OpenStack-API-Version: compute 2.1 ou X-OpenStack-Nova-API-Version: 2.1 por defeito.
Exemplo de solicitação de microversão
Por exemplo, é necessário usar a API para obter detalhes sobre um ECS para exibir o campo OS-EXT-SRV-ATTR:hostname.
- Usando uma API V2 sem uma microversão
- GET: https://{Endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers/detail
{Endpoint} indica o ponto final do IAM. Para mais detalhes, consulte Endpoints.
- Cabeçalhos
Tipo de conteúdo
aplicação/json
X-Auth-Token
${token}
- Corpo da resposta
{ "servers": [ { "tenant_id": "74610f3a5ad941998e91f076297ecf27", "addresses": { "05d4fb93-84e5-4964-853b-32992ffef627": [ { "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:20:17:95", "OS-EXT-IPS:type": "fixed", "addr": "192.168.0.228", "version": 4 }, { "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:20:17:95", "OS-EXT-IPS:type": "floating", "addr": "192.168.51.61", "version": 4 } ] }, "metadata": {}, "OS-EXT-STS:task_state": null, "OS-DCF:diskConfig": "MANUAL", "OS-EXT-AZ:availability_zone":"az1-dc1", "links": [ { "rel": "self", "href": "https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/89c312bb-285a-4026-a237-d441908c2f9e" }, { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/89c312bb-285a-4026-a237-d441908c2f9e" } ], "OS-EXT-STS:power_state": 1, "id": "89c312bb-285a-4026-a237-d441908c2f9e", "os-extended-volumes:volumes_attached": [ { "id": "c70c4b8e-33bd-4d1f-ab16-14a5a38cdeaf" } ], "OS-EXT-SRV-ATTR:host": "pod05.test.01", "image": { "links": [ { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/images/1189efbf-d48b-46ad-a823-94b942e2a000" } ], "id": "1189efbf-d48b-46ad-a823-94b942e2a000" }, "OS-SRV-USG:terminated_at": null, "accessIPv4": "", "accessIPv6": "", "created": "2018-05-11T03:21:56Z", "hostId": "fc7a8ff86bac050f0d9454b1b078dcc97060e819acbf06f04c3e338f", "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova012@7", "key_name": "id_rsa", "flavor": { "links": [ { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/flavors/s3.small.1" } ], "id": "s3.small.1" }, "security_groups": [ { "name": "default" } ], "config_drive": "", "OS-EXT-STS:vm_state": "active", "OS-EXT-SRV-ATTR:instance_name": "instance-0016c624", "user_id": "f79791beca3c48159ac2553fff22e166", "name": "zt-test", "progress": 0, "OS-SRV-USG:launched_at": "2018-05-11T03:22:16.701600", "updated": "2018-05-11T03:22:51Z", "status": "ACTIVE" } ] }
- Conclusão: O corpo da resposta não contém o campo OS-EXT-SRV-ATTR:hostname.
- GET: https://{Endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers/detail
- Usando uma API V2.1 com uma microversão
- GET: https://{Endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers/detail
{Endpoint} indica o ponto final do IAM. Para mais detalhes, consulte Endpoints.
- Cabeçalhos
Tipo de conteúdo
aplicação/json
X-Auth-Token
${token}
X-OpenStack-Nova-API-Version
2.26
- Corpo da resposta
{ "servers": [ { "tenant_id": "74610f3a5ad941998e91f076297ecf27", "addresses": { "05d4fb93-84e5-4964-853b-32992ffef627": [ { "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:20:17:95", "OS-EXT-IPS:type": "fixed", "addr": "192.168.0.228", "version": 4 }, { "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:20:17:95", "OS-EXT-IPS:type": "floating", "addr": "192.168.51.61", "version": 4 } ] }, "metadata": {}, "OS-EXT-STS:task_state": null, "description": "zt-test", "OS-EXT-SRV-ATTR:hostname": "zt-test", "OS-DCF:diskConfig": "MANUAL", "OS-EXT-AZ:availability_zone":"az-test-01", "links": [ { "rel": "self", "href": "https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/89c312bb-285a-4026-a237-d441908c2f9e" }, { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/89c312bb-285a-4026-a237-d441908c2f9e" } ], "OS-EXT-STS:power_state": 1, "id": "89c312bb-285a-4026-a237-d441908c2f9e", "os-extended-volumes:volumes_attached": [ { "delete_on_termination": true, "id": "c70c4b8e-33bd-4d1f-ab16-14a5a38cdeaf" } ], "locked": false, "OS-EXT-SRV-ATTR:kernel_id": "", "OS-EXT-SRV-ATTR:host":"pod05.test.01" , "OS-EXT-SRV-ATTR:ramdisk_id": "", "image": { "links": [ { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/images/1189efbf-d48b-46ad-a823-94b942e2a000" } ], "id": "1189efbf-d48b-46ad-a823-94b942e2a000" }, "accessIPv4": "", "OS-SRV-USG:terminated_at": null, "accessIPv6": "", "OS-EXT-SRV-ATTR:launch_index": 0, "created": "2018-05-11T03:21:56Z", "OS-EXT-SRV-ATTR:user_data": null, "hostId": "fc7a8ff86bac050f0d9454b1b078dcc97060e819acbf06f04c3e338f", "OS-EXT-SRV-ATTR:reservation_id": "r-pbqmaxer", "OS-EXT-SRV-ATTR:root_device_name": "/dev/vda", "host_status": "UP", "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova012@7", "tags": [], "key_name": "id_rsa", "flavor": { "links": [ { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/flavors/s3.small.1" } ], "id": "s3.small.1" }, "security_groups": [ { "name": "default" } ], "config_drive": "", "OS-EXT-STS:vm_state": "active", "OS-EXT-SRV-ATTR:instance_name": "instance-0016c624", "user_id": "f79791beca3c48159ac2553fff22e166", "name": "zt-test", "progress": 0, "OS-SRV-USG:launched_at": "2018-05-11T03:22:16.701600", "updated": "2018-05-11T03:22:51Z", "status": "ACTIVE" } ] }
- Conclusão: O corpo da resposta contém o campo OS-EXT-SRV-ATTR:hostname.
- GET: https://{Endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers/detail