diff --git a/osci.yaml b/osci.yaml index 207a9d0..f5b441e 100644 --- a/osci.yaml +++ b/osci.yaml @@ -1,19 +1,11 @@ - project: templates: - - charm-unit-jobs - check: - jobs: - - bionic-train - - bionic-ussuri - - focal-ussuri - - focal-victoria - - focal-wallaby - - focal-xena: - voting: false - - hirsute-wallaby: - voting: false - - impish-xena: - voting: false + - charm-yoga-unit-jobs + - charm-yoga-functional-jobs + - charm-xena-functional-jobs + - charm-wallaby-functional-jobs + - charm-victoria-functional-jobs + - charm-ussuri-functional-jobs vars: needs_charm_build: true charm_build_name: placement diff --git a/requirements.txt b/requirements.txt index b786b42..a68620f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,6 +9,7 @@ setuptools<50.0.0 # https://github.com/pypa/setuptools/commit/04e3df22df840c6bb244e9b27bc56750c44b7c85 # Build requirements +cffi==1.14.6; python_version < '3.6' # cffi 1.15.0 drops support for py35. charm-tools==2.8.3 simplejson diff --git a/src/tests/bundles/focal-yoga.yaml b/src/tests/bundles/focal-yoga.yaml new file mode 100644 index 0000000..0e1afed --- /dev/null +++ b/src/tests/bundles/focal-yoga.yaml @@ -0,0 +1,239 @@ +variables: + openstack-origin: &openstack-origin cloud:focal-yoga + +series: focal + +comment: +- 'machines section to decide order of deployment. database sooner = faster' +machines: + '0': + constraints: mem=3072M + '1': + constraints: mem=3072M + '2': + constraints: mem=3072M + '3': + '4': + '5': + '6': + '7': + '8': + '9': + '10': + '11': + + +applications: + + 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 + neutron-api-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + placement-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + vault-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 + constraints: mem=1G + options: + source: *openstack-origin + to: + - '3' + + glance: + charm: cs:~openstack-charmers-next/glance + num_units: 1 + constraints: mem=1G + options: + openstack-origin: *openstack-origin + to: + - '4' + + keystone: + charm: cs:~openstack-charmers-next/keystone + num_units: 1 + options: + openstack-origin: *openstack-origin + admin-password: openstack + to: + - '5' + + neutron-api: + charm: cs:~openstack-charmers-next/neutron-api + num_units: 1 + options: + openstack-origin: *openstack-origin + manage-neutron-plugin-legacy-mode: true + neutron-plugin: ovs + flat-network-providers: physnet1 + neutron-security-groups: true + to: + - '6' + + neutron-openvswitch: + charm: cs:~openstack-charmers-next/neutron-openvswitch + + neutron-gateway: + charm: cs:~openstack-charmers-next/neutron-gateway + num_units: 1 + options: + openstack-origin: *openstack-origin + bridge-mappings: physnet1:br-ex + to: + - '7' + + nova-cloud-controller: + charm: cs:~openstack-charmers-next/nova-cloud-controller + num_units: 1 + options: + openstack-origin: *openstack-origin + network-manager: Neutron + debug: true + to: + - '8' + + nova-compute: + charm: cs:~openstack-charmers-next/nova-compute + num_units: 1 + constraints: mem=4G + options: + openstack-origin: *openstack-origin + enable-live-migration: true + enable-resize: true + migration-auth-type: ssh + debug: true + to: + - '9' + + placement: + charm: ../../../placement + num_units: 1 + constraints: mem=1G + options: + openstack-origin: *openstack-origin + debug: true + to: + - '10' + + vault: + num_units: 1 + charm: cs:~openstack-charmers-next/vault + to: + - '11' + +relations: + + - - 'keystone:shared-db' + - 'keystone-mysql-router:shared-db' + - - 'keystone-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'nova-cloud-controller:shared-db' + - 'nova-cloud-controller-mysql-router:shared-db' + - - 'nova-cloud-controller-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'nova-cloud-controller:amqp' + - 'rabbitmq-server:amqp' + + - - 'nova-cloud-controller' + - 'glance' + + - - 'nova-cloud-controller' + - 'keystone' + + - - 'nova-compute' + - 'nova-cloud-controller' + + - - 'nova-compute' + - 'rabbitmq-server:amqp' + + - - 'nova-compute' + - 'glance' + + - - 'glance:shared-db' + - 'glance-mysql-router:shared-db' + - - 'glance-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'glance' + - 'keystone' + + - - 'glance' + - 'rabbitmq-server' + + - - 'neutron-gateway' + - 'nova-cloud-controller' + + - - 'neutron-gateway:amqp' + - 'rabbitmq-server' + + - - 'neutron-api:shared-db' + - 'neutron-api-mysql-router:shared-db' + - - 'neutron-api-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'neutron-api' + - 'rabbitmq-server' + + - - 'neutron-api' + - 'nova-cloud-controller' + + - - 'neutron-api' + - 'neutron-openvswitch' + + - - 'neutron-api' + - 'keystone' + + - - 'neutron-api' + - 'neutron-gateway' + + - - 'neutron-openvswitch' + - 'nova-compute' + + - - 'neutron-openvswitch' + - 'rabbitmq-server' + + - - 'placement:shared-db' + - 'placement-mysql-router:shared-db' + - - 'placement-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'placement' + - 'keystone' + + - - 'placement' + - 'nova-cloud-controller' + + - - 'vault:shared-db' + - 'vault-mysql-router:shared-db' + - - 'vault-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'vault:certificates' + - 'keystone:certificates' + - - 'vault:certificates' + - 'placement:certificates' + - - 'vault:certificates' + - 'neutron-api:certificates' + - - 'vault:certificates' + - 'glance:certificates' + - - 'vault:certificates' + - 'nova-cloud-controller:certificates' diff --git a/src/tests/bundles/jammy-yoga.yaml b/src/tests/bundles/jammy-yoga.yaml new file mode 100644 index 0000000..d988557 --- /dev/null +++ b/src/tests/bundles/jammy-yoga.yaml @@ -0,0 +1,239 @@ +variables: + openstack-origin: &openstack-origin distro + +series: jammy + +comment: +- 'machines section to decide order of deployment. database sooner = faster' +machines: + '0': + constraints: mem=3072M + '1': + constraints: mem=3072M + '2': + constraints: mem=3072M + '3': + '4': + '5': + '6': + '7': + '8': + '9': + '10': + '11': + + +applications: + + 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 + neutron-api-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + placement-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + vault-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 + constraints: mem=1G + options: + source: *openstack-origin + to: + - '3' + + glance: + charm: cs:~openstack-charmers-next/glance + num_units: 1 + constraints: mem=1G + options: + openstack-origin: *openstack-origin + to: + - '4' + + keystone: + charm: cs:~openstack-charmers-next/keystone + num_units: 1 + options: + openstack-origin: *openstack-origin + admin-password: openstack + to: + - '5' + + neutron-api: + charm: cs:~openstack-charmers-next/neutron-api + num_units: 1 + options: + openstack-origin: *openstack-origin + manage-neutron-plugin-legacy-mode: true + neutron-plugin: ovs + flat-network-providers: physnet1 + neutron-security-groups: true + to: + - '6' + + neutron-openvswitch: + charm: cs:~openstack-charmers-next/neutron-openvswitch + + neutron-gateway: + charm: cs:~openstack-charmers-next/neutron-gateway + num_units: 1 + options: + openstack-origin: *openstack-origin + bridge-mappings: physnet1:br-ex + to: + - '7' + + nova-cloud-controller: + charm: cs:~openstack-charmers-next/nova-cloud-controller + num_units: 1 + options: + openstack-origin: *openstack-origin + network-manager: Neutron + debug: true + to: + - '8' + + nova-compute: + charm: cs:~openstack-charmers-next/nova-compute + num_units: 1 + constraints: mem=4G + options: + openstack-origin: *openstack-origin + enable-live-migration: true + enable-resize: true + migration-auth-type: ssh + debug: true + to: + - '9' + + placement: + charm: ../../../placement + num_units: 1 + constraints: mem=1G + options: + openstack-origin: *openstack-origin + debug: true + to: + - '10' + + vault: + num_units: 1 + charm: cs:~openstack-charmers-next/vault + to: + - '11' + +relations: + + - - 'keystone:shared-db' + - 'keystone-mysql-router:shared-db' + - - 'keystone-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'nova-cloud-controller:shared-db' + - 'nova-cloud-controller-mysql-router:shared-db' + - - 'nova-cloud-controller-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'nova-cloud-controller:amqp' + - 'rabbitmq-server:amqp' + + - - 'nova-cloud-controller' + - 'glance' + + - - 'nova-cloud-controller' + - 'keystone' + + - - 'nova-compute' + - 'nova-cloud-controller' + + - - 'nova-compute' + - 'rabbitmq-server:amqp' + + - - 'nova-compute' + - 'glance' + + - - 'glance:shared-db' + - 'glance-mysql-router:shared-db' + - - 'glance-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'glance' + - 'keystone' + + - - 'glance' + - 'rabbitmq-server' + + - - 'neutron-gateway' + - 'nova-cloud-controller' + + - - 'neutron-gateway:amqp' + - 'rabbitmq-server' + + - - 'neutron-api:shared-db' + - 'neutron-api-mysql-router:shared-db' + - - 'neutron-api-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'neutron-api' + - 'rabbitmq-server' + + - - 'neutron-api' + - 'nova-cloud-controller' + + - - 'neutron-api' + - 'neutron-openvswitch' + + - - 'neutron-api' + - 'keystone' + + - - 'neutron-api' + - 'neutron-gateway' + + - - 'neutron-openvswitch' + - 'nova-compute' + + - - 'neutron-openvswitch' + - 'rabbitmq-server' + + - - 'placement:shared-db' + - 'placement-mysql-router:shared-db' + - - 'placement-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'placement' + - 'keystone' + + - - 'placement' + - 'nova-cloud-controller' + + - - 'vault:shared-db' + - 'vault-mysql-router:shared-db' + - - 'vault-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'vault:certificates' + - 'keystone:certificates' + - - 'vault:certificates' + - 'placement:certificates' + - - 'vault:certificates' + - 'neutron-api:certificates' + - - 'vault:certificates' + - 'glance:certificates' + - - 'vault:certificates' + - 'nova-cloud-controller:certificates' diff --git a/src/tests/tests.yaml b/src/tests/tests.yaml index 5bb5434..18e55bd 100644 --- a/src/tests/tests.yaml +++ b/src/tests/tests.yaml @@ -17,20 +17,24 @@ configure: - zaza.openstack.charm_tests.nova.setup.manage_ssh_key gate_bundles: - - bionic-train - bionic-ussuri - focal-ussuri - focal-victoria - focal-wallaby - -smoke_bundles: - - bionic-train - -dev_bundles: - focal-xena - hirsute-wallaby - impish-xena +smoke_bundles: + - focal-ussuri + +dev_bundles: + - bionic-train + - focal-yoga + - jammy-yoga + tests_options: force_deploy: + - hirsute-wallaby - impish-xena + - jammy-yoga diff --git a/test-requirements.txt b/test-requirements.txt index af069e1..bb1307f 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -3,6 +3,8 @@ # choices of *requirements.txt files for OpenStack Charms: # https://github.com/openstack-charmers/release-tools # +pyparsing<3.0.0 # aodhclient is pinned in zaza and needs pyparsing < 3.0.0, but cffi also needs it, so pin here. +cffi==1.14.6; python_version < '3.6' # cffi 1.15.0 drops support for py35. setuptools<50.0.0 # https://github.com/pypa/setuptools/commit/04e3df22df840c6bb244e9b27bc56750c44b7c85 stestr>=2.2.0 diff --git a/tox.ini b/tox.ini index 22159df..faf6092 100644 --- a/tox.ini +++ b/tox.ini @@ -75,6 +75,11 @@ basepython = python3.8 deps = -r{toxinidir}/test-requirements.txt commands = stestr run --slowest {posargs} +[testenv:py39] +basepython = python3.9 +deps = -r{toxinidir}/test-requirements.txt +commands = stestr run --slowest {posargs} + [testenv:pep8] basepython = python3 deps = flake8==3.9.2