Merge "Add local ganesha.conf for specific configuration"

This commit is contained in:
Zuul 2021-07-02 15:30:34 +00:00 committed by Gerrit Code Review
commit 090bf5ff5c
11 changed files with 887 additions and 34 deletions

View File

@ -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

View File

@ -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'

View File

@ -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')

View File

@ -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 -%}

View 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;
}

View File

@ -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" %}

View 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'

View File

@ -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:

View 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'

View File

@ -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

View File

@ -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',