From 75710ff2a32bfe35cb55c1559a6bb341262a95cb Mon Sep 17 00:00:00 2001 From: Nicholas Njihia Date: Thu, 23 Sep 2021 11:36:49 +0300 Subject: [PATCH] Add config options for volume-based amphora. By default launched amphora will use ephemeral storage as defined by flavor used, this is suboptimal for environments where live-migration is desired (and avoiding the transfer of the blockstorage is needed), but also provides some resiliency in case of hypervisor failures. This patch adds a new set of configuration option to enable amphora instances booted from volume. * enable-volume-based-amphora * volume-size * volume-type More details about this feature can be found at https://opendev.org/openstack/octavia/commit/93b509cfe5ccced92ab482fa789ed6cdb700f154 Also: * removes Mantic tests Func-Test-Pr: https://github.com/openstack-charmers/zaza-openstack-tests/pull/1173 Closes-Bug: #1901732 Change-Id: I45a8385e3522f161e31daf786f293777363e57e0 (cherry picked from commit a4711f55d757c8bcbe22079e09880254c961f213) --- charmcraft.yaml | 12 -- osci.yaml | 19 -- src/config.yaml | 19 ++ src/templates/antelope/octavia.conf | 216 ++++++++++++++++++++ src/templates/ussuri/octavia.conf | 158 +++++++++++++++ src/templates/victoria/octavia.conf | 9 + src/templates/xena/octavia.conf | 9 + src/tests/bundles/jammy-yoga-ha-ovn.yaml | 46 ++++- src/tests/bundles/jammy-yoga-ha.yaml | 44 ++++ src/tests/bundles/jammy-zed-ha-ovn.yaml | 44 ++++ src/tests/bundles/jammy-zed-ha.yaml | 44 ++++ src/tests/bundles/kinetic-zed-ha-ovn.yaml | 237 ---------------------- src/tests/bundles/kinetic-zed-ha.yaml | 231 --------------------- src/tests/tests.yaml | 18 +- 14 files changed, 590 insertions(+), 516 deletions(-) create mode 100644 src/templates/antelope/octavia.conf create mode 100644 src/templates/ussuri/octavia.conf delete mode 100644 src/tests/bundles/kinetic-zed-ha-ovn.yaml delete mode 100644 src/tests/bundles/kinetic-zed-ha.yaml diff --git a/charmcraft.yaml b/charmcraft.yaml index ca80532..5e0d493 100644 --- a/charmcraft.yaml +++ b/charmcraft.yaml @@ -42,9 +42,6 @@ bases: - name: ubuntu channel: "22.04" architectures: [amd64] - - name: ubuntu - channel: "22.10" - architectures: [amd64] - build-on: - name: ubuntu channel: "22.04" @@ -53,9 +50,6 @@ bases: - name: ubuntu channel: "22.04" architectures: [arm64] - - name: ubuntu - channel: "22.10" - architectures: [arm64] - build-on: - name: ubuntu channel: "22.04" @@ -64,9 +58,6 @@ bases: - name: ubuntu channel: "22.04" architectures: [ppc64el] - - name: ubuntu - channel: "22.10" - architectures: [ppc64el] - build-on: - name: ubuntu channel: "22.04" @@ -75,6 +66,3 @@ bases: - name: ubuntu channel: "22.04" architectures: [s390x] - - name: ubuntu - channel: "22.10" - architectures: [s390x] diff --git a/osci.yaml b/osci.yaml index fc9138c..7865031 100644 --- a/osci.yaml +++ b/osci.yaml @@ -7,10 +7,6 @@ - jammy-yoga-ha-ovn - jammy-zed-ha - jammy-zed-ha-ovn - - kinetic-zed-ha: - voting: false - - kinetic-zed-ha-ovn: - voting: false vars: needs_charm_build: true charm_build_name: octavia @@ -50,18 +46,3 @@ - jammy-yoga-ha vars: tox_extra_args: jammy-zed-ha-ovn -- job: - name: kinetic-zed-ha - parent: func-target - dependencies: - - jammy-zed-ha - vars: - tox_extra_args: kinetic-zed-ha -- job: - name: kinetic-zed-ha-ovn - parent: func-target - timeout: 18000 - dependencies: - - kinetic-zed-ha - vars: - tox_extra_args: kinetic-zed-ha-ovn diff --git a/src/config.yaml b/src/config.yaml index 305ab38..56269d3 100644 --- a/src/config.yaml +++ b/src/config.yaml @@ -221,3 +221,22 @@ options: type: int description: | Retry timeout between connection attempts in seconds for active amphora. + enable-volume-based-amphora: + default: False + type: boolean + description: | + Enable the use of cinder volumes for the amphora. When this option is + enabled, Octavia will create a volume and attach it to the amphora. + volume-size: + default: 16 + type: int + description: | + Size of the volume, in GB, for amphora instance. Applies only when + enable-volume-based-amphora is True. + volume-type: + default: + type: string + description: | + Type of volume for amphora volume root disk. Applies only when + enable-volume-based-amphora is True.If this isn't specified, + the default_volume_type from cinder.conf will be used. diff --git a/src/templates/antelope/octavia.conf b/src/templates/antelope/octavia.conf new file mode 100644 index 0000000..d856924 --- /dev/null +++ b/src/templates/antelope/octavia.conf @@ -0,0 +1,216 @@ +# bobcat +[DEFAULT] +debug = {{ options.debug }} + +{% include "parts/section-transport-url" %} + +{% if ovsdb_subordinate and ovsdb_subordinate.ovn_configured and ovsdb_cms -%} +[api_settings] +{% if options.enable_amphora -%} +enabled_provider_drivers = amphora:The Octavia Amphora driver,ovn:Octavia OVN driver +{% else -%} +enabled_provider_drivers = ovn:Octavia OVN driver +{% endif -%} + +[ovn] +ovn_nb_connection={{ ','.join(ovsdb_cms.db_nb_connection_strs) }} +ovn_nb_private_key=/etc/octavia/ovn_private_key.pem +ovn_nb_certificate=/etc/octavia/ovn_certificate.pem +ovn_nb_ca_cert=/etc/octavia/ovn_ca_cert.pem + +ovn_sb_connection={{ ','.join(ovsdb_cms.db_sb_connection_strs) }} +ovn_sb_private_key=/etc/octavia/ovn_private_key.pem +ovn_sb_certificate=/etc/octavia/ovn_certificate.pem +ovn_sb_ca_cert=/etc/octavia/ovn_ca_cert.pem + +[driver_agent] +enabled_provider_agents = ovn +{% endif %} + +[health_manager] +{% if options.health_manager_bind_ip -%} +bind_ip = {{ options.health_manager_bind_ip }} +{% endif -%} +{% if options.controller_ip_port_list -%} +controller_ip_port_list = {{ options.controller_ip_port_list }} +{% endif -%} +heartbeat_key = {{ options.heartbeat_key }} +health_update_threads = {{ options.workers }} +stats_update_threads = {{ options.workers }} + +[house_keeping] +{% if options.spare_amphora_pool_size -%} +spare_amphora_pool_size = {{ options.spare_amphora_pool_size }} +{% endif %} + +[controller_worker] +{% if options.amp_ssh_key_name %} +amp_ssh_key_name = {{ options.amp_ssh_key_name }} +{% endif -%} +{% if options.amp_image_owner_id -%} +amp_image_owner_id = {{ options.amp_image_owner_id }} +{% endif -%} +{% if options.amp_secgroup_list -%} +amp_secgroup_list = {{ options.amp_secgroup_list }} +{% endif -%} +{% if options.amp_flavor_id -%} +amp_flavor_id = {{ options.amp_flavor_id }} +{% endif -%} +{% if options.amp_boot_network_list -%} +amp_boot_network_list = {{ options.amp_boot_network_list }} +{% endif -%} +{% if options.amp_image_tag -%} +amp_image_tag = {{ options.amp_image_tag }} +{% endif -%} +amp_active_retries = 180 +# This certificate is installed on the ``Amphorae`` and used for validating +# the authenticity of the ``Octavia`` controller. +client_ca = {{ options.controller_cacert }} +network_driver = allowed_address_pairs_driver +compute_driver = compute_nova_driver +amphora_driver = amphora_haproxy_rest_driver +loadbalancer_topology = {{ options.loadbalancer_topology }} +{% if options.enable_volume_based_amphora -%} +volume_driver = volume_cinder_driver +{% endif -%} + +[certificates] +# NOTE(fnordahl) certificates for authentication between Octavia controllers +# and its Amphorae instances are issued locally on the Octavia controller. +# +# At the time of this writing this is the only supported alternative upstream +# after the retirement of the Anchor project [0]. +# +# Note that these certificates are not used for any load balancer payload data +# +# 0: https://review.opendev.org/#/c/597022/ +cert_generator = local_cert_generator +# This certificate is used to issue individual certificates for each +# ``Amphora`` and to validate their authenticity when they connect to the +# ``Octavia`` controller. +ca_certificate = {{ options.issuing_cacert }} +ca_private_key = {{ options.issuing_ca_private_key }} +ca_private_key_passphrase = {{ options.issuing_ca_private_key_passphrase }} + +cert_manager = barbican_cert_manager +{% if options.region -%} +region_name = {{ options.region }} +{% endif -%} +{% if options.use_internal_endpoints -%} +endpoint_type = internalURL +{%- endif %} + + +[haproxy_amphora] +# This certificate is used by the ``Octavia`` controller to validate the +# authenticity of the ``Amphorae`` connecting to it. +server_ca = {{ options.issuing_cacert }} +# This certificate is used by the ``Octavia`` controller when it takes on the +# role as a "client" connecting to the ``Amphorae``. +client_cert = {{ options.controller_cert }} +connection_max_retries = {{ options.connection_max_retries }} +connection_retry_interval = {{ options.connection_retry_interval }} +active_connection_max_retries = {{ options.active_connection_max_retries }} +active_connection_retry_interval = {{ options.active_connection_retry_interval }} + +{% include "parts/section-database" %} + +{% if identity_service.auth_host -%} +[service_auth] +auth_url = {{ identity_service.auth_protocol }}://{{ identity_service.auth_host }}:{{ identity_service.auth_port }} +auth_type = password +{% if identity_service.service_domain -%} +project_domain_name = {{ identity_service.service_domain }} +user_domain_name = {{ identity_service.service_domain }} +{% else %} +project_domain_name = default +user_domain_name = default +{% endif -%} +project_name = {{ identity_service.service_tenant }} +username = {{ identity_service.service_username }} +password = {{ identity_service.service_password }} +{% if options.use_memcache == true -%} +memcached_servers = {{ options.memcache_url }} +{% endif -%} +{% endif %} + +{% include "parts/section-keystone-authtoken" %} +{% if options.use_internal_endpoints -%} +endpoint_type = internalURL +{%- endif %} +{% if identity_service.auth_host -%} +auth_section = service_auth +{%- endif %} + +[oslo_messaging] +topic = octavia + +[nova] +{% if options.region -%} +region_name = {{ options.region }} +{% endif -%} +{% if options.use_internal_endpoints -%} +endpoint_type = internalURL +{%- endif %} +{%- if options.loadbalancer_topology == "SINGLE" or options.anti_affinity_policy == "disable" %} +enable_anti_affinity = False +{%- elif options.loadbalancer_topology == "ACTIVE_STANDBY" %} +{%- if options.anti_affinity_policy == "auto" %} +enable_anti_affinity = True +anti_affinity_policy = "soft-anti-affinity" +{%- elif options.anti_affinity_policy in ["anti-affinity", "soft-anti-affinity"] %} +enable_anti_affinity = True +anti_affinity_policy = {{ options.anti_affinity_policy }} +{%- endif %} +{%- endif %} + +[cinder] +{% if options.region -%} +region_name = {{ options.region }} +{% endif -%} +{% if options.use_internal_endpoints -%} +endpoint_type = internalURL +{%- endif %} +{% if options.enable_volume_based_amphora -%} +volume_size = {{options.volume_size}} +{% if options.volume_type -%} +volume_type = {{options.volume_type}} +{%- endif %} +{%- endif %} + +[glance] +{% if options.region -%} +region_name = {{ options.region }} +{% endif -%} +{% if options.use_internal_endpoints -%} +endpoint_type = internalURL +{%- endif %} + +[neutron] +{% if options.region -%} +region_name = {{ options.region }} +{% endif -%} +{% if options.use_internal_endpoints -%} +endpoint_type = internalURL +{%- endif %} +{% if identity_service.auth_host -%} +auth_url = {{ identity_service.auth_protocol }}://{{ identity_service.auth_host }}:{{ identity_service.auth_port }} +auth_type = password +{% if identity_service.service_domain -%} +project_domain_name = {{ identity_service.service_domain }} +user_domain_name = {{ identity_service.service_domain }} +{% else %} +project_domain_name = default +user_domain_name = default +{% endif -%} +project_name = {{ identity_service.service_tenant }} +username = {{ identity_service.service_username }} +password = {{ identity_service.service_password }} +{% if options.use_memcache == true -%} +memcached_servers = {{ options.memcache_url }} +{% endif -%} +{% endif %} + +{% include "parts/section-oslo-messaging-rabbit" %} + +{% include "parts/section-oslo-middleware" %} diff --git a/src/templates/ussuri/octavia.conf b/src/templates/ussuri/octavia.conf new file mode 100644 index 0000000..e9eae38 --- /dev/null +++ b/src/templates/ussuri/octavia.conf @@ -0,0 +1,158 @@ +# victoria +[DEFAULT] +debug = {{ options.debug }} + +{% include "parts/section-transport-url" %} + +[health_manager] +{% if options.health_manager_bind_ip -%} +bind_ip = {{ options.health_manager_bind_ip }} +{% endif -%} +{% if options.controller_ip_port_list -%} +controller_ip_port_list = {{ options.controller_ip_port_list }} +{% endif -%} +heartbeat_key = {{ options.heartbeat_key }} +health_update_threads = {{ options.workers }} +stats_update_threads = {{ options.workers }} + +[house_keeping] +{% if options.spare_amphora_pool_size -%} +spare_amphora_pool_size = {{ options.spare_amphora_pool_size }} +{% endif %} + +[controller_worker] +{% if options.amp_ssh_key_name %} +amp_ssh_key_name = {{ options.amp_ssh_key_name }} +{% endif -%} +{% if options.amp_image_owner_id -%} +amp_image_owner_id = {{ options.amp_image_owner_id }} +{% endif -%} +{% if options.amp_secgroup_list -%} +amp_secgroup_list = {{ options.amp_secgroup_list }} +{% endif -%} +{% if options.amp_flavor_id -%} +amp_flavor_id = {{ options.amp_flavor_id }} +{% endif -%} +{% if options.amp_boot_network_list -%} +amp_boot_network_list = {{ options.amp_boot_network_list }} +{% endif -%} +{% if options.amp_image_tag -%} +amp_image_tag = {{ options.amp_image_tag }} +{% endif -%} +amp_active_retries = 180 +# This certificate is installed on the ``Amphorae`` and used for validating +# the authenticity of the ``Octavia`` controller. +client_ca = {{ options.controller_cacert }} +network_driver = allowed_address_pairs_driver +compute_driver = compute_nova_driver +amphora_driver = amphora_haproxy_rest_driver +loadbalancer_topology = {{ options.loadbalancer_topology }} +{% if options.enable_volume_based_amphora -%} +volume_driver = volume_cinder_driver +{% endif -%} + +[certificates] +# NOTE(fnordahl) certificates for authentication between Octavia controllers +# and its Amphorae instances are issued locally on the Octavia controller. +# +# At the time of this writing this is the only supported alternative upstream +# after the retirement of the Anchor project [0]. +# +# Note that these certificates are not used for any load balancer payload data +# +# 0: https://review.opendev.org/#/c/597022/ +cert_generator = local_cert_generator +# This certificate is used to issue individual certificates for each +# ``Amphora`` and to validate their authenticity when they connect to the +# ``Octavia`` controller. +ca_certificate = {{ options.issuing_cacert }} +ca_private_key = {{ options.issuing_ca_private_key }} +ca_private_key_passphrase = {{ options.issuing_ca_private_key_passphrase }} + +cert_manager = barbican_cert_manager +{% if options.region -%} +region_name = {{ options.region }} +{% endif -%} +{% if options.use_internal_endpoints -%} +endpoint_type = internalURL +{%- endif %} + + +[haproxy_amphora] +# This certificate is used by the ``Octavia`` controller to validate the +# authenticity of the ``Amphorae`` connecting to it. +server_ca = {{ options.issuing_cacert }} +# This certificate is used by the ``Octavia`` controller when it takes on the +# role as a "client" connecting to the ``Amphorae``. +client_cert = {{ options.controller_cert }} +connection_max_retries = {{ options.connection_max_retries }} +connection_retry_interval = {{ options.connection_retry_interval }} +active_connection_max_retries = {{ options.active_connection_max_retries }} +active_connection_retry_interval = {{ options.active_connection_retry_interval }} + + +{% include "parts/section-database" %} + +[service_auth] +auth_section = keystone_authtoken + +{% include "parts/section-keystone-authtoken" %} +{% if options.use_internal_endpoints -%} +endpoint_type = internalURL +{%- endif %} + +[oslo_messaging] +topic = octavia + +[nova] +{% if options.region -%} +region_name = {{ options.region }} +{% endif -%} +{% if options.use_internal_endpoints -%} +endpoint_type = internalURL +{%- endif %} +{%- if options.loadbalancer_topology == "SINGLE" or options.anti_affinity_policy == "disable" %} +enable_anti_affinity = False +{%- elif options.loadbalancer_topology == "ACTIVE_STANDBY" %} +{%- if options.anti_affinity_policy == "auto" %} +enable_anti_affinity = True +anti_affinity_policy = "soft-anti-affinity" +{%- elif options.anti_affinity_policy in ["anti-affinity", "soft-anti-affinity"] %} +enable_anti_affinity = True +anti_affinity_policy = {{ options.anti_affinity_policy }} +{%- endif %} +{%- endif %} + +[cinder] +{% if options.region -%} +region_name = {{ options.region }} +{% endif -%} +{% if options.use_internal_endpoints -%} +endpoint_type = internalURL +{%- endif %} +{% if options.enable_volume_based_amphora -%} +volume_size = {{options.volume_size}} +{% if options.volume_type -%} +volume_type = {{options.volume_type}} +{%- endif %} +{%- endif %} + +[glance] +{% if options.region -%} +region_name = {{ options.region }} +{% endif -%} +{% if options.use_internal_endpoints -%} +endpoint_type = internalURL +{%- endif %} + +[neutron] +{% if options.region -%} +region_name = {{ options.region }} +{% endif -%} +{% if options.use_internal_endpoints -%} +endpoint_type = internalURL +{%- endif %} + +{% include "parts/section-oslo-messaging-rabbit" %} + +{% include "parts/section-oslo-middleware" %} diff --git a/src/templates/victoria/octavia.conf b/src/templates/victoria/octavia.conf index b6da7e4..8e427ea 100644 --- a/src/templates/victoria/octavia.conf +++ b/src/templates/victoria/octavia.conf @@ -65,6 +65,9 @@ network_driver = allowed_address_pairs_driver compute_driver = compute_nova_driver amphora_driver = amphora_haproxy_rest_driver loadbalancer_topology = {{ options.loadbalancer_topology }} +{% if options.enable_volume_based_amphora -%} +volume_driver = volume_cinder_driver +{% endif -%} [certificates] # NOTE(fnordahl) certificates for authentication between Octavia controllers @@ -145,6 +148,12 @@ region_name = {{ options.region }} {% if options.use_internal_endpoints -%} endpoint_type = internalURL {%- endif %} +{% if options.enable_volume_based_amphora -%} +volume_size = {{options.volume_size}} +{% if options.volume_type -%} +volume_type = {{options.volume_type}} +{%- endif %} +{%- endif %} [glance] {% if options.region -%} diff --git a/src/templates/xena/octavia.conf b/src/templates/xena/octavia.conf index 1f1bfa6..55e2d31 100644 --- a/src/templates/xena/octavia.conf +++ b/src/templates/xena/octavia.conf @@ -70,6 +70,9 @@ network_driver = allowed_address_pairs_driver compute_driver = compute_nova_driver amphora_driver = amphora_haproxy_rest_driver loadbalancer_topology = {{ options.loadbalancer_topology }} +{% if options.enable_volume_based_amphora -%} +volume_driver = volume_cinder_driver +{% endif -%} [certificates] # NOTE(fnordahl) certificates for authentication between Octavia controllers @@ -149,6 +152,12 @@ region_name = {{ options.region }} {% if options.use_internal_endpoints -%} endpoint_type = internalURL {%- endif %} +{% if options.enable_volume_based_amphora -%} +volume_size = {{options.volume_size}} +{% if options.volume_type -%} +volume_type = {{options.volume_type}} +{%- endif %} +{%- endif %} [glance] {% if options.region -%} diff --git a/src/tests/bundles/jammy-yoga-ha-ovn.yaml b/src/tests/bundles/jammy-yoga-ha-ovn.yaml index b3405cd..898c3c4 100644 --- a/src/tests/bundles/jammy-yoga-ha-ovn.yaml +++ b/src/tests/bundles/jammy-yoga-ha-ovn.yaml @@ -76,7 +76,7 @@ relations: - vault:certificates - - ovn-chassis:ovsdb - ovn-central:ovsdb -- - vault:certificates +- - vault:certificovn-ceates - neutron-api-plugin-ovn:certificates - - vault:certificates - glance:certificates @@ -90,6 +90,8 @@ relations: - octavia:certificates - - vault:certificates - glance-simplestreams-sync:certificates +- - vault:certificates + - cinder:certificates - - hacluster-octavia:ha - octavia:ha - ["octavia-mysql-router:db-router", "mysql-innodb-cluster:db-router"] @@ -99,6 +101,15 @@ relations: - ["neutron-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["placement-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["vault-mysql-router:db-router", "mysql-innodb-cluster:db-router"] +- ["cinder-ceph:storage-backend", "cinder:storage-backend"] +- ["nova-compute:ceph-access", "cinder-ceph:ceph-access"] +- ["ceph-mon:client", "cinder-ceph:ceph"] +- ["ceph-mon:osd", "ceph-osd:mon"] +- ["cinder:shared-db", "cinder-mysql-router:shared-db"] +- ["cinder-mysql-router:db-router", "mysql-innodb-cluster:db-router"] +- ["cinder:identity-service", "keystone:identity-service"] +- ["cinder:amqp", "rabbitmq-server:amqp"] +- ["cinder:image-service", "glance:image-service"] applications: glance: charm: ch:glance @@ -112,6 +123,9 @@ applications: options: openstack-origin: *openstack-origin channel: zed/edge + cinder-mysql-router: + charm: ch:mysql-router + channel: 8.0/edge octavia-mysql-router: charm: ch:mysql-router channel: 8.0/edge @@ -138,6 +152,36 @@ applications: charm: ch:mysql-innodb-cluster num_units: 3 channel: 8.0/edge + ceph-osd: + charm: ch:ceph-osd + num_units: 3 + storage: + osd-devices: '40G' + options: + source: *openstack-origin + channel: quincy/candidate + ceph-mon: + charm: ch:ceph-mon + num_units: 1 + options: + source: *openstack-origin + monitor-count: '1' + channel: quincy/candidate + cinder: + charm: ch:cinder + num_units: 1 + storage: + block-devices: '40G' + options: + openstack-origin: *openstack-origin + glance-api-version: 2 + block-device: None + overwrite: "true" + image-volume-cache-enabled: true + channel: latest/edge + cinder-ceph: + charm: ch:cinder-ceph + channel: latest/edge neutron-api: constraints: cores=4 charm: ch:neutron-api diff --git a/src/tests/bundles/jammy-yoga-ha.yaml b/src/tests/bundles/jammy-yoga-ha.yaml index 69af44b..c3a41d6 100644 --- a/src/tests/bundles/jammy-yoga-ha.yaml +++ b/src/tests/bundles/jammy-yoga-ha.yaml @@ -84,6 +84,8 @@ relations: - glance-simplestreams-sync:certificates - - vault:certificates - placement:certificates +- - vault:certificates + - cinder:certificates - ["octavia-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["keystone-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["nova-mysql-router:db-router", "mysql-innodb-cluster:db-router"] @@ -91,6 +93,15 @@ relations: - ["neutron-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["placement-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["vault-mysql-router:db-router", "mysql-innodb-cluster:db-router"] +- ["cinder-ceph:storage-backend", "cinder:storage-backend"] +- ["nova-compute:ceph-access", "cinder-ceph:ceph-access"] +- ["ceph-mon:client", "cinder-ceph:ceph"] +- ["ceph-mon:osd", "ceph-osd:mon"] +- ["cinder:shared-db", "cinder-mysql-router:shared-db"] +- ["cinder-mysql-router:db-router", "mysql-innodb-cluster:db-router"] +- ["cinder:identity-service", "keystone:identity-service"] +- ["cinder:amqp", "rabbitmq-server:amqp"] +- ["cinder:image-service", "glance:image-service"] applications: glance: charm: ch:glance @@ -104,6 +115,9 @@ applications: options: openstack-origin: *openstack-origin channel: zed/edge + cinder-mysql-router: + charm: ch:mysql-router + channel: 8.0/edge octavia-mysql-router: charm: ch:mysql-router channel: 8.0/edge @@ -130,6 +144,36 @@ applications: charm: ch:mysql-innodb-cluster num_units: 3 channel: 8.0/edge + ceph-osd: + charm: ch:ceph-osd + num_units: 3 + storage: + osd-devices: '40G' + options: + source: *openstack-origin + channel: quincy/candidate + ceph-mon: + charm: ch:ceph-mon + num_units: 1 + options: + source: *openstack-origin + monitor-count: '1' + channel: quincy/candidate + cinder: + charm: ch:cinder + num_units: 1 + storage: + block-devices: '40G' + options: + openstack-origin: *openstack-origin + glance-api-version: 2 + block-device: None + overwrite: "true" + image-volume-cache-enabled: true + channel: latest/edge + cinder-ceph: + charm: ch:cinder-ceph + channel: latest/edge neutron-api: charm: ch:neutron-api num_units: 1 diff --git a/src/tests/bundles/jammy-zed-ha-ovn.yaml b/src/tests/bundles/jammy-zed-ha-ovn.yaml index b428b27..0495c63 100644 --- a/src/tests/bundles/jammy-zed-ha-ovn.yaml +++ b/src/tests/bundles/jammy-zed-ha-ovn.yaml @@ -90,6 +90,8 @@ relations: - octavia:certificates - - vault:certificates - glance-simplestreams-sync:certificates +- - vault:certificates + - cinder:certificates - - hacluster-octavia:ha - octavia:ha - ["octavia-mysql-router:db-router", "mysql-innodb-cluster:db-router"] @@ -99,6 +101,15 @@ relations: - ["neutron-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["placement-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["vault-mysql-router:db-router", "mysql-innodb-cluster:db-router"] +- ["cinder-ceph:storage-backend", "cinder:storage-backend"] +- ["nova-compute:ceph-access", "cinder-ceph:ceph-access"] +- ["ceph-mon:client", "cinder-ceph:ceph"] +- ["ceph-mon:osd", "ceph-osd:mon"] +- ["cinder:shared-db", "cinder-mysql-router:shared-db"] +- ["cinder-mysql-router:db-router", "mysql-innodb-cluster:db-router"] +- ["cinder:identity-service", "keystone:identity-service"] +- ["cinder:amqp", "rabbitmq-server:amqp"] +- ["cinder:image-service", "glance:image-service"] applications: glance: charm: ch:glance @@ -112,6 +123,9 @@ applications: options: openstack-origin: *openstack-origin channel: zed/edge + cinder-mysql-router: + charm: ch:mysql-router + channel: 8.0/edge octavia-mysql-router: charm: ch:mysql-router channel: 8.0/edge @@ -138,6 +152,36 @@ applications: charm: ch:mysql-innodb-cluster num_units: 3 channel: 8.0/edge + ceph-osd: + charm: ch:ceph-osd + num_units: 3 + storage: + osd-devices: '40G' + options: + source: *openstack-origin + channel: quincy/candidate + ceph-mon: + charm: ch:ceph-mon + num_units: 1 + options: + source: *openstack-origin + monitor-count: '1' + channel: quincy/candidate + cinder: + charm: ch:cinder + num_units: 1 + storage: + block-devices: '40G' + options: + openstack-origin: *openstack-origin + glance-api-version: 2 + block-device: None + overwrite: "true" + image-volume-cache-enabled: true + channel: latest/edge + cinder-ceph: + charm: ch:cinder-ceph + channel: latest/edge neutron-api: constraints: cores=4 charm: ch:neutron-api diff --git a/src/tests/bundles/jammy-zed-ha.yaml b/src/tests/bundles/jammy-zed-ha.yaml index 918c978..9634493 100644 --- a/src/tests/bundles/jammy-zed-ha.yaml +++ b/src/tests/bundles/jammy-zed-ha.yaml @@ -84,6 +84,8 @@ relations: - glance-simplestreams-sync:certificates - - vault:certificates - placement:certificates +- - vault:certificates + - cinder:certificates - ["octavia-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["keystone-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["nova-mysql-router:db-router", "mysql-innodb-cluster:db-router"] @@ -91,6 +93,15 @@ relations: - ["neutron-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["placement-mysql-router:db-router", "mysql-innodb-cluster:db-router"] - ["vault-mysql-router:db-router", "mysql-innodb-cluster:db-router"] +- ["cinder-ceph:storage-backend", "cinder:storage-backend"] +- ["nova-compute:ceph-access", "cinder-ceph:ceph-access"] +- ["ceph-mon:client", "cinder-ceph:ceph"] +- ["ceph-mon:osd", "ceph-osd:mon"] +- ["cinder:shared-db", "cinder-mysql-router:shared-db"] +- ["cinder-mysql-router:db-router", "mysql-innodb-cluster:db-router"] +- ["cinder:identity-service", "keystone:identity-service"] +- ["cinder:amqp", "rabbitmq-server:amqp"] +- ["cinder:image-service", "glance:image-service"] applications: glance: charm: ch:glance @@ -104,6 +115,9 @@ applications: options: openstack-origin: *openstack-origin channel: zed/edge + cinder-mysql-router: + charm: ch:mysql-router + channel: 8.0/edge octavia-mysql-router: charm: ch:mysql-router channel: 8.0/edge @@ -130,6 +144,36 @@ applications: charm: ch:mysql-innodb-cluster num_units: 3 channel: 8.0/edge + ceph-osd: + charm: ch:ceph-osd + num_units: 3 + storage: + osd-devices: '40G' + options: + source: *openstack-origin + channel: quincy/candidate + ceph-mon: + charm: ch:ceph-mon + num_units: 1 + options: + source: *openstack-origin + monitor-count: '1' + channel: quincy/candidate + cinder: + charm: ch:cinder + num_units: 1 + storage: + block-devices: '40G' + options: + openstack-origin: *openstack-origin + glance-api-version: 2 + block-device: None + overwrite: "true" + image-volume-cache-enabled: true + channel: latest/edge + cinder-ceph: + charm: ch:cinder-ceph + channel: latest/edge neutron-api: charm: ch:neutron-api num_units: 1 diff --git a/src/tests/bundles/kinetic-zed-ha-ovn.yaml b/src/tests/bundles/kinetic-zed-ha-ovn.yaml deleted file mode 100644 index 8303226..0000000 --- a/src/tests/bundles/kinetic-zed-ha-ovn.yaml +++ /dev/null @@ -1,237 +0,0 @@ -variables: - openstack-origin: &openstack-origin distro - -local_overlay_enabled: True - -series: &series kinetic -relations: -- - glance:image-service - - nova-cloud-controller:image-service -- - glance:image-service - - nova-compute:image-service -- - glance-mysql-router:shared-db - - glance:shared-db -- - keystone-mysql-router:shared-db - - keystone:shared-db -- - neutron-mysql-router:shared-db - - neutron-api:shared-db -- - nova-mysql-router:shared-db - - nova-cloud-controller:shared-db -- - octavia-mysql-router:shared-db - - octavia:shared-db -- - keystone:identity-service - - glance:identity-service -- - keystone:identity-service - - nova-cloud-controller:identity-service -- - keystone:identity-service - - neutron-api:identity-service -- - keystone:identity-service - - octavia:identity-service -- - nova-compute:cloud-compute - - nova-cloud-controller:cloud-compute -- - rabbitmq-server:amqp - - neutron-api:amqp -- - rabbitmq-server:amqp - - glance:amqp -- - rabbitmq-server:amqp - - nova-cloud-controller:amqp -- - rabbitmq-server:amqp - - nova-compute:amqp -- - rabbitmq-server:amqp - - octavia:amqp -- - neutron-api:neutron-api - - nova-cloud-controller:neutron-api -- - neutron-api:neutron-load-balancer - - octavia:neutron-api -- - glance-simplestreams-sync:juju-info - - octavia-diskimage-retrofit:juju-info -- - keystone:identity-service - - glance-simplestreams-sync:identity-service -- - keystone:identity-credentials - - octavia-diskimage-retrofit:identity-credentials -- [ placement, placement-mysql-router ] -- [ placement, keystone ] -- [ placement, nova-cloud-controller ] -- - neutron-api-plugin-ovn:neutron-plugin - - neutron-api:neutron-plugin-api-subordinate -- - vault:shared-db - - vault-mysql-router:shared-db -- - ovn-central:certificates - - vault:certificates -- - ovn-central:ovsdb-cms - - neutron-api-plugin-ovn:ovsdb-cms -- - neutron-api:certificates - - vault:certificates -- - ovn-chassis:nova-compute - - nova-compute:neutron-plugin -- - ovn-chassis-octavia:ovsdb-subordinate - - octavia:ovsdb-subordinate -- - ovn-chassis-octavia:certificates - - vault:certificates -- - ovn-chassis-octavia:ovsdb - - ovn-central:ovsdb -- - ovn-central:ovsdb-cms - - octavia:ovsdb-cms -- - ovn-chassis:certificates - - vault:certificates -- - ovn-chassis:ovsdb - - ovn-central:ovsdb -- - vault:certificates - - neutron-api-plugin-ovn:certificates -- - vault:certificates - - glance:certificates -- - vault:certificates - - keystone:certificates -- - vault:certificates - - nova-cloud-controller:certificates -- - vault:certificates - - placement:certificates -- - vault:certificates - - octavia:certificates -- - vault:certificates - - glance-simplestreams-sync:certificates -- - hacluster-octavia:ha - - octavia:ha -- ["octavia-mysql-router:db-router", "mysql-innodb-cluster:db-router"] -- ["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"] -- ["vault-mysql-router:db-router", "mysql-innodb-cluster:db-router"] -applications: - glance: - charm: ch:glance - num_units: 1 - options: - openstack-origin: *openstack-origin - channel: zed/edge - keystone: - charm: ch:keystone - num_units: 1 - options: - openstack-origin: *openstack-origin - channel: zed/edge - octavia-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - keystone-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - nova-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - glance-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - neutron-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - placement-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - vault-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - mysql-innodb-cluster: - constraints: mem=3072M - charm: ch:mysql-innodb-cluster - num_units: 3 - channel: 8.0/edge - neutron-api: - constraints: cores=4 - charm: ch:neutron-api - num_units: 1 - options: - openstack-origin: *openstack-origin - debug: True - flat-network-providers: physnet1 - enable-ml2-port-security: True - neutron-security-groups: True - channel: zed/edge - nova-cloud-controller: - constraints: mem=7168M - charm: ch:nova-cloud-controller - num_units: 1 - options: - openstack-origin: *openstack-origin - debug: True - network-manager: Neutron - channel: zed/edge - nova-compute: - constraints: mem=7168M - charm: ch:nova-compute - num_units: 2 - options: - openstack-origin: *openstack-origin - debug: True - channel: zed/edge - hacluster-octavia: - series: *series - charm: ch:hacluster - channel: 2.4/edge - ovn-chassis-octavia: - series: *series - charm: ch:ovn-chassis - channel: 22.09/edge - options: - ovn-source: distro - octavia: - constraints: cores=8 - series: *series - charm: ../../../octavia_ubuntu-22.04-amd64_ubuntu-22.10-amd64.charm - num_units: 3 - options: - openstack-origin: *openstack-origin - debug: True - loadbalancer-topology: 'ACTIVE_STANDBY' - rabbitmq-server: - charm: ch:rabbitmq-server - num_units: 1 - channel: 3.9/edge - glance-simplestreams-sync: - charm: ch:glance-simplestreams-sync - num_units: 1 - options: - use_swift: False - mirror_list: "[{url: 'http://cloud-images.ubuntu.com/releases/', - name_prefix: 'ubuntu:released', - path: 'streams/v1/index.sjson', max: 1, - item_filters: [ - 'release~(kinetic)', - 'arch~(x86_64|amd64)', - 'ftype~(disk1.img|disk.img)']}]" - channel: zed/edge - octavia-diskimage-retrofit: - charm: ch:octavia-diskimage-retrofit - options: - amp-image-tag: 'octavia-amphora' - retrofit-series: *series - channel: zed/edge - placement: - charm: ch:placement - num_units: 1 - constraints: mem=1G - options: - openstack-origin: *openstack-origin - debug: true - channel: zed/edge - neutron-api-plugin-ovn: - charm: ch:neutron-api-plugin-ovn - channel: zed/edge - ovn-central: - constraints: mem=3072M - charm: ch:ovn-central - num_units: 3 - options: - source: *openstack-origin - channel: 22.09/edge - ovn-chassis: - charm: ch:ovn-chassis - channel: 22.09/edge - options: - ovn-source: distro - vault: - charm: ch:vault - num_units: 1 - channel: latest/edge diff --git a/src/tests/bundles/kinetic-zed-ha.yaml b/src/tests/bundles/kinetic-zed-ha.yaml deleted file mode 100644 index 7b4c1ca..0000000 --- a/src/tests/bundles/kinetic-zed-ha.yaml +++ /dev/null @@ -1,231 +0,0 @@ -variables: - openstack-origin: &openstack-origin distro - -local_overlay_enabled: True - -series: &series kinetic -relations: -- - glance:image-service - - nova-cloud-controller:image-service -- - glance:image-service - - nova-compute:image-service -- - glance-mysql-router:shared-db - - glance:shared-db -- - keystone-mysql-router:shared-db - - keystone:shared-db -- - neutron-mysql-router:shared-db - - neutron-api:shared-db -- - nova-mysql-router:shared-db - - nova-cloud-controller:shared-db -- - octavia-mysql-router:shared-db - - octavia:shared-db -- - keystone:identity-service - - glance:identity-service -- - keystone:identity-service - - nova-cloud-controller:identity-service -- - keystone:identity-service - - neutron-api:identity-service -- - keystone:identity-service - - octavia:identity-service -- - nova-compute:cloud-compute - - nova-cloud-controller:cloud-compute -- - rabbitmq-server:amqp - - neutron-api:amqp -- - rabbitmq-server:amqp - - glance:amqp -- - rabbitmq-server:amqp - - nova-cloud-controller:amqp -- - rabbitmq-server:amqp - - nova-compute:amqp -- - rabbitmq-server:amqp - - octavia:amqp -- - neutron-api:neutron-api - - nova-cloud-controller:neutron-api -- - neutron-api:neutron-load-balancer - - octavia:neutron-api -- - rabbitmq-server:amqp - - neutron-openvswitch:amqp -- - neutron-api:neutron-plugin-api - - neutron-openvswitch:neutron-plugin-api -- - neutron-openvswitch:neutron-plugin - - nova-compute:neutron-plugin -- - rabbitmq-server:amqp - - neutron-openvswitch-octavia:amqp -- - neutron-api:neutron-plugin-api - - neutron-openvswitch-octavia:neutron-plugin-api -- - neutron-openvswitch-octavia:neutron-plugin - - octavia:neutron-openvswitch -- - hacluster-octavia:ha - - octavia:ha -- - glance-simplestreams-sync:juju-info - - octavia-diskimage-retrofit:juju-info -- - keystone:identity-service - - glance-simplestreams-sync:identity-service -- - keystone:identity-credentials - - octavia-diskimage-retrofit:identity-credentials -- [ placement, placement-mysql-router ] -- [ placement, keystone ] -- [ placement, nova-cloud-controller ] -- - vault:shared-db - - vault-mysql-router:shared-db -- - vault:certificates - - glance:certificates -- - vault:certificates - - keystone:certificates -- - vault:certificates - - neutron-api:certificates -- - vault:certificates - - nova-cloud-controller:certificates -- - vault:certificates - - octavia:certificates -- - vault:certificates - - octavia-diskimage-retrofit:certificates -- - vault:certificates - - glance-simplestreams-sync:certificates -- - vault:certificates - - placement:certificates -- ["octavia-mysql-router:db-router", "mysql-innodb-cluster:db-router"] -- ["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"] -- ["vault-mysql-router:db-router", "mysql-innodb-cluster:db-router"] -applications: - glance: - charm: ch:glance - num_units: 1 - options: - openstack-origin: *openstack-origin - channel: zed/edge - keystone: - charm: ch:keystone - num_units: 1 - options: - openstack-origin: *openstack-origin - channel: zed/edge - octavia-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - keystone-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - nova-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - glance-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - neutron-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - placement-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - vault-mysql-router: - charm: ch:mysql-router - channel: 8.0/edge - mysql-innodb-cluster: - constraints: mem=3072M - charm: ch:mysql-innodb-cluster - num_units: 3 - channel: 8.0/edge - neutron-api: - charm: ch:neutron-api - num_units: 1 - options: - openstack-origin: *openstack-origin - debug: True - flat-network-providers: physnet1 - enable-ml2-port-security: True - neutron-security-groups: True - enable-dvr: True - manage-neutron-plugin-legacy-mode: True - channel: zed/edge - neutron-openvswitch: - series: *series - charm: ch:neutron-openvswitch - num_units: 0 - options: - debug: True - enable-local-dhcp-and-metadata: True - use-dvr-snat: True - prevent-arp-spoofing: False - firewall-driver: openvswitch - bridge-mappings: physnet1:br-ex - channel: zed/edge - neutron-openvswitch-octavia: - series: *series - charm: ch:neutron-openvswitch - num_units: 0 - options: - debug: True - prevent-arp-spoofing: False - firewall-driver: openvswitch - channel: zed/edge - nova-cloud-controller: - constraints: mem=7168M - charm: ch:nova-cloud-controller - num_units: 1 - options: - openstack-origin: *openstack-origin - debug: True - network-manager: Neutron - channel: zed/edge - nova-compute: - constraints: mem=7168M - charm: ch:nova-compute - num_units: 2 - options: - openstack-origin: *openstack-origin - debug: True - channel: zed/edge - hacluster-octavia: - charm: ch:hacluster - num_units: 0 - channel: 2.4/edge - octavia: - constraints: cores=8 - series: *series - charm: ../../../octavia_ubuntu-22.04-amd64_ubuntu-22.10-amd64.charm - num_units: 3 - options: - openstack-origin: *openstack-origin - debug: True - loadbalancer-topology: 'ACTIVE_STANDBY' - vip: 'ADD YOUR VIP HERE' - rabbitmq-server: - charm: ch:rabbitmq-server - num_units: 1 - channel: 3.9/edge - glance-simplestreams-sync: - charm: ch:glance-simplestreams-sync - num_units: 1 - options: - use_swift: False - mirror_list: "[{url: 'http://cloud-images.ubuntu.com/releases/', - name_prefix: 'ubuntu:released', - path: 'streams/v1/index.sjson', max: 1, - item_filters: [ - 'release~(kinetic)', - 'arch~(x86_64|amd64)', - 'ftype~(disk1.img|disk.img)']}]" - channel: zed/edge - octavia-diskimage-retrofit: - charm: ch:octavia-diskimage-retrofit - options: - amp-image-tag: 'octavia-amphora' - retrofit-series: *series - channel: zed/edge - placement: - charm: ch:placement - num_units: 1 - constraints: mem=1G - options: - openstack-origin: *openstack-origin - debug: true - channel: zed/edge - vault: - charm: ch:vault - num_units: 1 - channel: latest/edge diff --git a/src/tests/tests.yaml b/src/tests/tests.yaml index 0c3e474..4acb4b8 100644 --- a/src/tests/tests.yaml +++ b/src/tests/tests.yaml @@ -12,8 +12,6 @@ dev_bundles: - jammy-yoga-ha - jammy-zed-ha-ovn - jammy-zed-ha -- kinetic-zed-ha-ovn -- kinetic-zed-ha comment: | @@ -53,26 +51,14 @@ configure: - zaza.openstack.charm_tests.nova.setup.manage_ssh_key - zaza.openstack.charm_tests.neutron.setup.basic_overcloud_network - zaza.openstack.charm_tests.octavia.setup.centralized_fip_network -- no-amphora: - - zaza.openstack.charm_tests.vault.setup.auto_initialize - - zaza.openstack.charm_tests.octavia.setup.ensure_lts_images - - zaza.openstack.charm_tests.nova.setup.create_flavors - - zaza.openstack.charm_tests.nova.setup.manage_ssh_key - - zaza.openstack.charm_tests.neutron.setup.basic_overcloud_network - tests: - zaza.openstack.charm_tests.octavia.tests.LBAASv2Test +- zaza.openstack.charm_tests.octavia.tests.OctaviaVolumeBackedAmphoraTest - zaza.openstack.charm_tests.octavia.tests.CharmOperationTest - zaza.openstack.charm_tests.policyd.tests.OctaviaTests -- no-amphora: - - zaza.openstack.charm_tests.octavia.tests.LBAASv2Test - - zaza.openstack.charm_tests.octavia.tests.CharmOperationTest - - zaza.openstack.charm_tests.policyd.tests.OctaviaTests tests_options: policyd: service: octavia - force_deploy: - - kinetic-zed-ha-ovn - - kinetic-zed-ha +