Merge "Fix misc issues with instances-path usage"

This commit is contained in:
Zuul 2021-10-25 23:14:17 +00:00 committed by Gerrit Code Review
commit 6290b2577a
4 changed files with 75 additions and 1 deletions

View File

@ -53,6 +53,7 @@ from charmhelpers.core.host import (
write_file,
umount,
is_container,
mkdir,
)
from charmhelpers.fetch import (
apt_install,
@ -234,6 +235,8 @@ def config_changed():
if config('instances-path') is not None:
fp = config('instances-path')
if not os.path.exists(fp):
mkdir(path=fp, owner='nova', group='nova', perms=0o775)
fix_path_ownership(fp, user='nova')
for rid in relation_ids('cloud-compute'):

View File

@ -1091,7 +1091,7 @@ def configure_local_ephemeral_storage():
level=DEBUG)
return
mountpoint = '/var/lib/nova/instances'
mountpoint = config('instances-path') or '/var/lib/nova/instances'
db = kv()
storage_configured = db.get('storage-configured', False)

View File

@ -58,6 +58,7 @@ TO_PATCH = [
'is_container',
'service_running',
'service_start',
'mkdir',
# charmhelpers.contrib.openstack.utils
'configure_installation_source',
'openstack_upgrade_available',
@ -83,6 +84,7 @@ TO_PATCH = [
'network_manager',
'libvirt_daemon',
'configure_local_ephemeral_storage',
'fix_path_ownership',
# misc_utils
'ensure_ceph_keyring',
'execd_preinstall',
@ -322,6 +324,27 @@ class NovaComputeRelationsTests(CharmTestCase):
hooks.config_changed()
self.service_start.assert_called_once_with('iscsid')
@patch('os.path.exists')
@patch.object(hooks, 'compute_joined')
def test_config_changed_instances_path(self,
compute_joined,
exists):
self.service_running.return_value = True
self.test_config.set('instances-path', '/srv/instances')
exists.return_value = False
hooks.config_changed()
exists.assert_called_once_with('/srv/instances')
self.mkdir.assert_called_once_with(
path='/srv/instances',
owner='nova', group='nova',
perms=0o775
)
self.service_start.assert_not_called()
self.fix_path_ownership.assert_called_once_with(
'/srv/instances',
user='nova'
)
@patch('nova_compute_hooks.nrpe')
@patch('nova_compute_hooks.services')
@patch('charmhelpers.core.hookenv')

View File

@ -1102,6 +1102,54 @@ class NovaComputeUtilsTests(CharmTestCase):
self.assertTrue(self.test_kv.get('storage-configured'))
self.vaultlocker.write_vaultlocker_conf.assert_not_called()
@patch.object(utils, 'install_mount_override')
@patch.object(utils, 'uuid')
@patch.object(utils, 'determine_block_device')
def test_configure_local_ephemeral_storage_ip_set(self,
determine_block_device,
uuid,
install_mount_override):
determine_block_device.return_value = '/dev/sdb'
uuid.uuid4.return_value = 'test'
mock_context = MagicMock()
mock_context.complete = False
mock_context.return_value = {}
self.test_config.set('encrypt', False)
self.test_config.set('instances-path', '/srv/instances')
self.vaultlocker.VaultKVContext.return_value = mock_context
self.is_block_device.return_value = True
self.is_device_mounted.return_value = False
utils.configure_local_ephemeral_storage()
self.mkfs_xfs.assert_called_with(
'/dev/sdb',
force=True
)
self.check_call.assert_has_calls([
call(['chown', '-R', 'nova:nova',
'/srv/instances']),
call(['chmod', '-R', '0755',
'/srv/instances'])
])
self.mount.assert_called_with(
'/dev/sdb',
'/srv/instances',
filesystem='xfs')
self.fstab_add.assert_called_with(
'/dev/sdb',
'/srv/instances',
'xfs',
options=None
)
install_mount_override.assert_called_with(
'/srv/instances'
)
self.assertTrue(self.test_kv.get('storage-configured'))
self.vaultlocker.write_vaultlocker_conf.assert_not_called()
@patch.object(utils, 'install_mount_override')
@patch.object(utils, 'filter_installed_packages')
def test_configure_local_ephemeral_storage_done(self,