Comment 1 for bug 1888827

Revision history for this message
Dmitrii Shcherbakov (dmitriis) wrote :

I was able to reproduce it although:

* JUJU_AVAILABILITY_ZONE is set correctly;
* the charm correctly renders the default_availability_zone config in the DEFAULT section of nova.conf.

So it does what it is supposed to do but the intended result is not achieved. We only check this functionality via a unit test that's why we haven't caught it in functional testing.

Based on the Nova code, unless the host aggregate overrides the AZ value, it is taken from nova.conf's default_availability_zone:
(stein)
https://opendev.org/openstack/nova/src/commit/e91540f96538c7ba568617db7c03cf3a195b87ff/nova/availability_zones.py#L93-L100
https://opendev.org/openstack/nova/src/commit/e91540f96538c7ba568617db7c03cf3a195b87ff/nova/availability_zones.py#L71-L109
https://opendev.org/openstack/nova/src/commit/e91540f96538c7ba568617db7c03cf3a195b87ff/nova/conf/availability_zone.py#L32-L34

juju config keystone openstack-origin
cloud:bionic-stein

openstack compute service list
+-----+------------------+----------------------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+-----+------------------+----------------------+----------+---------+-------+----------------------------+
| 1 | nova-scheduler | juju-554d51-27-lxd-6 | internal | enabled | up | 2020-07-24T10:50:55.000000 |
| 7 | nova-conductor | juju-554d51-27-lxd-6 | internal | enabled | up | 2020-07-24T10:50:55.000000 |
| 19 | nova-consoleauth | juju-554d51-27-lxd-6 | internal | enabled | up | 2020-07-24T10:50:57.000000 |
| 22 | nova-compute | server-maas-6.maas | nova | enabled | up | 2020-07-24T10:50:58.000000 |
| 25 | nova-compute | server-maas-11.maas | nova | enabled | up | 2020-07-24T10:50:59.000000 |
| 28 | nova-compute | server-maas-2.maas | nova | enabled | up | 2020-07-24T10:50:55.000000 |
| 31 | nova-compute | server-maas-8.maas | nova | enabled | up | 2020-07-24T10:50:53.000000 |
| 64 | nova-compute | server-maas-3.maas | nova | enabled | up | 2020-07-24T10:50:56.000000 |
| 67 | nova-compute | server-maas-10.maas | nova | enabled | up | 2020-07-24T10:50:54.000000 |
| 70 | nova-compute | server-maas-4.maas | nova | enabled | up | 2020-07-24T10:50:59.000000 |
| 73 | nova-consoleauth | juju-554d51-24-lxd-6 | internal | enabled | up | 2020-07-24T10:50:56.000000 |
| 76 | nova-conductor | juju-554d51-24-lxd-6 | internal | enabled | up | 2020-07-24T10:50:56.000000 |
| 82 | nova-scheduler | juju-554d51-24-lxd-6 | internal | enabled | up | 2020-07-24T10:50:57.000000 |
| 91 | nova-scheduler | juju-554d51-31-lxd-6 | internal | enabled | up | 2020-07-24T10:50:57.000000 |
| 100 | nova-consoleauth | juju-554d51-31-lxd-6 | internal | enabled | up | 2020-07-24T10:50:56.000000 |
| 103 | nova-conductor | juju-554d51-31-lxd-6 | internal | enabled | up | 2020-07-24T10:50:57.000000 |
+-----+------------------+----------------------+----------+---------+-------+----------------------------+

openstack aggregate list ; echo $?

0

juju config nova-compute-kvm customize-failure-domain
true

juju config nova-compute-kvm default-availability-zone
nova

juju run --application nova-compute-kvm 'printenv JUJU_AVAILABILITY_ZONE ; sudo grep default_availability_zone /etc/nova/nova.conf'
- Stdout: |
    zone2
    default_availability_zone = zone2
  UnitId: nova-compute-kvm/1
- Stdout: |
    zone1
    default_availability_zone = zone1
  UnitId: nova-compute-kvm/10
- Stdout: |
    zone2
    default_availability_zone = zone2
  UnitId: nova-compute-kvm/6
- Stdout: |
    zone1
    default_availability_zone = zone1
  UnitId: nova-compute-kvm/9
- Stdout: |
    zone1
    default_availability_zone = zone1
  UnitId: nova-compute-kvm/3
- Stdout: |
    zone3
    default_availability_zone = zone3
  UnitId: nova-compute-kvm/8
- Stdout: |
    zone3
    default_availability_zone = zone3
  UnitId: nova-compute-kvm/4

juju run --application nova-compute-kvm 'hostname -f -A ; printenv JUJU_AVAILABILITY_ZONE ; sudo grep default_availability_zone /etc/nova/nova.conf'
- Stdout: "bond0.16.server-maas-6.maas server-maas-6 server-maas-6.maas bond1.13.server-maas-6.maas
    bond0.12.server-maas-6.maas bond0.17.server-maas-6.maas bond1.14.server-maas-6.maas
    bond0.15.server-maas-6.maas \nzone2\ndefault_availability_zone = zone2\n"
  UnitId: nova-compute-kvm/1
- Stdout: "bond0.15.server-maas-4.maas bond0.16.server-maas-4.maas server-maas-4 server-maas-4.maas
    bond1.13.server-maas-4.maas bond0.12.server-maas-4.maas bond1.14.server-maas-4.maas
    \nzone1\ndefault_availability_zone = zone1\n"
  UnitId: nova-compute-kvm/10
- Stdout: "bond0.15.server-maas-8.maas bond0.16.server-maas-8.maas server-maas-8 server-maas-8.maas
    bond0.12.server-maas-8.maas bond1.13.server-maas-8.maas bond1.14.server-maas-8.maas
    \nzone2\ndefault_availability_zone = zone2\n"
  UnitId: nova-compute-kvm/6
- Stdout: "bond0.12.server-maas-11.maas bond0.16.server-maas-11.maas bond0.15.server-maas-11.maas
    bond1.13.server-maas-11.maas bond1.14.server-maas-11.maas server-maas-11 server-maas-11.maas
    \nzone3\ndefault_availability_zone = zone3\n"
  UnitId: nova-compute-kvm/4
- Stdout: "bond0.16.server-maas-10.maas server-maas-10 server-maas-10.maas bond1.14.server-maas-10.maas
    bond1.13.server-maas-10.maas bond0.12.server-maas-10.maas bond0.15.server-maas-10.maas
    bond0.17.server-maas-10.maas \nzone3\ndefault_availability_zone = zone3\n"
  UnitId: nova-compute-kvm/8
- Stdout: "bond0.15.server-maas-3.maas bond0.16.server-maas-3.maas server-maas-3 server-maas-3.maas
    bond1.13.server-maas-3.maas bond0.12.server-maas-3.maas bond1.14.server-maas-3.maas
    \nzone1\ndefault_availability_zone = zone1\n"
  UnitId: nova-compute-kvm/3
- Stdout: "server-maas-2.maas bond1.14.server-maas-2.maas bond1.13.server-maas-2.maas
    bond0.17.server-maas-2.maas bond0.15.server-maas-2.maas bond0.12.server-maas-2.maas
    bond0.16.server-maas-2.maas server-maas-2 \nzone1\ndefault_availability_zone =
    zone1\n"
  UnitId: nova-compute-kvm/9