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: I78b0720e75891a41364ba0ddb82add89c3b77ca1
This commit is contained in:
Corey Bryant
2022-06-10 20:14:46 +00:00
parent b66390efaf
commit f7fb2c3693
25 changed files with 167 additions and 147 deletions

View File

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

3
bindep.txt Normal file
View File

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

View File

@@ -24,13 +24,10 @@ parts:
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]

View File

@@ -467,7 +467,7 @@ def ns_query(address):
try: try:
answers = dns.resolver.query(address, rtype) answers = dns.resolver.query(address, rtype)
except dns.resolver.NXDOMAIN: except (dns.resolver.NXDOMAIN, dns.resolver.NoNameservers):
return None return None
if answers: if answers:

View File

@@ -158,6 +158,7 @@ OPENSTACK_CODENAMES = OrderedDict([
('2021.1', 'wallaby'), ('2021.1', 'wallaby'),
('2021.2', 'xena'), ('2021.2', 'xena'),
('2022.1', 'yoga'), ('2022.1', 'yoga'),
('2022.2', 'zed'),
]) ])
# The ugly duckling - must list releases oldest to newest # The ugly duckling - must list releases oldest to newest
@@ -400,13 +401,16 @@ def get_os_codename_version(vers):
error_out(e) error_out(e)
def get_os_version_codename(codename, version_map=OPENSTACK_CODENAMES): def get_os_version_codename(codename, version_map=OPENSTACK_CODENAMES,
raise_exception=False):
'''Determine OpenStack version number from codename.''' '''Determine OpenStack version number from codename.'''
for k, v in version_map.items(): for k, v in version_map.items():
if v == codename: if v == codename:
return k return k
e = 'Could not derive OpenStack version for '\ e = 'Could not derive OpenStack version for '\
'codename: %s' % codename 'codename: %s' % codename
if raise_exception:
raise ValueError(str(e))
error_out(e) error_out(e)

View File

@@ -277,7 +277,7 @@ def service_resume(service_name, init_dir="/etc/init",
return started return started
def service(action, service_name, **kwargs): def service(action, service_name=None, **kwargs):
"""Control a system service. """Control a system service.
:param action: the action to take on the service :param action: the action to take on the service
@@ -286,7 +286,9 @@ def service(action, service_name, **kwargs):
the form of key=value. the form of key=value.
""" """
if init_is_systemd(service_name=service_name): if init_is_systemd(service_name=service_name):
cmd = ['systemctl', action, service_name] cmd = ['systemctl', action]
if service_name is not None:
cmd.append(service_name)
else: else:
cmd = ['service', service_name, action] cmd = ['service', service_name, action]
for key, value in kwargs.items(): for key, value in kwargs.items():

View File

@@ -30,6 +30,7 @@ UBUNTU_RELEASES = (
'hirsute', 'hirsute',
'impish', 'impish',
'jammy', 'jammy',
'kinetic',
) )

View File

@@ -15,7 +15,8 @@
import os import os
import json import json
import inspect import inspect
from collections import Iterable, OrderedDict from collections import OrderedDict
from collections.abc import Iterable
from charmhelpers.core import host from charmhelpers.core import host
from charmhelpers.core import hookenv from charmhelpers.core import hookenv

View File

