Fix service enablement during init

Some services were disabled in the install hook and then started during
the init phase without being enabled. Thus, after a machine restart they
were not brought back up by systemd.

Change-Id: I27f7d7fa6b8df104567b91b5bc998ebe98b478a2
This commit is contained in:
Dmitrii Shcherbakov 2020-11-11 10:10:31 +00:00
parent 6087f4cb3b
commit a2cc37e278
2 changed files with 30 additions and 41 deletions

View File

@ -24,12 +24,15 @@ snapctl stop --disable $SNAP_INSTANCE_NAME.nova-api-metadata
snapctl stop --disable $SNAP_INSTANCE_NAME.nova-spicehtml5proxy
snapctl stop --disable $SNAP_INSTANCE_NAME.nova-scheduler
snapctl stop --disable $SNAP_INSTANCE_NAME.horizon-uwsgi
snapctl stop --disable $SNAP_INSTANCE_NAME.neutron-api
snapctl stop --disable $SNAP_INSTANCE_NAME.glance-api
snapctl stop --disable $SNAP_INSTANCE_NAME.registry
snapctl stop --disable $SNAP_INSTANCE_NAME.cinder-uwsgi
snapctl stop --disable $SNAP_INSTANCE_NAME.cinder-scheduler
snapctl stop --disable $SNAP_INSTANCE_NAME.ovsdb-server
snapctl stop --disable $SNAP_INSTANCE_NAME.neutron-ovn-metadata-agent
@ -39,6 +42,9 @@ snapctl stop --disable $SNAP_INSTANCE_NAME.ovs-vswitchd
snapctl stop --disable $SNAP_INSTANCE_NAME.ovn-northd
snapctl stop --disable $SNAP_INSTANCE_NAME.ovn-controller
snapctl stop --disable $SNAP_INSTANCE_NAME.rabbitmq-server
snapctl stop --disable $SNAP_INSTANCE_NAME.mysqld
snapctl stop --disable $SNAP_INSTANCE_NAME.iscsid
snapctl stop --disable $SNAP_INSTANCE_NAME.target

View File

