Currently it tests if locks are acquired correctly. This proves the bug fixed in the next commit.
Signed-off-by: Aaron Karper <akar...@google.com> --- test/py/cmdlib/node_unittest.py | 50 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/test/py/cmdlib/node_unittest.py b/test/py/cmdlib/node_unittest.py index d5b50e6..8dcad78 100644 --- a/test/py/cmdlib/node_unittest.py +++ b/test/py/cmdlib/node_unittest.py @@ -33,11 +33,13 @@ """ from collections import defaultdict +import mock from ganeti import compat from ganeti import constants from ganeti import objects from ganeti import opcodes +from ganeti.cmdlib import node from testsupport import * @@ -278,5 +280,53 @@ class TestLUNodeAdd(CmdlibTestCase): self.ExecOpCodeExpectOpPrereqError(op, "Can't get version information from" " node %s" % self.node_add.name) + +class TestLUNodeSetParams(CmdlibTestCase): + def setUp(self): + super(TestLUNodeSetParams, self).setUp() + + self.MockOut(node, 'netutils', self.netutils_mod) + node.netutils.TcpPing.return_value = True + + self.node = self.cfg.AddNewNode( + primary_ip='192.168.168.191', + secondary_ip='192.168.168.192', + master_candidate=True, uuid='blue_bunny') + + self.snode = self.cfg.AddNewNode( + primary_ip='192.168.168.193', + secondary_ip='192.168.168.194', + master_candidate=True, uuid='pink_bunny') + + def testSetSecondaryIp(self): + self.instance = self.cfg.AddNewInstance(primary_node=self.node, + secondary_node=self.snode, + disk_template='drbd') + op = opcodes.OpNodeSetParams(node_name=self.node.name, + secondary_ip='254.254.254.254') + self.ExecOpCode(op) + + self.assertEqual('254.254.254.254', self.node.secondary_ip) + self.assertEqual(sorted(self.wconfd.all_locks.items()), [ + ('cluster/BGL', 'shared'), + ('instance/mock_inst_1.example.com', 'shared'), + ('node-res/blue_bunny', 'exclusive'), + ('node/blue_bunny', 'exclusive')]) + + def testSetSecondaryIpNoLock(self): + self.instance = self.cfg.AddNewInstance(primary_node=self.node, + secondary_node=self.snode, + disk_template='file') + op = opcodes.OpNodeSetParams(node_name=self.node.name, + secondary_ip='254.254.254.254') + self.ExecOpCode(op) + + self.assertEqual('254.254.254.254', self.node.secondary_ip) + self.assertEqual(sorted(self.wconfd.all_locks.items()), [ + ('cluster/BGL', 'shared'), + ('node-res/blue_bunny', 'exclusive'), + ('node/blue_bunny', 'exclusive')]) + + if __name__ == "__main__": testutils.GanetiTestProgram() -- 2.1.0.rc2.206.gedb03e5