From ff02b60f43426ad5bc4c05eee7c89451beb081b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Nussbaumer?= <rn@google.com> Date: Mon, 9 Jan 2012 15:38:50 +0100 Subject: [PATCH] _CheckTargetNodeIPolicy: instance.primary_node is not objects.Node MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: RenΓ© Nussbaumer <rn@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- lib/cmdlib.py | 3 ++- test/ganeti.cmdlib_unittest.py | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 1cff98eb8..ea7dc481e 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -1146,7 +1146,8 @@ def _CheckTargetNodeIPolicy(lu, ipolicy, instance, node, ignore=False, @see: L{_ComputeIPolicySpecViolation} """ - res = _compute_fn(ipolicy, instance, instance.primary_node.group, node.group) + primary_node = lu.cfg.GetNodeInfo(instance.primary_node) + res = _compute_fn(ipolicy, instance, primary_node.group, node.group) if res: msg = ("Instance does not meet target node group's (%s) instance" diff --git a/test/ganeti.cmdlib_unittest.py b/test/ganeti.cmdlib_unittest.py index a5419b3bf..881e64698 100755 --- a/test/ganeti.cmdlib_unittest.py +++ b/test/ganeti.cmdlib_unittest.py @@ -382,9 +382,10 @@ class TestClusterVerifyFiles(unittest.TestCase): class _FakeLU: - def __init__(self): + def __init__(self, cfg=NotImplemented): self.warning_log = [] self.info_log = [] + self.cfg = cfg def LogWarning(self, text, *args): self.warning_log.append((text, args)) @@ -678,11 +679,21 @@ class TestComputeIPolicyNodeViolation(unittest.TestCase): self.assertEqual(ret, []) +class _FakeConfigForTargetNodeIPolicy: + def __init__(self, node_info=NotImplemented): + self._node_info = node_info + + def GetNodeInfo(self, _): + return self._node_info + + class TestCheckTargetNodeIPolicy(unittest.TestCase): def setUp(self): - self.instance = objects.Instance(primary_node=objects.Node(group="foo")) + self.instance = objects.Instance(primary_node="blubb") self.target_node = objects.Node(group="bar") - self.lu = _FakeLU() + node_info = objects.Node(group="foo") + fake_cfg = _FakeConfigForTargetNodeIPolicy(node_info=node_info) + self.lu = _FakeLU(cfg=fake_cfg) def testNoViolation(self): compute_recoder = _CallRecorder(return_value=[]) -- GitLab