L2 agent Liberty Neutron Server Liberty Network node L3 Agent Liberty L2 agent Liberty Metadata Liberty DHCP Liberty Neutron Mitaka Neutron upgrade overview Compute node L2 agent Liberty Compute node L2 agent Liberty Database - Liberty Data
on database schema a. neutron-db-manage upgrade --expand Neutron Mitaka Neutron upgrade overview Controller node Compute node L2 agent Liberty Neutron Server Liberty Network node L3 Agent Liberty L2 agent Liberty Metadata Liberty DHCP Liberty Database - Liberty Compute node L2 agent Liberty Compute node L2 agent Liberty Data
on database schema a. neutron-db-manage upgrade --expand 3. Upgrade Neutron Server Neutron upgrade overview Controller node Compute node L2 agent Liberty Neutron Server Liberty Network node L3 Agent Liberty L2 agent Liberty Metadata Liberty DHCP Liberty Database - Liberty Compute node L2 agent Liberty Compute node L2 agent Liberty Data Offline
on database schema a. neutron-db-manage upgrade --expand 3. Upgrade Neutron Server 4. Offline data migration - offline a. neutron-db-manage has_offline_migrations b. neutron-db-manage upgrade --contract Neutron upgrade overview Controller node Compute node L2 agent Liberty Neutron Server Mitaka Database Data Mitaka Network node L3 Agent Liberty L2 agent Liberty Metadata Liberty DHCP Liberty Database Schema Mitaka Compute node L2 agent Liberty Compute node L2 agent Liberty Offline Controller node Compute node L2 agent Liberty Neutron Server Liberty Network node L3 Agent Liberty L2 agent Liberty Metadata Liberty DHCP Liberty Database - Mitaka Compute node L2 agent Liberty Compute node L2 agent Liberty Data Offline
on database schema a. neutron-db-manage upgrade --expand 3. Upgrade Neutron Server 4. Offline data migration - offline a. neutron-db-manage has_offline_migrations b. neutron-db-manage upgrade --contract 5. Start Neutron Server Neutron upgrade overview Controller node Compute node L2 agent Liberty Neutron Server Mitaka Network node L3 Agent Liberty L2 agent Liberty Metadata Liberty DHCP Liberty Compute node L2 agent Liberty Compute node L2 agent Liberty Database - Mitaka Data
on database schema a. neutron-db-manage upgrade --expand 3. Upgrade Neutron Server 4. Offline data migration - offline a. neutron-db-manage has_offline_migrations b. neutron-db-manage upgrade --contract 5. Start Neutron Server 6. Upgrade Network node a. L2 agent first Neutron upgrade overview Compute node L2 agent Liberty Network node L3 Agent Liberty L2 agent Mitaka Metadata Liberty DHCP Liberty Compute node L2 agent Liberty Compute node L2 agent Liberty Controller node Neutron Server Mitaka Database - Mitaka Data
on database schema a. neutron-db-manage upgrade --expand 3. Upgrade Neutron Server 4. Offline data migration - offline a. neutron-db-manage has_offline_migrations b. neutron-db-manage upgrade --contract 5. Start Neutron Server 6. Upgrade Network node a. L2 agent first Neutron upgrade overview - DVR case Compute node L2 agent Liberty L3 agent Liberty Metadata Liberty Network node L3 Agent Mitaka L2 agent Mitaka Metadata Mitaka DHCP Mitaka Controller node Neutron Server Mitaka Database - Mitaka Data
systemctl stop neutron-server ← DOWNTIME!!! $ systemctl start neutron-server $ neutron-db-manage upgrade --contract (a lot later, assuming all data migrated)
versions of database schema Meaning, every database access should consider that And that’s a lot of places in the code! Meaning, SQLAlchemy model is not enough as a database access façade
all versioned! RPC messages can exchange versioned objects, it’s easier to support older clients Hide database details behind the façade in a single place Data can be lazily migrated to new database schema on resource access
Neutron repositories :( Lots of patches in flight, more to come We are nevertheless optimistic to get it done in Newton Follow the progress: https://blueprints.launchpad.net/openstack/? searchtext=adopt-oslo-versioned-objects-for-db
Liberty the OVS agent cleared all the flows when restarted, BOOM! Solution: All the flows added get a cookie with a UUID When the agent restarts, it creates new flows and then deletes stale flows (identified by cookie with a different UUID)
flows for physical bridges now get a cookie too and are not removed after restart Patch ports between br-int / br-tun and br-int / br-phys are not deleted anymore
smoke tests, and upgrade the code to current master and run smoke tests again New ‘partial’ (multinode) job was introduced during Mitaka Primary node running AIO: controller, compute and network node Secondary node running nova-compute and Open vSwitch agents Primary node is upgraded and the secondary node is left with older version Primary node Controller Mitaka Secondary node Compute Mitaka L2 agent Mitaka Compute Mitaka L2 agent Mitaka
smoke tests, and upgrade the code to current master and run smoke tests again New ‘partial’ (multinode) job was introduced during Mitaka Primary node running AIO: controller, compute and network node Secondary node running nova-compute and Open vSwitch agents Primary node is upgraded and the secondary node is left with older version Primary node Controller Master Secondary node Compute Master L2 agent Mitaka Compute Mitaka L2 agent Master
Newton no more pre-release rush to fix migrations for PostgreSQL Improvements needed: move more services to ‘old’ side of the cluster L3 agent, DHCP agent, Metadata agent Introduce DVR testing