Приклади практичних рішень із 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-адреси порту відповідно до документації API.


  • Початкові дані:

  • demo — назва проєкту;

  • 30.30.30.4 — поточна IP-адреса;

  • 30.30.30.124 — нова IP-адреса.

  • Порядок дій:

1. Отримайте ідентифікатор токена проєкту, як описано вище.
2. Отримайте перелік портів проєкту та їхні параметри.
$ 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}
3. Призначте порту потрібну IP-адресу:
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.