Enable Ussuri and Focal
Do c-h sync. Keep focal at dev-bundles until neighbouring charms are enabled. Change-Id: Ia834fe36f9683703c58ea4c678b8aa454efcc38d
This commit is contained in:
parent
4ac5e3f71c
commit
67901457bd
2
Makefile
2
Makefile
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/make
|
#!/usr/bin/make
|
||||||
PYTHON := /usr/bin/env python
|
PYTHON := /usr/bin/env python3
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
@tox -e pep8
|
@tox -e pep8
|
||||||
|
|
|
@ -17,7 +17,6 @@ import contextlib
|
||||||
import os
|
import os
|
||||||
import six
|
import six
|
||||||
import shutil
|
import shutil
|
||||||
import sys
|
|
||||||
import yaml
|
import yaml
|
||||||
import zipfile
|
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)
|
hookenv.log("Cleaning path: {}".format(path), level=hookenv.DEBUG)
|
||||||
if not os.path.exists(path):
|
if not os.path.exists(path):
|
||||||
ch_host.mkdir(path, owner=_user, group=_group, perms=0o775)
|
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):
|
for direntry in _scanner(path):
|
||||||
# see if the path should be kept.
|
# see if the path should be kept.
|
||||||
if direntry.path in keep_paths:
|
if direntry.path in keep_paths:
|
||||||
|
@ -560,23 +559,25 @@ def maybe_create_directory_for(path, user, group):
|
||||||
|
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def _py2_scandir(path):
|
def _fallback_scandir(path):
|
||||||
"""provide a py2 implementation of os.scandir if this module ever gets used
|
"""Fallback os.scandir implementation.
|
||||||
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
|
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.
|
directory.
|
||||||
|
|
||||||
:param path: the path to list the directories for
|
:param path: the path to list the directories for
|
||||||
:type path: str
|
:type path: str
|
||||||
:returns: Generator that provides _P27Direntry objects
|
:returns: Generator that provides _FBDirectory objects
|
||||||
:rtype: ContextManager[_P27Direntry]
|
:rtype: ContextManager[_FBDirectory]
|
||||||
"""
|
"""
|
||||||
for f in os.listdir(path):
|
for f in os.listdir(path):
|
||||||
yield _P27Direntry(f)
|
yield _FBDirectory(f)
|
||||||
|
|
||||||
|
|
||||||
class _P27Direntry(object):
|
class _FBDirectory(object):
|
||||||
"""Mock a scandir Direntry object with enough to use in
|
"""Mock a scandir Directory object with enough to use in
|
||||||
clean_policyd_dir_for
|
clean_policyd_dir_for
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
|
@ -278,7 +278,7 @@ PACKAGE_CODENAMES = {
|
||||||
('14', 'rocky'),
|
('14', 'rocky'),
|
||||||
('15', 'stein'),
|
('15', 'stein'),
|
||||||
('16', 'train'),
|
('16', 'train'),
|
||||||
('17', 'ussuri'),
|
('18', 'ussuri'),
|
||||||
]),
|
]),
|
||||||
'ceilometer-common': OrderedDict([
|
'ceilometer-common': OrderedDict([
|
||||||
('5', 'liberty'),
|
('5', 'liberty'),
|
||||||
|
@ -326,7 +326,7 @@ PACKAGE_CODENAMES = {
|
||||||
('14', 'rocky'),
|
('14', 'rocky'),
|
||||||
('15', 'stein'),
|
('15', 'stein'),
|
||||||
('16', 'train'),
|
('16', 'train'),
|
||||||
('17', 'ussuri'),
|
('18', 'ussuri'),
|
||||||
]),
|
]),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -555,9 +555,8 @@ def reset_os_release():
|
||||||
_os_rel = None
|
_os_rel = None
|
||||||
|
|
||||||
|
|
||||||
def os_release(package, base=None, reset_cache=False):
|
def os_release(package, base=None, reset_cache=False, source_key=None):
|
||||||
'''
|
"""Returns OpenStack release codename from a cached global.
|
||||||
Returns OpenStack release codename from a cached global.
|
|
||||||
|
|
||||||
If reset_cache then unset the cached os_release version and return the
|
If reset_cache then unset the cached os_release version and return the
|
||||||
freshly determined version.
|
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
|
If the codename can not be determined from either an installed package or
|
||||||
the installation source, the earliest release supported by the charm should
|
the installation source, the earliest release supported by the charm should
|
||||||
be returned.
|
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:
|
if not base:
|
||||||
base = UBUNTU_OPENSTACK_RELEASE[lsb_release()['DISTRIB_CODENAME']]
|
base = UBUNTU_OPENSTACK_RELEASE[lsb_release()['DISTRIB_CODENAME']]
|
||||||
global _os_rel
|
global _os_rel
|
||||||
|
@ -575,7 +587,7 @@ def os_release(package, base=None, reset_cache=False):
|
||||||
return _os_rel
|
return _os_rel
|
||||||
_os_rel = (
|
_os_rel = (
|
||||||
get_os_codename_package(package, fatal=False) or
|
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)
|
base)
|
||||||
return _os_rel
|
return _os_rel
|
||||||
|
|
||||||
|
@ -658,6 +670,93 @@ def config_value_changed(option):
|
||||||
return current != saved
|
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):
|
def save_script_rc(script_path="scripts/scriptrc", **env_vars):
|
||||||
"""
|
"""
|
||||||
Write an rc file in the charm-delivered directory containing
|
Write an rc file in the charm-delivered directory containing
|
||||||
|
|
|
@ -37,7 +37,19 @@ class VaultKVContext(context.OSContextGenerator):
|
||||||
)
|
)
|
||||||
|
|
||||||
def __call__(self):
|
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 = {}
|
ctxt = {}
|
||||||
# NOTE(hopem): see https://bugs.launchpad.net/charm-helpers/+bug/1849323
|
# NOTE(hopem): see https://bugs.launchpad.net/charm-helpers/+bug/1849323
|
||||||
db = unitdata.kv()
|
db = unitdata.kv()
|
||||||
|
|
|
@ -1042,7 +1042,7 @@ def filesystem_mounted(fs):
|
||||||
def make_filesystem(blk_device, fstype='ext4', timeout=10):
|
def make_filesystem(blk_device, fstype='ext4', timeout=10):
|
||||||
"""Make a new filesystem on the specified block device."""
|
"""Make a new filesystem on the specified block device."""
|
||||||
count = 0
|
count = 0
|
||||||
e_noent = os.errno.ENOENT
|
e_noent = errno.ENOENT
|
||||||
while not os.path.exists(blk_device):
|
while not os.path.exists(blk_device):
|
||||||
if count >= timeout:
|
if count >= timeout:
|
||||||
log('Gave up waiting on block device %s' % blk_device,
|
log('Gave up waiting on block device %s' % blk_device,
|
||||||
|
|
|
@ -25,6 +25,7 @@ UBUNTU_RELEASES = (
|
||||||
'cosmic',
|
'cosmic',
|
||||||
'disco',
|
'disco',
|
||||||
'eoan',
|
'eoan',
|
||||||
|
'focal'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import platform
|
import platform
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
def get_platform():
|
def get_platform():
|
||||||
|
@ -9,9 +10,13 @@ def get_platform():
|
||||||
This string is used to decide which platform module should be imported.
|
This string is used to decide which platform module should be imported.
|
||||||
"""
|
"""
|
||||||
# linux_distribution is deprecated and will be removed in Python 3.7
|
# linux_distribution is deprecated and will be removed in Python 3.7
|
||||||
# Warings *not* disabled, as we certainly need to fix this.
|
# Warnings *not* disabled, as we certainly need to fix this.
|
||||||
tuple_platform = platform.linux_distribution()
|
if hasattr(platform, 'linux_distribution'):
|
||||||
current_platform = tuple_platform[0]
|
tuple_platform = platform.linux_distribution()
|
||||||
|
current_platform = tuple_platform[0]
|
||||||
|
else:
|
||||||
|
current_platform = _get_platform_from_fs()
|
||||||
|
|
||||||
if "Ubuntu" in current_platform:
|
if "Ubuntu" in current_platform:
|
||||||
return "ubuntu"
|
return "ubuntu"
|
||||||
elif "CentOS" in current_platform:
|
elif "CentOS" in current_platform:
|
||||||
|
@ -26,3 +31,16 @@ def get_platform():
|
||||||
else:
|
else:
|
||||||
raise RuntimeError("This module is not supported on {}."
|
raise RuntimeError("This module is not supported on {}."
|
||||||
.format(current_platform))
|
.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"]
|
||||||
|
|
|
@ -22,6 +22,7 @@ series:
|
||||||
- xenial
|
- xenial
|
||||||
- bionic
|
- bionic
|
||||||
- eoan
|
- eoan
|
||||||
|
- focal
|
||||||
- trusty
|
- trusty
|
||||||
provides:
|
provides:
|
||||||
nrpe-external-master:
|
nrpe-external-master:
|
||||||
|
|
|
@ -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'
|
|
@ -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'
|
|
@ -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'
|
|
@ -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
|
|
@ -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"]
|
|
@ -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"]
|
|
@ -1,7 +1,9 @@
|
||||||
charm_name: neutron-api
|
charm_name: neutron-api
|
||||||
|
|
||||||
gate_bundles:
|
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-snat
|
||||||
- bionic-train-dvr
|
- bionic-train-dvr
|
||||||
- bionic-train
|
- bionic-train
|
||||||
|
@ -18,14 +20,18 @@ gate_bundles:
|
||||||
- xenial-mitaka
|
- xenial-mitaka
|
||||||
- trusty-mitaka
|
- trusty-mitaka
|
||||||
smoke_bundles:
|
smoke_bundles:
|
||||||
- bionic-train
|
- vault: bionic-ussuri
|
||||||
dev_bundles:
|
dev_bundles:
|
||||||
|
- vault: focal-ussuri
|
||||||
|
- bionic-ussuri-ovs-dvr-snat
|
||||||
|
- bionic-ussuri-ovs-dvr
|
||||||
|
- bionic-ussuri-ovs
|
||||||
tests:
|
tests:
|
||||||
- zaza.openstack.charm_tests.neutron.tests.NeutronApiTest
|
- zaza.openstack.charm_tests.neutron.tests.NeutronApiTest
|
||||||
- zaza.openstack.charm_tests.neutron.tests.SecurityTest
|
- zaza.openstack.charm_tests.neutron.tests.SecurityTest
|
||||||
- zaza.openstack.charm_tests.neutron.tests.NeutronNetworkingTest
|
- zaza.openstack.charm_tests.neutron.tests.NeutronNetworkingTest
|
||||||
- zaza.openstack.charm_tests.policyd.tests.NeutronApiTests
|
- zaza.openstack.charm_tests.policyd.tests.NeutronApiTests
|
||||||
- bionic-train-ovn:
|
- vault:
|
||||||
- zaza.openstack.charm_tests.neutron.tests.NeutronApiTest
|
- zaza.openstack.charm_tests.neutron.tests.NeutronApiTest
|
||||||
- zaza.openstack.charm_tests.neutron.tests.SecurityTest
|
- zaza.openstack.charm_tests.neutron.tests.SecurityTest
|
||||||
- zaza.openstack.charm_tests.neutron.tests.NeutronNetworkingTest
|
- 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.create_flavors
|
||||||
- zaza.openstack.charm_tests.nova.setup.manage_ssh_key
|
- zaza.openstack.charm_tests.nova.setup.manage_ssh_key
|
||||||
- zaza.openstack.charm_tests.keystone.setup.add_demo_user
|
- 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.vault.setup.auto_initialize
|
||||||
- zaza.openstack.charm_tests.glance.setup.add_lts_image
|
- zaza.openstack.charm_tests.glance.setup.add_lts_image
|
||||||
- zaza.openstack.charm_tests.neutron.setup.basic_overcloud_network
|
- zaza.openstack.charm_tests.neutron.setup.basic_overcloud_network
|
||||||
|
|
Loading…
Reference in New Issue