diff --git a/osci.yaml b/osci.yaml index 1abe9784..6a399fa9 100644 --- a/osci.yaml +++ b/osci.yaml @@ -1,4 +1,4 @@ - project: templates: - charm-unit-jobs - - charm-functional-jobs \ No newline at end of file + - charm-functional-jobs diff --git a/tests/bundles/focal-wallaby.yaml b/tests/bundles/focal-wallaby.yaml new file mode 100644 index 00000000..56feece0 --- /dev/null +++ b/tests/bundles/focal-wallaby.yaml @@ -0,0 +1,269 @@ +variables: + openstack-origin: &openstack-origin cloud:focal-wallaby + +series: &series focal + +machines: + 0: + constraints: "mem=3072M" + 1: + constraints: "mem=3072M" + 2: + constraints: "mem=3072M" + 3: {} + 4: {} + 5: {} + 6: {} + 7: {} + 8: {} + 9: + constraints: "root-disk=20G mem=4G" + 10: + constraints: "root-disk=20G mem=4G" + 11: {} + 12: {} + 13: {} + +# We specify machine placements for these to improve iteration +# time, given that machine "0" comes up way before machine "7" +applications: + + neutron-api-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + keystone-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + nova-cloud-controller-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + glance-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + placement-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + + mysql-innodb-cluster: + charm: cs:~openstack-charmers-next/mysql-innodb-cluster + num_units: 3 + options: + source: *openstack-origin + to: + - '0' + - '1' + - '2' + + rabbitmq-server: + charm: cs:~openstack-charmers-next/rabbitmq-server + num_units: 1 + options: + options: + source: *openstack-origin + to: + - '3' + + neutron-api: + charm: cs:~openstack-charmers-next/neutron-api + series: *series + num_units: 1 + options: + manage-neutron-plugin-legacy-mode: true + flat-network-providers: physnet1 + neutron-security-groups: true + openstack-origin: *openstack-origin + to: + - '4' + + keystone: + charm: cs:~openstack-charmers-next/keystone + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '5' + + glance: + charm: cs:~openstack-charmers-next/glance + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '6' + + neutron-openvswitch: + charm: cs:~openstack-charmers-next/neutron-openvswitch + neutron-gateway: + charm: "../../../neutron-gateway" + num_units: 1 + options: + bridge-mappings: physnet1:br-ex + openstack-origin: *openstack-origin + to: + - '7' + + ovn-dedicated-chassis: + charm: cs:~openstack-charmers-next/ovn-dedicated-chassis + num_units: 1 + options: + # start new units paused to allow unit by unit OVS to OVN migration + new-units-paused: true + to: + # NOTE: We deliberately colocate the ovn-dedicated-chassis with the + # neutron-gateway for migration test purposes. + - '7' + + nova-cloud-controller: + charm: cs:~openstack-charmers-next/nova-cloud-controller + num_units: 1 + options: + network-manager: Neutron + openstack-origin: *openstack-origin + to: + - '8' + + nova-compute: + charm: cs:~openstack-charmers-next/nova-compute + num_units: 2 + options: + openstack-origin: *openstack-origin + to: + - '9' + - '10' + + placement: + charm: cs:~openstack-charmers-next/placement + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '11' + + vault-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + vault: + charm: cs:~openstack-charmers-next/vault + num_units: 1 + to: + - '12' + ovn-central: + charm: cs:~openstack-charmers-next/ovn-central + num_units: 3 + options: + source: *openstack-origin + to: + - '13' + neutron-api-plugin-ovn: + charm: cs:~openstack-charmers-next/neutron-api-plugin-ovn + ovn-chassis: + charm: cs:~openstack-charmers-next/ovn-chassis + options: + # start new units paused to allow unit by unit OVS to OVN migration + new-units-paused: true + +relations: + + - - 'neutron-api:shared-db' + - 'neutron-api-mysql-router:shared-db' + - - 'neutron-api-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'neutron-api:amqp' + - 'rabbitmq-server:amqp' + + - - 'neutron-api:neutron-api' + - 'nova-cloud-controller:neutron-api' + + - - 'neutron-api:neutron-plugin-api' + - 'neutron-gateway:neutron-plugin-api' + + - - 'neutron-api:identity-service' + - 'keystone:identity-service' + + - - 'keystone:shared-db' + - 'keystone-mysql-router:shared-db' + - - 'keystone-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'nova-compute:neutron-plugin' + - 'neutron-openvswitch:neutron-plugin' + + - - 'nova-cloud-controller:shared-db' + - 'nova-cloud-controller-mysql-router:shared-db' + - - 'nova-cloud-controller-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'neutron-gateway:amqp' + - 'rabbitmq-server:amqp' + + - - 'nova-cloud-controller:amqp' + - 'rabbitmq-server:amqp' + + - - 'nova-compute:amqp' + - 'rabbitmq-server:amqp' + + - - 'neutron-openvswitch:amqp' + - 'rabbitmq-server:amqp' + + - - 'neutron-openvswitch:neutron-plugin-api' + - 'neutron-api:neutron-plugin-api' + + - - 'nova-cloud-controller:identity-service' + - 'keystone:identity-service' + + - - 'nova-cloud-controller:cloud-compute' + - 'nova-compute:cloud-compute' + + - - 'glance:identity-service' + - 'keystone:identity-service' + + - - 'glance:shared-db' + - 'glance-mysql-router:shared-db' + - - 'glance-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'glance:amqp' + - 'rabbitmq-server:amqp' + + - - 'nova-compute:image-service' + - 'glance:image-service' + + - - 'nova-cloud-controller:image-service' + - 'glance:image-service' + + - - 'nova-cloud-controller:quantum-network-service' + - 'neutron-gateway:quantum-network-service' + + - - 'placement:shared-db' + - 'placement-mysql-router:shared-db' + - - 'placement-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'placement:identity-service' + - 'keystone:identity-service' + + - - 'placement:placement' + - 'nova-cloud-controller:placement' + + # 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 + - - ovn-dedicated-chassis:certificates + - vault:certificates + - - ovn-dedicated-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 diff --git a/tests/bundles/hirsute-wallaby.yaml b/tests/bundles/hirsute-wallaby.yaml new file mode 100644 index 00000000..0a5a95aa --- /dev/null +++ b/tests/bundles/hirsute-wallaby.yaml @@ -0,0 +1,269 @@ +variables: + openstack-origin: &openstack-origin distro + +series: &series hirsute + +machines: + 0: + constraints: "mem=3072M" + 1: + constraints: "mem=3072M" + 2: + constraints: "mem=3072M" + 3: {} + 4: {} + 5: {} + 6: {} + 7: {} + 8: {} + 9: + constraints: "root-disk=20G mem=4G" + 10: + constraints: "root-disk=20G mem=4G" + 11: {} + 12: {} + 13: {} + +# We specify machine placements for these to improve iteration +# time, given that machine "0" comes up way before machine "7" +applications: + + neutron-api-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + keystone-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + nova-cloud-controller-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + glance-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + placement-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + + mysql-innodb-cluster: + charm: cs:~openstack-charmers-next/mysql-innodb-cluster + num_units: 3 + options: + source: *openstack-origin + to: + - '0' + - '1' + - '2' + + rabbitmq-server: + charm: cs:~openstack-charmers-next/rabbitmq-server + num_units: 1 + options: + options: + source: *openstack-origin + to: + - '3' + + neutron-api: + charm: cs:~openstack-charmers-next/neutron-api + series: *series + num_units: 1 + options: + manage-neutron-plugin-legacy-mode: true + flat-network-providers: physnet1 + neutron-security-groups: true + openstack-origin: *openstack-origin + to: + - '4' + + keystone: + charm: cs:~openstack-charmers-next/keystone + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '5' + + glance: + charm: cs:~openstack-charmers-next/glance + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '6' + + neutron-openvswitch: + charm: cs:~openstack-charmers-next/neutron-openvswitch + neutron-gateway: + charm: "../../../neutron-gateway" + num_units: 1 + options: + bridge-mappings: physnet1:br-ex + openstack-origin: *openstack-origin + to: + - '7' + + ovn-dedicated-chassis: + charm: cs:~openstack-charmers-next/ovn-dedicated-chassis + num_units: 1 + options: + # start new units paused to allow unit by unit OVS to OVN migration + new-units-paused: true + to: + # NOTE: We deliberately colocate the ovn-dedicated-chassis with the + # neutron-gateway for migration test purposes. + - '7' + + nova-cloud-controller: + charm: cs:~openstack-charmers-next/nova-cloud-controller + num_units: 1 + options: + network-manager: Neutron + openstack-origin: *openstack-origin + to: + - '8' + + nova-compute: + charm: cs:~openstack-charmers-next/nova-compute + num_units: 2 + options: + openstack-origin: *openstack-origin + to: + - '9' + - '10' + + placement: + charm: cs:~openstack-charmers-next/placement + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '11' + + vault-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + vault: + charm: cs:~openstack-charmers-next/vault + num_units: 1 + to: + - '12' + ovn-central: + charm: cs:~openstack-charmers-next/ovn-central + num_units: 3 + options: + source: *openstack-origin + to: + - '13' + neutron-api-plugin-ovn: + charm: cs:~openstack-charmers-next/neutron-api-plugin-ovn + ovn-chassis: + charm: cs:~openstack-charmers-next/ovn-chassis + options: + # start new units paused to allow unit by unit OVS to OVN migration + new-units-paused: true + +relations: + + - - 'neutron-api:shared-db' + - 'neutron-api-mysql-router:shared-db' + - - 'neutron-api-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'neutron-api:amqp' + - 'rabbitmq-server:amqp' + + - - 'neutron-api:neutron-api' + - 'nova-cloud-controller:neutron-api' + + - - 'neutron-api:neutron-plugin-api' + - 'neutron-gateway:neutron-plugin-api' + + - - 'neutron-api:identity-service' + - 'keystone:identity-service' + + - - 'keystone:shared-db' + - 'keystone-mysql-router:shared-db' + - - 'keystone-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'nova-compute:neutron-plugin' + - 'neutron-openvswitch:neutron-plugin' + + - - 'nova-cloud-controller:shared-db' + - 'nova-cloud-controller-mysql-router:shared-db' + - - 'nova-cloud-controller-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'neutron-gateway:amqp' + - 'rabbitmq-server:amqp' + + - - 'nova-cloud-controller:amqp' + - 'rabbitmq-server:amqp' + + - - 'nova-compute:amqp' + - 'rabbitmq-server:amqp' + + - - 'neutron-openvswitch:amqp' + - 'rabbitmq-server:amqp' + + - - 'neutron-openvswitch:neutron-plugin-api' + - 'neutron-api:neutron-plugin-api' + + - - 'nova-cloud-controller:identity-service' + - 'keystone:identity-service' + + - - 'nova-cloud-controller:cloud-compute' + - 'nova-compute:cloud-compute' + + - - 'glance:identity-service' + - 'keystone:identity-service' + + - - 'glance:shared-db' + - 'glance-mysql-router:shared-db' + - - 'glance-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'glance:amqp' + - 'rabbitmq-server:amqp' + + - - 'nova-compute:image-service' + - 'glance:image-service' + + - - 'nova-cloud-controller:image-service' + - 'glance:image-service' + + - - 'nova-cloud-controller:quantum-network-service' + - 'neutron-gateway:quantum-network-service' + + - - 'placement:shared-db' + - 'placement-mysql-router:shared-db' + - - 'placement-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'placement:identity-service' + - 'keystone:identity-service' + + - - 'placement:placement' + - 'nova-cloud-controller:placement' + + # 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 + - - ovn-dedicated-chassis:certificates + - vault:certificates + - - ovn-dedicated-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 diff --git a/tests/tests.yaml b/tests/tests.yaml index ea1f7011..3f369228 100644 --- a/tests/tests.yaml +++ b/tests/tests.yaml @@ -10,6 +10,7 @@ smoke_bundles: gate_bundles: - migrate-ovn: groovy-victoria + - migrate-ovn: focal-wallaby - migrate-ovn: focal-victoria - migrate-ovn: focal-ussuri - bionic-ussuri @@ -24,6 +25,7 @@ dev_bundles: - xenial-pike - xenial-queens - bionic-rocky + - migrate-ovn: hirsute-wallaby target_deploy_status: neutron-api-plugin-ovn: @@ -82,4 +84,4 @@ tests_options: # allows verifying instances survive a SDN migration. zaza.openstack.charm_tests.neutron.tests.NeutronNetworkingTest.test_instances_have_networking.run_resource_cleanup: false force_deploy: - - groovy-victoria + - hirsute-wallaby