Browse Source

Enable Ussuri and Focal

Do c-h sync.

Keep focal at dev-bundles until neighbouring charms are enabled.

Change-Id: Ia834fe36f9683703c58ea4c678b8aa454efcc38d
changes/28/708228/12
Frode Nordahl 2 years ago
parent
commit
67901457bd
No known key found for this signature in database GPG Key ID: 6A5D59A3BA48373F
  1. 2
      Makefile
  2. 23
      hooks/charmhelpers/contrib/openstack/policyd.py
  3. 113
      hooks/charmhelpers/contrib/openstack/utils.py
  4. 14
      hooks/charmhelpers/contrib/openstack/vaultlocker.py
  5. 2
      hooks/charmhelpers/contrib/storage/linux/ceph.py
  6. 1
      hooks/charmhelpers/core/host_factory/ubuntu.py
  7. 24
      hooks/charmhelpers/osplatform.py
  8. 1
      metadata.yaml
  9. 143
      tests/bundles/bionic-ussuri-ovs-dvr-snat.yaml
  10. 157
      tests/bundles/bionic-ussuri-ovs-dvr.yaml
  11. 148
      tests/bundles/bionic-ussuri-ovs.yaml
  12. 175
      tests/bundles/bionic-ussuri.yaml
  13. 187
      tests/bundles/eoan-train-ovn.yaml
  14. 186
      tests/bundles/focal-ussuri.yaml
  15. 14
      tests/tests.yaml

2
Makefile

@ -1,5 +1,5 @@
#!/usr/bin/make
PYTHON := /usr/bin/env python
PYTHON := /usr/bin/env python3
lint:
@tox -e pep8

23
hooks/charmhelpers/contrib/openstack/policyd.py

@ -17,7 +17,6 @@ import contextlib
import os
import six
import shutil
import sys
import yaml
import zipfile
@ -531,7 +530,7 @@ def clean_policyd_dir_for(service, keep_paths=None, user=None, group=None):
hookenv.log("Cleaning path: {}".format(path), level=hookenv.DEBUG)
if not os.path.exists(path):
ch_host.mkdir(path, owner=_user, group=_group, perms=0o775)
_scanner = os.scandir if sys.version_info > (3, 4) else _py2_scandir
_scanner = os.scandir if hasattr(os, 'scandir') else _fallback_scandir
for direntry in _scanner(path):
# see if the path should be kept.
if direntry.path in keep_paths:
@ -560,23 +559,25 @@ def maybe_create_directory_for(path, user, group):
@contextlib.contextmanager
def _py2_scandir(path):
"""provide a py2 implementation of os.scandir if this module ever gets used
in a py2 charm (unlikely). uses os.listdir() to get the names in the path,
and then mocks the is_dir() function using os.path.isdir() to check for a
def _fallback_scandir(path):
"""Fallback os.scandir implementation.
provide a fallback implementation of os.scandir if this module ever gets
used in a py2 or py34 charm. Uses os.listdir() to get the names in the path,
and then mocks the is_dir() function using os.path.isdir() to check for
directory.
:param path: the path to list the directories for
:type path: str
:returns: Generator that provides _P27Direntry objects
:rtype: ContextManager[_P27Direntry]
:returns: Generator that provides _FBDirectory objects
:rtype: ContextManager[_FBDirectory]
"""
for f in os.listdir(path):
yield _P27Direntry(f)
yield _FBDirectory(f)
class _P27Direntry(object):
"""Mock a scandir Direntry object with enough to use in
class _FBDirectory(object):
"""Mock a scandir Directory object with enough to use in
clean_policyd_dir_for
"""

113
hooks/charmhelpers/contrib/openstack/utils.py