@@ -12,6 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import contextlib
import os import os
import hashlib import hashlib
import re import re
@@ -24,11 +25,15 @@ from charmhelpers.payload.archive import (
get_archive_handler, get_archive_handler,
extract, extract,
) )
from charmhelpers.core.hookenv import (
env_proxy_settings,
)
from charmhelpers.core.host import mkdir, check_hash from charmhelpers.core.host import mkdir, check_hash
from urllib.request import ( from urllib.request import (
build_opener, install_opener, urlopen, urlretrieve, build_opener, install_opener, urlopen, urlretrieve,
HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler, HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler,
ProxyHandler
) )
from urllib.parse import urlparse, urlunparse, parse_qs from urllib.parse import urlparse, urlunparse, parse_qs
from urllib.error import URLError from urllib.error import URLError
@@ -50,6 +55,20 @@ def splitpasswd(user):
return user, None return user, None
@contextlib.contextmanager
def proxy_env():
"""
Creates a context which temporarily modifies the proxy settings in os.environ.
"""
restore = {**os.environ} # Copy the current os.environ
juju_proxies = env_proxy_settings() or {}
os.environ.update(**juju_proxies) # Insert or Update the os.environ
yield os.environ
for key in juju_proxies:
del os.environ[key] # remove any keys which were added or updated
os.environ.update(**restore) # restore any original values
class ArchiveUrlFetchHandler(BaseFetchHandler): class ArchiveUrlFetchHandler(BaseFetchHandler):
""" """
Handler to download archive files from arbitrary URLs. Handler to download archive files from arbitrary URLs.
@@ -80,6 +99,7 @@ class ArchiveUrlFetchHandler(BaseFetchHandler):
# propagate all exceptions # propagate all exceptions
# URLError, OSError, etc # URLError, OSError, etc
proto, netloc, path, params, query, fragment = urlparse(source) proto, netloc, path, params, query, fragment = urlparse(source)
handlers = []
if proto in ('http', 'https'): if proto in ('http', 'https'):
auth, barehost = splituser(netloc) auth, barehost = splituser(netloc)
if auth is not None: if auth is not None:
@@ -89,10 +109,13 @@ class ArchiveUrlFetchHandler(BaseFetchHandler):
# Realm is set to None in add_password to force the username and password # Realm is set to None in add_password to force the username and password
# to be used whatever the realm # to be used whatever the realm
passman.add_password(None, source, username, password) passman.add_password(None, source, username, password)
authhandler = HTTPBasicAuthHandler(passman) handlers.append(HTTPBasicAuthHandler(passman))
opener = build_opener(authhandler)
install_opener(opener) with proxy_env():
response = urlopen(source) handlers.append(ProxyHandler())
opener = build_opener(*handlers)
install_opener(opener)
response = urlopen(source)
try: try:
with open(dest, 'wb') as dest_file: with open(dest, 'wb') as dest_file:
dest_file.write(response.read()) dest_file.write(response.read())

View File

@@ -222,6 +222,14 @@ CLOUD_ARCHIVE_POCKETS = {
'yoga/proposed': 'focal-proposed/yoga', 'yoga/proposed': 'focal-proposed/yoga',
'focal-yoga/proposed': 'focal-proposed/yoga', 'focal-yoga/proposed': 'focal-proposed/yoga',
'focal-proposed/yoga': 'focal-proposed/yoga', 'focal-proposed/yoga': 'focal-proposed/yoga',
# Zed
'zed': 'jammy-updates/zed',
'jammy-zed': 'jammy-updates/zed',
'jammy-zed/updates': 'jammy-updates/zed',
'jammy-updates/zed': 'jammy-updates/zed',
'zed/proposed': 'jammy-proposed/zed',
'jammy-zed/proposed': 'jammy-proposed/zed',
'jammy-proposed/zed': 'jammy-proposed/zed',
} }
@@ -248,6 +256,7 @@ OPENSTACK_RELEASES = (
'wallaby', 'wallaby',
'xena', 'xena',
'yoga', 'yoga',
'zed',
) )
@@ -274,6 +283,7 @@ UBUNTU_OPENSTACK_RELEASE = OrderedDict([
('hirsute', 'wallaby'), ('hirsute', 'wallaby'),
('impish', 'xena'), ('impish', 'xena'),
('jammy', 'yoga'), ('jammy', 'yoga'),
('kinetic', 'zed'),
]) ])

View File

@@ -10,7 +10,7 @@ options:
Setting this to True will allow supporting services to log to syslog. Setting this to True will allow supporting services to log to syslog.
source: source:
type: string type: string
default: "" default: zed
description: | description: |
Repository from which to install. May be one of the following: Repository from which to install. May be one of the following:
distro (default), ppa:somecustom/ppa, a deb url sources entry, distro (default), ppa:somecustom/ppa, a deb url sources entry,

View File

@@ -291,7 +291,8 @@ def pool_permission_list_for_service(service):
for prefix in prefixes: for prefix in prefixes:
permissions.append("allow {} object_prefix {}".format(permission, permissions.append("allow {} object_prefix {}".format(permission,
prefix)) prefix))
return ['mon', 'allow r, allow command "osd blacklist"', return ['mon', ('allow r, allow command "osd blacklist"'
', allow command "osd blocklist"'),
'osd', ', '.join(permissions)] 'osd', ', '.join(permissions)]

View File

