Currently hv-state_static is supported only for cluster object properly.
Convert hv_state_static from None to {} in ConfigUpgrade for NodeGroup
and Node as well. Also modify mock config objects to return empty
dictionaries.

Signed-off-by: Oleg Ponomarev <[email protected]>
---
 lib/objects.py                                | 10 ++++++++++
 test/py/ganeti.masterd.iallocator_unittest.py |  4 ++++
 test/py/testutils/config_mock.py              |  5 +++--
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/lib/objects.py b/lib/objects.py
index 02db0e3..c6648f1 100644
--- a/lib/objects.py
+++ b/lib/objects.py
@@ -1490,6 +1490,11 @@ class Node(TaggableObject):
     if self.powered is None:
       self.powered = True
 
+    if self.hv_state_static is None:
+      self.hv_state_static = {}
+    if self.disk_state_static is None:
+      self.disk_state_static = {}
+
   def ToDict(self, _with_private=False):
     """Custom function for serializing.
 
@@ -1587,6 +1592,11 @@ class NodeGroup(TaggableObject):
     if self.ipolicy is None:
       self.ipolicy = MakeEmptyIPolicy()
 
+    if self.hv_state_static is None:
+      self.hv_state_static = {}
+    if self.disk_state_static is None:
+      self.disk_state_static = {}
+
     if self.networks is None:
       self.networks = {}
 
diff --git a/test/py/ganeti.masterd.iallocator_unittest.py 
b/test/py/ganeti.masterd.iallocator_unittest.py
index d92e572..25ff74b 100755
--- a/test/py/ganeti.masterd.iallocator_unittest.py
+++ b/test/py/ganeti.masterd.iallocator_unittest.py
@@ -101,6 +101,8 @@ class TestIARequestBase(unittest.TestCase):
 class _FakeConfigWithNdParams:
   def GetNdParams(self, _):
     return None
+  def GetFilledHvStateParams(self, _):
+    return None
 
 
 class TestComputeBasicNodeData(unittest.TestCase):
@@ -151,6 +153,7 @@ class TestComputeBasicNodeData(unittest.TestCase):
         "master_capable": True,
         "vm_capable": False,
         "ndparams": None,
+        "hv_state": None,
         },
       "node2": {
         "tags": [],
@@ -163,6 +166,7 @@ class TestComputeBasicNodeData(unittest.TestCase):
         "master_capable": False,
         "vm_capable": True,
         "ndparams": None,
+        "hv_state": None,
         },
       })
 
diff --git a/test/py/testutils/config_mock.py b/test/py/testutils/config_mock.py
index 7ae27bc..31ce14e 100644
--- a/test/py/testutils/config_mock.py
+++ b/test/py/testutils/config_mock.py
@@ -64,6 +64,7 @@ def _UpdateIvNames(base_idx, disks):
 
 
 # pylint: disable=R0904
+# pylint: disable=W0102 (dangerous default value {} as argument)
 class ConfigMock(config.ConfigWriter):
   """A mocked cluster configuration with added methods for easy customization.
 
@@ -109,7 +110,7 @@ class ConfigMock(config.ConfigWriter):
                       ndparams=None,
                       diskparams=None,
                       ipolicy=None,
-                      hv_state_static=None,
+                      hv_state_static={},
                       disk_state_static=None,
                       alloc_policy=None,
                       networks=None):
@@ -160,7 +161,7 @@ class ConfigMock(config.ConfigWriter):
                  ndparams=None,
                  powered=True,
                  hv_state=None,
-                 hv_state_static=None,
+                 hv_state_static={},
                  disk_state=None,
                  disk_state_static=None):
     """Add a new L{objects.Node} to the cluster configuration
-- 
2.6.0.rc2.230.g3dd15c0

Reply via email to