variables: openstack-origin: &openstack-origin distro series: &series noble machines: 0: constraints: "mem=3072M" 1: constraints: "mem=3072M" 2: constraints: "mem=3072M" 3: {} 4: {} 5: {} 6: {} 7: {} 8: constraints: "root-disk=20G mem=4G" 9: constraints: "root-disk=20G mem=4G" 10: {} 11: {} 12: {} # We specify machine placements for these to improve iteration # time, given that machine "0" comes up way before machine "7" applications: keystone-mysql-router: charm: ch:mysql-router channel: latest/edge nova-mysql-router: charm: ch:mysql-router channel: latest/edge glance-mysql-router: charm: ch:mysql-router channel: latest/edge neutron-mysql-router: charm: ch:mysql-router channel: latest/edge placement-mysql-router: charm: ch:mysql-router channel: latest/edge vault-mysql-router: charm: ch:mysql-router channel: latest/edge mysql-innodb-cluster: charm: ch:mysql-innodb-cluster num_units: 3 options: source: *openstack-origin to: - '0' - '1' - '2' channel: latest/edge rabbitmq-server: charm: ch:rabbitmq-server num_units: 1 to: - '3' channel: latest/edge neutron-api: charm: ch:neutron-api series: *series num_units: 1 options: manage-neutron-plugin-legacy-mode: true overlay-network-type: 'vxlan' l2-population: True flat-network-providers: physnet1 neutron-security-groups: true openstack-origin: *openstack-origin enable-dvr: True enable-qos: True to: - '4' channel: latest/edge keystone: charm: ch:keystone num_units: 1 options: openstack-origin: *openstack-origin to: - '5' channel: latest/edge glance: charm: ch:glance num_units: 1 options: openstack-origin: *openstack-origin to: - '6' channel: latest/edge neutron-openvswitch: charm: ../../neutron-openvswitch.charm options: use-dvr-snat: True bridge-mappings: physnet1:br-ex enable-local-dhcp-and-metadata: True nova-cloud-controller: charm: ch:nova-cloud-controller num_units: 1 options: network-manager: Neutron openstack-origin: *openstack-origin to: - '7' channel: latest/edge nova-compute: charm: ch:nova-compute num_units: 2 options: config-flags: default_ephemeral_format=ext4 enable-live-migration: true enable-resize: true migration-auth-type: ssh openstack-origin: *openstack-origin to: - '8' - '9' channel: latest/edge placement: charm: ch:placement num_units: 1 options: openstack-origin: *openstack-origin to: - '10' channel: latest/edge vault: charm: ch:vault num_units: 1 to: - '11' channel: latest/edge ovn-central: charm: ch:ovn-central num_units: 3 options: source: *openstack-origin to: - '12' channel: latest/edge neutron-api-plugin-ovn: charm: ch:neutron-api-plugin-ovn channel: latest/edge ovn-chassis: charm: ch:ovn-chassis options: # start new units paused to allow unit by unit OVS to OVN migration new-units-paused: true prefer-chassis-as-gw: true channel: latest/edge relations: - - 'neutron-api:amqp' - 'rabbitmq-server:amqp' - - 'neutron-api:neutron-api' - 'nova-cloud-controller:neutron-api' - - 'neutron-api:identity-service' - 'keystone:identity-service' - - 'nova-compute:neutron-plugin' - 'neutron-openvswitch:neutron-plugin' - - 'neutron-api:neutron-plugin-api' - 'neutron-openvswitch:neutron-plugin-api' - - 'nova-cloud-controller:amqp' - 'rabbitmq-server:amqp' - - 'nova-compute:amqp' - 'rabbitmq-server:amqp' - - 'neutron-openvswitch:amqp' - 'rabbitmq-server:amqp' - - 'nova-cloud-controller:identity-service' - 'keystone:identity-service' - - 'nova-cloud-controller:cloud-compute' - 'nova-compute:cloud-compute' - - 'glance:identity-service' - 'keystone:identity-service' - - 'glance:amqp' - 'rabbitmq-server:amqp' - - 'nova-compute:image-service' - 'glance:image-service' - - 'nova-cloud-controller:image-service' - 'glance:image-service' - - 'placement:identity-service' - 'keystone:identity-service' - - 'placement:placement' - 'nova-cloud-controller:placement' - ["keystone:shared-db", "keystone-mysql-router:shared-db"] - ["glance:shared-db", "glance-mysql-router:shared-db"] - ["nova-cloud-controller:shared-db", "nova-mysql-router:shared-db"] - ["neutron-api:shared-db", "neutron-mysql-router:shared-db"] - ["placement:shared-db", "placement-mysql-router:shared-db"] - ["keystone-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["nova-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["glance-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["neutron-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["placement-mysql-router:db-router", "mysql-innodb-cluster:db-router"] # We need to defer the addition of the neutron-api-plugin-ovn subordinate # relation to the functional test as the test will first validate the legacy # Neutron ML2+OVS topology, migrate it to OVN and then confirm connectivity # post migration. # # - - neutron-api-plugin-ovn:neutron-plugin # - neutron-api:neutron-plugin-api-subordinate - - ovn-central:certificates - vault:certificates - - ovn-central:ovsdb-cms - neutron-api-plugin-ovn:ovsdb-cms - - ovn-chassis:nova-compute - nova-compute:neutron-plugin - - ovn-chassis:certificates - vault:certificates - - ovn-chassis:ovsdb - ovn-central:ovsdb - - vault:certificates - neutron-api-plugin-ovn:certificates - - vault:shared-db - vault-mysql-router:shared-db - - vault-mysql-router:db-router - mysql-innodb-cluster:db-router