From 5ff3108f48be1b516d20ec99836ab601b652925d Mon Sep 17 00:00:00 2001 From: Alex Kavanagh Date: Wed, 22 Sep 2021 14:56:31 +0100 Subject: [PATCH] Add xena bundles - add non-voting focal-xena bundle - add non-voting impish-xena bundle - rebuild to pick up charm-helpers changes - update tox/pip.sh to ensure setuptools<50.0.0 Change-Id: I6e61d73f6abe75c670b782f7e6b443d8fb1f7aba Co-authored-by: Aurelien Lourot --- osci.yaml | 49 +++- pip.sh | 18 ++ rebuild | 2 +- src/tests/bundles/focal-xena-swift-v3.yaml | 307 ++++++++++++++++++++ src/tests/bundles/impish-xena-swift-v3.yaml | 307 ++++++++++++++++++++ src/tests/tests.yaml | 7 +- src/tox.ini | 4 +- tox.ini | 20 +- 8 files changed, 691 insertions(+), 23 deletions(-) create mode 100755 pip.sh create mode 100644 src/tests/bundles/focal-xena-swift-v3.yaml create mode 100644 src/tests/bundles/impish-xena-swift-v3.yaml diff --git a/osci.yaml b/osci.yaml index ea8bc73..8652137 100644 --- a/osci.yaml +++ b/osci.yaml @@ -3,12 +3,17 @@ - charm-unit-jobs check: jobs: + - impish-xena-swift-v3: + voting: false - hirsute-wallaby-swift-v3 - - groovy-victoria-swift-v3 + - focal-xena-swift-v3: + voting: false - focal-wallaby-swift-v3 # Disabled due to Bug: #1890821 - # - focal-victoria-swift-v3 - # - focal-ussuri-swift-v3 + - focal-victoria-swift-v3: + voting: false + - focal-ussuri-swift-v3: + voting: false - bionic-queens-swift-v3 - bionic-queens-swift-v2 vars: @@ -16,11 +21,17 @@ charm_build_name: cinder-backup-swift-proxy - job: - name: hirsute-wallaby-swift-v3 + name: impish-xena-swift-v3 parent: func-target dependencies: &smoke-jobs - bionic-queens-swift-v3 - bionic-queens-swift-v2 + vars: + tox_extra_args: impish-xena-swift-v3 +- job: + name: hirsute-wallaby-swift-v3 + parent: func-target + dependencies: *smoke-jobs vars: tox_extra_args: hirsute-wallaby-swift-v3 - job: @@ -29,24 +40,30 @@ dependencies: *smoke-jobs vars: tox_extra_args: groovy-victoria-swift-v3 +- job: + name: focal-xena-swift-v3 + parent: func-target + dependencies: *smoke-jobs + vars: + tox_extra_args: focal-xena-swift-v3 - job: name: focal-wallaby-swift-v3 parent: func-target dependencies: *smoke-jobs vars: tox_extra_args: focal-wallaby-swift-v3 -# - job: -# name: focal-victoria-swift-v3 -# parent: func-target -# dependencies: *smoke-jobs -# vars: -# tox_extra_args: focal-victoria-swift-v3 -# - job: -# name: focal-ussuri-swift-v3 -# parent: func-target -# dependencies: *smoke-jobs -# vars: -# tox_extra_args: focal-ussuri-swift-v3 +- job: + name: focal-victoria-swift-v3 + parent: func-target + dependencies: *smoke-jobs + vars: + tox_extra_args: focal-victoria-swift-v3 +- job: + name: focal-ussuri-swift-v3 + parent: func-target + dependencies: *smoke-jobs + vars: + tox_extra_args: focal-ussuri-swift-v3 - job: name: bionic-queens-swift-v3 parent: func-target diff --git a/pip.sh b/pip.sh new file mode 100755 index 0000000..9a7e6b0 --- /dev/null +++ b/pip.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +# +# This file is managed centrally by release-tools and should not be modified +# within individual charm repos. See the 'global' dir contents for available +# choices of tox.ini for OpenStack Charms: +# https://github.com/openstack-charmers/release-tools +# +# setuptools 58.0 dropped the support for use_2to3=true which is needed to +# install blessings (an indirect dependency of charm-tools). +# +# More details on the beahvior of tox and virtualenv creation can be found at +# https://github.com/tox-dev/tox/issues/448 +# +# This script is wrapper to force the use of the pinned versions early in the +# process when the virtualenv was created and upgraded before installing the +# depedencies declared in the target. +pip install 'pip<20.3' 'setuptools<50.0.0' +pip "$@" diff --git a/rebuild b/rebuild index 31425ca..081a9d6 100644 --- a/rebuild +++ b/rebuild @@ -2,4 +2,4 @@ # when dependencies of the charm change, # but nothing in the charm needs to. # simply change the uuid to something new -f9dc51dc-b3eb-11eb-94e9-77fc2fc16deb +53b59f6c-1178-11ec-942e-bbf578a1ce99 diff --git a/src/tests/bundles/focal-xena-swift-v3.yaml b/src/tests/bundles/focal-xena-swift-v3.yaml new file mode 100644 index 0000000..bd49a72 --- /dev/null +++ b/src/tests/bundles/focal-xena-swift-v3.yaml @@ -0,0 +1,307 @@ +variables: + openstack-origin: &openstack-origin cloud:focal-xena + +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': + constraints: mem=3072M + '4': + constraints: mem=3072M + '5': + constraints: mem=3072M + '6': + '7': + '8': + '9': + '10': + '11': + '12': + '13': + '14': + '15': + '16': + '17': + '18': + '19': + '20': + '21': + +applications: + + keystone-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + glance-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + nova-cloud-controller-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + cinder-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' + + ceph-mon: + charm: cs:~openstack-charmers-next/ceph-mon + num_units: 3 + options: + source: *openstack-origin + monitor-count: '3' + to: + - '6' + - '7' + - '8' + + ceph-osd: + charm: cs:~openstack-charmers-next/ceph-osd + num_units: 3 + storage: + osd-devices: 'cinder,10G' + options: + source: *openstack-origin + osd-devices: '/dev/test-non-existent' + to: + - '9' + - '10' + - '11' + + cinder: + charm: cs:~openstack-charmers-next/cinder + num_units: 1 + options: + block-device: None + openstack-origin: *openstack-origin + glance-api-version: 2 + to: + - '12' + + cinder-ceph: + charm: cs:~openstack-charmers-next/cinder-ceph + num_units: 0 + + cinder-backup-swift-proxy: + charm: cinder-backup-swift-proxy + num_units: 0 + options: + auth-version: 3 + swift-user: admin + swift-key: openstack + user-domain: admin_domain + project-domain: admin_domain + project-name: admin + + glance: + charm: cs:~openstack-charmers-next/glance + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '13' + + keystone: + charm: cs:~openstack-charmers-next/keystone + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '14' + + nova-cloud-controller: + charm: cs:~openstack-charmers-next/nova-cloud-controller + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '15' + + rabbitmq-server: + charm: cs:~openstack-charmers-next/rabbitmq-server + num_units: 1 + options: + source: *openstack-origin + to: + - '16' + + nova-compute: + charm: cs:~openstack-charmers-next/nova-compute + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '17' + + placement: + charm: cs:~openstack-charmers-next/placement + num_units: 1 + constraints: mem=1G + options: + openstack-origin: *openstack-origin + to: + - '18' + +# external swift + swift-keystone-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + + swift-mysql-innodb-cluster: + charm: cs:~openstack-charmers-next/mysql-innodb-cluster + num_units: 3 + options: + source: *openstack-origin + to: + - '3' + - '4' + - '5' + + swift-keystone: + charm: cs:~openstack-charmers-next/keystone + num_units: 1 + options: + openstack-origin: *openstack-origin + admin-password: openstack + preferred-api-version: 3 + to: + - '19' + + + swift-proxy: + charm: cs:~openstack-charmers-next/swift-proxy + num_units: 1 + options: + openstack-origin: *openstack-origin + zone-assignment: manual + replicas: 1 + to: + - '20' + + swift-storage: + charm: cs:~openstack-charmers-next/swift-storage + num_units: 1 + options: + openstack-origin: *openstack-origin + zone: 1 + storage: + block-devices: 'cinder,10G' + to: + - '21' + + +relations: + + - - 'nova-compute:amqp' + - 'rabbitmq-server:amqp' + + - - 'keystone:shared-db' + - 'keystone-mysql-router:shared-db' + - - 'keystone-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'nova-cloud-controller:identity-service' + - 'keystone:identity-service' + + - - '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-cloud-controller:image-service' + - 'glance:image-service' + + - - 'nova-compute:image-service' + - 'glance:image-service' + + - - 'nova-cloud-controller:cloud-compute' + - 'nova-compute:cloud-compute' + + - - 'nova-cloud-controller:amqp' + - 'rabbitmq-server:amqp' + + - - 'nova-cloud-controller:shared-db' + - 'nova-cloud-controller-mysql-router:shared-db' + - - 'nova-cloud-controller-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - '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' + + - - 'cinder:image-service' + - 'glance:image-service' + + - - 'cinder:amqp' + - 'rabbitmq-server:amqp' + + - - 'cinder:identity-service' + - 'keystone:identity-service' + + - - 'cinder:cinder-volume-service' + - 'nova-cloud-controller:cinder-volume-service' + + - - 'cinder-ceph:storage-backend' + - 'cinder:storage-backend' + + - - 'cinder' + - 'cinder-backup-swift-proxy' + + - - 'ceph-mon:client' + - 'nova-compute:ceph' + + - - 'nova-compute:ceph-access' + - 'cinder-ceph:ceph-access' + + - - 'cinder:shared-db' + - 'cinder-mysql-router:shared-db' + - - 'cinder-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'ceph-mon:client' + - 'cinder-ceph:ceph' + + - - 'ceph-mon:client' + - 'glance:ceph' + + - - 'ceph-osd:mon' + - 'ceph-mon:osd' + +# external swift service + - - 'swift-keystone:shared-db' + - 'swift-keystone-mysql-router:shared-db' + - - 'swift-keystone-mysql-router:db-router' + - 'swift-mysql-innodb-cluster:db-router' + + - - 'swift-proxy:identity-service' + - 'swift-keystone:identity-service' + + - - 'swift-proxy:swift-storage' + - 'swift-storage:swift-storage' + diff --git a/src/tests/bundles/impish-xena-swift-v3.yaml b/src/tests/bundles/impish-xena-swift-v3.yaml new file mode 100644 index 0000000..339256f --- /dev/null +++ b/src/tests/bundles/impish-xena-swift-v3.yaml @@ -0,0 +1,307 @@ +variables: + openstack-origin: &openstack-origin distro + +series: impish + +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': + constraints: mem=3072M + '4': + constraints: mem=3072M + '5': + constraints: mem=3072M + '6': + '7': + '8': + '9': + '10': + '11': + '12': + '13': + '14': + '15': + '16': + '17': + '18': + '19': + '20': + '21': + +applications: + + keystone-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + glance-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + nova-cloud-controller-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + cinder-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' + + ceph-mon: + charm: cs:~openstack-charmers-next/ceph-mon + num_units: 3 + options: + source: *openstack-origin + monitor-count: '3' + to: + - '6' + - '7' + - '8' + + ceph-osd: + charm: cs:~openstack-charmers-next/ceph-osd + num_units: 3 + storage: + osd-devices: 'cinder,10G' + options: + source: *openstack-origin + osd-devices: '/dev/test-non-existent' + to: + - '9' + - '10' + - '11' + + cinder: + charm: cs:~openstack-charmers-next/cinder + num_units: 1 + options: + block-device: None + openstack-origin: *openstack-origin + glance-api-version: 2 + to: + - '12' + + cinder-ceph: + charm: cs:~openstack-charmers-next/cinder-ceph + num_units: 0 + + cinder-backup-swift-proxy: + charm: cinder-backup-swift-proxy + num_units: 0 + options: + auth-version: 3 + swift-user: admin + swift-key: openstack + user-domain: admin_domain + project-domain: admin_domain + project-name: admin + + glance: + charm: cs:~openstack-charmers-next/glance + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '13' + + keystone: + charm: cs:~openstack-charmers-next/keystone + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '14' + + nova-cloud-controller: + charm: cs:~openstack-charmers-next/nova-cloud-controller + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '15' + + rabbitmq-server: + charm: cs:~openstack-charmers-next/rabbitmq-server + num_units: 1 + options: + source: *openstack-origin + to: + - '16' + + nova-compute: + charm: cs:~openstack-charmers-next/nova-compute + num_units: 1 + options: + openstack-origin: *openstack-origin + to: + - '17' + + placement: + charm: cs:~openstack-charmers-next/placement + num_units: 1 + constraints: mem=1G + options: + openstack-origin: *openstack-origin + to: + - '18' + +# external swift + swift-keystone-mysql-router: + charm: cs:~openstack-charmers-next/mysql-router + + swift-mysql-innodb-cluster: + charm: cs:~openstack-charmers-next/mysql-innodb-cluster + num_units: 3 + options: + source: *openstack-origin + to: + - '3' + - '4' + - '5' + + swift-keystone: + charm: cs:~openstack-charmers-next/keystone + num_units: 1 + options: + openstack-origin: *openstack-origin + admin-password: openstack + preferred-api-version: 3 + to: + - '19' + + + swift-proxy: + charm: cs:~openstack-charmers-next/swift-proxy + num_units: 1 + options: + openstack-origin: *openstack-origin + zone-assignment: manual + replicas: 1 + to: + - '20' + + swift-storage: + charm: cs:~openstack-charmers-next/swift-storage + num_units: 1 + options: + openstack-origin: *openstack-origin + zone: 1 + storage: + block-devices: 'cinder,10G' + to: + - '21' + + +relations: + + - - 'nova-compute:amqp' + - 'rabbitmq-server:amqp' + + - - 'keystone:shared-db' + - 'keystone-mysql-router:shared-db' + - - 'keystone-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'nova-cloud-controller:identity-service' + - 'keystone:identity-service' + + - - '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-cloud-controller:image-service' + - 'glance:image-service' + + - - 'nova-compute:image-service' + - 'glance:image-service' + + - - 'nova-cloud-controller:cloud-compute' + - 'nova-compute:cloud-compute' + + - - 'nova-cloud-controller:amqp' + - 'rabbitmq-server:amqp' + + - - 'nova-cloud-controller:shared-db' + - 'nova-cloud-controller-mysql-router:shared-db' + - - 'nova-cloud-controller-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - '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' + + - - 'cinder:image-service' + - 'glance:image-service' + + - - 'cinder:amqp' + - 'rabbitmq-server:amqp' + + - - 'cinder:identity-service' + - 'keystone:identity-service' + + - - 'cinder:cinder-volume-service' + - 'nova-cloud-controller:cinder-volume-service' + + - - 'cinder-ceph:storage-backend' + - 'cinder:storage-backend' + + - - 'cinder' + - 'cinder-backup-swift-proxy' + + - - 'ceph-mon:client' + - 'nova-compute:ceph' + + - - 'nova-compute:ceph-access' + - 'cinder-ceph:ceph-access' + + - - 'cinder:shared-db' + - 'cinder-mysql-router:shared-db' + - - 'cinder-mysql-router:db-router' + - 'mysql-innodb-cluster:db-router' + + - - 'ceph-mon:client' + - 'cinder-ceph:ceph' + + - - 'ceph-mon:client' + - 'glance:ceph' + + - - 'ceph-osd:mon' + - 'ceph-mon:osd' + +# external swift service + - - 'swift-keystone:shared-db' + - 'swift-keystone-mysql-router:shared-db' + - - 'swift-keystone-mysql-router:db-router' + - 'swift-mysql-innodb-cluster:db-router' + + - - 'swift-proxy:identity-service' + - 'swift-keystone:identity-service' + + - - 'swift-proxy:swift-storage' + - 'swift-storage:swift-storage' + diff --git a/src/tests/tests.yaml b/src/tests/tests.yaml index 648d3f6..0ab57f6 100644 --- a/src/tests/tests.yaml +++ b/src/tests/tests.yaml @@ -1,11 +1,13 @@ charm_name: cinder-backup-swift-proxy gate_bundles: - - groovy-victoria-swift-v3 - bionic-queens-swift-v3 - bionic-queens-swift-v2 dev_bundles: + - impish-xena-swift-v3 - hirsute-wallaby-swift-v3 + - groovy-victoria-swift-v3 # Disabled due to Bug: #1890821 + - focal-xena-swift-v3 - focal-wallaby-swift-v3 - focal-victoria-swift-v3 - focal-ussuri-swift-v3 @@ -18,4 +20,5 @@ tests: - zaza.openstack.charm_tests.cinder_backup_swift_proxy.tests.CinderBackupSwiftTest tests_options: force_deploy: - - hirsute-wallaby-swift-v3 + - groovy-victoria-swift-v3 + - impish-xena-swift-v3 diff --git a/src/tox.ini b/src/tox.ini index e763047..b40d295 100644 --- a/src/tox.ini +++ b/src/tox.ini @@ -22,12 +22,12 @@ skip_missing_interpreters = False requires = pip < 20.3 virtualenv < 20.0 # NOTE: https://wiki.canonical.com/engineering/OpenStack/InstallLatestToxOnOsci -minversion = 3.2.0 +minversion = 3.18.0 [testenv] setenv = VIRTUAL_ENV={envdir} PYTHONHASHSEED=0 -whitelist_externals = juju +allowlist_externals = juju passenv = HOME TERM CS_* OS_* TEST_* deps = -r{toxinidir}/test-requirements.txt install_command = diff --git a/tox.ini b/tox.ini index 391b2af..22159df 100644 --- a/tox.ini +++ b/tox.ini @@ -11,6 +11,21 @@ envlist = pep8,py3 sitepackages = False # NOTE: Avoid false positives by not skipping missing interpreters. skip_missing_interpreters = False +# NOTES: +# * We avoid the new dependency resolver by pinning pip < 20.3, see +# https://github.com/pypa/pip/issues/9187 +# * Pinning dependencies requires tox >= 3.2.0, see +# https://tox.readthedocs.io/en/latest/config.html#conf-requires +# * It is also necessary to pin virtualenv as a newer virtualenv would still +# lead to fetching the latest pip in the func* tox targets, see +# https://stackoverflow.com/a/38133283 +requires = + pip < 20.3 + virtualenv < 20.0 + setuptools<50.0.0 + +# NOTE: https://wiki.canonical.com/engineering/OpenStack/InstallLatestToxOnOsci +minversion = 3.18.0 [testenv] setenv = VIRTUAL_ENV={envdir} @@ -21,7 +36,7 @@ setenv = VIRTUAL_ENV={envdir} JUJU_REPOSITORY={toxinidir}/build passenv = http_proxy https_proxy INTERFACE_PATH LAYER_PATH JUJU_REPOSITORY install_command = - pip install {opts} {packages} + {toxinidir}/pip.sh install {opts} {packages} deps = -r{toxinidir}/requirements.txt @@ -62,7 +77,8 @@ commands = stestr run --slowest {posargs} [testenv:pep8] basepython = python3 -deps = -r{toxinidir}/test-requirements.txt +deps = flake8==3.9.2 + charm-tools==2.8.3 commands = flake8 {posargs} src unit_tests [testenv:cover]