Updates for jammy enablement
- charmcraft: build-on 20.04 -> run-on 20.04/22.04 [*archs] - Refresh tox targets - Drop impish bundles and OSCI testing - Add jammy metadata - Default source is yoga - Resync charmhelpers and charms.ceph Change-Id: Ib62d7f882f22146419dfe920045b73452f9af2cb
This commit is contained in:
parent
b6bcec8072
commit
d72e8db254
|
@ -21,7 +21,16 @@ parts:
|
||||||
- README.md
|
- README.md
|
||||||
|
|
||||||
bases:
|
bases:
|
||||||
- name: ubuntu
|
- build-on:
|
||||||
channel: "20.04"
|
- name: ubuntu
|
||||||
architectures:
|
channel: "20.04"
|
||||||
- amd64
|
architectures:
|
||||||
|
- amd64
|
||||||
|
run-on:
|
||||||
|
- name: ubuntu
|
||||||
|
channel: "20.04"
|
||||||
|
architectures: [amd64, s390x, ppc64el, arm64]
|
||||||
|
- name: ubuntu
|
||||||
|
channel: "22.04"
|
||||||
|
architectures: [amd64, s390x, ppc64el, arm64]
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ options:
|
||||||
If set to True, supporting services will log to syslog.
|
If set to True, supporting services will log to syslog.
|
||||||
source:
|
source:
|
||||||
type: string
|
type: string
|
||||||
default:
|
default: yoga
|
||||||
description: |
|
description: |
|
||||||
Optional configuration to support use of additional sources such as:
|
Optional configuration to support use of additional sources such as:
|
||||||
.
|
.
|
||||||
|
|
|
@ -118,12 +118,7 @@ from charmhelpers.contrib.openstack.utils import (
|
||||||
)
|
)
|
||||||
from charmhelpers.core.unitdata import kv
|
from charmhelpers.core.unitdata import kv
|
||||||
|
|
||||||
try:
|
from charmhelpers.contrib.hardware import pci
|
||||||
from sriov_netplan_shim import pci
|
|
||||||
except ImportError:
|
|
||||||
# The use of the function and contexts that require the pci module is
|
|
||||||
# optional.
|
|
||||||
pass
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import psutil
|
import psutil
|
||||||
|
@ -426,6 +421,9 @@ class IdentityServiceContext(OSContextGenerator):
|
||||||
('password', ctxt.get('admin_password', '')),
|
('password', ctxt.get('admin_password', '')),
|
||||||
('signing_dir', ctxt.get('signing_dir', '')),))
|
('signing_dir', ctxt.get('signing_dir', '')),))
|
||||||
|
|
||||||
|
if ctxt.get('service_type'):
|
||||||
|
c.update((('service_type', ctxt.get('service_type')),))
|
||||||
|
|
||||||
return c
|
return c
|
||||||
|
|
||||||
def __call__(self):
|
def __call__(self):
|
||||||
|
@ -468,6 +466,9 @@ class IdentityServiceContext(OSContextGenerator):
|
||||||
'internal_protocol': int_protocol,
|
'internal_protocol': int_protocol,
|
||||||
'api_version': api_version})
|
'api_version': api_version})
|
||||||
|
|
||||||
|
if rdata.get('service_type'):
|
||||||
|
ctxt['service_type'] = rdata.get('service_type')
|
||||||
|
|
||||||
if float(api_version) > 2:
|
if float(api_version) > 2:
|
||||||
ctxt.update({
|
ctxt.update({
|
||||||
'admin_domain_name': rdata.get('service_domain'),
|
'admin_domain_name': rdata.get('service_domain'),
|
||||||
|
@ -539,6 +540,9 @@ class IdentityCredentialsContext(IdentityServiceContext):
|
||||||
'api_version': api_version
|
'api_version': api_version
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if rdata.get('service_type'):
|
||||||
|
ctxt['service_type'] = rdata.get('service_type')
|
||||||
|
|
||||||
if float(api_version) > 2:
|
if float(api_version) > 2:
|
||||||
ctxt.update({'admin_domain_name':
|
ctxt.update({'admin_domain_name':
|
||||||
rdata.get('domain')})
|
rdata.get('domain')})
|
||||||
|
@ -3120,7 +3124,7 @@ class SRIOVContext(OSContextGenerator):
|
||||||
"""Determine number of Virtual Functions (VFs) configured for device.
|
"""Determine number of Virtual Functions (VFs) configured for device.
|
||||||
|
|
||||||
:param device: Object describing a PCI Network interface card (NIC)/
|
:param device: Object describing a PCI Network interface card (NIC)/
|
||||||
:type device: sriov_netplan_shim.pci.PCINetDevice
|
:type device: contrib.hardware.pci.PCINetDevice
|
||||||
:param sriov_numvfs: Number of VFs requested for blanket configuration.
|
:param sriov_numvfs: Number of VFs requested for blanket configuration.
|
||||||
:type sriov_numvfs: int
|
:type sriov_numvfs: int
|
||||||
:returns: Number of VFs to configure for device
|
:returns: Number of VFs to configure for device
|
||||||
|
|
|
@ -0,0 +1,128 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
# Copyright 2014-2022 Canonical Limited.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
"""
|
||||||
|
Checks for services with deferred restarts.
|
||||||
|
|
||||||
|
This Nagios check will parse /var/lib/policy-rd.d/
|
||||||
|
to find any restarts that are currently deferred.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import glob
|
||||||
|
import sys
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
|
||||||
|
DEFERRED_EVENTS_DIR = '/var/lib/policy-rc.d'
|
||||||
|
|
||||||
|
|
||||||
|
def get_deferred_events():
|
||||||
|
"""Return a list of deferred events dicts from policy-rc.d files.
|
||||||
|
|
||||||
|
Events are read from DEFERRED_EVENTS_DIR and are of the form:
|
||||||
|
{
|
||||||
|
action: restart,
|
||||||
|
policy_requestor_name: rabbitmq-server,
|
||||||
|
policy_requestor_type: charm,
|
||||||
|
reason: 'Pkg update',
|
||||||
|
service: rabbitmq-server,
|
||||||
|
time: 1614328743
|
||||||
|
}
|
||||||
|
|
||||||
|
:raises OSError: Raised in case of a system error while reading a policy file
|
||||||
|
:raises yaml.YAMLError: Raised if parsing a policy file fails
|
||||||
|
|
||||||
|
:returns: List of deferred event dictionaries
|
||||||
|
:rtype: list
|
||||||
|
"""
|
||||||
|
deferred_events_files = glob.glob(
|
||||||
|
'{}/*.deferred'.format(DEFERRED_EVENTS_DIR))
|
||||||
|
|
||||||
|
deferred_events = []
|
||||||
|
for event_file in deferred_events_files:
|
||||||
|
with open(event_file, 'r') as f:
|
||||||
|
event = yaml.safe_load(f)
|
||||||
|
deferred_events.append(event)
|
||||||
|
|
||||||
|
return deferred_events
|
||||||
|
|
||||||
|
|
||||||
|
def get_deferred_restart_services(application=None):
|
||||||
|
"""Returns a list of services with deferred restarts.
|
||||||
|
|
||||||
|
:param str application: Name of the application that blocked the service restart.
|
||||||
|
If application is None, all services with deferred restarts
|
||||||
|
are returned. Services which are blocked by a non-charm
|
||||||
|
requestor are always returned.
|
||||||
|
|
||||||
|
:raises OSError: Raised in case of a system error while reading a policy file
|
||||||
|
:raises yaml.YAMLError: Raised if parsing a policy file fails
|
||||||
|
|
||||||
|
:returns: List of services with deferred restarts belonging to application.
|
||||||
|
:rtype: list
|
||||||
|
"""
|
||||||
|
|
||||||
|
deferred_restart_events = filter(
|
||||||
|
lambda e: e['action'] == 'restart', get_deferred_events())
|
||||||
|
|
||||||
|
deferred_restart_services = set()
|
||||||
|
for restart_event in deferred_restart_events:
|
||||||
|
if application:
|
||||||
|
if (
|
||||||
|
restart_event['policy_requestor_type'] != 'charm' or
|
||||||
|
restart_event['policy_requestor_type'] == 'charm' and
|
||||||
|
restart_event['policy_requestor_name'] == application
|
||||||
|
):
|
||||||
|
deferred_restart_services.add(restart_event['service'])
|
||||||
|
else:
|
||||||
|
deferred_restart_services.add(restart_event['service'])
|
||||||
|
|
||||||
|
return list(deferred_restart_services)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""Check for services with deferred restarts."""
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description='Check for services with deferred restarts')
|
||||||
|
parser.add_argument(
|
||||||
|
'--application', help='Check services belonging to this application only')
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
services = set(get_deferred_restart_services(args.application))
|
||||||
|
|
||||||
|
if len(services) == 0:
|
||||||
|
print('OK: No deferred service restarts.')
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
print(
|
||||||
|
'CRITICAL: Restarts are deferred for services: {}.'.format(', '.join(services)))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
try:
|
||||||
|
main()
|
||||||
|
except OSError as e:
|
||||||
|
print('CRITICAL: A system error occurred: {} ({})'.format(e.errno, e.strerror))
|
||||||
|
sys.exit(1)
|
||||||
|
except yaml.YAMLError as e:
|
||||||
|
print('CRITICAL: Failed to parse a policy file: {}'.format(str(e)))
|
||||||
|
sys.exit(1)
|
||||||
|
except Exception as e:
|
||||||
|
print('CRITICAL: An unknown error occurred: {}'.format(str(e)))
|
||||||
|
sys.exit(1)
|
|
@ -114,6 +114,33 @@ def service_stop(service_name, **kwargs):
|
||||||
return service('stop', service_name, **kwargs)
|
return service('stop', service_name, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
def service_enable(service_name, **kwargs):
|
||||||
|
"""Enable a system service.
|
||||||
|
|
||||||
|
The specified service name is managed via the system level init system.
|
||||||
|
Some init systems (e.g. upstart) require that additional arguments be
|
||||||
|
provided in order to directly control service instances whereas other init
|
||||||
|
systems allow for addressing instances of a service directly by name (e.g.
|
||||||
|
systemd).
|
||||||
|
|
||||||
|
The kwargs allow for the additional parameters to be passed to underlying
|
||||||
|
init systems for those systems which require/allow for them. For example,
|
||||||
|
the ceph-osd upstart script requires the id parameter to be passed along
|
||||||
|
in order to identify which running daemon should be restarted. The follow-
|
||||||
|
ing example restarts the ceph-osd service for instance id=4:
|
||||||
|
|
||||||
|
service_enable('ceph-osd', id=4)
|
||||||
|
|
||||||
|
:param service_name: the name of the service to enable
|
||||||
|
:param **kwargs: additional parameters to pass to the init system when
|
||||||
|
managing services. These will be passed as key=value
|
||||||
|
parameters to the init system's commandline. kwargs
|
||||||
|
are ignored for init systems not allowing additional
|
||||||
|
parameters via the commandline (systemd).
|
||||||
|
"""
|
||||||
|
return service('enable', service_name, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def service_restart(service_name, **kwargs):
|
def service_restart(service_name, **kwargs):
|
||||||
"""Restart a system service.
|
"""Restart a system service.
|
||||||
|
|
||||||
|
@ -134,7 +161,7 @@ def service_restart(service_name, **kwargs):
|
||||||
:param service_name: the name of the service to restart
|
:param service_name: the name of the service to restart
|
||||||
:param **kwargs: additional parameters to pass to the init system when
|
:param **kwargs: additional parameters to pass to the init system when
|
||||||
managing services. These will be passed as key=value
|
managing services. These will be passed as key=value
|
||||||
parameters to the init system's commandline. kwargs
|
parameters to the init system's commandline. kwargs
|
||||||
are ignored for init systems not allowing additional
|
are ignored for init systems not allowing additional
|
||||||
parameters via the commandline (systemd).
|
parameters via the commandline (systemd).
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -11,7 +11,7 @@ tags:
|
||||||
- misc
|
- misc
|
||||||
series:
|
series:
|
||||||
- focal
|
- focal
|
||||||
- impish
|
- jammy
|
||||||
peers:
|
peers:
|
||||||
mon:
|
mon:
|
||||||
interface: ceph
|
interface: ceph
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
- project:
|
- project:
|
||||||
templates:
|
templates:
|
||||||
- charm-unit-jobs-py38
|
- charm-unit-jobs-py38
|
||||||
- charm-unit-jobs-py39
|
- charm-unit-jobs-py310
|
||||||
- charm-xena-functional-jobs
|
- charm-xena-functional-jobs
|
||||||
- charm-yoga-functional-jobs
|
- charm-yoga-functional-jobs
|
||||||
vars:
|
vars:
|
||||||
|
|
|
@ -11,6 +11,13 @@ pyparsing<3.0.0 # aodhclient is pinned in zaza and needs pyparsing < 3.0.0, but
|
||||||
cffi==1.14.6; python_version < '3.6' # cffi 1.15.0 drops support for py35.
|
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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
requests>=2.18.4
|
requests>=2.18.4
|
||||||
|
|
||||||
stestr>=2.2.0
|
stestr>=2.2.0
|
||||||
|
|
|
@ -1,252 +0,0 @@
|
||||||
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':
|
|
||||||
'4':
|
|
||||||
'5':
|
|
||||||
'6':
|
|
||||||
'7':
|
|
||||||
'8':
|
|
||||||
'9':
|
|
||||||
'10':
|
|
||||||
'11':
|
|
||||||
'12':
|
|
||||||
'13':
|
|
||||||
'14':
|
|
||||||
'15':
|
|
||||||
'16':
|
|
||||||
series: focal
|
|
||||||
|
|
||||||
|
|
||||||
applications:
|
|
||||||
|
|
||||||
keystone-mysql-router:
|
|
||||||
charm: ch:mysql-router
|
|
||||||
channel: 8.0.19/edge
|
|
||||||
glance-mysql-router:
|
|
||||||
charm: ch:mysql-router
|
|
||||||
channel: 8.0.19/edge
|
|
||||||
cinder-mysql-router:
|
|
||||||
charm: ch:mysql-router
|
|
||||||
channel: 8.0.19/edge
|
|
||||||
nova-cloud-controller-mysql-router:
|
|
||||||
charm: ch:mysql-router
|
|
||||||
channel: 8.0.19/edge
|
|
||||||
placement-mysql-router:
|
|
||||||
charm: ch:mysql-router
|
|
||||||
channel: 8.0.19/edge
|
|
||||||
|
|
||||||
mysql-innodb-cluster:
|
|
||||||
charm: ch:mysql-innodb-cluster
|
|
||||||
num_units: 3
|
|
||||||
options:
|
|
||||||
source: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '0'
|
|
||||||
- '1'
|
|
||||||
- '2'
|
|
||||||
channel: 8.0.19/edge
|
|
||||||
|
|
||||||
ceph-osd:
|
|
||||||
charm: ch:ceph-osd
|
|
||||||
num_units: 3
|
|
||||||
storage:
|
|
||||||
osd-devices: '10G'
|
|
||||||
options:
|
|
||||||
source: *openstack-origin
|
|
||||||
osd-devices: '/dev/test-non-existent'
|
|
||||||
to:
|
|
||||||
- '3'
|
|
||||||
- '4'
|
|
||||||
- '5'
|
|
||||||
channel: quincy/edge
|
|
||||||
|
|
||||||
ceph-mon:
|
|
||||||
charm: ../../ceph-mon.charm
|
|
||||||
num_units: 3
|
|
||||||
options:
|
|
||||||
source: *openstack-origin
|
|
||||||
monitor-count: '3'
|
|
||||||
to:
|
|
||||||
- '6'
|
|
||||||
- '7'
|
|
||||||
- '8'
|
|
||||||
|
|
||||||
rabbitmq-server:
|
|
||||||
charm: ch:rabbitmq-server
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
source: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '9'
|
|
||||||
channel: 3.9/edge
|
|
||||||
|
|
||||||
keystone:
|
|
||||||
expose: True
|
|
||||||
charm: ch:keystone
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '10'
|
|
||||||
channel: yoga/edge
|
|
||||||
|
|
||||||
nova-compute:
|
|
||||||
charm: ch:nova-compute
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
libvirt-image-backend: rbd
|
|
||||||
to:
|
|
||||||
- '11'
|
|
||||||
channel: yoga/edge
|
|
||||||
|
|
||||||
glance:
|
|
||||||
expose: True
|
|
||||||
charm: ch:glance
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '12'
|
|
||||||
channel: yoga/edge
|
|
||||||
|
|
||||||
cinder:
|
|
||||||
expose: True
|
|
||||||
charm: ch:cinder
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
block-device: 'None'
|
|
||||||
glance-api-version: '2'
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '13'
|
|
||||||
channel: yoga/edge
|
|
||||||
|
|
||||||
cinder-ceph:
|
|
||||||
charm: ch:cinder-ceph
|
|
||||||
channel: yoga/edge
|
|
||||||
|
|
||||||
nova-cloud-controller:
|
|
||||||
expose: True
|
|
||||||
charm: ch:nova-cloud-controller
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '14'
|
|
||||||
channel: yoga/edge
|
|
||||||
|
|
||||||
placement:
|
|
||||||
charm: ch:placement
|
|
||||||
num_units: 1
|
|
||||||
options:
|
|
||||||
openstack-origin: *openstack-origin
|
|
||||||
to:
|
|
||||||
- '15'
|
|
||||||
channel: yoga/edge
|
|
||||||
|
|
||||||
prometheus2:
|
|
||||||
# Pin prometheus2 charm version Bug #1891942
|
|
||||||
charm: cs:prometheus2-18
|
|
||||||
num_units: 1
|
|
||||||
series: focal
|
|
||||||
to:
|
|
||||||
- '16'
|
|
||||||
|
|
||||||
relations:
|
|
||||||
- - 'nova-compute:amqp'
|
|
||||||
- 'rabbitmq-server:amqp'
|
|
||||||
|
|
||||||
- - 'nova-compute:image-service'
|
|
||||||
- 'glance:image-service'
|
|
||||||
|
|
||||||
- - 'nova-compute:ceph'
|
|
||||||
- 'ceph-mon:client'
|
|
||||||
|
|
||||||
- - nova-compute:ceph-access
|
|
||||||
- cinder-ceph:ceph-access
|
|
||||||
|
|
||||||
- - 'keystone:shared-db'
|
|
||||||
- 'keystone-mysql-router:shared-db'
|
|
||||||
- - 'keystone-mysql-router:db-router'
|
|
||||||
- 'mysql-innodb-cluster:db-router'
|
|
||||||
|
|
||||||
- - 'glance:shared-db'
|
|
||||||
- 'glance-mysql-router:shared-db'
|
|
||||||
- - 'glance-mysql-router:db-router'
|
|
||||||
- 'mysql-innodb-cluster:db-router'
|
|
||||||
|
|
||||||
- - 'glance:identity-service'
|
|
||||||
- 'keystone:identity-service'
|
|
||||||
|
|
||||||
- - 'glance:amqp'
|
|
||||||
- 'rabbitmq-server:amqp'
|
|
||||||
|
|
||||||
- - 'glance:ceph'
|
|
||||||
- 'ceph-mon:client'
|
|
||||||
|
|
||||||
- - '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'
|
|
||||||
|
|
||||||
- - 'cinder-ceph:storage-backend'
|
|
||||||
- 'cinder:storage-backend'
|
|
||||||
|
|
||||||
- - 'cinder-ceph:ceph'
|
|
||||||
- 'ceph-mon:client'
|
|
||||||
|
|
||||||
- - 'ceph-osd:mon'
|
|
||||||
- 'ceph-mon:osd'
|
|
||||||
|
|
||||||
- - '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:identity-service'
|
|
||||||
- 'keystone:identity-service'
|
|
||||||
|
|
||||||
- - 'nova-cloud-controller:amqp'
|
|
||||||
- 'rabbitmq-server:amqp'
|
|
||||||
|
|
||||||
- - 'nova-cloud-controller:cloud-compute'
|
|
||||||
- 'nova-compute:cloud-compute'
|
|
||||||
|
|
||||||
- - 'nova-cloud-controller:image-service'
|
|
||||||
- 'glance:image-service'
|
|
||||||
|
|
||||||
- - 'placement:shared-db'
|
|
||||||
- 'placement-mysql-router:shared-db'
|
|
||||||
- - 'placement-mysql-router:db-router'
|
|
||||||
- 'mysql-innodb-cluster:db-router'
|
|
||||||
|
|
||||||
- - 'placement'
|
|
||||||
- 'keystone'
|
|
||||||
|
|
||||||
- - 'placement'
|
|
||||||
- 'nova-cloud-controller'
|
|
||||||
|
|
||||||
- - 'ceph-mon:prometheus'
|
|
||||||
- 'prometheus2:target'
|
|
|
@ -2,14 +2,13 @@ charm_name: ceph-mon
|
||||||
|
|
||||||
gate_bundles:
|
gate_bundles:
|
||||||
- focal-xena
|
- focal-xena
|
||||||
- impish-xena
|
- focal-yoga
|
||||||
|
|
||||||
dev_bundles:
|
dev_bundles:
|
||||||
- focal-yoga
|
|
||||||
- jammy-yoga
|
- jammy-yoga
|
||||||
|
|
||||||
smoke_bundles:
|
smoke_bundles:
|
||||||
- focal-xena
|
- focal-yoga
|
||||||
|
|
||||||
configure:
|
configure:
|
||||||
- zaza.openstack.charm_tests.glance.setup.add_lts_image
|
- zaza.openstack.charm_tests.glance.setup.add_lts_image
|
||||||
|
@ -24,5 +23,4 @@ tests:
|
||||||
|
|
||||||
tests_options:
|
tests_options:
|
||||||
force_deploy:
|
force_deploy:
|
||||||
- impish-xena
|
|
||||||
- jammy-yoga
|
- jammy-yoga
|
||||||
|
|
10
tox.ini
10
tox.ini
|
@ -51,11 +51,6 @@ commands =
|
||||||
charmcraft -v build
|
charmcraft -v build
|
||||||
{toxinidir}/rename.sh
|
{toxinidir}/rename.sh
|
||||||
|
|
||||||
[testenv:py35]
|
|
||||||
basepython = python3.5
|
|
||||||
deps = -r{toxinidir}/requirements.txt
|
|
||||||
-r{toxinidir}/test-requirements.txt
|
|
||||||
|
|
||||||
[testenv:py36]
|
[testenv:py36]
|
||||||
basepython = python3.6
|
basepython = python3.6
|
||||||
deps = -r{toxinidir}/requirements.txt
|
deps = -r{toxinidir}/requirements.txt
|
||||||
|
@ -76,6 +71,11 @@ basepython = python3.9
|
||||||
deps = -r{toxinidir}/requirements.txt
|
deps = -r{toxinidir}/requirements.txt
|
||||||
-r{toxinidir}/test-requirements.txt
|
-r{toxinidir}/test-requirements.txt
|
||||||
|
|
||||||
|
[testenv:py310]
|
||||||
|
basepython = python3.10
|
||||||
|
deps = -r{toxinidir}/requirements.txt
|
||||||
|
-r{toxinidir}/test-requirements.txt
|
||||||
|
|
||||||
[testenv:py3]
|
[testenv:py3]
|
||||||
basepython = python3
|
basepython = python3
|
||||||
deps = -r{toxinidir}/requirements.txt
|
deps = -r{toxinidir}/requirements.txt
|
||||||
|
|
Loading…
Reference in New Issue