@@ -1134,7 +1134,8 @@ def get_mds_bootstrap_key():
_default_caps = collections.OrderedDict([ _default_caps = collections.OrderedDict([
('mon', ['allow r', ('mon', ['allow r',
'allow command "osd blacklist"']), 'allow command "osd blacklist"',
'allow command "osd blocklist"']),
('osd', ['allow rwx']), ('osd', ['allow rwx']),
]) ])
@@ -1166,7 +1167,10 @@ osd_upgrade_caps = collections.OrderedDict([
]) ])
rbd_mirror_caps = collections.OrderedDict([ rbd_mirror_caps = collections.OrderedDict([
('mon', ['profile rbd; allow r']), ('mon', ['allow profile rbd-mirror-peer',
'allow command "service dump"',
'allow command "service status"'
]),
('osd', ['profile rbd']), ('osd', ['profile rbd']),
('mgr', ['allow r']), ('mgr', ['allow r']),
]) ])
@@ -3453,6 +3457,9 @@ def enabled_manager_modules():
:rtype: List[str] :rtype: List[str]
""" """
cmd = ['ceph', 'mgr', 'module', 'ls'] cmd = ['ceph', 'mgr', 'module', 'ls']
quincy_or_later = cmp_pkgrevno('ceph-common', '17.1.0') >= 0
if quincy_or_later:
cmd.append('--format=json')
try: try:
modules = subprocess.check_output(cmd).decode('UTF-8') modules = subprocess.check_output(cmd).decode('UTF-8')
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:

View File

@@ -10,7 +10,6 @@ tags:
- file-servers - file-servers
- misc - misc
series: series:
- focal
- jammy - jammy
extra-bindings: extra-bindings:
public: public:

View File

@@ -1,39 +1,31 @@
- project: - project:
templates: templates:
- charm-unit-jobs-py38 - charm-unit-jobs-py310
- charm-unit-jobs-py39 - charm-zed-functional-jobs
- charm-yoga-functional-jobs
- charm-xena-functional-jobs
check: check:
jobs: jobs:
- focal-xena-ec
- focal-yoga-ec
- jammy-yoga-ec - jammy-yoga-ec
- kinetic-zed-ec:
voting: false
vars: vars:
needs_charm_build: true needs_charm_build: true
charm_build_name: ceph-proxy charm_build_name: ceph-proxy
build_type: charmcraft build_type: charmcraft
- job: charmcraft_channel: 2.0/stable
name: focal-xena-ec
parent: func-target
dependencies:
- osci-lint
- charm-build
- tox-py38
- tox-py39
vars:
tox_extra_args: erasure-coded:focal-xena-ec
- job:
name: focal-yoga-ec
parent: func-target
dependencies:
- focal-xena-ec
vars:
tox_extra_args: erasure-coded:focal-yoga-ec
- job: - job:
name: jammy-yoga-ec name: jammy-yoga-ec
parent: func-target parent: func-target
dependencies: dependencies:
- focal-xena-ec - osci-lint
- charm-build
- name: tox-py310
soft: true
vars: vars:
tox_extra_args: erasure-coded:jammy-yoga-ec tox_extra_args: erasure-coded:jammy-yoga-ec
- job:
name: kinetic-zed-ec
parent: func-target
dependencies:
- jammy-yoga-ec
vars:
tox_extra_args: erasure-coded:kinetic-zed-ec

View File

@@ -11,14 +11,19 @@ pbr==5.6.0
simplejson>=2.2.0 simplejson>=2.2.0
netifaces>=0.10.4 netifaces>=0.10.4
# NOTE: newer versions of cryptography require a Rust compiler to build,
# see
# * https://github.com/openstack-charmers/zaza/issues/421
# * https://mail.python.org/pipermail/cryptography-dev/2021-January/001003.html
#
cryptography<3.4
# Strange import error with newer netaddr: # Strange import error with newer netaddr:
netaddr>0.7.16,<0.8.0 netaddr>0.7.16,<0.8.0
Jinja2>=2.6 # BSD License (3 clause) Jinja2>=2.6 # BSD License (3 clause)
six>=1.9.0 six>=1.9.0
# dnspython 2.0.0 dropped py3.5 support dnspython
dnspython<2.0.0; python_version < '3.6'
dnspython; python_version >= '3.6'
psutil>=1.1.1,<2.0.0 psutil>=1.1.1,<2.0.0

View File

