Signed-off-by: Adeodato Simo <[email protected]>
---
test/ganeti.cmdlib_unittest.py | 50 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 50 insertions(+), 0 deletions(-)
diff --git a/test/ganeti.cmdlib_unittest.py b/test/ganeti.cmdlib_unittest.py
index 8f64c84..b7eb90d 100755
--- a/test/ganeti.cmdlib_unittest.py
+++ b/test/ganeti.cmdlib_unittest.py
@@ -36,6 +36,7 @@ from ganeti import errors
from ganeti import utils
from ganeti import luxi
from ganeti import ht
+from ganeti import objects
import testutils
import mocks
@@ -156,5 +157,54 @@ class TestLUQuery(unittest.TestCase):
"xyz")
+class TestLUAssignNodes(unittest.TestCase):
+
+ def testCheckAssignmentForSplitInstances(self):
+ node_data = dict((node.name, node)
+ for node in [objects.Node(name='n1a', group='g1'),
+ objects.Node(name='n1b', group='g1'),
+ objects.Node(name='n2a', group='g2'),
+ objects.Node(name='n2b', group='g2'),
+ objects.Node(name='n3a', group='g3'),
+ objects.Node(name='n3b', group='g3'),
+ objects.Node(name='n3c', group='g3'),
+ ])
+
+ def Instance(name, pnode, snode):
+ if snode is None:
+ disks = []
+ disk_template = constants.DT_DISKLESS
+ else:
+ disks = [objects.Disk(dev_type=constants.LD_DRBD8,
+ logical_id=[pnode, snode, 1, 17, 17])]
+ disk_template = constants.DT_DRBD8
+
+ return objects.Instance(name=name, primary_node=pnode, disks=disks,
+ disk_template=disk_template)
+
+ instance_data = dict((inst.name, inst)
+ for inst in [Instance('inst1a', 'n1a', 'n1b'),
+ Instance('inst1b', 'n1b', 'n1a'),
+ Instance('inst2a', 'n2a', 'n2b'),
+ Instance('inst3a', 'n3a', None),
+ Instance('inst3b', 'n3b', 'n1b'),
+ Instance('inst3c', 'n3b', 'n2b'),
+ ])
+
+ # Test first with the existing state.
+ new, prev = cmdlib.LUAssignNodes.CheckAssignmentForSplitInstances(
+ [], node_data, instance_data)
+
+ self.assertEqual([], new)
+ self.assertEqual(set(['inst3b', 'inst3c']), set(prev))
+
+ # And now some changes.
+ new, prev = cmdlib.LUAssignNodes.CheckAssignmentForSplitInstances(
+ [('n1b', 'g3')], node_data, instance_data)
+
+ self.assertEqual(set(['inst1a', 'inst1b']), set(new))
+ self.assertEqual(set(['inst3c']), set(prev))
+
+
if __name__ == "__main__":
testutils.GanetiTestProgram()
--
1.7.3.1