Revision f3fd2c9d

b/qa/ganeti-qa.py
41 41

  
42 42
from ganeti import utils
43 43
from ganeti import rapi
44
from ganeti import constants
44 45

  
45 46
import ganeti.rapi.client
46 47

  
......
437 438
          instance = RunTest(func, pnode, snode)
438 439
          RunCommonInstanceTests(instance)
439 440
          RunGroupListTests()
441
          RunTest(qa_group.TestAssignNodesIncludingSplit,
442
                  constants.INITIAL_NODE_GROUP_NAME,
443
                  pnode["primary"], snode["primary"])
440 444
          if qa_config.TestEnabled('instance-convert-disk'):
441 445
            RunTest(qa_instance.TestInstanceShutdown, instance)
442 446
            RunTest(qa_instance.TestInstanceConvertDisk, instance, snode)
b/qa/qa_group.py
21 21

  
22 22
from ganeti import constants
23 23
from ganeti import query
24
from ganeti import utils
24 25

  
25 26
import qa_config
26 27
import qa_utils
27 28

  
28
from qa_utils import AssertCommand
29
from qa_utils import AssertCommand, AssertEqual, GetCommandOutput
29 30

  
30 31

  
31 32
def TestGroupAddRemoveRename():
......
94 95
def TestGroupListFields():
95 96
  """gnt-group list-fields"""
96 97
  qa_utils.GenericQueryFieldsTest("gnt-group", query.GROUP_FIELDS.keys())
98

  
99

  
100
def TestAssignNodesIncludingSplit(orig_group, node1, node2):
101
  """gnt-group assign-nodes --force
102

  
103
  Expects node1 and node2 to be primary and secondary for a common instance.
104

  
105
  """
106
  assert node1 != node2
107
  groups = qa_config.get("groups", {})
108
  other_group = groups.get("inexistent-groups", ["group1"])[0]
109

  
110
  master_node = qa_config.GetMasterNode()["primary"]
111

  
112
  def AssertInGroup(group, nodes):
113
    real_output = GetCommandOutput(master_node,
114
                                   "gnt-node list --no-headers -o group " +
115
                                   utils.ShellQuoteArgs(nodes))
116
    AssertEqual(real_output.splitlines(), [group] * len(nodes))
117

  
118
  AssertInGroup(orig_group, [node1, node2])
119
  AssertCommand(["gnt-group", "add", other_group])
120

  
121
  try:
122
    AssertCommand(["gnt-group", "assign-nodes", other_group, node1, node2])
123
    AssertInGroup(other_group, [node1, node2])
124

  
125
    # This should fail because moving node1 to orig_group would leave their
126
    # common instance split between orig_group and other_group.
127
    AssertCommand(["gnt-group", "assign-nodes", orig_group, node1], fail=True)
128
    AssertInGroup(other_group, [node1, node2])
129

  
130
    AssertCommand(["gnt-group", "assign-nodes", "--force", orig_group, node1])
131
    AssertInGroup(orig_group, [node1])
132
    AssertInGroup(other_group, [node2])
133

  
134
    AssertCommand(["gnt-group", "assign-nodes", orig_group, node2])
135
    AssertInGroup(orig_group, [node1, node2])
136
  finally:
137
    AssertCommand(["gnt-group", "remove", other_group])

Also available in: Unified diff