Examples of practical solutions using the REST API and cURL console utility
Changing the IP address assigned to the instance port
Note
Linking an IP address in OpenStack is not done to the instance directly, but to the port that is assigned to it. To change the IP address with which the instance is accessed, therefore, you must change the IP address for the port.
Commands used:
Receive information on the project ports:
Description of syntax - 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
- where
https://api.sim-cloud.net:9696 - is the access point for the Networking (Neutron) service
“/v2.0/ports” - are necessary parameters from the documentation of the OpenStack Networking API
Update the parameters of the port:
Description of syntax - 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
- where
https://api.sim-cloud.net:9696 - is the access point for the Networking (Neutron) service
“/v2.0/{port_id}” - are necessary parameters from the documentation of the OpenStack Networking API
“-d ‘{ key:value}’” - is a structure with the description of the new IP address for the port, according to the documentation of the OpenStack Networking API
Initial data:
“demo” - is the project name
30.30.30.4 - is the current IP address
30.30.30.124 - is the new IP address to which we wish to change the current address
Procedure:
$ 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",
...
},
...
]
}
Choose the required data:
The ‘ip_address’ value (10.100.100.4) is our <IPaddress>
The ‘ID’ value (c95d4d1d-233b-4322-8b3a-d77df89b3bf1) is our {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",
...
}
}
The new value can be seen in the response to our request. It can also be seen by repeating the command in point 2