From 32e0a1fbdf7edd60d71fed7ec1822f3a912b0bab Mon Sep 17 00:00:00 2001 From: Dmitrii Shcherbakov Date: Thu, 15 Jun 2023 06:56:49 +0400 Subject: [PATCH] Add data plane testing for NDR routes The change includes modifications to bundles to set up components necessary to spawn instances and provide actual connectivity to them. It makes the testing more heavy but adds assurances that the data plane works for the routes advertised by the NDR control plane. The bundle changes also fix an issue that got in with the original OVN bundles: manage-neutron-plugin-legacy-mode is set to True and the plugin is determined to be OVS instead of OVN. The control plane for NDR still worked but with a non-functioning ML2/ovs config causing OVN DBs to be empty. Func-Test-PR: https://github.com/openstack-charmers/zaza-openstack-tests/pull/1076 Change-Id: Ie59b942a0800ce8dd979398f41ed2138472481f1 --- src/tests/bundles/jammy-antelope-ovn.yaml | 117 +++++++++++++++++++- src/tests/bundles/jammy-antelope.yaml | 123 +++++++++++++++++++++- src/tests/bundles/jammy-zed.yaml | 123 +++++++++++++++++++++- src/tests/bundles/lunar-antelope-ovn.yaml | 116 +++++++++++++++++++- src/tests/bundles/lunar-antelope.yaml | 123 +++++++++++++++++++++- src/tests/tests.yaml | 7 ++ 6 files changed, 594 insertions(+), 15 deletions(-) diff --git a/src/tests/bundles/jammy-antelope-ovn.yaml b/src/tests/bundles/jammy-antelope-ovn.yaml index f8ac2f8..c69668e 100644 --- a/src/tests/bundles/jammy-antelope-ovn.yaml +++ b/src/tests/bundles/jammy-antelope-ovn.yaml @@ -34,6 +34,15 @@ applications: neutron-api-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 + placement-mysql-router: + charm: ch:mysql-router + channel: latest/edge mysql-innodb-cluster: charm: ch:mysql-innodb-cluster @@ -61,8 +70,6 @@ applications: charm: ch:neutron-api num_units: 1 options: - manage-neutron-plugin-legacy-mode: true - neutron-plugin: ovs flat-network-providers: physnet1, neutron-security-groups: true openstack-origin: *openstack-origin @@ -109,6 +116,8 @@ applications: neutron-api-plugin-ovn: charm: ch:neutron-api-plugin-ovn channel: latest/edge + options: + enable-distributed-floating-ip: True vault: charm: ch:vault @@ -116,6 +125,48 @@ applications: channel: latest/edge to: - '11' + + nova-compute: + constraints: mem=7168M + charm: ch:nova-compute + num_units: 2 + options: + openstack-origin: *openstack-origin + debug: True + channel: latest/edge + + nova-cloud-controller: + charm: ch:nova-cloud-controller + num_units: 1 + options: + openstack-origin: *openstack-origin + debug: True + network-manager: Neutron + channel: latest/edge + + placement: + charm: ch:placement + num_units: 1 + constraints: mem=1G + options: + openstack-origin: *openstack-origin + debug: true + channel: latest/edge + + glance: + charm: ch:glance + num_units: 1 + options: + openstack-origin: *openstack-origin + channel: latest/edge + + ovn-chassis: + charm: ch:ovn-chassis + channel: latest/edge + options: + ovn-bridge-mappings: physnet1:br-ex + prefer-chassis-as-gw: true + relations: - - 'neutron-dynamic-routing:amqp' @@ -140,6 +191,57 @@ relations: - - 'neutron-api:identity-service' - 'keystone:identity-service' + - - 'nova-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + - - 'glance-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + - - 'placement-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - keystone:identity-service + - glance:identity-service + + - - nova-mysql-router:shared-db + - nova-cloud-controller:shared-db + + - - glance:image-service + - nova-cloud-controller:image-service + - - glance:image-service + - nova-compute:image-service + - - glance-mysql-router:shared-db + - glance:shared-db + + - - keystone:identity-service + - nova-cloud-controller:identity-service + + - - nova-compute:cloud-compute + - nova-cloud-controller:cloud-compute + + - - neutron-api:neutron-api + - nova-cloud-controller:neutron-api + + - - rabbitmq-server:amqp + - nova-cloud-controller:amqp + + - - ovn-chassis:nova-compute + - nova-compute:neutron-plugin + - - ovn-chassis:certificates + - vault:certificates + - - ovn-chassis:ovsdb + - ovn-central:ovsdb + + - - rabbitmq-server:amqp + - nova-compute:amqp + + - - placement + - placement-mysql-router + + - - placement + - keystone + + - - placement + - nova-cloud-controller + - - ovn-central:certificates - vault:certificates @@ -156,4 +258,13 @@ relations: - neutron-api-plugin-ovn:certificates - - neutron-api-plugin-ovn:neutron-plugin - - neutron-api:neutron-plugin-api-subordinate \ No newline at end of file + - neutron-api:neutron-plugin-api-subordinate + + - - vault:certificates + - glance:certificates + + - - vault:certificates + - nova-cloud-controller:certificates + + - - vault:certificates + - placement:certificates \ No newline at end of file diff --git a/src/tests/bundles/jammy-antelope.yaml b/src/tests/bundles/jammy-antelope.yaml index 5581663..cafe6f3 100644 --- a/src/tests/bundles/jammy-antelope.yaml +++ b/src/tests/bundles/jammy-antelope.yaml @@ -31,6 +31,15 @@ applications: neutron-api-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 + placement-mysql-router: + charm: ch:mysql-router + channel: latest/edge mysql-innodb-cluster: charm: ch:mysql-innodb-cluster @@ -60,13 +69,15 @@ applications: options: manage-neutron-plugin-legacy-mode: true neutron-plugin: ovs - flat-network-providers: physnet1, - neutron-security-groups: true + flat-network-providers: physnet1 + enable-ml2-port-security: True + neutron-security-groups: True openstack-origin: *openstack-origin haproxy-server-timeout: 90000 haproxy-client-timeout: 90000 haproxy-queue-timeout: 9000 haproxy-connect-timeout: 9000 + enable-dvr: True to: - '4' channel: latest/edge @@ -100,6 +111,52 @@ applications: to: - '8' + nova-compute: + constraints: mem=7168M + charm: ch:nova-compute + num_units: 2 + options: + openstack-origin: *openstack-origin + debug: True + channel: latest/edge + + nova-cloud-controller: + charm: ch:nova-cloud-controller + num_units: 1 + options: + openstack-origin: *openstack-origin + debug: True + network-manager: Neutron + channel: latest/edge + + placement: + charm: ch:placement + num_units: 1 + constraints: mem=1G + options: + openstack-origin: *openstack-origin + debug: true + channel: latest/edge + + glance: + charm: ch:glance + num_units: 1 + options: + openstack-origin: *openstack-origin + channel: latest/edge + + neutron-openvswitch: + charm: ch:neutron-openvswitch + num_units: 0 + options: + debug: True + enable-local-dhcp-and-metadata: True + use-dvr-snat: True + bridge-mappings: physnet1:br-ex + prevent-arp-spoofing: False + firewall-driver: openvswitch + channel: latest/edge + relations: - - 'neutron-dynamic-routing:amqp' @@ -124,8 +181,68 @@ relations: - - 'neutron-api:identity-service' - 'keystone:identity-service' + - - 'nova-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + - - 'glance-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + - - 'placement-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - keystone:identity-service + - glance:identity-service + + - - nova-mysql-router:shared-db + - nova-cloud-controller:shared-db + + - - glance:image-service + - nova-cloud-controller:image-service + - - glance:image-service + - nova-compute:image-service + - - glance-mysql-router:shared-db + - glance:shared-db + + - - keystone:identity-service + - nova-cloud-controller:identity-service + + - - nova-compute:cloud-compute + - nova-cloud-controller:cloud-compute + + - - neutron-api:neutron-api + - nova-cloud-controller:neutron-api + + - - rabbitmq-server:amqp + - nova-cloud-controller:amqp + + - - rabbitmq-server:amqp + - nova-compute:amqp + + - - placement + - placement-mysql-router + + - - placement + - keystone + + - - placement + - nova-cloud-controller + - - vault:certificates - keystone:certificates - - vault:certificates - - neutron-api:certificates \ No newline at end of file + - neutron-api:certificates + + - - vault:certificates + - glance:certificates + + - - vault:certificates + - nova-cloud-controller:certificates + + - - vault:certificates + - placement:certificates + + - - rabbitmq-server:amqp + - neutron-openvswitch:amqp + - - neutron-api:neutron-plugin-api + - neutron-openvswitch:neutron-plugin-api + - - neutron-openvswitch:neutron-plugin + - nova-compute:neutron-plugin \ No newline at end of file diff --git a/src/tests/bundles/jammy-zed.yaml b/src/tests/bundles/jammy-zed.yaml index cdf9467..ab7081d 100644 --- a/src/tests/bundles/jammy-zed.yaml +++ b/src/tests/bundles/jammy-zed.yaml @@ -31,6 +31,15 @@ applications: neutron-api-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 + placement-mysql-router: + charm: ch:mysql-router + channel: latest/edge mysql-innodb-cluster: charm: ch:mysql-innodb-cluster @@ -60,13 +69,15 @@ applications: options: manage-neutron-plugin-legacy-mode: true neutron-plugin: ovs - flat-network-providers: physnet1, - neutron-security-groups: true + flat-network-providers: physnet1 + enable-ml2-port-security: True + neutron-security-groups: True openstack-origin: *openstack-origin haproxy-server-timeout: 90000 haproxy-client-timeout: 90000 haproxy-queue-timeout: 9000 haproxy-connect-timeout: 9000 + enable-dvr: True to: - '4' channel: latest/edge @@ -100,6 +111,52 @@ applications: to: - '8' + nova-compute: + constraints: mem=7168M + charm: ch:nova-compute + num_units: 2 + options: + openstack-origin: *openstack-origin + debug: True + channel: latest/edge + + nova-cloud-controller: + charm: ch:nova-cloud-controller + num_units: 1 + options: + openstack-origin: *openstack-origin + debug: True + network-manager: Neutron + channel: latest/edge + + placement: + charm: ch:placement + num_units: 1 + constraints: mem=1G + options: + openstack-origin: *openstack-origin + debug: true + channel: latest/edge + + glance: + charm: ch:glance + num_units: 1 + options: + openstack-origin: *openstack-origin + channel: latest/edge + + neutron-openvswitch: + charm: ch:neutron-openvswitch + num_units: 0 + options: + debug: True + enable-local-dhcp-and-metadata: True + use-dvr-snat: True + bridge-mappings: physnet1:br-ex + prevent-arp-spoofing: False + firewall-driver: openvswitch + channel: latest/edge + relations: - - 'neutron-dynamic-routing:amqp' @@ -124,8 +181,68 @@ relations: - - 'neutron-api:identity-service' - 'keystone:identity-service' + - - 'nova-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + - - 'glance-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + - - 'placement-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - keystone:identity-service + - glance:identity-service + + - - nova-mysql-router:shared-db + - nova-cloud-controller:shared-db + + - - glance:image-service + - nova-cloud-controller:image-service + - - glance:image-service + - nova-compute:image-service + - - glance-mysql-router:shared-db + - glance:shared-db + + - - keystone:identity-service + - nova-cloud-controller:identity-service + + - - nova-compute:cloud-compute + - nova-cloud-controller:cloud-compute + + - - neutron-api:neutron-api + - nova-cloud-controller:neutron-api + + - - rabbitmq-server:amqp + - nova-cloud-controller:amqp + + - - rabbitmq-server:amqp + - nova-compute:amqp + + - - placement + - placement-mysql-router + + - - placement + - keystone + + - - placement + - nova-cloud-controller + - - vault:certificates - keystone:certificates - - vault:certificates - - neutron-api:certificates \ No newline at end of file + - neutron-api:certificates + + - - vault:certificates + - glance:certificates + + - - vault:certificates + - nova-cloud-controller:certificates + + - - vault:certificates + - placement:certificates + + - - rabbitmq-server:amqp + - neutron-openvswitch:amqp + - - neutron-api:neutron-plugin-api + - neutron-openvswitch:neutron-plugin-api + - - neutron-openvswitch:neutron-plugin + - nova-compute:neutron-plugin \ No newline at end of file diff --git a/src/tests/bundles/lunar-antelope-ovn.yaml b/src/tests/bundles/lunar-antelope-ovn.yaml index da18611..675ffbb 100644 --- a/src/tests/bundles/lunar-antelope-ovn.yaml +++ b/src/tests/bundles/lunar-antelope-ovn.yaml @@ -34,6 +34,15 @@ applications: neutron-api-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 + placement-mysql-router: + charm: ch:mysql-router + channel: latest/edge mysql-innodb-cluster: charm: ch:mysql-innodb-cluster @@ -61,8 +70,6 @@ applications: charm: ch:neutron-api num_units: 1 options: - manage-neutron-plugin-legacy-mode: true - neutron-plugin: ovs flat-network-providers: physnet1, neutron-security-groups: true openstack-origin: *openstack-origin @@ -109,6 +116,8 @@ applications: neutron-api-plugin-ovn: charm: ch:neutron-api-plugin-ovn channel: latest/edge + options: + enable-distributed-floating-ip: True vault: charm: ch:vault @@ -117,6 +126,47 @@ applications: to: - '11' + nova-compute: + constraints: mem=7168M + charm: ch:nova-compute + num_units: 2 + options: + openstack-origin: *openstack-origin + debug: True + channel: latest/edge + + nova-cloud-controller: + charm: ch:nova-cloud-controller + num_units: 1 + options: + openstack-origin: *openstack-origin + debug: True + network-manager: Neutron + channel: latest/edge + + placement: + charm: ch:placement + num_units: 1 + constraints: mem=1G + options: + openstack-origin: *openstack-origin + debug: true + channel: latest/edge + + glance: + charm: ch:glance + num_units: 1 + options: + openstack-origin: *openstack-origin + channel: latest/edge + + ovn-chassis: + charm: ch:ovn-chassis + channel: latest/edge + options: + ovn-bridge-mappings: physnet1:br-ex + prefer-chassis-as-gw: true + relations: - - 'neutron-dynamic-routing:amqp' @@ -141,6 +191,57 @@ relations: - - 'neutron-api:identity-service' - 'keystone:identity-service' + - - 'nova-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + - - 'glance-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + - - 'placement-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - keystone:identity-service + - glance:identity-service + + - - nova-mysql-router:shared-db + - nova-cloud-controller:shared-db + + - - glance:image-service + - nova-cloud-controller:image-service + - - glance:image-service + - nova-compute:image-service + - - glance-mysql-router:shared-db + - glance:shared-db + + - - keystone:identity-service + - nova-cloud-controller:identity-service + + - - nova-compute:cloud-compute + - nova-cloud-controller:cloud-compute + + - - neutron-api:neutron-api + - nova-cloud-controller:neutron-api + + - - rabbitmq-server:amqp + - nova-cloud-controller:amqp + + - - ovn-chassis:nova-compute + - nova-compute:neutron-plugin + - - ovn-chassis:certificates + - vault:certificates + - - ovn-chassis:ovsdb + - ovn-central:ovsdb + + - - rabbitmq-server:amqp + - nova-compute:amqp + + - - placement + - placement-mysql-router + + - - placement + - keystone + + - - placement + - nova-cloud-controller + - - ovn-central:certificates - vault:certificates @@ -157,4 +258,13 @@ relations: - neutron-api-plugin-ovn:certificates - - neutron-api-plugin-ovn:neutron-plugin - - neutron-api:neutron-plugin-api-subordinate \ No newline at end of file + - neutron-api:neutron-plugin-api-subordinate + + - - vault:certificates + - glance:certificates + + - - vault:certificates + - nova-cloud-controller:certificates + + - - vault:certificates + - placement:certificates \ No newline at end of file diff --git a/src/tests/bundles/lunar-antelope.yaml b/src/tests/bundles/lunar-antelope.yaml index 65b465b..3f19e1e 100644 --- a/src/tests/bundles/lunar-antelope.yaml +++ b/src/tests/bundles/lunar-antelope.yaml @@ -31,6 +31,15 @@ applications: neutron-api-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 + placement-mysql-router: + charm: ch:mysql-router + channel: latest/edge mysql-innodb-cluster: charm: ch:mysql-innodb-cluster @@ -60,13 +69,15 @@ applications: options: manage-neutron-plugin-legacy-mode: true neutron-plugin: ovs - flat-network-providers: physnet1, - neutron-security-groups: true + flat-network-providers: physnet1 + enable-ml2-port-security: True + neutron-security-groups: True openstack-origin: *openstack-origin haproxy-server-timeout: 90000 haproxy-client-timeout: 90000 haproxy-queue-timeout: 9000 haproxy-connect-timeout: 9000 + enable-dvr: True to: - '4' channel: latest/edge @@ -100,6 +111,52 @@ applications: to: - '8' + nova-compute: + constraints: mem=7168M + charm: ch:nova-compute + num_units: 2 + options: + openstack-origin: *openstack-origin + debug: True + channel: latest/edge + + nova-cloud-controller: + charm: ch:nova-cloud-controller + num_units: 1 + options: + openstack-origin: *openstack-origin + debug: True + network-manager: Neutron + channel: latest/edge + + placement: + charm: ch:placement + num_units: 1 + constraints: mem=1G + options: + openstack-origin: *openstack-origin + debug: true + channel: latest/edge + + glance: + charm: ch:glance + num_units: 1 + options: + openstack-origin: *openstack-origin + channel: latest/edge + + neutron-openvswitch: + charm: ch:neutron-openvswitch + num_units: 0 + options: + debug: True + enable-local-dhcp-and-metadata: True + use-dvr-snat: True + bridge-mappings: physnet1:br-ex + prevent-arp-spoofing: False + firewall-driver: openvswitch + channel: latest/edge + relations: - - 'neutron-dynamic-routing:amqp' @@ -124,8 +181,68 @@ relations: - - 'neutron-api:identity-service' - 'keystone:identity-service' + - - 'nova-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + - - 'glance-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + - - 'placement-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - keystone:identity-service + - glance:identity-service + + - - nova-mysql-router:shared-db + - nova-cloud-controller:shared-db + + - - glance:image-service + - nova-cloud-controller:image-service + - - glance:image-service + - nova-compute:image-service + - - glance-mysql-router:shared-db + - glance:shared-db + + - - keystone:identity-service + - nova-cloud-controller:identity-service + + - - nova-compute:cloud-compute + - nova-cloud-controller:cloud-compute + + - - neutron-api:neutron-api + - nova-cloud-controller:neutron-api + + - - rabbitmq-server:amqp + - nova-cloud-controller:amqp + + - - rabbitmq-server:amqp + - nova-compute:amqp + + - - placement + - placement-mysql-router + + - - placement + - keystone + + - - placement + - nova-cloud-controller + - - vault:certificates - keystone:certificates - - vault:certificates - - neutron-api:certificates \ No newline at end of file + - neutron-api:certificates + + - - vault:certificates + - glance:certificates + + - - vault:certificates + - nova-cloud-controller:certificates + + - - vault:certificates + - placement:certificates + + - - rabbitmq-server:amqp + - neutron-openvswitch:amqp + - - neutron-api:neutron-plugin-api + - neutron-openvswitch:neutron-plugin-api + - - neutron-openvswitch:neutron-plugin + - nova-compute:neutron-plugin \ No newline at end of file diff --git a/src/tests/tests.yaml b/src/tests/tests.yaml index 1e3e490..f66cc9f 100644 --- a/src/tests/tests.yaml +++ b/src/tests/tests.yaml @@ -2,6 +2,9 @@ charm_name: neutron-dynamic-routing configure: - zaza.openstack.charm_tests.vault.setup.auto_initialize +- zaza.openstack.charm_tests.glance.setup.add_lts_image +- zaza.openstack.charm_tests.nova.setup.create_flavors +- zaza.openstack.charm_tests.nova.setup.manage_ssh_key - zaza.openstack.charm_tests.dragent.configure.setup gate_bundles: @@ -30,6 +33,10 @@ target_deploy_status: vault: workload-status: blocked workload-status-message-prefix: Vault needs to be initialized + ovn-chassis: + workload-status: waiting + workload-status-message-prefix: "'certificates' awaiting server certificate data" + tests: - zaza.openstack.charm_tests.dragent.tests.DRAgentTest