From 63f079884b8d1dbecaf8965ea319d53a13edcd22 Mon Sep 17 00:00:00 2001 From: Alexander Kislitsky Date: Tue, 8 Dec 2015 11:15:09 +0300 Subject: [PATCH] Logging in finding disk function fixed The funcion find_existing_disk is called in the VolumeManager constructor. When the new node is discovered and nailgun-agent doesn't post yet nodes info to the Nailgun we have no volumes info and have warning and error messages in the logs on each VolumeManager object initialization. On empty volumes data we shouldn't perform search in find_existing_disk. Just log message and return None. Change-Id: Ia7ffc5f69995dc4230f5984faaa08ae543bbe044 Closes-Bug: #1523471 (cherry picked from commit 6bd08607c6064e99ad2ed277b1c17d7b23b13c8a) --- nailgun/nailgun/extensions/volume_manager/manager.py | 8 ++++++++ nailgun/nailgun/test/unit/test_node_disks.py | 7 +++++++ 2 files changed, 15 insertions(+) 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 3fcf222dc9..97ce11f725 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):