diff --git a/nailgun/nailgun/extensions/volume_manager/manager.py b/nailgun/nailgun/extensions/volume_manager/manager.py index 32e7d0fa54..d7ae86c803 100644 --- a/nailgun/nailgun/extensions/volume_manager/manager.py +++ b/nailgun/nailgun/extensions/volume_manager/manager.py @@ -674,6 +674,14 @@ class VolumeManager(object): disks = only_disks(volumes) + if not disks: + logger.debug("VolumeManager nothing to find in empty volumes " + "by disk %s", disk_info) + return None + + logger.debug("VolumeManager finding disk by disk info: %s, " + "in volumes: %s", disk_info, disks) + disk_info_composite_id = cls._build_disk_id_by_keys( disk_info, keys=('disk',), keys_for_lists=('extra',)) disk_info_id_only = cls._build_disk_id_by_keys( diff --git a/nailgun/nailgun/test/unit/test_node_disks.py b/nailgun/nailgun/test/unit/test_node_disks.py index 173f7f6dfb..9245c81e03 100644 --- a/nailgun/nailgun/test/unit/test_node_disks.py +++ b/nailgun/nailgun/test/unit/test_node_disks.py @@ -586,6 +586,13 @@ class TestVolumeManagerDisks(BaseTestCase): self.check_expected_volume_found_for_disk(disk_info, fake_volumes, fake_volumes[1]) + def test_find_existing_disk_empty_volumes(self): + disk_info = {'disk': 'disk_id', 'extra': []} + with patch.object(VolumeManager, '_build_disk_id_by_keys') \ + as id_builder: + self.assertIsNone(VolumeManager.find_existing_disk(disk_info, [])) + self.assertEqual(0, id_builder.call_count) + class TestVolumeManager(BaseIntegrationTest):