Ensure that we restart nfs-ganesha and manila share after config.

Recent changes to manila-ganesha broke how non-HA
deployments were configured, causing the manila-share
and nfs-ganesha processes to potentially start before
the config for them is correctly prepared. This
change ensures that these services are restarted once
their config is ready.

Change-Id: I4e63e64612554d74ffaca5c4e07b90f7ceb88d59
This commit is contained in:
Chris MacNaughton
2021-09-06 13:19:43 +02:00
committed by Aurelien Lourot
parent dd0a450e7f
commit 8724a06d13
4 changed files with 327 additions and 6 deletions

View File

@@ -5,6 +5,7 @@
jobs:
- bionic-ussuri
- focal-ussuri
- ganesha-focal-ussuri-non-ha
- focal-victoria
# Wallaby is currently broken because of a change in the
# default token-type requirements in manila's policy.json
@@ -14,3 +15,10 @@
vars:
needs_charm_build: true
charm_build_name: manila-ganesha
- job:
name: ganesha-focal-ussuri-non-ha
parent: bionic-ussuri
dependencies:
- bionic-ussuri
vars:
tox_extra_args: focal-ussuri-non-ha

View File

@@ -76,13 +76,17 @@ def render_things(*args):
charm_instance.assess_status()
@reactive.when('config.rendered')
@reactive.when_not('cluster.connected')
@reactive.when('config.rendered',
'ganesha-pool-configured')
@reactive.when_not('cluster.connected',
'services-started')
def enable_services_in_non_ha():
with charm.provide_charm_instance() as charm_instance:
for service in charm_instance.services:
for service in charm_instance.service_to_resource_map.keys():
ch_core.host.service('enable', service)
ch_core.host.service('stop', service)
ch_core.host.service('start', service)
reactive.set_flag('services-started')
@reactive.when_all('config.rendered',
@@ -119,7 +123,7 @@ def cluster_connected(hacluster):
# once
# https://bugs.launchpad.net/charm-interface-hacluster/+bug/1880644
# is resolved
import hooks.relations.hacluster.common as hacluster_common # noqa
import relations.hacluster.interface_hacluster.common as hacluster_common # noqa
crm = hacluster_common.CRM()
crm.colocation('ganesha_with_vip',
'inf',

View File

@@ -0,0 +1,307 @@
variables:
openstack-origin: &openstack-origin distro
local_overlay_enabled: false
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':
constraints: mem=8G
'15':
constraints: mem=8G
'16':
'17':
'18':
'19':
'20':
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:
num_units: 1
charm: ../../../manila-ganesha
options:
openstack-origin: *openstack-origin
to:
- '3'
ceph-mon:
charm: cs:~openstack-charmers-next/ceph-mon
num_units: 3
options:
source: *openstack-origin
to:
- '4'
- '5'
ceph-osd:
charm: cs:~openstack-charmers-next/ceph-osd
num_units: 3
options:
source: *openstack-origin
storage:
osd-devices: 'cinder,10G'
to:
- '6'
- '7'
- '8'
ceph-fs:
charm: cs:~openstack-charmers-next/ceph-fs
num_units: 2
options:
source: *openstack-origin
to:
- '9'
- '10'
manila:
charm: cs:~openstack-charmers-next/manila
num_units: 1
options:
default-share-backend: cephfsnfs1
share-protocols: NFS
openstack-origin: *openstack-origin
to:
- '11'
nova-cloud-controller:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
options:
network-manager: Neutron
openstack-origin: *openstack-origin
to:
- '12'
placement:
charm: cs:~openstack-charmers-next/placement
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '13'
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:
- '14'
- '15'
glance:
charm: cs:~openstack-charmers-next/glance
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '16'
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:
- '17'
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:
- '18'
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
options:
source: *openstack-origin
to:
- '19'
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
options:
openstack-origin: *openstack-origin
to:
- '20'
relations:
- - 'ceph-mon'
- 'ceph-osd'
- - 'ceph-mon'
- 'ceph-fs'
- - 'ceph-mon'
- 'manila-ganesha'
- - 'manila:shared-db'
- 'manila-mysql-router:shared-db'
- - 'manila-mysql-router:db-router'
- 'mysql-innodb-cluster:db-router'
- - 'manila-ganesha'
- 'rabbitmq-server'
- - 'manila-ganesha'
- 'keystone'
- - 'manila'
- 'manila-ganesha'
- - 'manila-ganesha: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

@@ -46,14 +46,16 @@ class TestRegisteredHooks(test_utils.TestRegisteredHooks):
'cluster_connected': ('ha.connected',
'ganesha-pool-configured',
'config.rendered',),
'enable_services_in_non_ha': ('config.rendered',),
'enable_services_in_non_ha': ('config.rendered',
'ganesha-pool-configured',),
'disable_services': ('cluster.connected',),
},
'when_not': {
'ceph_connected': ('ganesha-pool-configured',),
'configure_ident_username': ('identity-service.available',),
'configure_ganesha': ('ganesha-pool-configured',),
'enable_services_in_non_ha': ('cluster.connected',),
'enable_services_in_non_ha': ('cluster.connected',
'services-started',),
'cluster_connected': ('ha-resources-exposed',),
'disable_services': ('services-disabled',),
},