Revision f3fd2c9d qa/qa_group.py

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