# 1. Boot an instance pinned to az1 sh-5.1$ openstack server create --flavor m1.small --image cirros --network private --security-group basic --availability-zone az1 test_migrate +-------------------------------------+-------------------------------------------------+ | Field | Value | +-------------------------------------+-------------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | az1 | | OS-EXT-SRV-ATTR:host | None | | OS-EXT-SRV-ATTR:hypervisor_hostname | None | | OS-EXT-SRV-ATTR:instance_name | | | OS-EXT-STS:power_state | NOSTATE | | OS-EXT-STS:task_state | scheduling | | OS-EXT-STS:vm_state | building | | OS-SRV-USG:launched_at | None | | OS-SRV-USG:terminated_at | None | | accessIPv4 | | | accessIPv6 | | | addresses | | | adminPass | iWm3iAMcPYeP | | config_drive | | | created | 2025-12-12T19:45:58Z | | flavor | m1.small (8fb906e9-9dc5-48b1-9e10-3ed3e3184ee1) | | hostId | | | id | 1b1a293c-93bc-4baf-96bb-7b3e238205ac | | image | cirros (4789f411-3e3e-487c-a21e-3e504bb3fc3e) | | key_name | None | | name | test_migrate | | progress | 0 | | project_id | 298b0e9ac30949318034a35ba17718a6 | | properties | | | security_groups | name='4d83cce6-4a02-4a2f-acaa-f84a79f45f26' | | status | BUILD | | updated | 2025-12-12T19:45:59Z | | user_id | a39f916ed5c341f89c2a542f9b0472b9 | | volumes_attached | | +-------------------------------------+-------------------------------------------------+ sh-5.1$ sh-5.1$ openstack server list +--------------------------------------+--------------+--------+-----------------------+--------+----------+ | ID | Name | Status | Networks | Image | Flavor | +--------------------------------------+--------------+--------+-----------------------+--------+----------+ | 1b1a293c-93bc-4baf-96bb-7b3e238205ac | test_migrate | ACTIVE | private=192.168.0.105 | cirros | m1.small | +--------------------------------------+--------------+--------+-----------------------+--------+----------+ sh-5.1$ # 2. Unpin it sh-5.1$ SERVER_UUID=$(openstack server show test_migrate -f value -c id) sh-5.1$ TOKEN=$(openstack token issue -f value -c id) sh-5.1$ sh-5.1$ curl -X PUT "https://nova-internal.openstack.svc:8774/v2.1/servers/${SERVER_UUID}" \ -H "X-Auth-Token: ${TOKEN}" \ -H "Content-Type: application/json" \ -H "X-OpenStack-Nova-API-Version: 2.94" \ -d '{"server": {"pinned_availability_zone": null}}' {"server": {"id": "1b1a293c-93bc-4baf-96bb-7b3e238205ac", "name": "test_migrate", "status": "ACTIVE", "tenant_id": "298b0e9ac30949318034a35ba17718a6", "user_id": "a39f916ed5c341f89c2a542f9b0472b9", "metadata": {}, "hostId": "9fb515de712f9c7add9c94da6fde4d4a3af74842686881bebee6c846", "image": {"id": "4789f411-3e3e-487c-a21e-3e504bb3fc3e", "links": [{"rel": "bookmark", "href": "https://nova-internal.openstack.svc:8774/images/4789f411-3e3e-487c-a21e-3e504bb3fc3e"}]}, "flavor": {"vcpus": 1, "ram": 512, "disk": 1, "ephemeral": 1, "swap": 0, "original_name": "m1.small", "extra_specs": {}}, "created": "2025-12-12T19:45:58Z", "updated": "2025-12-12T19:46:16Z", "addresses": {"private": [{"version": 4, "addr": "192.168.0.105", "OS-EXT-IPS:type": "fixed", "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:2a:b4:0b"}]}, "accessIPv4": "", "accessIPv6": "", "links": [{"rel": "self", "href": "https://nova-internal.openstack.svc:8774/v2.1/servers/1b1a293c-93bc-4baf-96bb-7b3e238205ac"}, {"rel": "bookmark", "href": "https://nova-internal.openstack.svc:8774/servers/1b1a293c-93bc-4baf-96bb-7b3e238205ac"}], "OS-DCF:diskConfig": "MANUAL", "progress": 0, "OS-EXT-AZ:availability_zone": "az1", "config_drive": "True", "key_name": null, "OS-SRV-USG:launched_at": "2025-12-12T19:46:16.000000", "OS-SRV-USG:terminated_at": null, "security_groups": [{"name": "basic"}], "OS-EXT-SRV-ATTR:host": "edpm-compute-0.ctlplane.example.com", "OS-EXT-SRV-ATTR:instance_name": "instance-00000003", "OS-EXT-SRV-ATTR:hypervisor_hostname": "edpm-compute-0.ctlplane.example.com", "OS-EXT-SRV-ATTR:reservation_id": "r-hdjdnd83", "OS-EXT-SRV-ATTR:launch_index": 0, "OS-EXT-SRV-ATTR:hostname": "test-migrate", "OS-EXT-SRV-ATTR:kernel_id": "", "OS-EXT-SRV-ATTR:ramdisk_id": "", "OS-EXT-SRV-ATTR:root_device_name": "/dev/vda", "OS-EXT-SRV-ATTR:user_data": null, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-EXT-STS:power_state": 1, "os-extended-volumes:volumes_attached": [], "host_status": "UP", "locked": false, "locked_reason": null, "description": "test_migrate", "tags": [], "trusted_image_certificates": null, "server_groups": []}}sh-5.1$ sh-5.1$ sh-5.1$ curl -s -X GET "https://nova-internal.openstack.svc:8774/v2.1/servers/${SERVER_UUID}" \ -H "X-Auth-Token: ${TOKEN}" \ -H "X-OpenStack-Nova-API-Version: 2.96" | python3 -m json.tool | grep -E "(pinned_availability_zone|availability_zone)" "OS-EXT-AZ:availability_zone": "az1", "pinned_availability_zone": null, sh-5.1$ # 3. Live migrate the instance to az2 sh-5.1$ openstack server migrate --live-migration --os-compute-api-version 2.77 --host edpm-compute-1.ctlplane.example.com ${SERVER_UUID} sh-5.1$ openstack server list +--------------------------------------+--------------+-----------+-----------------------+--------+----------+ | ID | Name | Status | Networks | Image | Flavor | +--------------------------------------+--------------+-----------+-----------------------+--------+----------+ | 1b1a293c-93bc-4baf-96bb-7b3e238205ac | test_migrate | MIGRATING | private=192.168.0.105 | cirros | m1.small | +--------------------------------------+--------------+-----------+-----------------------+--------+----------+ sh-5.1$ sh-5.1$ openstack server list +--------------------------------------+--------------+--------+-----------------------+--------+----------+ | ID | Name | Status | Networks | Image | Flavor | +--------------------------------------+--------------+--------+-----------------------+--------+----------+ | 1b1a293c-93bc-4baf-96bb-7b3e238205ac | test_migrate | ACTIVE | private=192.168.0.105 | cirros | m1.small | +--------------------------------------+--------------+--------+-----------------------+--------+----------+ sh-5.1$ sh-5.1$ openstack server show test_migrate -c name -c status -c 'OS-EXT-AZ:availability_zone' -c 'OS-EXT-SRV-ATTR:host' +-----------------------------+-------------------------------------+ | Field | Value | +-----------------------------+-------------------------------------+ | OS-EXT-AZ:availability_zone | az2 | | OS-EXT-SRV-ATTR:host | edpm-compute-1.ctlplane.example.com | | name | test_migrate | | status | ACTIVE | +-----------------------------+-------------------------------------+ sh-5.1$