Selección del tipo o la versión de una API
Tipos de API
Las API de ECS se clasifican de la siguiente manera:
- Las API para ECS con especificaciones personalizadas
- Las API nativas de OpenStack que cumplen con las especificaciones de la comunidad OpenStack
Los dos tipos de API ofrecen funciones similares, pero se utilizan en diferentes escenarios de aplicación. Las API de OpenStack se utilizan para interconectarse con herramientas de ecosistema de código abierto. Las API de ECS han mejorado ciertas funciones basadas en las API de OpenStack. Para usar mejor las API de OpenStack se recomienda aprender sobre los conceptos y conocimientos de OpenStack.
Versiones
Las API para ECS incluyen API nativas de OpenStack y API de ECS. Las API de ECS pueden ser de V1 o V1.1. Se recomienda utilizar las API de ECS.
Las API de OpenStack pueden ser de V2 o V2.1. V2.1 soporta todas las funciones soportadas por V2. Además, V2.1 soporta microversiones. Si se van a utilizar las API de OpenStack se recomiendan las API de V2.1.
Para cambiar una API de OpenStack de V2.1 a V2, cambie 2.1 en el URI nativo de la API a 2.
Microversiones
Las microversiones especifican pequeños cambios de API. Una API V2.1 le permite especificar una microversión para nuevas funciones API relacionadas. Para obtener las versiones principales soportadas, y las microversiones máximas y mínimas, consulte Consulta de todas las versiones de la API.
Para habilitar las funciones de microversión, agregue el encabezado X-OpenStack-Nova-API-Version o OpenStack-API-Version a la solicitud cuando llame a una API de OpenStack. Por ejemplo, para habilitar las funciones de microversión V2.26, agregue el siguiente encabezado a la solicitud HTTPS:
X-OpenStack-Nova-API-Version: 2.26 o OpenStack-API-Version: compute 2.26
Si no especifica el encabezado de una API V2.1, el sistema usa el encabezado OpenStack-API-Version: compute 2.1 o X-OpenStack-Nova-API-Version: 2.1 de forma predeterminada.
Ejemplo de solicitud de microversión
Por ejemplo, se requiere que utilice la API para obtener detalles sobre un ECS para ver el campo OS-EXT-SRV-ATTR:hostname.
- Uso de una API V2 sin una microversión
- GET: https://{Endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers/detail
{Endpoint} indica el endpoint de IAM. Para más detalles, consulte Endpoint.
- Encabezados
Content-Type
application/json
X-Auth-Token
${token}
- Cuerpo de respuesta
{ "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" } ] }
- Conclusión: El cuerpo de la respuesta no contiene el campo OS-EXT-SRV-ATTR:hostname.
- GET: https://{Endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers/detail
- Uso de una API V2.1 con una microversión
- GET: https://{Endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers/detail
{Endpoint} indica el endpoint de IAM. Para más detalles, consulte Endpoint.
- Encabezados
Content-Type
application/json
X-Auth-Token
${token}
X-OpenStack-Nova-API-Version
2.26
- Cuerpo de respuesta
{ "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" } ] }
- Conclusión: El cuerpo de la respuesta contiene el campo OS-EXT-SRV-ATTR:hostname.
- GET: https://{Endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers/detail