Added verification to ensure iscsid is running

Currently, the charm does not verify if iscsid is installed or
running. This patch adds those verifications on install and
update hooks.

Closes-bug: #1816435

Change-Id: I23992832a82557f406999427fe8d151f6a2b63af
This commit is contained in:
tpsilva 2019-02-26 14:42:20 -03:00
parent 1304a492b1
commit 3b91afa9ce
3 changed files with 44 additions and 0 deletions

View File

@ -46,6 +46,8 @@ from charmhelpers.core.templating import (
)
from charmhelpers.core.host import (
service_restart,
service_running,
service_start,
service_stop,
write_file,
umount,
@ -258,6 +260,8 @@ def config_changed():
configure_local_ephemeral_storage()
check_and_start_iscsid()
def install_vaultlocker():
"""Determine whether vaultlocker is required and install"""
@ -615,6 +619,11 @@ def cloud_credentials_changed():
CONFIGS.write(NOVA_CONF)
def check_and_start_iscsid():
if not service_running('iscsid'):
service_start('iscsid')
@hooks.hook('update-status')
@harden()
def update_status():

View File

@ -129,6 +129,7 @@ BASE_PACKAGES = [
'python-psutil',
'xfsprogs',
'nfs-common',
'open-iscsi',
]
PY3_PACKAGES = [

View File

@ -55,6 +55,8 @@ TO_PATCH = [
'restart_on_change',
'service_restart',
'is_container',
'service_running',
'service_start',
# charmhelpers.contrib.openstack.utils
'configure_installation_source',
'openstack_upgrade_available',
@ -128,6 +130,7 @@ class NovaComputeRelationsTests(CharmTestCase):
def test_config_changed_with_upgrade(self, neutron_plugin_joined,
ceph_changed):
self.openstack_upgrade_available.return_value = True
self.service_running.return_value = True
def rel_ids(x):
return {'neutron-plugin': ['rid1'],
@ -140,14 +143,17 @@ class NovaComputeRelationsTests(CharmTestCase):
neutron_plugin_joined.assert_called_with('rid1', remote_restart=True)
ceph_changed.assert_called_with(rid='ceph:0', unit='ceph/0')
self.configure_local_ephemeral_storage.assert_called_once_with()
self.service_start.assert_not_called()
def test_config_changed_with_openstack_upgrade_action(self):
self.openstack_upgrade_available.return_value = True
self.test_config.set('action-managed-upgrade', True)
self.migration_enabled.return_value = False
self.service_running.return_value = True
hooks.config_changed()
self.assertFalse(self.do_openstack_upgrade.called)
self.service_start.assert_not_called()
@patch.object(hooks, 'neutron_plugin_joined')
@patch.object(hooks, 'compute_joined')
@ -159,6 +165,7 @@ class NovaComputeRelationsTests(CharmTestCase):
'cloud-compute:0',
'cloud-compute:1'
]
self.service_running.return_value = True
hooks.config_changed()
ex = [
call('cloud-compute:0'),
@ -166,6 +173,7 @@ class NovaComputeRelationsTests(CharmTestCase):
]
self.assertEqual(ex, compute_joined.call_args_list)
self.assertTrue(self.initialize_ssh_keys.called)
self.service_start.assert_not_called()
@patch.object(hooks, 'neutron_plugin_joined')
@patch.object(hooks, 'compute_joined')
@ -177,6 +185,7 @@ class NovaComputeRelationsTests(CharmTestCase):
'cloud-compute:0',
'cloud-compute:1'
]
self.service_running.return_value = True
hooks.config_changed()
ex = [
call('cloud-compute:0'),
@ -185,6 +194,7 @@ class NovaComputeRelationsTests(CharmTestCase):
self.assertEqual(ex, compute_joined.call_args_list)
self.initialize_ssh_keys.assert_called_with(user='nova')
self.enable_shell.assert_called_with(user='nova')
self.service_start.assert_not_called()
@patch.object(hooks, 'neutron_plugin_joined')
@patch.object(hooks, 'compute_joined')
@ -196,6 +206,7 @@ class NovaComputeRelationsTests(CharmTestCase):
'cloud-compute:0',
'cloud-compute:1'
]
self.service_running.return_value = True
hooks.config_changed()
ex = [
call('cloud-compute:0'),
@ -203,18 +214,22 @@ class NovaComputeRelationsTests(CharmTestCase):
]
self.assertEqual(ex, compute_joined.call_args_list)
self.disable_shell.assert_called_with(user='nova')
self.service_start.assert_not_called()
@patch.object(hooks, 'compute_joined')
def test_config_changed_no_upgrade_no_migration(self, compute_joined):
self.openstack_upgrade_available.return_value = False
self.migration_enabled.return_value = False
self.service_running.return_value = True
hooks.config_changed()
self.assertFalse(self.do_openstack_upgrade.called)
self.assertFalse(compute_joined.called)
self.service_start.assert_not_called()
@patch.object(hooks, 'compute_joined')
def test_config_changed_with_sysctl(self, compute_joined):
self.migration_enabled.return_value = False
self.service_running.return_value = True
self.test_config.set(
'sysctl',
'{foo : bar}'
@ -229,55 +244,74 @@ class NovaComputeRelationsTests(CharmTestCase):
def test_config_changed_with_sysctl_in_container(self, compute_joined):
self.migration_enabled.return_value = False
self.is_container.return_value = True
self.service_running.return_value = True
self.test_config.set(
'sysctl',
'{foo : bar}'
)
hooks.config_changed()
self.create_sysctl.assert_not_called()
self.service_start.assert_not_called()
@patch.object(hooks, 'compute_joined')
def test_config_changed_no_nrpe(self, compute_joined):
self.openstack_upgrade_available.return_value = False
self.migration_enabled.return_value = False
self.is_relation_made.return_value = False
self.service_running.return_value = True
hooks.config_changed()
self.assertFalse(self.update_nrpe_config.called)
self.service_start.assert_not_called()
@patch.object(hooks, 'compute_joined')
def test_config_changed_nrpe(self, compute_joined):
self.openstack_upgrade_available.return_value = False
self.migration_enabled.return_value = False
self.is_relation_made.return_value = True
self.service_running.return_value = True
hooks.config_changed()
self.assertTrue(self.update_nrpe_config.called)
self.service_start.assert_not_called()
@patch.object(hooks, 'compute_joined')
def test_config_changed_invalid_migration(self, compute_joined):
self.migration_enabled.return_value = True
self.service_running.return_value = True
self.test_config.set('migration-auth-type', 'none')
with self.assertRaises(Exception) as context:
hooks.config_changed()
self.assertEqual(
context.exception.message,
'Invalid migration-auth-type')
self.service_start.assert_not_called()
@patch.object(hooks, 'compute_joined')
def test_config_changed_use_multipath_false(self,
compute_joined):
self.service_running.return_value = True
self.test_config.set('use-multipath', False)
hooks.config_changed()
self.assertEqual(self.filter_installed_packages.call_count, 0)
self.service_start.assert_not_called()
@patch.object(hooks, 'compute_joined')
def test_config_changed_use_multipath_true(self,
compute_joined):
self.test_config.set('use-multipath', True)
self.filter_installed_packages.return_value = []
self.service_running.return_value = True
hooks.config_changed()
self.assertEqual(self.filter_installed_packages.call_count, 1)
self.apt_install.assert_called_with(hooks.MULTIPATH_PACKAGES,
fatal=True)
self.service_start.assert_not_called()
@patch.object(hooks, 'compute_joined')
def test_config_changed_iscsid_not_running(self,
compute_joined):
self.service_running.return_value = False
hooks.config_changed()
self.service_start.assert_called_once_with('iscsid')
@patch('nova_compute_hooks.nrpe')
@patch('nova_compute_hooks.services')