@ -278,7 +278,7 @@ PACKAGE_CODENAMES = {
('14', 'rocky'),
('15', 'stein'),
('16', 'train'),
('17', 'ussuri'),
('18', 'ussuri'),
]),
'ceilometer-common': OrderedDict([
('5', 'liberty'),
@ -326,7 +326,7 @@ PACKAGE_CODENAMES = {
('14', 'rocky'),
('15', 'stein'),
('16', 'train'),
('17', 'ussuri'),
('18', 'ussuri'),
]),
}
@ -555,9 +555,8 @@ def reset_os_release():
_os_rel = None
def os_release(package, base=None, reset_cache=False):
'''
Returns OpenStack release codename from a cached global.
def os_release(package, base=None, reset_cache=False, source_key=None):
"""Returns OpenStack release codename from a cached global.
If reset_cache then unset the cached os_release version and return the
freshly determined version.
@ -565,7 +564,20 @@ def os_release(package, base=None, reset_cache=False):
If the codename can not be determined from either an installed package or
the installation source, the earliest release supported by the charm should
be returned.
'''
:param package: Name of package to determine release from
:type package: str
:param base: Fallback codename if endavours to determine from package fail
:type base: Optional[str]
:param reset_cache: Reset any cached codename value
:type reset_cache: bool
:param source_key: Name of source configuration option
(default: 'openstack-origin')
:type source_key: Optional[str]
:returns: OpenStack release codename
:rtype: str
"""
source_key = source_key or 'openstack-origin'
if not base:
base = UBUNTU_OPENSTACK_RELEASE[lsb_release()['DISTRIB_CODENAME']]
global _os_rel
@ -575,7 +587,7 @@ def os_release(package, base=None, reset_cache=False):
return _os_rel
_os_rel = (
get_os_codename_package(package, fatal=False) or
get_os_codename_install_source(config('openstack-origin')) or
get_os_codename_install_source(config(source_key)) or
base)
return _os_rel
@ -658,6 +670,93 @@ def config_value_changed(option):
return current != saved
def get_endpoint_key(service_name, relation_id, unit_name):
"""Return the key used to refer to an ep changed notification from a unit.
:param service_name: Service name eg nova, neutron, placement etc
:type service_name: str
:param relation_id: The id of the relation the unit is on.
:type relation_id: str
:param unit_name: The name of the unit publishing the notification.
:type unit_name: str
:returns: The key used to refer to an ep changed notification from a unit
:rtype: str
"""
return '{}-{}-{}'.format(
service_name,
relation_id.replace(':', '_'),
unit_name.replace('/', '_'))
def get_endpoint_notifications(service_names, rel_name='identity-service'):
"""Return all notifications for the given services.
:param service_names: List of service name.
:type service_name: List
:param rel_name: Name of the relation to query
:type rel_name: str
:returns: A dict containing the source of the notification and its nonce.
:rtype: Dict[str, str]
"""
notifications = {}
for rid in relation_ids(rel_name):
for unit in related_units(relid=rid):
ep_changed_json = relation_get(
rid=rid,
unit=unit,
attribute='ep_changed')
if ep_changed_json:
ep_changed = json.loads(ep_changed_json)
for service in service_names:
if ep_changed.get(service):
key = get_endpoint_key(service, rid, unit)
notifications[key] = ep_changed[service]
return notifications
def endpoint_changed(service_name, rel_name='identity-service'):
"""Whether a new notification has been recieved for an endpoint.
:param service_name: Service name eg nova, neutron, placement etc
:type service_name: str
:param rel_name: Name of the relation to query
:type rel_name: str
:returns: Whether endpoint has changed
:rtype: bool
"""
changed = False
with unitdata.HookData()() as t:
db = t[0]
notifications = get_endpoint_notifications(
[service_name],
rel_name=rel_name)
for key, nonce in notifications.items():
if db.get(key) != nonce:
juju_log(('New endpoint change notification found: '
'{}={}').format(key, nonce),
'INFO')
changed = True
break
return changed
def save_endpoint_changed_triggers(service_names, rel_name='identity-service'):
"""Save the enpoint triggers in db so it can be tracked if they changed.
:param service_names: List of service name.
:type service_name: List
:param rel_name: Name of the relation to query
:type rel_name: str
"""
with unitdata.HookData()() as t:
db = t[0]
notifications = get_endpoint_notifications(
service_names,
rel_name=rel_name)
for key, nonce in notifications.items():
db.set(key, nonce)
def save_script_rc(script_path="scripts/scriptrc", **env_vars):
"""
Write an rc file in the charm-delivered directory containing

14
hooks/charmhelpers/contrib/openstack/vaultlocker.py

@ -37,7 +37,19 @@ class VaultKVContext(context.OSContextGenerator):
)
def __call__(self):
import hvac
try:
import hvac
except ImportError:
# BUG: #1862085 - if the relation is made to vault, but the
# 'encrypt' option is not made, then the charm errors with an
# import warning. This catches that, logs a warning, and returns
# with an empty context.
hookenv.log("VaultKVContext: trying to use hvac pythong module "
"but it's not available. Is secrets-stroage relation "
"made, but encrypt option not set?",
level=hookenv.WARNING)
# return an emptry context on hvac import error
return {}
ctxt = {}
# NOTE(hopem): see https://bugs.launchpad.net/charm-helpers/+bug/1849323
db = unitdata.kv()

2
hooks/charmhelpers/contrib/storage/linux/ceph.py