@@ -8,7 +8,6 @@
# all of its own requirements and if it doesn't, fix it there. # all of its own requirements and if it doesn't, fix it there.
# #
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
requests>=2.18.4 requests>=2.18.4
@@ -19,25 +18,12 @@ 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'
coverage>=4.5.2 coverage>=4.5.2
pyudev # for ceph-* charm unit tests (need to fix the ceph-* charm unit tests/mocking) pyudev # for ceph-* charm unit tests (need to fix the ceph-* charm unit tests/mocking)
git+https://github.com/openstack-charmers/zaza.git#egg=zaza git+https://github.com/openstack-charmers/zaza.git#egg=zaza
git+https://github.com/openstack-charmers/zaza-openstack-tests.git#egg=zaza.openstack git+https://github.com/openstack-charmers/zaza-openstack-tests.git#egg=zaza.openstack
# Needed for charm-glance: # Needed for charm-glance:
git+https://opendev.org/openstack/tempest.git#egg=tempest;python_version>='3.6' git+https://opendev.org/openstack/tempest.git#egg=tempest
tempest<24.0.0;python_version<'3.6'
croniter # needed for charm-rabbitmq-server unit tests croniter # needed for charm-rabbitmq-server unit tests

View File

@@ -62,7 +62,7 @@ applications:
- '3' - '3'
- '4' - '4'
- '5' - '5'
channel: quincy/edge channel: latest/edge
ceph-osd: ceph-osd:
charm: ch:ceph-osd charm: ch:ceph-osd
@@ -78,7 +78,7 @@ applications:
- '16' - '16'
- '17' - '17'
- '18' - '18'
channel: quincy/edge channel: latest/edge
ceph-proxy: ceph-proxy:
charm: ../../ceph-proxy.charm charm: ../../ceph-proxy.charm
@@ -98,7 +98,7 @@ applications:
ec-profile-m: 2 ec-profile-m: 2
to: to:
- '10' - '10'
channel: quincy/edge channel: latest/edge
cinder: cinder:
charm: ch:cinder charm: ch:cinder
@@ -112,7 +112,7 @@ applications:
constraints: mem=2048 constraints: mem=2048
to: to:
- '11' - '11'
channel: yoga/edge channel: latest/edge
cinder-ceph: cinder-ceph:
charm: ch:cinder-ceph charm: ch:cinder-ceph
@@ -123,7 +123,7 @@ applications:
ec-profile-m: 2 ec-profile-m: 2
ec-profile-plugin: lrc ec-profile-plugin: lrc
ec-profile-locality: 3 ec-profile-locality: 3
channel: yoga/edge channel: latest/edge
keystone: keystone:
charm: ch:keystone charm: ch:keystone
@@ -134,7 +134,7 @@ applications:
constraints: mem=1024 constraints: mem=1024
to: to:
- '12' - '12'
channel: yoga/edge channel: latest/edge
rabbitmq-server: rabbitmq-server:
charm: ch:rabbitmq-server charm: ch:rabbitmq-server
@@ -157,7 +157,7 @@ applications:
ec-profile-plugin: jerasure ec-profile-plugin: jerasure
to: to:
- '14' - '14'
channel: yoga/edge channel: latest/edge
nova-compute: nova-compute:
charm: ch:nova-compute charm: ch:nova-compute
@@ -171,7 +171,7 @@ applications:
libvirt-image-backend: rbd libvirt-image-backend: rbd
to: to:
- '15' - '15'
channel: yoga/edge channel: latest/edge
relations: relations:

View File

