Revision 8ec505dd

b/test/ganeti.cmdlib_unittest.py
36 36
from ganeti import utils
37 37
from ganeti import luxi
38 38
from ganeti import ht
39
from ganeti import objects
39 40

  
40 41
import testutils
41 42
import mocks
......
156 157
                      "xyz")
157 158

  
158 159

  
160
class TestLUAssignGroupNodes(unittest.TestCase):
161

  
162
  def testCheckAssignmentForSplitInstances(self):
163
    node_data = dict((name, objects.Node(name=name, group=group))
164
                     for (name, group) in [("n1a", "g1"), ("n1b", "g1"),
165
                                           ("n2a", "g2"), ("n2b", "g2"),
166
                                           ("n3a", "g3"), ("n3b", "g3"),
167
                                           ("n3c", "g3"),
168
                                           ])
169

  
170
    def Instance(name, pnode, snode):
171
      if snode is None:
172
        disks = []
173
        disk_template = constants.DT_DISKLESS
174
      else:
175
        disks = [objects.Disk(dev_type=constants.LD_DRBD8,
176
                              logical_id=[pnode, snode, 1, 17, 17])]
177
        disk_template = constants.DT_DRBD8
178

  
179
      return objects.Instance(name=name, primary_node=pnode, disks=disks,
180
                              disk_template=disk_template)
181

  
182
    instance_data = dict((name, Instance(name, pnode, snode))
183
                         for name, pnode, snode in [("inst1a", "n1a", "n1b"),
184
                                                    ("inst1b", "n1b", "n1a"),
185
                                                    ("inst2a", "n2a", "n2b"),
186
                                                    ("inst3a", "n3a", None),
187
                                                    ("inst3b", "n3b", "n1b"),
188
                                                    ("inst3c", "n3b", "n2b"),
189
                                                    ])
190

  
191
    # Test first with the existing state.
192
    (new, prev) = \
193
      cmdlib.LUAssignGroupNodes.CheckAssignmentForSplitInstances([],
194
                                                                 node_data,
195
                                                                 instance_data)
196

  
197
    self.assertEqual([], new)
198
    self.assertEqual(set(["inst3b", "inst3c"]), set(prev))
199

  
200
    # And now some changes.
201
    (new, prev) = \
202
      cmdlib.LUAssignGroupNodes.CheckAssignmentForSplitInstances([("n1b",
203
                                                                   "g3")],
204
                                                                 node_data,
205
                                                                 instance_data)
206

  
207
    self.assertEqual(set(["inst1a", "inst1b"]), set(new))
208
    self.assertEqual(set(["inst3c"]), set(prev))
209

  
210

  
159 211
if __name__ == "__main__":
160 212
  testutils.GanetiTestProgram()

Also available in: Unified diff