@ -1042,7 +1042,7 @@ def filesystem_mounted(fs):
def make_filesystem(blk_device, fstype='ext4', timeout=10):
"""Make a new filesystem on the specified block device."""
count = 0
e_noent = os.errno.ENOENT
e_noent = errno.ENOENT
while not os.path.exists(blk_device):
if count >= timeout:
log('Gave up waiting on block device %s' % blk_device,

1
hooks/charmhelpers/core/host_factory/ubuntu.py

@ -25,6 +25,7 @@ UBUNTU_RELEASES = (
'cosmic',
'disco',
'eoan',
'focal'
)

24
hooks/charmhelpers/osplatform.py

@ -1,4 +1,5 @@
import platform
import os
def get_platform():
@ -9,9 +10,13 @@ def get_platform():
This string is used to decide which platform module should be imported.
"""
# linux_distribution is deprecated and will be removed in Python 3.7
# Warings *not* disabled, as we certainly need to fix this.
tuple_platform = platform.linux_distribution()
current_platform = tuple_platform[0]
# Warnings *not* disabled, as we certainly need to fix this.
if hasattr(platform, 'linux_distribution'):
tuple_platform = platform.linux_distribution()
current_platform = tuple_platform[0]
else:
current_platform = _get_platform_from_fs()
if "Ubuntu" in current_platform:
return "ubuntu"
elif "CentOS" in current_platform:
@ -26,3 +31,16 @@ def get_platform():
else:
raise RuntimeError("This module is not supported on {}."
.format(current_platform))
def _get_platform_from_fs():
"""Get Platform from /etc/os-release."""
with open(os.path.join(os.sep, 'etc', 'os-release')) as fin:
content = dict(
line.split('=', 1)
for line in fin.read().splitlines()
if '=' in line
)
for k, v in content.items():
content[k] = v.strip('"')
return content["NAME"]

1
metadata.yaml

@ -22,6 +22,7 @@ series:
- xenial
- bionic
- eoan
- focal
- trusty
provides:
nrpe-external-master:

143
tests/bundles/bionic-ussuri-ovs-dvr-snat.yaml

@ -0,0 +1,143 @@
variables:
openstack-origin: &openstack-origin cloud:bionic-ussuri/proposed
series: &series bionic
machines:
0:
constraints: "mem=3072M"
1: {}
2: {}
3: {}
4: {}
5: {}
6:
constraints: "root-disk=20G mem=4G"
7:
constraints: "root-disk=20G mem=4G"
8: {}
# We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "7"
applications:
percona-cluster:
charm: cs:~openstack-charmers-next/percona-cluster
num_units: 1
options:
source: *openstack-origin
to:
- '0'
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
options:
source: *openstack-origin
to:
- '1'
neutron-api:
charm: ../../../neutron-api
series: *series
num_units: 1
options:
# NOTE(fnordahl): At current state of upstream Neutron development this
# is a requirement. Remove once fixed upstream.
enable-ml2-port-security: true
manage-neutron-plugin-legacy-mode: true
overlay-network-type: 'vxlan'
l2-population: True
flat-network-providers: physnet1
neutron-security-groups: true
openstack-origin: *openstack-origin
enable-dvr: True
to:
- '2'
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '3'
glance:
charm: cs:~openstack-charmers-next/glance
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '4'
neutron-openvswitch:
charm: cs:~openstack-charmers-next/neutron-openvswitch
options:
use-dvr-snat: True
bridge-mappings: physnet1:br-ex
enable-local-dhcp-and-metadata: True
nova-cloud-controller:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
options:
network-manager: Neutron
openstack-origin: *openstack-origin
to:
- '5'
nova-compute:
charm: cs:~openstack-charmers-next/nova-compute
num_units: 2
options:
config-flags: default_ephemeral_format=ext4
enable-live-migration: true
enable-resize: true
migration-auth-type: ssh
openstack-origin: *openstack-origin
to:
- '6'
- '7'
placement:
charm: cs:~openstack-charmers-next/placement
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '8'
relations:
- - 'neutron-api:shared-db'
- 'percona-cluster:shared-db'
- - 'neutron-api:amqp'
- 'rabbitmq-server:amqp'
- - 'neutron-api:neutron-api'
- 'nova-cloud-controller:neutron-api'
- - 'neutron-api:identity-service'
- 'keystone:identity-service'
- - 'keystone:shared-db'
- 'percona-cluster:shared-db'
- - 'nova-compute:neutron-plugin'
- 'neutron-openvswitch:neutron-plugin'
- - 'neutron-api:neutron-plugin-api'
- 'neutron-openvswitch:neutron-plugin-api'
- - 'nova-cloud-controller:shared-db'
- 'percona-cluster:shared-db'
- - 'nova-cloud-controller:amqp'
- 'rabbitmq-server:amqp'
- - 'nova-compute:amqp'
- 'rabbitmq-server:amqp'
- - 'neutron-openvswitch:amqp'
- 'rabbitmq-server:amqp'
- - 'nova-cloud-controller:identity-service'
- 'keystone:identity-service'
- - 'nova-cloud-controller:cloud-compute'
- 'nova-compute:cloud-compute'
- - 'glance:identity-service'
- 'keystone:identity-service'
- - 'glance:shared-db'
- 'percona-cluster:shared-db'
- - 'glance:amqp'
- 'rabbitmq-server:amqp'
- - 'nova-compute:image-service'
- 'glance:image-service'
- - 'nova-cloud-controller:image-service'
- 'glance:image-service'
- - 'placement:shared-db'
- 'percona-cluster:shared-db'
- - 'placement:identity-service'
- 'keystone:identity-service'
- - 'placement:placement'
- 'nova-cloud-controller:placement'

157
tests/bundles/bionic-ussuri-ovs-dvr.yaml

@ -0,0 +1,157 @@
variables:
openstack-origin: &openstack-origin cloud:bionic-ussuri/proposed
series: &series bionic
machines:
0:
constraints: "mem=3072M"
1: {}
2: {}
3: {}
4: {}
5: {}
6: {}
7:
constraints: "root-disk=20G mem=4G"
8:
constraints: "root-disk=20G mem=4G"
9: {}
# We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "7"
applications:
percona-cluster:
charm: cs:~openstack-charmers-next/percona-cluster
num_units: 1
options:
source: *openstack-origin
to:
- '0'
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
options:
source: *openstack-origin
to:
- '1'
neutron-api:
charm: ../../../neutron-api
series: *series
num_units: 1
options:
# NOTE(fnordahl): At current state of upstream Neutron development this
# is a requirement. Remove once fixed upstream.
enable-ml2-port-security: true
manage-neutron-plugin-legacy-mode: true
overlay-network-type: 'vxlan'
l2-population: True
flat-network-providers: physnet1
neutron-security-groups: true
openstack-origin: *openstack-origin
enable-dvr: True
to:
- '2'
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '3'
glance:
charm: cs:~openstack-charmers-next/glance
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '4'
neutron-openvswitch:
charm: cs:~openstack-charmers-next/neutron-openvswitch
options:
enable-local-dhcp-and-metadata: True
bridge-mappings: physnet1:br-ex
neutron-gateway:
charm: cs:~openstack-charmers-next/neutron-gateway
num_units: 1
options:
bridge-mappings: physnet1:br-ex
openstack-origin: *openstack-origin
to:
- '5'
nova-cloud-controller:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
options:
network-manager: Neutron
openstack-origin: *openstack-origin
to:
- '6'
nova-compute:
charm: cs:~openstack-charmers-next/nova-compute
num_units: 2
options:
config-flags: default_ephemeral_format=ext4
enable-live-migration: true
enable-resize: true
migration-auth-type: ssh
openstack-origin: *openstack-origin
to:
- '7'
- '8'
placement:
charm: cs:~openstack-charmers-next/placement
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '9'
relations:
- - 'neutron-api:shared-db'
- 'percona-cluster:shared-db'
- - 'neutron-api:amqp'
- 'rabbitmq-server:amqp'
- - 'neutron-api:neutron-api'
- 'nova-cloud-controller:neutron-api'
- - 'neutron-api:neutron-plugin-api'
- 'neutron-gateway:neutron-plugin-api'
- - 'neutron-api:identity-service'
- 'keystone:identity-service'
- - 'keystone:shared-db'
- 'percona-cluster:shared-db'
- - 'nova-compute:neutron-plugin'
- 'neutron-openvswitch:neutron-plugin'
- - 'neutron-api:neutron-plugin-api'
- 'neutron-openvswitch:neutron-plugin-api'
- - 'nova-cloud-controller:shared-db'
- 'percona-cluster:shared-db'
- - 'neutron-gateway:amqp'
- 'rabbitmq-server:amqp'
- - 'nova-cloud-controller:amqp'
- 'rabbitmq-server:amqp'
- - 'nova-compute:amqp'
- 'rabbitmq-server:amqp'
- - 'neutron-openvswitch:amqp'
- 'rabbitmq-server:amqp'
- - 'nova-cloud-controller:identity-service'
- 'keystone:identity-service'
- - 'nova-cloud-controller:cloud-compute'
- 'nova-compute:cloud-compute'
- - 'glance:identity-service'
- 'keystone:identity-service'
- - 'glance:shared-db'
- 'percona-cluster:shared-db'
- - 'glance:amqp'
- 'rabbitmq-server:amqp'
- - 'nova-compute:image-service'
- 'glance:image-service'
- - 'nova-cloud-controller:image-service'
- 'glance:image-service'
- - 'nova-cloud-controller:quantum-network-service'
- 'neutron-gateway:quantum-network-service'
- - 'placement:shared-db'
- 'percona-cluster:shared-db'
- - 'placement:identity-service'
- 'keystone:identity-service'
- - 'placement:placement'
- 'nova-cloud-controller:placement'

148
tests/bundles/bionic-ussuri-ovs.yaml

@ -0,0 +1,148 @@
variables:
openstack-origin: &openstack-origin cloud:bionic-ussuri/proposed
series: &series bionic
machines:
0:
constraints: "mem=3072M"
1: {}
2: {}
3: {}
4: {}
5: {}
6: {}
7:
constraints: "root-disk=20G mem=4G"
8:
constraints: "root-disk=20G mem=4G"
9: {}
# We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "7"
applications:
percona-cluster:
charm: cs:~openstack-charmers-next/percona-cluster
num_units: 1
options:
source: *openstack-origin
to:
- '0'
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
options:
source: *openstack-origin
to:
- '1'
neutron-api:
charm: ../../../neutron-api
series: *series
num_units: 1
options:
# NOTE(fnordahl): At current state of upstream Neutron development this
# is a requirement. Remove once fixed upstream.
enable-ml2-port-security: true
manage-neutron-plugin-legacy-mode: true
flat-network-providers: physnet1
neutron-security-groups: true
openstack-origin: *openstack-origin
to:
- '2'
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '3'
glance:
charm: cs:~openstack-charmers-next/glance
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '4'
neutron-openvswitch:
charm: cs:~openstack-charmers-next/neutron-openvswitch
neutron-gateway:
charm: cs:~openstack-charmers-next/neutron-gateway
num_units: 1
options:
bridge-mappings: physnet1:br-ex
openstack-origin: *openstack-origin
to:
- '5'
nova-cloud-controller:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
options:
network-manager: Neutron
openstack-origin: *openstack-origin
to:
- '6'
nova-compute:
charm: cs:~openstack-charmers-next/nova-compute
num_units: 2
options:
config-flags: default_ephemeral_format=ext4
enable-live-migration: true
enable-resize: true
migration-auth-type: ssh
openstack-origin: *openstack-origin
to:
- '7'
- '8'
placement:
charm: cs:~openstack-charmers-next/placement
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '9'
relations:
- - 'neutron-api:shared-db'
- 'percona-cluster:shared-db'
- - 'neutron-api:amqp'
- 'rabbitmq-server:amqp'
- - 'neutron-api:neutron-api'
- 'nova-cloud-controller:neutron-api'
- - 'neutron-api:neutron-plugin-api'
- 'neutron-gateway:neutron-plugin-api'
- - 'neutron-api:identity-service'
- 'keystone:identity-service'
- - 'keystone:shared-db'
- 'percona-cluster:shared-db'
- - 'nova-compute:neutron-plugin'
- 'neutron-openvswitch:neutron-plugin'
- - 'nova-cloud-controller:shared-db'
- 'percona-cluster:shared-db'
- - 'neutron-gateway:amqp'
- 'rabbitmq-server:amqp'
- - 'nova-cloud-controller:amqp'
- 'rabbitmq-server:amqp'
- - 'nova-compute:amqp'
- 'rabbitmq-server:amqp'
- - 'neutron-openvswitch:amqp'
- 'rabbitmq-server:amqp'
- - 'nova-cloud-controller:identity-service'
- 'keystone:identity-service'
- - 'nova-cloud-controller:cloud-compute'
- 'nova-compute:cloud-compute'
- - 'glance:identity-service'
- 'keystone:identity-service'
- - 'glance:shared-db'
- 'percona-cluster:shared-db'
- - 'glance:amqp'
- 'rabbitmq-server:amqp'
- - 'nova-compute:image-service'
- 'glance:image-service'
- - 'nova-cloud-controller:image-service'
- 'glance:image-service'
- - 'nova-cloud-controller:quantum-network-service'
- 'neutron-gateway:quantum-network-service'
- - 'placement:shared-db'
- 'percona-cluster:shared-db'
- - 'placement:identity-service'
- 'keystone:identity-service'
- - 'placement:placement'
- 'nova-cloud-controller:placement'

175
tests/bundles/bionic-ussuri.yaml

@ -0,0 +1,175 @@
variables:
openstack-origin: &openstack-origin cloud:bionic-ussuri/proposed
series: &series bionic
machines:
0:
constraints: "mem=3072M"
1: {}
2: {}
3: {}
4: {}
5: {}
6: {}
7: {}
8: {}
9: {}
10:
constraints: "root-disk=20G mem=4G"
11:
constraints: "root-disk=20G mem=4G"
12: {}
# We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "7"
applications:
percona-cluster:
charm: cs:~openstack-charmers-next/percona-cluster
num_units: 1
options:
source: *openstack-origin
to:
- '0'
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
options:
source: *openstack-origin
to:
- '1'
vault:
charm: cs:~openstack-charmers-next/vault
num_units: 1
to:
- '2'
ovn-central:
charm: cs:~openstack-charmers-next/ovn-central
num_units: 3
options:
source: *openstack-origin
to:
- '3'
- '4'
- '5'
neutron-api-plugin-ovn:
charm: cs:~openstack-charmers-next/neutron-api-plugin-ovn
neutron-api:
charm: cs:~openstack-charmers-next/neutron-api
series: *series
num_units: 1
options:
# NOTE(fnordahl): At current state of upstream Neutron development this
# is a requirement. Remove once fixed upstream.
enable-ml2-port-security: true
flat-network-providers: physnet1
neutron-security-groups: true
openstack-origin: *openstack-origin
to:
- '6'
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '7'
glance:
charm: cs:~openstack-charmers-next/glance
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '8'
nova-cloud-controller:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
options:
network-manager: Neutron
openstack-origin: *openstack-origin
to:
- '9'
ovn-chassis:
charm: cs:~openstack-charmers-next/ovn-chassis
nova-compute:
charm: cs:~openstack-charmers-next/nova-compute
num_units: 2
options:
config-flags: default_ephemeral_format=ext4
enable-live-migration: true
enable-resize: true
migration-auth-type: ssh
openstack-origin: *openstack-origin
to:
- '10'
- '11'
placement:
charm: cs:~openstack-charmers-next/placement
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '12'
relations:
- - neutron-api:shared-db
- percona-cluster:shared-db
- - neutron-api:amqp
- rabbitmq-server:amqp
- - neutron-api:neutron-api
- nova-cloud-controller:neutron-api
- - neutron-api:identity-service
- keystone:identity-service
- - keystone:shared-db
- percona-cluster:shared-db
- - nova-cloud-controller:shared-db
- percona-cluster:shared-db
- - nova-cloud-controller:amqp
- rabbitmq-server:amqp
- - nova-compute:amqp
- rabbitmq-server:amqp
- - nova-cloud-controller:identity-service
- keystone:identity-service
- - nova-cloud-controller:cloud-compute
- nova-compute:cloud-compute
- - glance:identity-service
- keystone:identity-service
- - glance:shared-db
- percona-cluster:shared-db
- - glance:amqp
- rabbitmq-server:amqp
- - nova-compute:image-service
- glance:image-service
- - nova-cloud-controller:image-service
- glance:image-service
- - placement:shared-db
- percona-cluster:shared-db
- - placement:identity-service
- keystone:identity-service
- - placement:placement
- nova-cloud-controller:placement
- - neutron-api-plugin-ovn:neutron-plugin
- neutron-api:neutron-plugin-api-subordinate
- - vault:shared-db
- percona-cluster:shared-db
- - ovn-central:certificates
- vault:certificates
- - ovn-central:ovsdb-cms
- neutron-api-plugin-ovn:ovsdb-cms
- - neutron-api:certificates
- vault:certificates
- - ovn-chassis:nova-compute
- nova-compute:neutron-plugin
- - ovn-chassis:certificates
- vault:certificates
- - ovn-chassis:ovsdb
- ovn-central:ovsdb
- - vault:certificates
- neutron-api-plugin-ovn:certificates
- - vault:certificates
- glance:certificates
- - vault:certificates
- keystone:certificates
- - vault:certificates
- nova-cloud-controller:certificates
- - vault:certificates
- placement:certificates

187
tests/bundles/eoan-train-ovn.yaml

@ -0,0 +1,187 @@
variables:
openstack-origin: &openstack-origin distro
series: &series eoan
machines:
0:
constraints: "mem=3072M"
1:
constraints: "mem=3072M"
2:
constraints: "mem=3072M"
3: {}
4: {}
5: {}
6: {}
7: {}
8: {}
9: {}
10:
constraints: "root-disk=20G mem=4G"
11:
constraints: "root-disk=20G mem=4G"
12: {}
# We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "7"
applications:
keystone-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
nova-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
glance-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
neutron-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'
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
options:
source: *openstack-origin
to:
- '1'
vault:
charm: cs:~openstack-charmers-next/vault
num_units: 1
to:
- '2'
ovn-central:
charm: cs:~openstack-charmers-next/ovn-central
num_units: 3
options:
source: *openstack-origin
to:
- '3'
- '4'
- '5'
neutron-api-plugin-ovn:
charm: cs:~openstack-charmers-next/neutron-api-plugin-ovn
neutron-api:
charm: cs:~openstack-charmers-next/neutron-api
series: *series
num_units: 1
options:
manage-neutron-plugin-legacy-mode: false
flat-network-providers: physnet1
neutron-security-groups: true
openstack-origin: *openstack-origin
to:
- '6'
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '7'
glance:
charm: cs:~openstack-charmers-next/glance
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '8'
nova-cloud-controller:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
options:
network-manager: Neutron
openstack-origin: *openstack-origin
to:
- '9'
ovn-chassis:
charm: cs:~openstack-charmers-next/ovn-chassis
nova-compute:
charm: cs:~openstack-charmers-next/nova-compute
num_units: 2
options:
config-flags: default_ephemeral_format=ext4
enable-live-migration: true
enable-resize: true
migration-auth-type: ssh
openstack-origin: *openstack-origin
to:
- '10'
- '11'
placement:
charm: cs:~openstack-charmers-next/placement
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '12'
relations:
- - neutron-api:amqp
- rabbitmq-server:amqp
- - neutron-api:neutron-api
- nova-cloud-controller:neutron-api
- - neutron-api:identity-service
- keystone:identity-service
- - nova-cloud-controller:amqp
- rabbitmq-server:amqp
- - nova-compute:amqp
- rabbitmq-server:amqp
- - nova-cloud-controller:identity-service
- keystone:identity-service
- - nova-cloud-controller:cloud-compute
- nova-compute:cloud-compute
- - glance:identity-service
- keystone:identity-service
- - glance:amqp
- rabbitmq-server:amqp
- - nova-compute:image-service
- glance:image-service
- - nova-cloud-controller:image-service
- glance:image-service
- - placement:identity-service
- keystone:identity-service
- - placement:placement
- nova-cloud-controller:placement
- - neutron-api-plugin-ovn:neutron-plugin
- neutron-api:neutron-plugin-api-subordinate
- - ovn-central:certificates
- vault:certificates
- - ovn-central:ovsdb-cms
- neutron-api-plugin-ovn:ovsdb-cms
- - neutron-api:certificates
- vault:certificates
- - ovn-chassis:nova-compute
- nova-compute:neutron-plugin
- - ovn-chassis:certificates
- vault:certificates
- - ovn-chassis:ovsdb
- ovn-central:ovsdb
- - vault:certificates
- neutron-api-plugin-ovn:certificates
- - vault:certificates
- glance:certificates
- - vault:certificates
- keystone:certificates
- - vault:certificates
- nova-cloud-controller:certificates
- - vault:certificates
- placement:certificates
- ["keystone:shared-db", "keystone-mysql-router:shared-db"]
- ["glance:shared-db", "glance-mysql-router:shared-db"]
- ["nova-cloud-controller:shared-db", "nova-mysql-router:shared-db"]
- ["neutron-api:shared-db", "neutron-mysql-router:shared-db"]
- ["placement:shared-db", "placement-mysql-router:shared-db"]
- ["vault:shared-db", "vault-mysql-router:shared-db"]
- ["keystone-mysql-router:db-router", "mysql-innodb-cluster:db-router"]
- ["nova-mysql-router:db-router", "mysql-innodb-cluster:db-router"]
- ["glance-mysql-router:db-router", "mysql-innodb-cluster:db-router"]
- ["neutron-mysql-router:db-router", "mysql-innodb-cluster:db-router"]
- ["placement-mysql-router:db-router", "mysql-innodb-cluster:db-router"]
- ["vault-mysql-router:db-router", "mysql-innodb-cluster:db-router"]

186
tests/bundles/focal-ussuri.yaml

@ -0,0 +1,186 @@
variables:
openstack-origin: &openstack-origin distro
series: &series focal
machines:
0:
constraints: "mem=3072M"
1:
constraints: "mem=3072M"
2:
constraints: "mem=3072M"
3: {}
4: {}
5: {}
6: {}
7: {}
8: {}
9: {}
10:
constraints: "root-disk=20G mem=4G"
11:
constraints: "root-disk=20G mem=4G"
12: {}
# We specify machine placements for these to improve iteration
# time, given that machine "0" comes up way before machine "7"
applications:
keystone-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
nova-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
glance-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
neutron-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'
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
options:
source: *openstack-origin
to:
- '1'
vault:
charm: cs:~openstack-charmers-next/vault
num_units: 1
to:
- '2'
ovn-central:
charm: cs:~openstack-charmers-next/ovn-central
num_units: 3
options:
source: *openstack-origin
to:
- '3'
- '4'
- '5'
neutron-api-plugin-ovn:
charm: cs:~openstack-charmers-next/neutron-api-plugin-ovn
neutron-api:
charm: cs:~openstack-charmers-next/neutron-api
series: *series
num_units: 1
options:
flat-network-providers: physnet1
neutron-security-groups: true
openstack-origin: *openstack-origin
to:
- '6'
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '7'
glance:
charm: cs:~openstack-charmers-next/glance
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '8'
nova-cloud-controller:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
options:
network-manager: Neutron
openstack-origin: *openstack-origin
to:
- '9'
ovn-chassis:
charm: cs:~openstack-charmers-next/ovn-chassis
nova-compute:
charm: cs:~openstack-charmers-next/nova-compute
num_units: 2
options:
config-flags: default_ephemeral_format=ext4
enable-live-migration: true
enable-resize: true
migration-auth-type: ssh
openstack-origin: *openstack-origin
to:
- '10'
- '11'
placement:
charm: cs:~openstack-charmers-next/placement
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '12'
relations:
- - neutron-api:amqp
- rabbitmq-server:amqp
- - neutron-api:neutron-api
- nova-cloud-controller:neutron-api
- - neutron-api:identity-service
- keystone:identity-service
- - nova-cloud-controller:amqp
- rabbitmq-server:amqp
- - nova-compute:amqp
- rabbitmq-server:amqp
- - nova-cloud-controller:identity-service
- keystone:identity-service
- - nova-cloud-controller:cloud-compute
- nova-compute:cloud-compute
- - glance:identity-service
- keystone:identity-service
- - glance:amqp
- rabbitmq-server:amqp
- - nova-compute:image-service
- glance:image-service
- - nova-cloud-controller:image-service
- glance:image-service
- - placement:identity-service
- keystone:identity-service
- - placement:placement
- nova-cloud-controller:placement
- - neutron-api-plugin-ovn:neutron-plugin
- neutron-api:neutron-plugin-api-subordinate
- - ovn-central:certificates
- vault:certificates
- - ovn-central:ovsdb-cms
- neutron-api-plugin-ovn:ovsdb-cms
- - neutron-api:certificates
- vault:certificates
- - ovn-chassis:nova-compute
- nova-compute:neutron-plugin
- - ovn-chassis:certificates
- vault:certificates
- - ovn-chassis:ovsdb
- ovn-central:ovsdb
- - vault:certificates
- neutron-api-plugin-ovn:certificates
- - vault:certificates
- glance:certificates
- - vault:certificates
- keystone:certificates
- - vault:certificates
- nova-cloud-controller:certificates
- - vault:certificates
- placement:certificates
- ["keystone:shared-db", "keystone-mysql-router:shared-db"]
- ["glance:shared-db", "glance-mysql-router:shared-db"]
- ["nova-cloud-controller:shared-db", "nova-mysql-router:shared-db"]
- ["neutron-api:shared-db", "neutron-mysql-router:shared-db"]
- ["placement:shared-db", "placement-mysql-router:shared-db"]
- ["vault:shared-db", "vault-mysql-router:shared-db"]
- ["keystone-mysql-router:db-router", "mysql-innodb-cluster:db-router"]
- ["nova-mysql-router:db-router", "mysql-innodb-cluster:db-router"]
- ["glance-mysql-router:db-router", "mysql-innodb-cluster:db-router"]
- ["neutron-mysql-router:db-router", "mysql-innodb-cluster:db-router"]
- ["placement-mysql-router:db-router", "mysql-innodb-cluster:db-router"]
- ["vault-mysql-router:db-router", "mysql-innodb-cluster:db-router"]

14
tests/tests.yaml

@ -1,7 +1,9 @@
charm_name: neutron-api
gate_bundles:
- bionic-train-ovn: bionic-train-ovn
- vault: bionic-ussuri
- vault: eoan-train-ovn
- vault: bionic-train-ovn
- bionic-train-dvr-snat
- bionic-train-dvr
- bionic-train
@ -18,14 +20,18 @@ gate_bundles:
- xenial-mitaka
- trusty-mitaka
smoke_bundles:
- bionic-train
- vault: bionic-ussuri
dev_bundles:
- vault: focal-ussuri
- bionic-ussuri-ovs-dvr-snat
- bionic-ussuri-ovs-dvr
- bionic-ussuri-ovs
tests:
- zaza.openstack.charm_tests.neutron.tests.NeutronApiTest
- zaza.openstack.charm_tests.neutron.tests.SecurityTest
- zaza.openstack.charm_tests.neutron.tests.NeutronNetworkingTest
- zaza.openstack.charm_tests.policyd.tests.NeutronApiTests
- bionic-train-ovn:
- vault:
- zaza.openstack.charm_tests.neutron.tests.NeutronApiTest
- zaza.openstack.charm_tests.neutron.tests.SecurityTest
- zaza.openstack.charm_tests.neutron.tests.NeutronNetworkingTest
@ -36,7 +42,7 @@ configure:
- zaza.openstack.charm_tests.nova.setup.create_flavors
- zaza.openstack.charm_tests.nova.setup.manage_ssh_key
- zaza.openstack.charm_tests.keystone.setup.add_demo_user
- bionic-train-ovn:
- vault:
- zaza.openstack.charm_tests.vault.setup.auto_initialize
- zaza.openstack.charm_tests.glance.setup.add_lts_image
- zaza.openstack.charm_tests.neutron.setup.basic_overcloud_network

Loading…
Cancel
Save