diff --git a/src/charm_utils.py b/src/charm_utils.py index 5cd3f98..ba92267 100644 --- a/src/charm_utils.py +++ b/src/charm_utils.py @@ -155,6 +155,10 @@ def set_principal_unit_relation_data(relation_data_to_be_set, config, vgpu_device_mappings_str = config.get('vgpu-device-mappings') if vgpu_device_mappings_str is not None: vgpu_device_mappings = YAML().load(vgpu_device_mappings_str) + + if vgpu_device_mappings is None: # happens when passing an empty str + vgpu_device_mappings = {} + logging.debug('vgpu-device-mappings={}'.format(vgpu_device_mappings)) nova_conf = json.dumps({ diff --git a/unit_tests/test_charm_utils.py b/unit_tests/test_charm_utils.py index b54d2d1..e872898 100644 --- a/unit_tests/test_charm_utils.py +++ b/unit_tests/test_charm_utils.py @@ -168,6 +168,17 @@ class TestCharmUtils(unittest.TestCase): 'nvidia-vgpu-ubuntu-470', relation_data_to_be_set['releases-packages-map']) + relation_data_to_be_set = {} + charm_config = { + 'vgpu-device-mappings': '' + } + charm_utils.set_principal_unit_relation_data( + relation_data_to_be_set, charm_config, charm_services) + self.assertEquals( + '{"nova": {"/etc/nova/nova.conf": {"sections": {"devices": ' + '[["enabled_mdev_types", ""]]}}}}', + relation_data_to_be_set['subordinate_configuration']) + @patch('charm_utils.file_hash') def test_path_and_hash_nvidia_resource(self, file_hash_mock): file_hash_mock.return_value = 'nvidia-software-hash'