Примеры работы с REST API и консольной утилитой cURL
Изменение IP-адреса порта инстанса
Примечание
В OpenStack IP-адрес назначается не инстансу напрямую, а его порту. Поэтому для изменения адреса инстанса необходимо изменить IP-адрес порта.
Используемые команды:
Получение сведений о портах проекта:
Описание синтаксиса: https://developer.openstack.org/api-ref/network/v2/#list-ports
curl -s -H "X-Auth-Token: $OS_TOKEN" -H "Content-Type: application/json" https://api.sim-cloud.net:9696/v2.0/ports
- где:
https://api.sim-cloud.net:9696 — конечная точка сервиса Networking (Neutron);
``/v2.0/ports`` — путь из документации OpenStack Networking API.
Обновление параметров порта:
Описание синтаксиса: https://developer.openstack.org/api-ref/network/v2/#update-port
curl -s -X PUT -H "X-Auth-Token: $OS_TOKEN" -H "Content-Type: application/json" https://api.sim-cloud.net:9696/v2.0/ports/{port_id} -d '{ key:value}' | python -mjson.tool
- где:
https://api.sim-cloud.net:9696 — конечная точка сервиса Networking (Neutron);
``/v2.0/{port_id}`` — путь и идентификатор порта из документации OpenStack Networking API;
``-d „{ key:value}“`` — структура с новым IP-адресом порта согласно документации OpenStack Networking API.
Исходные данные:
demo— имя проекта;30.30.30.4— текущий IP-адрес;30.30.30.124— новый IP-адрес.Порядок действий:
$ curl -s -H "X-Auth-Token: $OS_TOKEN" -H "Content-Type: application/json" https://api.sim-cloud.net:9696/v2.0/ports | python -mjson.tool
{
"ports": [
...
{
"admin_state_up": true,
"allowed_address_pairs": [],
...
"fixed_ips": [
{
"ip_address": "30.30.30.4",
"subnet_id": "f7e4b2c2-6340-46ac-b10e-c94de49746b1"
}
],
"id": "f0910640-08b6-4595-88cf-0ecc4ce66dbf",
"mac_address": "fa:76:3e:30:63:2b",
...
},
...
]
}
Найдите нужные данные:
Значение ``ip_address`` (10.100.100.4) — это <IPaddress>.
Значение ``ID`` (c95d4d1d-233b-4322-8b3a-d77df89b3bf1) — это {port_id}.
curl -s -X PUT -H "X-Auth-Token: $OS_TOKEN" -H "Content-Type: application/json" https://api.sim-cloud.net:9696/v2.0/ports/f0910640-08b6-4595-88cf-0ecc4ce66dbf -d '{ "port": { "fixed_ips": [{"ip_address": "30.30.30.124"}]}}' | python -mjson.tool
{
"port": {
"admin_state_up": true,
...
"fixed_ips": [
{
"ip_address": "30.30.30.124",
"subnet_id": "c949746de4b1-6340-46ac-b10e-f7b2ce42"
}
],
"id": "f0910640-08b6-4595-88cf-0ecc4ce66dbf",
...
}
}
Новое значение отображается в ответе. Его также можно проверить, повторив команду из шага 2.