Add Kinetic and Zed support

* sync charm-helpers to classic charms
* change openstack-origin/source default to zed
* align testing with zed
* add new zed bundles
* add zed bundles to tests.yaml
* add zed tests to osci.yaml and .zuul.yaml
* update build-on and run-on bases
* add bindep.txt for py310
* sync tox.ini and requirements.txt for ruamel
* use charmcraft_channel 2.0/stable
* drop reactive plugin overrides
* move interface/layer env vars to charmcraft.yaml

Change-Id: I1a250a0591c15971840bbd6130c7cff3822eed4f
This commit is contained in:
Corey Bryant 2022-06-10 20:14:47 +00:00
parent 51da10c64e
commit e117319dfb
18 changed files with 78 additions and 441 deletions

View File

@ -1,4 +1,4 @@
- project: - project:
templates: templates:
- openstack-python3-charm-yoga-jobs - openstack-python3-charm-zed-jobs
- openstack-cover-jobs - openstack-cover-jobs

4
bindep.txt Normal file
View File

@ -0,0 +1,4 @@
libffi-dev [platform:dpkg]
libpq-dev [platform:dpkg]
libxml2-dev [platform:dpkg]
libxslt1-dev [platform:dpkg]

View File

@ -2,32 +2,24 @@ type: charm
parts: parts:
charm: charm:
build-packages: source: src/
- tox plugin: reactive
- git build-snaps:
- python3-dev - charm
override-build: | build-environment:
apt-get install ca-certificates -y - CHARM_INTERFACES_DIR: /root/project/interfaces/
tox -e build-reactive - CHARM_LAYERS_DIR: /root/project/layers/
override-stage: |
echo "Copying charm to staging area: $CHARMCRAFT_STAGE"
NAME=$(ls $CHARMCRAFT_PART_BUILD/build/builds)
cp -r $CHARMCRAFT_PART_BUILD/build/builds/$NAME/* $CHARMCRAFT_STAGE/
override-prime: |
# For some reason, the normal priming chokes on the fact that there's a
# hooks directory.
cp -r $CHARMCRAFT_STAGE/* .
bases: bases:
- build-on: - build-on:
- name: ubuntu - name: ubuntu
channel: "20.04" channel: "22.04"
architectures: architectures:
- amd64 - amd64
run-on: run-on:
- name: ubuntu
channel: "20.04"
architectures: [amd64, s390x, ppc64el, arm64]
- name: ubuntu - name: ubuntu
channel: "22.04" channel: "22.04"
architectures: [amd64, s390x, ppc64el, arm64] architectures: [amd64, s390x, ppc64el, arm64]
- name: ubuntu
channel: "22.10"
architectures: [amd64, s390x, ppc64el, arm64]

View File

@ -1,46 +1,38 @@
- project: - project:
templates: templates:
- charm-unit-jobs-py38
- charm-unit-jobs-py310 - charm-unit-jobs-py310
- charm-xena-functional-jobs - charm-zed-functional-jobs
- charm-yoga-functional-jobs
check: check:
jobs: jobs:
- test-s3-focal-xena-s3 - test-s3-jammy-yoga-s3
- test-s3-focal-yoga-s3 - test-s3-jammy-zed-s3:
- test-s3-impish-xena-s3 voting: false
- test-s3-jammy-yoga-s3: - test-s3-kinetic-zed-s3:
voting: false voting: false
vars: vars:
needs_charm_build: true needs_charm_build: true
charm_build_name: gnocchi charm_build_name: gnocchi
build_type: charmcraft build_type: charmcraft
charmcraft_channel: 2.0/stable
- job:
name: test-s3-focal-xena-s3
parent: func-target
dependencies:
- focal-xena
vars:
tox_extra_args: test-s3:focal-xena-s3
- job:
name: test-s3-focal-yoga-s3
parent: func-target
dependencies:
- focal-yoga
vars:
tox_extra_args: test-s3:focal-yoga-s3
- job:
name: test-s3-impish-xena-s3
parent: func-target
dependencies:
- focal-xena
vars:
tox_extra_args: test-s3:impish-xena-s3
- job: - job:
name: test-s3-jammy-yoga-s3 name: test-s3-jammy-yoga-s3
parent: func-target parent: func-target
dependencies: dependencies:
- focal-yoga - jammy-yoga
vars: vars:
tox_extra_args: test-s3:jammy-yoga-s3 tox_extra_args: test-s3:jammy-yoga-s3
- job:
name: test-s3-jammy-zed-s3
parent: func-target
dependencies:
- jammy-zed
vars:
tox_extra_args: test-s3:jammy-zed-s3
- job:
name: test-s3-kinetic-zed-s3
parent: func-target
dependencies:
- kinetic-zed
vars:
tox_extra_args: test-s3:kinetic-zed-s3

View File

@ -15,16 +15,6 @@ setuptools<50.0.0 # https://github.com/pypa/setuptools/commit/04e3df22df840c6bb
# #
cryptography<3.4 cryptography<3.4
# Build requirements git+https://github.com/juju/charm-tools.git
cffi==1.14.6; python_version < '3.6' # cffi 1.15.0 drops support for py35.
git+https://github.com/juju/charm-tools#egg=charm-tools
simplejson simplejson
# Newer versions use keywords that didn't exist in python 3.5 yet (e.g.
# "ModuleNotFoundError")
# NOTE(lourot): This might look like a duplication of test-requirements.txt but
# some tox targets use only test-requirements.txt whereas charm-build uses only
# requirements.txt
importlib-metadata<3.0.0; python_version < '3.6'
importlib-resources<3.0.0; python_version < '3.6'

View File

@ -122,4 +122,4 @@ options:
Value of bluestore compression max blob size for solid state media on Value of bluestore compression max blob size for solid state media on
pools requested by this charm. pools requested by this charm.
openstack-origin: openstack-origin:
default: yoga default: zed

View File

@ -10,8 +10,8 @@ description: |
tags: tags:
- openstack - openstack
series: series:
- focal
- jammy - jammy
- kinetic
provides: provides:
metric-service: metric-service:
interface: gnocchi interface: gnocchi

View File

@ -1,156 +0,0 @@
variables:
openstack-origin: &openstack-origin cloud:focal-yoga
local_overlay_enabled: False
series: &series focal
machines:
0:
constraints: "mem=3072M"
1:
constraints: "mem=3072M"
2:
constraints: "mem=3072M"
3: {}
4: {}
5: {}
6: {}
7: {}
8: {}
9: {}
10:
series: bionic
# We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "6"
applications:
keystone-mysql-router:
charm: ch:mysql-router
channel: latest/edge
gnocchi-mysql-router:
charm: ch:mysql-router
channel: latest/edge
vault-mysql-router:
charm: ch:mysql-router
channel: latest/edge
mysql-innodb-cluster:
charm: ch:mysql-innodb-cluster
num_units: 3
options:
source: *openstack-origin
to:
- '0'
- '1'
- '2'
channel: latest/edge
rabbitmq-server:
charm: ch:rabbitmq-server
num_units: 1
options:
source: *openstack-origin
to:
- '3'
channel: latest/edge
keystone:
charm: ch:keystone
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '4'
channel: latest/edge
ceilometer:
charm: ch:ceilometer
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '5'
channel: latest/edge
gnocchi:
series: *series
charm: ../../../gnocchi.charm
num_units: 1
options:
openstack-origin: *openstack-origin
storage-backend: s3
to:
- '6'
memcached:
charm: ch:memcached
num_units: 1
# holding at bionic as memcached doesn't support focal yet
series: bionic
to:
- '10'
#swift-proxy is used to test gnocchi against an S3 storage backend
swift-proxy:
charm: swift-proxy
num_units: 1
options:
zone-assignment: manual
replicas: 1
swift-hash: fdfef9d4-8b06-11e2-8ac0-531c923c8fae
openstack-origin: *openstack-origin
to:
- '7'
swift-storage:
charm: ch:swift-storage
num_units: 1
storage:
block-devices: 'cinder,10G'
options:
openstack-origin: *openstack-origin
zone: 1
to:
- '8'
channel: latest/edge
vault:
charm: ch:vault
num_units: 1
series: *series
to:
- '9'
channel: latest/edge
relations:
- - keystone:shared-db
- keystone-mysql-router:shared-db
- - keystone-mysql-router:db-router
- mysql-innodb-cluster:db-router
- - gnocchi:shared-db
- gnocchi-mysql-router:shared-db
- - gnocchi-mysql-router:db-router
- mysql-innodb-cluster:db-router
- - ceilometer:amqp
- rabbitmq-server:amqp
- - ceilometer:identity-credentials
- keystone:identity-credentials
- - ceilometer:identity-notifications
- keystone:identity-notifications
- - ceilometer:metric-service
- gnocchi:metric-service
- - gnocchi:identity-service
- keystone:identity-service
- - gnocchi:coordinator-memcached
- memcached:cache
- - swift-proxy:identity-service
- keystone:identity-service
- - swift-storage:swift-storage
- swift-proxy:swift-storage
- - vault:shared-db
- vault-mysql-router:shared-db
- - vault-mysql-router:db-router
- mysql-innodb-cluster:db-router
- - vault:certificates
- swift-proxy:certificates
- - vault:certificates
- gnocchi:certificates
- - vault:certificates
- ceilometer:certificates
- - vault:certificates
- keystone:certificates
- - vault:certificates
- rabbitmq-server:certificates

View File

@ -1,154 +0,0 @@
variables:
openstack-origin: &openstack-origin cloud:focal-yoga
local_overlay_enabled: False
series: &series focal
machines:
'0':
constraints: mem=3072M
'1':
constraints: mem=3072M
'2':
constraints: mem=3072M
'3':
'4':
'5':
'6':
'7':
'8':
'9':
'10':
'11':
'12':
'13':
series: bionic
# We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "6"
applications:
keystone-mysql-router:
charm: ch:mysql-router
channel: latest/edge
gnocchi-mysql-router:
charm: ch:mysql-router
channel: latest/edge
mysql-innodb-cluster:
charm: ch:mysql-innodb-cluster
num_units: 3
options:
source: *openstack-origin
to:
- '0'
- '1'
- '2'
channel: latest/edge
rabbitmq-server:
charm: ch:rabbitmq-server
num_units: 1
options:
source: *openstack-origin
to:
- '3'
channel: latest/edge
keystone:
charm: ch:keystone
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '4'
channel: latest/edge
ceilometer:
charm: ch:ceilometer
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '5'
channel: latest/edge
ceph-osd:
charm: ch:ceph-osd
num_units: 3
storage:
osd-devices: 'cinder,10G'
options:
source: *openstack-origin
to:
- '6'
- '7'
- '8'
channel: latest/edge
ceph-mon:
charm: ch:ceph-mon
num_units: 3
options:
expected-osd-count: 3
monitor-count: '3'
source: *openstack-origin
to:
- '9'
- '10'
- '11'
channel: latest/edge
gnocchi:
series: *series
charm: ../../../gnocchi.charm
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '12'
memcached:
charm: ch:memcached
num_units: 1
# holding at bionic as memcached doesn't support focal yet
series: bionic
to:
- '13'
relations:
- - 'keystone:shared-db'
- 'keystone-mysql-router:shared-db'
- - 'keystone-mysql-router:db-router'
- 'mysql-innodb-cluster:db-router'
- - 'ceph-osd:mon'
- 'ceph-mon:osd'
- - 'ceilometer:amqp'
- 'rabbitmq-server:amqp'
- - 'ceilometer:identity-credentials'
- 'keystone:identity-credentials'
- - 'ceilometer:identity-notifications'
- 'keystone:identity-notifications'
- - 'ceilometer:metric-service'
- 'gnocchi:metric-service'
- - 'gnocchi:identity-service'
- 'keystone:identity-service'
- - 'gnocchi:shared-db'
- 'gnocchi-mysql-router:shared-db'
- - 'gnocchi-mysql-router:db-router'
- 'mysql-innodb-cluster:db-router'
- - 'gnocchi:storage-ceph'
- 'ceph-mon:client'
- - 'gnocchi:coordinator-memcached'
- 'memcached:cache'

View File

@ -20,7 +20,7 @@ machines:
8: {} 8: {}
9: {} 9: {}
10: 10:
series: bionic series: focal
# We specify machine placements for these to improve iteration # We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "6" # time, given that machine "0" comes up way before machine "6"
@ -82,13 +82,13 @@ applications:
memcached: memcached:
charm: ch:memcached charm: ch:memcached
num_units: 1 num_units: 1
# holding at bionic as memcached doesn't support focal/groovy yet # Note that holding memcached at focal as it's not available at jammy yet.
series: bionic series: focal
to: to:
- '10' - '10'
#swift-proxy is used to test gnocchi against an S3 storage backend #swift-proxy is used to test gnocchi against an S3 storage backend
swift-proxy: swift-proxy:
charm: swift-proxy charm: ch:swift-proxy
num_units: 1 num_units: 1
options: options:
zone-assignment: manual zone-assignment: manual
@ -97,6 +97,7 @@ applications:
openstack-origin: *openstack-origin openstack-origin: *openstack-origin
to: to:
- '7' - '7'
channel: latest/edge
swift-storage: swift-storage:
charm: ch:swift-storage charm: ch:swift-storage
num_units: 1 num_units: 1

View File

@ -23,7 +23,7 @@ machines:
'11': '11':
'12': '12':
'13': '13':
series: bionic series: focal
# We specify machine placements for these to improve iteration # We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "6" # time, given that machine "0" comes up way before machine "6"
@ -112,8 +112,8 @@ applications:
memcached: memcached:
charm: ch:memcached charm: ch:memcached
num_units: 1 num_units: 1
# holding at bionic as memcached doesn't support focal/groovy yet # Note that holding memcached at focal as it's not available at jammy yet.
series: bionic series: focal
to: to:
- '13' - '13'

View File

@ -1,9 +1,9 @@
variables: variables:
openstack-origin: &openstack-origin cloud:focal-xena openstack-origin: &openstack-origin cloud:jammy-zed
local_overlay_enabled: False local_overlay_enabled: False
series: &series focal series: &series jammy
machines: machines:
0: 0:
@ -20,7 +20,7 @@ machines:
8: {} 8: {}
9: {} 9: {}
10: 10:
series: bionic series: focal
# We specify machine placements for these to improve iteration # We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "6" # time, given that machine "0" comes up way before machine "6"
@ -82,8 +82,8 @@ applications:
memcached: memcached:
charm: ch:memcached charm: ch:memcached
num_units: 1 num_units: 1
# holding at bionic as memcached doesn't support focal yet # Note that holding memcached at focal as it's not available at jammy yet.
series: bionic series: focal
to: to:
- '10' - '10'
#swift-proxy is used to test gnocchi against an S3 storage backend #swift-proxy is used to test gnocchi against an S3 storage backend
@ -97,6 +97,7 @@ applications:
openstack-origin: *openstack-origin openstack-origin: *openstack-origin
to: to:
- '7' - '7'
channel: latest/edge
swift-storage: swift-storage:
charm: ch:swift-storage charm: ch:swift-storage
num_units: 1 num_units: 1

View File

@ -1,9 +1,9 @@
variables: variables:
openstack-origin: &openstack-origin cloud:focal-xena openstack-origin: &openstack-origin cloud:jammy-zed
local_overlay_enabled: False local_overlay_enabled: False
series: &series focal series: &series jammy
machines: machines:
'0': '0':
@ -23,7 +23,7 @@ machines:
'11': '11':
'12': '12':
'13': '13':
series: bionic series: focal
# We specify machine placements for these to improve iteration # We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "6" # time, given that machine "0" comes up way before machine "6"
@ -112,8 +112,8 @@ applications:
memcached: memcached:
charm: ch:memcached charm: ch:memcached
num_units: 1 num_units: 1
# holding at bionic as memcached doesn't support focal yet # Note that holding memcached at focal as it's not available at jammy yet.
series: bionic series: focal
to: to:
- '13' - '13'

View File

@ -3,7 +3,7 @@ variables:
local_overlay_enabled: False local_overlay_enabled: False
series: &series impish series: &series kinetic
machines: machines:
0: 0:
@ -20,7 +20,7 @@ machines:
8: {} 8: {}
9: {} 9: {}
10: 10:
series: bionic series: focal
# We specify machine placements for these to improve iteration # We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "6" # time, given that machine "0" comes up way before machine "6"
@ -82,13 +82,13 @@ applications:
memcached: memcached:
charm: ch:memcached charm: ch:memcached
num_units: 1 num_units: 1
# holding at bionic as memcached doesn't support focal/groovy yet # Note that holding memcached at focal as it's not available at jammy yet.
series: bionic series: focal
to: to:
- '10' - '10'
#swift-proxy is used to test gnocchi against an S3 storage backend #swift-proxy is used to test gnocchi against an S3 storage backend
swift-proxy: swift-proxy:
charm: swift-proxy charm: ch:swift-proxy
num_units: 1 num_units: 1
options: options:
zone-assignment: manual zone-assignment: manual
@ -97,6 +97,7 @@ applications:
openstack-origin: *openstack-origin openstack-origin: *openstack-origin
to: to:
- '7' - '7'
channel: latest/edge
swift-storage: swift-storage:
charm: ch:swift-storage charm: ch:swift-storage
num_units: 1 num_units: 1

View File

@ -3,7 +3,7 @@ variables:
local_overlay_enabled: False local_overlay_enabled: False
series: &series impish series: &series kinetic
machines: machines:
'0': '0':
@ -23,7 +23,7 @@ machines:
'11': '11':
'12': '12':
'13': '13':
series: bionic series: focal
# We specify machine placements for these to improve iteration # We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "6" # time, given that machine "0" comes up way before machine "6"
@ -112,8 +112,8 @@ applications:
memcached: memcached:
charm: ch:memcached charm: ch:memcached
num_units: 1 num_units: 1
# holding at bionic as memcached doesn't support focal/groovy yet # Note that holding memcached at focal as it's not available at kinetic yet.
series: bionic series: focal
to: to:
- '13' - '13'

View File

@ -1,15 +1,15 @@
charm_name: gnocchi charm_name: gnocchi
gate_bundles: gate_bundles:
- test-s3: focal-xena-s3 - test-s3: jammy-yoga-s3
- test-s3: impish-xena-s3
smoke_bundles: smoke_bundles:
- test-s3: focal-xena-s3 - test-s3: jammy-yoga-s3
dev_bundles: dev_bundles:
- test-s3: focal-yoga-s3
- test-s3: jammy-yoga-s3 - test-s3: jammy-yoga-s3
- test-s3: jammy-zed-s3
- test-s3: kinetic-zed-s3
configure: configure:
- zaza.openstack.charm_tests.ceilometer.setup.basic_setup - zaza.openstack.charm_tests.ceilometer.setup.basic_setup
@ -43,5 +43,4 @@ target_deploy_status:
tests_options: tests_options:
force_deploy: force_deploy:
- impish-xena-s3 - kinetic-zed-s3
- jammy-yoga-s3

View File

@ -4,7 +4,6 @@
# https://github.com/openstack-charmers/release-tools # 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. 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 setuptools<50.0.0 # https://github.com/pypa/setuptools/commit/04e3df22df840c6bb244e9b27bc56750c44b7c85
stestr>=2.2.0 stestr>=2.2.0
@ -13,25 +12,10 @@ stestr>=2.2.0
# https://github.com/mtreinish/stestr/issues/145 # https://github.com/mtreinish/stestr/issues/145
cliff<3.0.0 cliff<3.0.0
# Dependencies of stestr. Newer versions use keywords that didn't exist in
# python 3.5 yet (e.g. "ModuleNotFoundError")
importlib-metadata<3.0.0; python_version < '3.6'
importlib-resources<3.0.0; python_version < '3.6'
# Some Zuul nodes sometimes pull newer versions of these dependencies which
# dropped support for python 3.5:
osprofiler<2.7.0;python_version<'3.6'
stevedore<1.31.0;python_version<'3.6'
debtcollector<1.22.0;python_version<'3.6'
oslo.utils<=3.41.0;python_version<'3.6'
requests>=2.18.4 requests>=2.18.4
charms.reactive charms.reactive
# Newer mock seems to have some syntax which is newer than python3.5 (e.g. mock>=1.2
# f'{something}'
mock>=1.2,<4.0.0; python_version < '3.6'
mock>=1.2; python_version >= '3.6'
nose>=1.3.7 nose>=1.3.7
coverage>=3.6 coverage>=3.6

23
tox.ini
View File

@ -31,10 +31,8 @@ minversion = 3.18.0
setenv = VIRTUAL_ENV={envdir} setenv = VIRTUAL_ENV={envdir}
PYTHONHASHSEED=0 PYTHONHASHSEED=0
TERM=linux TERM=linux
LAYER_PATH={toxinidir}/layers
INTERFACE_PATH={toxinidir}/interfaces
JUJU_REPOSITORY={toxinidir}/build JUJU_REPOSITORY={toxinidir}/build
passenv = http_proxy https_proxy INTERFACE_PATH LAYER_PATH JUJU_REPOSITORY passenv = no_proxy http_proxy https_proxy JUJU_REPOSITORY
install_command = install_command =
{toxinidir}/pip.sh install {opts} {packages} {toxinidir}/pip.sh install {opts} {packages}
allowlist_externals = allowlist_externals =
@ -50,7 +48,7 @@ basepython = python3
deps = -r{toxinidir}/build-requirements.txt deps = -r{toxinidir}/build-requirements.txt
commands = commands =
charmcraft clean charmcraft clean
charmcraft -v build charmcraft -v pack
{toxinidir}/rename.sh {toxinidir}/rename.sh
[testenv:build-reactive] [testenv:build-reactive]
@ -68,21 +66,6 @@ basepython = python3
deps = -r{toxinidir}/test-requirements.txt deps = -r{toxinidir}/test-requirements.txt
commands = stestr run --slowest {posargs} commands = stestr run --slowest {posargs}
[testenv:py36]
basepython = python3.6
deps = -r{toxinidir}/test-requirements.txt
commands = stestr run --slowest {posargs}
[testenv:py38]
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:py310] [testenv:py310]
basepython = python3.10 basepython = python3.10
deps = -r{toxinidir}/test-requirements.txt deps = -r{toxinidir}/test-requirements.txt
@ -91,7 +74,7 @@ commands = stestr run --slowest {posargs}
[testenv:pep8] [testenv:pep8]
basepython = python3 basepython = python3
deps = flake8==3.9.2 deps = flake8==3.9.2
charm-tools==2.8.3 git+https://github.com/juju/charm-tools.git
commands = flake8 {posargs} src unit_tests commands = flake8 {posargs} src unit_tests
[testenv:func-target] [testenv:func-target]