Merge "Add local ganesha.conf for specific configuration"
This commit is contained in:
commit
090bf5ff5c
@ -3,11 +3,14 @@
|
||||
- charm-unit-jobs
|
||||
check:
|
||||
jobs:
|
||||
- bionic-stein
|
||||
- bionic-train
|
||||
- bionic-ussuri
|
||||
- focal-ussuri
|
||||
- focal-victoria
|
||||
# Wallaby is currently broken because of a change in the
|
||||
# default token-type requirements in manila's policy.json
|
||||
# that the charm / tests need to learn to handle
|
||||
# - focal-wallaby
|
||||
- groovy-victoria
|
||||
vars:
|
||||
needs_charm_build: true
|
||||
charm_build_name: manila-ganesha
|
||||
charm_build_name: manila-ganesha
|
||||
|
@ -21,9 +21,14 @@ import charms_openstack.charm
|
||||
import charms_openstack.adapters
|
||||
import charms_openstack.plugins
|
||||
import charmhelpers.contrib.network.ip as ch_net_ip
|
||||
from charmhelpers.core.host import cmp_pkgrevno
|
||||
from charmhelpers.core.host import (
|
||||
cmp_pkgrevno,
|
||||
service_pause,
|
||||
)
|
||||
from charmhelpers.core.hookenv import (
|
||||
config,
|
||||
goal_state,
|
||||
local_unit,
|
||||
log,
|
||||
)
|
||||
from charmhelpers.contrib.hahelpers.cluster import (
|
||||
@ -41,6 +46,7 @@ MANILA_CONF = MANILA_DIR + "manila.conf"
|
||||
MANILA_LOGGING_CONF = MANILA_DIR + "logging.conf"
|
||||
MANILA_API_PASTE_CONF = MANILA_DIR + "api-paste.ini"
|
||||
CEPH_CONF = '/etc/ceph/ceph.conf'
|
||||
GANESHA_CONF = '/etc/ganesha/ganesha.conf'
|
||||
|
||||
CEPH_CAPABILITIES = [
|
||||
"mds", "allow *",
|
||||
@ -70,6 +76,11 @@ def access_ip(config):
|
||||
return config.charm_instance.access_ip
|
||||
|
||||
|
||||
@charms_openstack.adapters.config_property
|
||||
def recovery_backend(config):
|
||||
return config.charm_instance.recovery_backend
|
||||
|
||||
|
||||
@charms_openstack.adapters.config_property
|
||||
def local_ip(_config):
|
||||
return ch_net_ip.get_relation_ip('tenant-storage')
|
||||
@ -205,6 +216,7 @@ class ManilaGaneshaCharm(charms_openstack.charm.HAOpenStackCharm,
|
||||
@property
|
||||
def restart_map(self):
|
||||
return {
|
||||
GANESHA_CONF: ['nfs-ganesha'],
|
||||
MANILA_CONF: ['manila-share', 'nfs-ganesha'],
|
||||
MANILA_API_PASTE_CONF: ['manila-share', 'nfs-ganesha'],
|
||||
MANILA_LOGGING_CONF: ['manila-share', 'nfs-ganesha'],
|
||||
@ -228,6 +240,21 @@ class ManilaGaneshaCharm(charms_openstack.charm.HAOpenStackCharm,
|
||||
return (errno.ENXIO if cmp_pkgrevno('pacemaker', '2.0.0') < 0
|
||||
else CRM_EX_NOSUCH)
|
||||
|
||||
def install(self):
|
||||
"""Install packages related to this charm based on
|
||||
contents of self.packages attribute, after first
|
||||
configuring the installation source.
|
||||
"""
|
||||
# Use goal-state to determine if we are expecting multiple units
|
||||
# and, if so, mask the manila-share service so that it only ever
|
||||
# gets run by pacemaker.
|
||||
_goal_state = goal_state()
|
||||
peers = (key for key in _goal_state['units']
|
||||
if '/' in key and key != local_unit())
|
||||
if len(list(peers)) > 0:
|
||||
service_pause('manila-share')
|
||||
super().install()
|
||||
|
||||
def service_restart(self, service_name):
|
||||
res_name = self.service_to_resource_map.get(service_name, None)
|
||||
if not res_name or not peer_units():
|
||||
@ -330,6 +357,10 @@ class ManilaGaneshaCharm(charms_openstack.charm.HAOpenStackCharm,
|
||||
return vip
|
||||
return net_addr
|
||||
|
||||
@property
|
||||
def recovery_backend(self):
|
||||
return 'fs'
|
||||
|
||||
def enable_memcache(self, *args, **kwargs):
|
||||
return False
|
||||
|
||||
@ -367,3 +398,12 @@ class ManilaGaneshaCharm(charms_openstack.charm.HAOpenStackCharm,
|
||||
'permissions': CEPH_CAPABILITIES,
|
||||
'client': ch_core.hookenv.application_name()})
|
||||
ceph.send_request_if_needed(rq)
|
||||
|
||||
|
||||
class ManilaGaneshaUssuriCharm(ManilaGaneshaCharm,
|
||||
):
|
||||
release = 'ussuri'
|
||||
|
||||
@property
|
||||
def recovery_backend(self):
|
||||
return 'rados_ng'
|
||||
|
@ -135,7 +135,7 @@ def cluster_connected(hacluster):
|
||||
|
||||
|
||||
@reactive.when('cluster.connected')
|
||||
@reactive.when_not('ha.available', 'ha-resources-exposed')
|
||||
@reactive.when_not('services-disabled')
|
||||
def disable_services():
|
||||
"""Ensure systemd units remain disabled/stopped until HA setup is complete
|
||||
|
||||
@ -148,3 +148,7 @@ def disable_services():
|
||||
for service in ['nfs-ganesha', 'manila-share']:
|
||||
ch_core.host.service('disable', service)
|
||||
ch_core.host.service('stop', service)
|
||||
# We have to unmask this service here in case it was masked early
|
||||
# based on the expectation of multiple units via goal-state
|
||||
ch_core.host.service('unmask', 'manila-share')
|
||||
reactive.set_flag('services-disabled')
|
||||
|
@ -13,5 +13,5 @@ mon host = {{ ceph.monitors }}
|
||||
[client.{{ options.application_name }}]
|
||||
client mount uid = 0
|
||||
client mount gid = 0
|
||||
log file = /var/log/ceph/ceph-client.manila.log
|
||||
log file = /var/log/ceph/ceph-client.{{ options.application_name }}.log
|
||||
{% endif -%}
|
||||
|
186
src/templates/rocky/ganesha.conf
Normal file
186
src/templates/rocky/ganesha.conf
Normal file
@ -0,0 +1,186 @@
|
||||
# The following is copied from the Ganesha source examples:
|
||||
# https://github.com/nfs-ganesha/nfs-ganesha/blob/576e3bafccb6da5c7ea18d7099013f7494ce8d2c/src/config_samples/ceph.conf
|
||||
#
|
||||
# It is possible to use FSAL_CEPH to provide an NFS gateway to CephFS. The
|
||||
# following sample config should be useful as a starting point for
|
||||
# configuration. This basic configuration is suitable for a standalone NFS
|
||||
# server, or an active/passive configuration managed by some sort of clustering
|
||||
# software (e.g. pacemaker, docker, etc.).
|
||||
#
|
||||
# Note too that it is also possible to put a config file in RADOS, and give
|
||||
# ganesha a rados URL from which to fetch it. For instance, if the config
|
||||
# file is stored in a RADOS pool called "nfs-ganesha", in a namespace called
|
||||
# "ganesha-namespace" with an object name of "ganesha-config":
|
||||
#
|
||||
# %url rados://nfs-ganesha/ganesha-namespace/ganesha-config
|
||||
#
|
||||
# If we only export cephfs (or RGW), store the configs and recovery data in
|
||||
# RADOS, and mandate NFSv4.1+ for access, we can avoid any sort of local
|
||||
# storage, and ganesha can run as an unprivileged user (even inside a
|
||||
# locked-down container).
|
||||
#
|
||||
|
||||
NFS_CORE_PARAM
|
||||
{
|
||||
# Ganesha can lift the NFS grace period early if NLM is disabled.
|
||||
Enable_NLM = false;
|
||||
|
||||
# rquotad doesn't add any value here. CephFS doesn't support per-uid
|
||||
# quotas anyway.
|
||||
Enable_RQUOTA = false;
|
||||
|
||||
# In this configuration, we're just exporting NFSv4. In practice, it's
|
||||
# best to use NFSv4.1+ to get the benefit of sessions.
|
||||
Protocols = 4;
|
||||
}
|
||||
|
||||
NFSv4
|
||||
{
|
||||
# Modern versions of libcephfs have delegation support, though they
|
||||
# are not currently recommended in clustered configurations. They are
|
||||
# disabled by default but can be reenabled for singleton or
|
||||
# active/passive configurations.
|
||||
# Delegations = false;
|
||||
|
||||
# One can use any recovery backend with this configuration, but being
|
||||
# able to store it in RADOS is a nice feature that makes it easy to
|
||||
# migrate the daemon to another host.
|
||||
#
|
||||
# For a single-node or active/passive configuration, rados_ng driver
|
||||
# is preferred. For active/active clustered configurations, the
|
||||
# rados_cluster backend can be used instead. See the
|
||||
# ganesha-rados-grace manpage for more information.
|
||||
RecoveryBackend = {{ options.recovery_backend }};
|
||||
|
||||
# NFSv4.0 clients do not send a RECLAIM_COMPLETE, so we end up having
|
||||
# to wait out the entire grace period if there are any. Avoid them.
|
||||
Minor_Versions = 1,2;
|
||||
}
|
||||
|
||||
# The libcephfs client will aggressively cache information while it
|
||||
# can, so there is little benefit to ganesha actively caching the same
|
||||
# objects. Doing so can also hurt cache coherency. Here, we disable
|
||||
# as much attribute and directory caching as we can.
|
||||
MDCACHE {
|
||||
# Size the dirent cache down as small as possible.
|
||||
Dir_Chunk = 0;
|
||||
}
|
||||
|
||||
EXPORT
|
||||
{
|
||||
# Unique export ID number for this export
|
||||
Export_ID=100;
|
||||
|
||||
# We're only interested in NFSv4 in this configuration
|
||||
Protocols = 4;
|
||||
|
||||
# NFSv4 does not allow UDP transport
|
||||
Transports = TCP;
|
||||
|
||||
#
|
||||
# Path into the cephfs tree.
|
||||
#
|
||||
# Note that FSAL_CEPH does not support subtree checking, so there is
|
||||
# no way to validate that a filehandle presented by a client is
|
||||
# reachable via an exported subtree.
|
||||
#
|
||||
# For that reason, we just export "/" here.
|
||||
Path = /;
|
||||
|
||||
#
|
||||
# The pseudoroot path. This is where the export will appear in the
|
||||
# NFS pseudoroot namespace.
|
||||
#
|
||||
Pseudo = /cephfs_a/;
|
||||
|
||||
# We want to be able to read and write
|
||||
Access_Type = RW;
|
||||
|
||||
# Time out attribute cache entries immediately
|
||||
Attr_Expiration_Time = 0;
|
||||
|
||||
# Enable read delegations? libcephfs v13.0.1 and later allow the
|
||||
# ceph client to set a delegation. While it's possible to allow RW
|
||||
# delegations it's not recommended to enable them until ganesha
|
||||
# acquires CB_GETATTR support.
|
||||
#
|
||||
# Note too that delegations may not be safe in clustered
|
||||
# configurations, so it's probably best to just disable them until
|
||||
# this problem is resolved:
|
||||
#
|
||||
# http://tracker.ceph.com/issues/24802
|
||||
#
|
||||
# Delegations = R;
|
||||
|
||||
# NFS servers usually decide to "squash" incoming requests from the
|
||||
# root user to a "nobody" user. It's possible to disable that, but for
|
||||
# now, we leave it enabled.
|
||||
# Squash = root;
|
||||
|
||||
FSAL {
|
||||
# FSAL_CEPH export
|
||||
Name = CEPH;
|
||||
|
||||
#
|
||||
# Ceph filesystems have a name string associated with them, and
|
||||
# modern versions of libcephfs can mount them based on the
|
||||
# name. The default is to mount the default filesystem in the
|
||||
# cluster (usually the first one created).
|
||||
#
|
||||
# Filesystem = "cephfs_a";
|
||||
|
||||
#
|
||||
# Ceph clusters have their own authentication scheme (cephx).
|
||||
# Ganesha acts as a cephfs client. This is the client username
|
||||
# to use. This user will need to be created before running
|
||||
# ganesha.
|
||||
#
|
||||
# Typically ceph clients have a name like "client.foo". This
|
||||
# setting should not contain the "client." prefix.
|
||||
#
|
||||
# See:
|
||||
#
|
||||
# http://docs.ceph.com/docs/jewel/rados/operations/user-management/
|
||||
#
|
||||
# The default is to set this to NULL, which means that the
|
||||
# userid is set to the default in libcephfs (which is
|
||||
# typically "admin").
|
||||
#
|
||||
User_Id = "{{ options.application_name }}";
|
||||
|
||||
#
|
||||
# Key to use for the session (if any). If not set, it uses the
|
||||
# normal search path for cephx keyring files to find a key:
|
||||
#
|
||||
# Secret_Access_Key = "YOUR SECRET KEY HERE";
|
||||
}
|
||||
}
|
||||
|
||||
# The below were taken from the Manila docs at
|
||||
# https://docs.openstack.org/manila/queens/contributor/ganesha.html
|
||||
|
||||
# To read exports from RADOS objects
|
||||
RADOS_URLS {
|
||||
ceph_conf = "/etc/ceph/ceph.conf";
|
||||
userid = "{{ options.application_name }}";
|
||||
}
|
||||
|
||||
%url rados://{{ options.application_name }}/ganesha-export-index
|
||||
# To store client recovery data in the same RADOS pool
|
||||
|
||||
RADOS_KV {
|
||||
ceph_conf = "/etc/ceph/ceph.conf";
|
||||
userid = "{{ options.application_name }}";
|
||||
pool = {{ options.application_name }};
|
||||
}
|
||||
|
||||
# Config block for FSAL_CEPH
|
||||
CEPH
|
||||
{
|
||||
# Path to a ceph.conf file for this ceph cluster.
|
||||
# Ceph_Conf = /etc/ceph/ceph.conf;
|
||||
|
||||
# User file-creation mask. These bits will be masked off from the unix
|
||||
# permissions on newly-created inodes.
|
||||
# umask = 0;
|
||||
}
|
@ -14,7 +14,7 @@ share_name_template = share-%s
|
||||
my_ip = {{ options.access_ip }}
|
||||
enabled_share_backends = cephfsnfs1
|
||||
scheduler_driver = manila.scheduler.drivers.filter.FilterScheduler
|
||||
|
||||
host = {{ options.access_ip }}
|
||||
debug = {{ options.debug }}
|
||||
|
||||
{% include "parts/section-transport-url" %}
|
||||
|
309
src/tests/bundles/focal-wallaby.yaml
Normal file
309
src/tests/bundles/focal-wallaby.yaml
Normal file
@ -0,0 +1,309 @@
|
||||
variables:
|
||||
openstack-origin: &openstack-origin cloud:focal-wallaby
|
||||
|
||||
series: focal
|
||||
|
||||
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':
|
||||
constraints: mem=8G
|
||||
'17':
|
||||
constraints: mem=8G
|
||||
'18':
|
||||
'19':
|
||||
'20':
|
||||
'21':
|
||||
'22':
|
||||
|
||||
services:
|
||||
|
||||
manila-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
manila-ganesha-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
keystone-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
neutron-api-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
nova-cloud-controller-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
glance-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
placement-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'
|
||||
- '1'
|
||||
- '2'
|
||||
|
||||
manila-ganesha-az1:
|
||||
num_units: 3
|
||||
charm: ../../../manila-ganesha
|
||||
options:
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '3'
|
||||
- '4'
|
||||
- '5'
|
||||
|
||||
ceph-mon:
|
||||
charm: cs:~openstack-charmers-next/ceph-mon
|
||||
num_units: 3
|
||||
options:
|
||||
source: *openstack-origin
|
||||
to:
|
||||
- '6'
|
||||
- '7'
|
||||
|
||||
ceph-osd:
|
||||
charm: cs:~openstack-charmers-next/ceph-osd
|
||||
num_units: 3
|
||||
options:
|
||||
source: *openstack-origin
|
||||
storage:
|
||||
osd-devices: 'cinder,10G'
|
||||
to:
|
||||
- '8'
|
||||
- '9'
|
||||
- '10'
|
||||
|
||||
ceph-fs:
|
||||
charm: cs:~openstack-charmers-next/ceph-fs
|
||||
num_units: 2
|
||||
options:
|
||||
source: *openstack-origin
|
||||
to:
|
||||
- '11'
|
||||
- '12'
|
||||
|
||||
manila:
|
||||
charm: cs:~openstack-charmers-next/manila
|
||||
num_units: 1
|
||||
options:
|
||||
default-share-backend: cephfsnfs1
|
||||
share-protocols: NFS
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '13'
|
||||
|
||||
nova-cloud-controller:
|
||||
charm: cs:~openstack-charmers-next/nova-cloud-controller
|
||||
num_units: 1
|
||||
options:
|
||||
network-manager: Neutron
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '14'
|
||||
|
||||
placement:
|
||||
charm: cs:~openstack-charmers-next/placement
|
||||
num_units: 1
|
||||
options:
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '15'
|
||||
|
||||
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:
|
||||
- '16'
|
||||
- '17'
|
||||
|
||||
glance:
|
||||
charm: cs:~openstack-charmers-next/glance
|
||||
num_units: 1
|
||||
options:
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '18'
|
||||
|
||||
neutron-api:
|
||||
charm: cs:~openstack-charmers-next/neutron-api
|
||||
num_units: 1
|
||||
options:
|
||||
manage-neutron-plugin-legacy-mode: true
|
||||
neutron-plugin: ovs
|
||||
flat-network-providers: physnet1
|
||||
neutron-security-groups: true
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '19'
|
||||
|
||||
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:
|
||||
- '20'
|
||||
|
||||
rabbitmq-server:
|
||||
charm: cs:~openstack-charmers-next/rabbitmq-server
|
||||
num_units: 1
|
||||
options:
|
||||
source: *openstack-origin
|
||||
to:
|
||||
- '21'
|
||||
|
||||
keystone:
|
||||
charm: cs:~openstack-charmers-next/keystone
|
||||
num_units: 1
|
||||
options:
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '22'
|
||||
|
||||
relations:
|
||||
|
||||
- - 'ceph-mon'
|
||||
- 'ceph-osd'
|
||||
|
||||
- - 'ceph-mon'
|
||||
- 'ceph-fs'
|
||||
|
||||
- - 'ceph-mon'
|
||||
- 'manila-ganesha-az1'
|
||||
|
||||
- - 'manila:shared-db'
|
||||
- 'manila-mysql-router:shared-db'
|
||||
- - 'manila-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - 'manila-ganesha-az1'
|
||||
- 'rabbitmq-server'
|
||||
|
||||
- - 'manila-ganesha-az1'
|
||||
- 'keystone'
|
||||
|
||||
- - 'manila'
|
||||
- 'manila-ganesha-az1'
|
||||
|
||||
- - 'manila-ganesha-az1:shared-db'
|
||||
- 'manila-ganesha-mysql-router:shared-db'
|
||||
- - 'manila-ganesha-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - 'manila'
|
||||
- 'rabbitmq-server'
|
||||
|
||||
- - 'manila'
|
||||
- 'keystone'
|
||||
|
||||
- - 'keystone:shared-db'
|
||||
- 'keystone-mysql-router:shared-db'
|
||||
- - 'keystone-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - 'neutron-api:shared-db'
|
||||
- 'neutron-api-mysql-router:shared-db'
|
||||
- - 'neutron-api-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - 'neutron-api:amqp'
|
||||
- 'rabbitmq-server:amqp'
|
||||
|
||||
- - 'neutron-api:neutron-api'
|
||||
- 'nova-cloud-controller:neutron-api'
|
||||
|
||||
- - 'placement:placement'
|
||||
- 'nova-cloud-controller:placement'
|
||||
|
||||
- - 'placement:amqp'
|
||||
- 'rabbitmq-server:amqp'
|
||||
|
||||
- - 'placement:shared-db'
|
||||
- 'placement-mysql-router:shared-db'
|
||||
- - 'placement-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - 'placement:identity-service'
|
||||
- 'keystone:identity-service'
|
||||
|
||||
- - 'neutron-api:neutron-plugin-api'
|
||||
- 'neutron-gateway:neutron-plugin-api'
|
||||
|
||||
- - 'neutron-api:identity-service'
|
||||
- 'keystone:identity-service'
|
||||
|
||||
- - 'nova-compute:neutron-plugin'
|
||||
- 'neutron-openvswitch:neutron-plugin'
|
||||
|
||||
- - 'nova-cloud-controller:shared-db'
|
||||
- 'nova-cloud-controller-mysql-router:shared-db'
|
||||
- - 'nova-cloud-controller-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - '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'
|
||||
- 'glance-mysql-router:shared-db'
|
||||
- - 'glance-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - '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'
|
@ -25,14 +25,16 @@ machines:
|
||||
'13':
|
||||
'14':
|
||||
'15':
|
||||
constraints: mem=8G
|
||||
'16':
|
||||
constraints: mem=8G
|
||||
'17':
|
||||
constraints: mem=8G
|
||||
'18':
|
||||
constraints: mem=8G
|
||||
'19':
|
||||
'20':
|
||||
'21':
|
||||
'22':
|
||||
'23':
|
||||
|
||||
services:
|
||||
|
||||
@ -62,12 +64,14 @@ services:
|
||||
- '2'
|
||||
|
||||
manila-ganesha-az1:
|
||||
num_units: 1
|
||||
num_units: 3
|
||||
charm: ../../../manila-ganesha
|
||||
options:
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '3'
|
||||
- '4'
|
||||
- '5'
|
||||
|
||||
ceph-mon:
|
||||
charm: cs:~openstack-charmers-next/ceph-mon
|
||||
@ -75,9 +79,9 @@ services:
|
||||
options:
|
||||
source: *openstack-origin
|
||||
to:
|
||||
- '4'
|
||||
- '5'
|
||||
- '6'
|
||||
- '7'
|
||||
- '8'
|
||||
|
||||
ceph-osd:
|
||||
charm: cs:~openstack-charmers-next/ceph-osd
|
||||
@ -87,9 +91,9 @@ services:
|
||||
storage:
|
||||
osd-devices: 'cinder,10G'
|
||||
to:
|
||||
- '7'
|
||||
- '8'
|
||||
- '9'
|
||||
- '10'
|
||||
- '11'
|
||||
|
||||
ceph-fs:
|
||||
charm: cs:~openstack-charmers-next/ceph-fs
|
||||
@ -97,8 +101,8 @@ services:
|
||||
options:
|
||||
source: *openstack-origin
|
||||
to:
|
||||
- '10'
|
||||
- '11'
|
||||
- '12'
|
||||
- '13'
|
||||
|
||||
manila:
|
||||
charm: cs:~openstack-charmers-next/manila
|
||||
@ -108,7 +112,7 @@ services:
|
||||
share-protocols: NFS
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '12'
|
||||
- '14'
|
||||
|
||||
nova-cloud-controller:
|
||||
charm: cs:~openstack-charmers-next/nova-cloud-controller
|
||||
@ -117,7 +121,7 @@ services:
|
||||
network-manager: Neutron
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '13'
|
||||
- '15'
|
||||
|
||||
placement:
|
||||
charm: cs:~openstack-charmers-next/placement
|
||||
@ -125,7 +129,7 @@ services:
|
||||
options:
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '14'
|
||||
- '16'
|
||||
|
||||
nova-compute:
|
||||
charm: cs:~openstack-charmers-next/nova-compute
|
||||
@ -137,8 +141,8 @@ services:
|
||||
migration-auth-type: ssh
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '15'
|
||||
- '16'
|
||||
- '17'
|
||||
- '18'
|
||||
|
||||
glance:
|
||||
charm: cs:~openstack-charmers-next/glance
|
||||
@ -146,7 +150,7 @@ services:
|
||||
options:
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '17'
|
||||
- '19'
|
||||
|
||||
neutron-api:
|
||||
charm: cs:~openstack-charmers-next/neutron-api
|
||||
@ -158,7 +162,7 @@ services:
|
||||
neutron-security-groups: true
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '18'
|
||||
- '20'
|
||||
|
||||
neutron-openvswitch:
|
||||
charm: cs:~openstack-charmers-next/neutron-openvswitch
|
||||
@ -170,7 +174,7 @@ services:
|
||||
bridge-mappings: physnet1:br-ex
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '19'
|
||||
- '21'
|
||||
|
||||
rabbitmq-server:
|
||||
charm: cs:~openstack-charmers-next/rabbitmq-server
|
||||
@ -178,7 +182,7 @@ services:
|
||||
options:
|
||||
source: *openstack-origin
|
||||
to:
|
||||
- '20'
|
||||
- '22'
|
||||
|
||||
keystone:
|
||||
charm: cs:~openstack-charmers-next/keystone
|
||||
@ -186,7 +190,7 @@ services:
|
||||
options:
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '21'
|
||||
- '23'
|
||||
|
||||
relations:
|
||||
|
||||
|
311
src/tests/bundles/hirsute-wallaby.yaml
Normal file
311
src/tests/bundles/hirsute-wallaby.yaml
Normal file
@ -0,0 +1,311 @@
|
||||
variables:
|
||||
openstack-origin: &openstack-origin distro
|
||||
|
||||
series: hirsute
|
||||
|
||||
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':
|
||||
'17':
|
||||
constraints: mem=8G
|
||||
'18':
|
||||
constraints: mem=8G
|
||||
'19':
|
||||
'20':
|
||||
'21':
|
||||
'22':
|
||||
'23':
|
||||
|
||||
services:
|
||||
|
||||
manila-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
manila-ganesha-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
keystone-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
neutron-api-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
nova-cloud-controller-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
glance-mysql-router:
|
||||
charm: cs:~openstack-charmers-next/mysql-router
|
||||
placement-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'
|
||||
- '1'
|
||||
- '2'
|
||||
|
||||
manila-ganesha-az1:
|
||||
num_units: 3
|
||||
charm: ../../../manila-ganesha
|
||||
options:
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '3'
|
||||
- '4'
|
||||
- '5'
|
||||
|
||||
ceph-mon:
|
||||
charm: cs:~openstack-charmers-next/ceph-mon
|
||||
num_units: 3
|
||||
options:
|
||||
source: *openstack-origin
|
||||
to:
|
||||
- '6'
|
||||
- '7'
|
||||
- '8'
|
||||
|
||||
ceph-osd:
|
||||
charm: cs:~openstack-charmers-next/ceph-osd
|
||||
num_units: 3
|
||||
options:
|
||||
source: *openstack-origin
|
||||
storage:
|
||||
osd-devices: 'cinder,10G'
|
||||
to:
|
||||
- '9'
|
||||
- '10'
|
||||
- '11'
|
||||
|
||||
ceph-fs:
|
||||
charm: cs:~openstack-charmers-next/ceph-fs
|
||||
num_units: 2
|
||||
options:
|
||||
source: *openstack-origin
|
||||
to:
|
||||
- '12'
|
||||
- '13'
|
||||
|
||||
manila:
|
||||
charm: cs:~openstack-charmers-next/manila
|
||||
num_units: 1
|
||||
options:
|
||||
default-share-backend: cephfsnfs1
|
||||
share-protocols: NFS
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '14'
|
||||
|
||||
nova-cloud-controller:
|
||||
charm: cs:~openstack-charmers-next/nova-cloud-controller
|
||||
num_units: 1
|
||||
options:
|
||||
network-manager: Neutron
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '15'
|
||||
|
||||
placement:
|
||||
charm: cs:~openstack-charmers-next/placement
|
||||
num_units: 1
|
||||
options:
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '16'
|
||||
|
||||
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:
|
||||
- '17'
|
||||
- '18'
|
||||
|
||||
glance:
|
||||
charm: cs:~openstack-charmers-next/glance
|
||||
num_units: 1
|
||||
options:
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '19'
|
||||
|
||||
neutron-api:
|
||||
charm: cs:~openstack-charmers-next/neutron-api
|
||||
num_units: 1
|
||||
options:
|
||||
manage-neutron-plugin-legacy-mode: true
|
||||
neutron-plugin: ovs
|
||||
flat-network-providers: physnet1
|
||||
neutron-security-groups: true
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '20'
|
||||
|
||||
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:
|
||||
- '21'
|
||||
|
||||
rabbitmq-server:
|
||||
charm: cs:~openstack-charmers-next/rabbitmq-server
|
||||
num_units: 1
|
||||
options:
|
||||
source: *openstack-origin
|
||||
to:
|
||||
- '22'
|
||||
|
||||
keystone:
|
||||
charm: cs:~openstack-charmers-next/keystone
|
||||
num_units: 1
|
||||
options:
|
||||
openstack-origin: *openstack-origin
|
||||
to:
|
||||
- '23'
|
||||
|
||||
relations:
|
||||
|
||||
- - 'ceph-mon'
|
||||
- 'ceph-osd'
|
||||
|
||||
- - 'ceph-mon'
|
||||
- 'ceph-fs'
|
||||
|
||||
- - 'ceph-mon'
|
||||
- 'manila-ganesha-az1'
|
||||
|
||||
- - 'manila:shared-db'
|
||||
- 'manila-mysql-router:shared-db'
|
||||
- - 'manila-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - 'manila-ganesha-az1'
|
||||
- 'rabbitmq-server'
|
||||
|
||||
- - 'manila-ganesha-az1'
|
||||
- 'keystone'
|
||||
|
||||
- - 'manila'
|
||||
- 'manila-ganesha-az1'
|
||||
|
||||
- - 'manila-ganesha-az1:shared-db'
|
||||
- 'manila-ganesha-mysql-router:shared-db'
|
||||
- - 'manila-ganesha-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - 'manila'
|
||||
- 'rabbitmq-server'
|
||||
|
||||
- - 'manila'
|
||||
- 'keystone'
|
||||
|
||||
- - 'keystone:shared-db'
|
||||
- 'keystone-mysql-router:shared-db'
|
||||
- - 'keystone-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - 'neutron-api:shared-db'
|
||||
- 'neutron-api-mysql-router:shared-db'
|
||||
- - 'neutron-api-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - 'neutron-api:amqp'
|
||||
- 'rabbitmq-server:amqp'
|
||||
|
||||
- - 'neutron-api:neutron-api'
|
||||
- 'nova-cloud-controller:neutron-api'
|
||||
|
||||
- - 'placement:placement'
|
||||
- 'nova-cloud-controller:placement'
|
||||
|
||||
- - 'placement:amqp'
|
||||
- 'rabbitmq-server:amqp'
|
||||
|
||||
- - 'placement:shared-db'
|
||||
- 'placement-mysql-router:shared-db'
|
||||
- - 'placement-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - 'placement:identity-service'
|
||||
- 'keystone:identity-service'
|
||||
|
||||
- - 'neutron-api:neutron-plugin-api'
|
||||
- 'neutron-gateway:neutron-plugin-api'
|
||||
|
||||
- - 'neutron-api:identity-service'
|
||||
- 'keystone:identity-service'
|
||||
|
||||
- - 'nova-compute:neutron-plugin'
|
||||
- 'neutron-openvswitch:neutron-plugin'
|
||||
|
||||
- - 'nova-cloud-controller:shared-db'
|
||||
- 'nova-cloud-controller-mysql-router:shared-db'
|
||||
- - 'nova-cloud-controller-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - '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'
|
||||
- 'glance-mysql-router:shared-db'
|
||||
- - 'glance-mysql-router:db-router'
|
||||
- 'mysql-innodb-cluster:db-router'
|
||||
|
||||
- - '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'
|
@ -1,16 +1,13 @@
|
||||
charm_name: manila-ganesha
|
||||
dev_bundles:
|
||||
- bionic
|
||||
- bionic-rocky
|
||||
- groovy-victoria
|
||||
gate_bundles:
|
||||
- bionic-stein
|
||||
- bionic-train
|
||||
- bionic-ussuri
|
||||
- focal-ussuri
|
||||
- focal-victoria
|
||||
- focal-wallaby
|
||||
- groovy-victoria
|
||||
smoke_bundles:
|
||||
- bionic-train
|
||||
- focal-ussuri
|
||||
target_deploy_status: {}
|
||||
tests:
|
||||
- zaza.openstack.charm_tests.manila_ganesha.tests.ManilaGaneshaTests
|
||||
|
@ -55,8 +55,7 @@ class TestRegisteredHooks(test_utils.TestRegisteredHooks):
|
||||
'configure_ganesha': ('ganesha-pool-configured',),
|
||||
'enable_services_in_non_ha': ('cluster.connected',),
|
||||
'cluster_connected': ('ha-resources-exposed',),
|
||||
'disable_services': ('ha.available',
|
||||
'ha-resources-exposed',),
|
||||
'disable_services': ('services-disabled',),
|
||||
},
|
||||
'when_all': {
|
||||
'configure_ganesha': ('config.rendered',
|
||||
|
Loading…
Reference in New Issue
Block a user