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])
|