Plan an upgrade

The plan command is used to generate the upgrade plan; the result will be printed on STDOUT.

Plan for the whole cloud

To generate a plan for the entire OpenStack cloud, including both the control-plane and the data-plane, use:

cou plan

Output example

user@host:~$ cou plan
Full execution log: '/home/ubuntu/.local/share/cou/log/cou-20231215211717.log'Connected to 'test-model' Analyzing cloud... Generating upgrade plan... Upgrade cloud from 'ussuri' to 'victoria'    Verify that all OpenStack applications are in idle state    Back up MySQL databases    Archive old database data on nova-cloud-controller    Control Plane principal(s) upgrade plan        Upgrade plan for 'keystone' to 'victoria'            Upgrade software packages of 'keystone' from the current APT repositories                Upgrade software packages on unit 'keystone/0'            Refresh 'keystone' to the latest revision of 'ussuri/stable'            Change charm config of 'keystone' 'action-managed-upgrade' to 'False'            Upgrade 'keystone' to the new channel: 'victoria/stable'            Change charm config of 'keystone' 'openstack-origin' to 'cloud:focal-victoria'            Wait for up to 2400s for model 'test_model' to reach the idle state            Verify that the workload of 'keystone' has been upgraded on units: keystone/0    Control Plane subordinate(s) upgrade plan        Upgrade plan for 'keystone-ldap' to 'victoria'            Refresh 'keystone-ldap' to the latest revision of 'ussuri/stable'            Upgrade 'keystone-ldap' to the new channel: 'victoria/stable'    Upgrading all applications deployed on machines with hypervisor.        Upgrade plan for 'az-1' to 'victoria'            Disable nova-compute scheduler from unit: 'nova-compute/0'            Upgrade software packages of 'nova-compute' from the current APT repositories                Upgrade software packages on unit 'nova-compute/0'            Refresh 'nova-compute' to the latest revision of 'ussuri/stable'            Change charm config of 'nova-compute' 'action-managed-upgrade' to 'True'            Upgrade 'nova-compute' to the new channel: 'victoria/stable'            Change charm config of 'nova-compute' 'source' to 'cloud:focal-victoria'            Upgrade plan for units: nova-compute/0                Upgrade plan for unit 'nova-compute/0'                    Verify that unit 'nova-compute/0' has no VMs running                    ├── Pause the unit: 'nova-compute/0'                    ├── Upgrade the unit: 'nova-compute/0'                    ├── Resume the unit: 'nova-compute/0'            Enable nova-compute scheduler from unit: 'nova-compute/0'            Wait for up to 2400s for model 'test_model' to reach the idle state            Verify that the workload of 'nova-compute' has been upgraded on units: nova-compute/0    Remaining Data Plane principal(s) upgrade plan        Upgrade plan for 'ceph-osd' to 'victoria'            Verify that all 'nova-compute' units has been upgraded            Upgrade software packages of 'ceph-osd' from the current APT repositories                Upgrade software packages on unit 'ceph-osd/0'            Change charm config of 'ceph-osd' 'source' to 'cloud:focal-victoria'            Wait for up to 300s for app 'ceph-osd' to reach the idle state            Verify that the workload of 'ceph-osd' has been upgraded on units: ceph-osd/0    Data Plane subordinate(s) upgrade plan        Upgrade plan for 'ovn-chassis' to 'victoria'            Refresh 'ovn-chassis' to the latest revision of '22.03/stable'

Plan for the control-plane

To generate a plan targeting only the control-plane applications use:

cou plan control-plane

Plan for the data-plane

To generate a plan targeting only the data-plane applications use:

cou plan data-plane

Note:

  • It’s essential to complete the upgrade of the control-plane components before being able to generate a plan for the data-plane.

  • By default, if non-empty hypervisor are identified, they are going to be excluded from the planning and a warning message will be shown. See the Plan for non-empty hypervisors section for instructions on how to include them.

Plan for the hypervisors

To generate a plan targeting just the hypervisors use:

# plan for all empty hypervisors
cou plan hypervisors

It’s also possible to target specific Juju availability-zones or machines:

# plan for hypervisors with machine ID 0 and 1 (unless they're hosting VMs)
cou plan hypervisors --machine "0, 1"

# plan for all empty hypervisors that are in zone-1
cou plan hypervisors --availability-zone=zone-1

Note:

  • Those specific filters are mutually exclusive, meaning that it’s not possible to use them together.

  • Since hypervisors are part of the data-plane, they won’t be upgraded unless the control-plane has already been upgraded.

  • By default, if non-empty hypervisor are identified, they are going to be excluded from the planning and a warning message will be shown. See the Plan for non-empty hypervisors section for instructions on how to include them.

Plan for non-empty hypervisors

If it’s necessary to plan for non-empty hypervisors, use the –force option. For example:

# plan for all data-plane applications, including hypervisors currently running instances
cou plan data-plane --force

# plan for all hypervisors, even if they are hosting running instances
cou plan hypervisors --force

# plan for hypervisors on machines 0 and 1, even if they are hosting running instances
cou plan hypervisors --machine "0, 1" --force

# plan for all hypervisors that are in zone-1, even if they are hosting running instances
cou plan hypervisors --availability-zone=zone-1 --force