@@ -59,7 +59,7 @@ applications:
- '3' - '3'
- '4' - '4'
- '5' - '5'
channel: quincy/edge channel: latest/edge
ceph-osd: ceph-osd:
charm: ch:ceph-osd charm: ch:ceph-osd
@@ -72,7 +72,7 @@ applications:
- '6' - '6'
- '7' - '7'
- '8' - '8'
channel: quincy/edge channel: latest/edge
ceph-proxy: ceph-proxy:
charm: ../../ceph-proxy.charm charm: ../../ceph-proxy.charm
@@ -89,7 +89,7 @@ applications:
source: *openstack-origin source: *openstack-origin
to: to:
- '10' - '10'
channel: quincy/edge channel: latest/edge
cinder: cinder:
charm: ch:cinder charm: ch:cinder
@@ -103,13 +103,13 @@ applications:
constraints: mem=2048 constraints: mem=2048
to: to:
- '11' - '11'
channel: yoga/edge channel: latest/edge
cinder-ceph: cinder-ceph:
charm: ch:cinder-ceph charm: ch:cinder-ceph
options: options:
restrict-ceph-pools: True restrict-ceph-pools: True
channel: yoga/edge channel: latest/edge
keystone: keystone:
charm: ch:keystone charm: ch:keystone
@@ -120,7 +120,7 @@ applications:
constraints: mem=1024 constraints: mem=1024
to: to:
- '12' - '12'
channel: yoga/edge channel: latest/edge
rabbitmq-server: rabbitmq-server:
charm: ch:rabbitmq-server charm: ch:rabbitmq-server
@@ -139,7 +139,7 @@ applications:
openstack-origin: *openstack-origin openstack-origin: *openstack-origin
to: to:
- '14' - '14'
channel: yoga/edge channel: latest/edge
nova-compute: nova-compute:
charm: ch:nova-compute charm: ch:nova-compute
@@ -148,7 +148,7 @@ applications:
openstack-origin: *openstack-origin openstack-origin: *openstack-origin
to: to:
- '15' - '15'
channel: yoga/edge channel: latest/edge
relations: relations:

View File

@@ -1,7 +1,7 @@
variables: variables:
openstack-origin: &openstack-origin cloud:focal-xena openstack-origin: &openstack-origin distro
series: focal series: jammy
comment: comment:
- 'machines section to decide order of deployment. database sooner = faster' - 'machines section to decide order of deployment. database sooner = faster'
@@ -62,7 +62,7 @@ applications:
- '3' - '3'
- '4' - '4'
- '5' - '5'
channel: quincy/edge channel: latest/edge
ceph-osd: ceph-osd:
charm: ch:ceph-osd charm: ch:ceph-osd
@@ -78,7 +78,7 @@ applications:
- '16' - '16'
- '17' - '17'
- '18' - '18'
channel: quincy/edge channel: latest/edge
ceph-proxy: ceph-proxy:
charm: ../../ceph-proxy.charm charm: ../../ceph-proxy.charm
@@ -98,7 +98,7 @@ applications:
ec-profile-m: 2 ec-profile-m: 2
to: to:
- '10' - '10'
channel: quincy/edge channel: latest/edge
cinder: cinder:
charm: ch:cinder charm: ch:cinder
@@ -112,7 +112,7 @@ applications:
constraints: mem=2048 constraints: mem=2048
to: to:
- '11' - '11'
channel: yoga/edge channel: latest/edge
cinder-ceph: cinder-ceph:
charm: ch:cinder-ceph charm: ch:cinder-ceph
@@ -123,7 +123,7 @@ applications:
ec-profile-m: 2 ec-profile-m: 2
ec-profile-plugin: lrc ec-profile-plugin: lrc
ec-profile-locality: 3 ec-profile-locality: 3
channel: yoga/edge channel: latest/edge
keystone: keystone:
charm: ch:keystone charm: ch:keystone
@@ -134,7 +134,7 @@ applications:
constraints: mem=1024 constraints: mem=1024
to: to:
- '12' - '12'
channel: yoga/edge channel: latest/edge
rabbitmq-server: rabbitmq-server:
charm: ch:rabbitmq-server charm: ch:rabbitmq-server
@@ -157,7 +157,7 @@ applications:
ec-profile-plugin: jerasure ec-profile-plugin: jerasure
to: to:
- '14' - '14'
channel: yoga/edge channel: latest/edge
nova-compute: nova-compute:
charm: ch:nova-compute charm: ch:nova-compute
@@ -171,7 +171,7 @@ applications:
libvirt-image-backend: rbd libvirt-image-backend: rbd
to: to:
- '15' - '15'
channel: yoga/edge channel: latest/edge
relations: relations:

View File