@ -29,7 +29,7 @@ from os import path
from init import shell
from init.shell import (check, call, check_output, sql, nc_wait, log_wait,
start, restart, download, disable, enable)
restart, download, disable, enable)
from init.config import Env, log
from init import cluster_tls
from init.questions.question import Question
@ -327,7 +327,7 @@ class RabbitMq(Question):
config_key = 'config.services.control-plane'
def _wait(self) -> None:
restart('rabbitmq-server') # Restart server for plugs
enable('rabbitmq-server')
rabbit_port = check_output(
'snapctl', 'get', 'config.network.ports.rabbit')
nc_wait(_env['control_ip'], rabbit_port)
@ -362,6 +362,7 @@ class DatabaseSetup(Question):
config_key = 'config.services.control-plane'
def _wait(self) -> None:
enable('mysqld')
mysql_port = check_output(
'snapctl', 'get', 'config.network.ports.mysql')
nc_wait(_env['control_ip'], mysql_port)
@ -416,10 +417,7 @@ class DatabaseSetup(Question):
check('snapctl', 'set', 'database.ready=true')
# Start keystone-uwsgi. We use snapctl, because systemd
# doesn't yet know about the service.
start('nginx')
start('keystone-uwsgi')
enable('nginx')
log.info('Configuring Keystone Fernet Keys ...')
check('snap-openstack', 'launch', 'keystone-manage',
@ -427,7 +425,7 @@ class DatabaseSetup(Question):
'--keystone-group', 'root')
check('snap-openstack', 'launch', 'keystone-manage', 'db_sync')
restart('keystone-uwsgi')
enable('keystone-uwsgi')
log.info('Bootstrapping Keystone ...')
self._bootstrap()
@ -456,10 +454,14 @@ class NovaHypervisor(Question):
def yes(self, answer):
log.info('Configuring nova compute hypervisor ...')
start('nova-compute')
enable('libvirtd')
enable('virtlogd')
enable('nova-compute')
def no(self, answer):
log.info('Disabling nova compute service ...')
disable('libvirtd')
disable('virtlogd')
disable('nova-compute')
@ -471,7 +473,7 @@ class NovaSpiceConsoleSetup(Question):
def yes(self, answer):
log.info('Configuring the Spice HTML5 console service...')
start('nova-spicehtml5proxy')
enable('nova-spicehtml5proxy')
def no(self, answer):
log.info('Disabling nova compute service ...')
@ -507,12 +509,9 @@ class PlacementSetup(Question):
'microstack', 'placement', endpoint,
'http://{control_ip}:8778'.format(**_env))
start('placement-uwsgi')
log.info('Running Placement DB migrations...')
check('snap-openstack', 'launch', 'placement-manage', 'db', 'sync')
restart('placement-uwsgi')
enable('placement-uwsgi')
def no(self, answer):
log.info('Disabling the Placement service...')
@ -562,12 +561,6 @@ class NovaControlPlane(Question):
check('openstack', 'role', 'add', '--project',
'service', '--user', 'nova', 'reader')
# Use snapctl to start nova services. We need to call them
# out manually, because systemd doesn't know about them yet.
# TODO: parse the output of `snapctl services` to get this
# list automagically.
start('nova-api')
log.info('Running Nova API DB migrations'
' (this may take a lot of time)...')
check('snap-openstack', 'launch', 'nova-manage', 'api_db', 'sync')
@ -588,7 +581,7 @@ class NovaControlPlane(Question):
' (this may take a lot of time)...')
check('snap-openstack', 'launch', 'nova-manage', 'db', 'sync')
restart('nova-api')
enable('nova-api')
restart('nova-compute')
for service in [
@ -596,7 +589,7 @@ class NovaControlPlane(Question):
'nova-conductor',
'nova-scheduler',
]:
start(service)
enable(service)
nc_wait(_env['compute_ip'], '8774')
@ -663,13 +656,11 @@ class CinderSetup(Question):
f'http://{control_ip}:8776/{api_version}/'
'$(project_id)s'
)
restart('cinder-uwsgi')
log.info('Running Cinder DB migrations...')
check('snap-openstack', 'launch', 'cinder-manage', 'db', 'sync')
restart('cinder-uwsgi')
restart('cinder-scheduler')
enable('cinder-uwsgi')
enable('cinder-scheduler')
def no(self, answer):
log.info('Disabling Cinder services...')
@ -736,16 +727,10 @@ class NeutronControlPlane(Question):
'microstack', 'network', endpoint,
'http://{control_ip}:9696'.format(**_env))
start('neutron-api')
check('snap-openstack', 'launch', 'neutron-db-manage', 'upgrade',
'head')
for service in [
'neutron-api',
'neutron-ovn-metadata-agent',
]:
restart(service)
enable('neutron-api')
enable('neutron-ovn-metadata-agent')
nc_wait(_env['control_ip'], '9696')
@ -852,16 +837,14 @@ class GlanceSetup(Question):
'microstack', 'image', endpoint,
'http://{compute_ip}:9292'.format(**_env))
check('snap-openstack', 'launch', 'glance-manage', 'db_sync')
# TODO: remove the glance registry
# https://blueprints.launchpad.net/glance/+spec/deprecate-registry
for service in [
'glance-api',
'registry', # TODO rename to glance-registery
'registry',
]:
start(service)
check('snap-openstack', 'launch', 'glance-manage', 'db_sync')
restart('glance-api')
restart('registry')
enable(service)
nc_wait(_env['compute_ip'], '9292')
@ -925,7 +908,7 @@ class PostSetup(Question):
# database readiness and hence the clustering service is enabled
# and started here. There needs to be a better way to do this.
enable('cluster-uwsgi')
restart('horizon-uwsgi')
enable('horizon-uwsgi')
check('snapctl', 'set', 'initialized=true')
log.info('Complete. Marked microstack as initialized!')