@@ -1,7 +1,7 @@
variables: variables:
openstack-origin: &openstack-origin cloud:focal-yoga openstack-origin: &openstack-origin cloud:jammy-zed
series: focal series: jammy
comment: comment:
- 'machines section to decide order of deployment. database sooner = faster' - 'machines section to decide order of deployment. database sooner = faster'
@@ -59,7 +59,7 @@ applications:
- '3' - '3'
- '4' - '4'
- '5' - '5'
channel: quincy/edge channel: latest/edge
ceph-osd: ceph-osd:
charm: ch:ceph-osd charm: ch:ceph-osd
@@ -72,7 +72,7 @@ applications:
- '6' - '6'
- '7' - '7'
- '8' - '8'
channel: quincy/edge channel: latest/edge
ceph-proxy: ceph-proxy:
charm: ../../ceph-proxy.charm charm: ../../ceph-proxy.charm
@@ -89,7 +89,7 @@ applications:
source: *openstack-origin source: *openstack-origin
to: to:
- '10' - '10'
channel: quincy/edge channel: latest/edge
cinder: cinder:
charm: ch:cinder charm: ch:cinder
@@ -103,13 +103,13 @@ applications:
constraints: mem=2048 constraints: mem=2048
to: to:
- '11' - '11'
channel: yoga/edge channel: latest/edge
cinder-ceph: cinder-ceph:
charm: ch:cinder-ceph charm: ch:cinder-ceph
options: options:
restrict-ceph-pools: True restrict-ceph-pools: True
channel: yoga/edge channel: latest/edge
keystone: keystone:
charm: ch:keystone charm: ch:keystone
@@ -120,7 +120,7 @@ applications:
constraints: mem=1024 constraints: mem=1024
to: to:
- '12' - '12'
channel: yoga/edge channel: latest/edge
rabbitmq-server: rabbitmq-server:
charm: ch:rabbitmq-server charm: ch:rabbitmq-server
@@ -139,7 +139,7 @@ applications:
openstack-origin: *openstack-origin openstack-origin: *openstack-origin
to: to:
- '14' - '14'
channel: yoga/edge channel: latest/edge
nova-compute: nova-compute:
charm: ch:nova-compute charm: ch:nova-compute
@@ -148,7 +148,7 @@ applications:
openstack-origin: *openstack-origin openstack-origin: *openstack-origin
to: to:
- '15' - '15'
channel: yoga/edge channel: latest/edge
relations: relations:

View File

@@ -1,7 +1,7 @@
variables: variables:
openstack-origin: &openstack-origin cloud:focal-yoga openstack-origin: &openstack-origin distro
series: focal series: kinetic
comment: comment:
- 'machines section to decide order of deployment. database sooner = faster' - 'machines section to decide order of deployment. database sooner = faster'
@@ -62,7 +62,7 @@ applications:
- '3' - '3'
- '4' - '4'
- '5' - '5'
channel: quincy/edge channel: latest/edge
ceph-osd: ceph-osd:
charm: ch:ceph-osd charm: ch:ceph-osd
@@ -78,7 +78,7 @@ applications:
- '16' - '16'
- '17' - '17'
- '18' - '18'
channel: quincy/edge channel: latest/edge
ceph-proxy: ceph-proxy:
charm: ../../ceph-proxy.charm charm: ../../ceph-proxy.charm
@@ -98,7 +98,7 @@ applications:
ec-profile-m: 2 ec-profile-m: 2
to: to:
- '10' - '10'
channel: quincy/edge channel: latest/edge
cinder: cinder:
charm: ch:cinder charm: ch:cinder
@@ -112,7 +112,7 @@ applications:
constraints: mem=2048 constraints: mem=2048
to: to:
- '11' - '11'
channel: yoga/edge channel: latest/edge
cinder-ceph: cinder-ceph:
charm: ch:cinder-ceph charm: ch:cinder-ceph
@@ -123,7 +123,7 @@ applications:
ec-profile-m: 2 ec-profile-m: 2
ec-profile-plugin: lrc ec-profile-plugin: lrc
ec-profile-locality: 3 ec-profile-locality: 3
channel: yoga/edge channel: latest/edge
keystone: keystone:
charm: ch:keystone charm: ch:keystone
@@ -134,7 +134,7 @@ applications:
constraints: mem=1024 constraints: mem=1024
to: to:
- '12' - '12'
channel: yoga/edge channel: latest/edge
rabbitmq-server: rabbitmq-server:
charm: ch:rabbitmq-server charm: ch:rabbitmq-server
@@ -157,7 +157,7 @@ applications:
ec-profile-plugin: jerasure ec-profile-plugin: jerasure
to: to:
- '14' - '14'
channel: yoga/edge channel: latest/edge
nova-compute: nova-compute:
charm: ch:nova-compute charm: ch:nova-compute
@@ -171,7 +171,7 @@ applications:
libvirt-image-backend: rbd libvirt-image-backend: rbd
to: to:
- '15' - '15'
channel: yoga/edge channel: latest/edge
relations: relations:

View File

@@ -1,7 +1,7 @@
variables: variables:
openstack-origin: &openstack-origin cloud:focal-xena openstack-origin: &openstack-origin distro
series: focal series: kinetic
comment: comment:
- 'machines section to decide order of deployment. database sooner = faster' - 'machines section to decide order of deployment. database sooner = faster'
@@ -59,7 +59,7 @@ applications:
- '3' - '3'
- '4' - '4'
- '5' - '5'
channel: quincy/edge channel: latest/edge
ceph-osd: ceph-osd:
charm: ch:ceph-osd charm: ch:ceph-osd
@@ -72,7 +72,7 @@ applications:
- '6' - '6'
- '7' - '7'
- '8' - '8'
channel: quincy/edge channel: latest/edge
ceph-proxy: ceph-proxy:
charm: ../../ceph-proxy.charm charm: ../../ceph-proxy.charm
@@ -89,7 +89,7 @@ applications:
source: *openstack-origin source: *openstack-origin
to: to:
- '10' - '10'
channel: quincy/edge channel: latest/edge
cinder: cinder:
charm: ch:cinder charm: ch:cinder
@@ -103,13 +103,13 @@ applications:
constraints: mem=2048 constraints: mem=2048
to: to:
- '11' - '11'
channel: yoga/edge channel: latest/edge
cinder-ceph: cinder-ceph:
charm: ch:cinder-ceph charm: ch:cinder-ceph
options: options:
restrict-ceph-pools: True restrict-ceph-pools: True
channel: yoga/edge channel: latest/edge
keystone: keystone:
charm: ch:keystone charm: ch:keystone
@@ -120,7 +120,7 @@ applications:
constraints: mem=1024 constraints: mem=1024
to: to:
- '12' - '12'
channel: yoga/edge channel: latest/edge
rabbitmq-server: rabbitmq-server:
charm: ch:rabbitmq-server charm: ch:rabbitmq-server
@@ -139,7 +139,7 @@ applications:
openstack-origin: *openstack-origin openstack-origin: *openstack-origin
to: to:
- '14' - '14'
channel: yoga/edge channel: latest/edge
nova-compute: nova-compute:
charm: ch:nova-compute charm: ch:nova-compute
@@ -148,7 +148,7 @@ applications:
openstack-origin: *openstack-origin openstack-origin: *openstack-origin
to: to:
- '15' - '15'
channel: yoga/edge channel: latest/edge
relations: relations:

View File

@@ -12,15 +12,19 @@ tests:
- zaza.openstack.charm_tests.ceph.tests.CheckPoolTypes - zaza.openstack.charm_tests.ceph.tests.CheckPoolTypes
gate_bundles: gate_bundles:
- focal-xena
- erasure-coded: focal-xena-ec
- focal-yoga
- erasure-coded: focal-yoga-ec
- jammy-yoga - jammy-yoga
- erasure-coded: jammy-yoga-ec - erasure-coded: jammy-yoga-ec
dev_bundles:
- jammy-yoga
- erasure-coded: jammy-yoga-ec
- jammy-zed
- erasure-coded: jammy-zed-ec
- kinetic-zed
- erasure-coded: kinetic-zed-ec
smoke_bundles: smoke_bundles:
- focal-xena - jammy-yoga
target_deploy_status: target_deploy_status:
ceph-proxy: ceph-proxy:
@@ -41,3 +45,8 @@ target_deploy_status:
glance: glance:
workload-status: waiting workload-status: waiting
workload-status-message: "Incomplete relations: storage-backend" workload-status-message: "Incomplete relations: storage-backend"
tests_options:
force_deploy:
- kinetic-zed
- kinetic-zed-ec

28
tox.ini
View File

@@ -48,31 +48,11 @@ 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:py35] [testenv:py310]
basepython = python3.5 basepython = python3.10
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
[testenv:py36]
basepython = python3.6
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
[testenv:py37]
basepython = python3.7
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
[testenv:py38]
basepython = python3.8
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
[testenv:py39]
basepython = python3.9
deps = -r{toxinidir}/requirements.txt deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt -r{toxinidir}/test-requirements.txt
@@ -84,7 +64,7 @@ deps = -r{toxinidir}/requirements.txt
[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} hooks unit_tests tests actions lib files commands = flake8 {posargs} hooks unit_tests tests actions lib files
charm-proof charm-proof