Revision c832b6c8 qa/qa_node.py
b/qa/qa_node.py | ||
---|---|---|
240 | 240 |
master = qa_config.GetMasterNode() |
241 | 241 |
|
242 | 242 |
verify_output_cmd = utils.ShellQuoteArgs(["cat", verify_path]) |
243 |
output = qa_utils.GetCommandOutput(master["primary"], verify_output_cmd) |
|
243 |
output = qa_utils.GetCommandOutput(master["primary"], verify_output_cmd, |
|
244 |
tty=False) |
|
244 | 245 |
|
245 | 246 |
AssertEqual(expected_args, output.strip()) |
246 | 247 |
|
... | ... | |
269 | 270 |
AssertCommand(["gnt-node", "power", "on", node_name]) |
270 | 271 |
_AssertOobCall(verify_path, "power-on %s" % full_node_name) |
271 | 272 |
|
272 |
AssertCommand(["gnt-node", "power", "off", node_name]) |
|
273 |
AssertCommand(["gnt-node", "power", "-f", "off", node_name])
|
|
273 | 274 |
_AssertOobCall(verify_path, "power-off %s" % full_node_name) |
274 | 275 |
|
275 | 276 |
# Power off on master without options should fail |
276 |
AssertCommand(["gnt-node", "power", "off", master_name], fail=True) |
|
277 |
AssertCommand(["gnt-node", "power", "-f", "off", master_name], fail=True)
|
|
277 | 278 |
# With force master it should still fail |
278 |
AssertCommand(["gnt-node", "power", "--force-master", "off", master_name], |
|
279 |
fail=True) |
|
280 |
AssertCommand(["gnt-node", "power", "--ignore-status", "off", master_name], |
|
279 |
AssertCommand(["gnt-node", "power", "-f", "--force-master", "off", |
|
280 |
master_name], fail=True) |
|
281 |
AssertCommand(["gnt-node", "power", "-f", "--ignore-status", "off", |
|
282 |
master_name], |
|
281 | 283 |
fail=True) |
282 | 284 |
# This should work again |
283 |
AssertCommand(["gnt-node", "power", "--ignore-status", "--force-master",
|
|
284 |
"off", master_name]) |
|
285 |
AssertCommand(["gnt-node", "power", "-f", "--ignore-status",
|
|
286 |
"--force-master", "off", master_name])
|
|
285 | 287 |
_AssertOobCall(verify_path, "power-off %s" % full_master_name) |
286 | 288 |
|
287 | 289 |
# Verify we can't transform back to online when not yet powered on |
... | ... | |
291 | 293 |
AssertCommand(["gnt-node", "modify", "-O", "no", "--node-powered", "yes", |
292 | 294 |
node_name]) |
293 | 295 |
|
294 |
AssertCommand(["gnt-node", "power", "cycle", node_name]) |
|
296 |
AssertCommand(["gnt-node", "power", "-f", "cycle", node_name])
|
|
295 | 297 |
_AssertOobCall(verify_path, "power-cycle %s" % full_node_name) |
296 | 298 |
|
297 | 299 |
# Those commands should fail as they expect output which isn't provided yet |
... | ... | |
326 | 328 |
_AssertOobCall(verify_path, "power-on %s" % full_node_name) |
327 | 329 |
|
328 | 330 |
try: |
329 |
AssertCommand(["gnt-node", "power", "off", node_name], fail=True) |
|
331 |
AssertCommand(["gnt-node", "power", "-f", "off", node_name], fail=True)
|
|
330 | 332 |
_AssertOobCall(verify_path, "power-off %s" % full_node_name) |
331 | 333 |
finally: |
332 | 334 |
AssertCommand(["gnt-node", "modify", "-O", "no", node_name]) |
333 | 335 |
|
334 |
AssertCommand(["gnt-node", "power", "cycle", node_name], fail=True) |
|
336 |
AssertCommand(["gnt-node", "power", "-f", "cycle", node_name], fail=True)
|
|
335 | 337 |
_AssertOobCall(verify_path, "power-cycle %s" % full_node_name) |
336 | 338 |
|
337 | 339 |
# Data, exit 1 (all should fail) |
... | ... | |
341 | 343 |
_AssertOobCall(verify_path, "power-on %s" % full_node_name) |
342 | 344 |
|
343 | 345 |
try: |
344 |
AssertCommand(["gnt-node", "power", "off", node_name], fail=True) |
|
346 |
AssertCommand(["gnt-node", "power", "-f", "off", node_name], fail=True)
|
|
345 | 347 |
_AssertOobCall(verify_path, "power-off %s" % full_node_name) |
346 | 348 |
finally: |
347 | 349 |
AssertCommand(["gnt-node", "modify", "-O", "no", node_name]) |
348 | 350 |
|
349 |
AssertCommand(["gnt-node", "power", "cycle", node_name], fail=True) |
|
351 |
AssertCommand(["gnt-node", "power", "-f", "cycle", node_name], fail=True)
|
|
350 | 352 |
_AssertOobCall(verify_path, "power-cycle %s" % full_node_name) |
351 | 353 |
|
352 | 354 |
AssertCommand(["gnt-node", "power", "status", node_name], |
... | ... | |
365 | 367 |
_AssertOobCall(verify_path, "power-on %s" % full_node_name) |
366 | 368 |
|
367 | 369 |
try: |
368 |
AssertCommand(["gnt-node", "power", "off", node_name], fail=True) |
|
370 |
AssertCommand(["gnt-node", "power", "-f", "off", node_name], fail=True)
|
|
369 | 371 |
_AssertOobCall(verify_path, "power-off %s" % full_node_name) |
370 | 372 |
finally: |
371 | 373 |
AssertCommand(["gnt-node", "modify", "-O", "no", node_name]) |
372 | 374 |
|
373 |
AssertCommand(["gnt-node", "power", "cycle", node_name], fail=True) |
|
375 |
AssertCommand(["gnt-node", "power", "-f", "cycle", node_name], fail=True)
|
|
374 | 376 |
_AssertOobCall(verify_path, "power-cycle %s" % full_node_name) |
375 | 377 |
|
376 | 378 |
AssertCommand(["gnt-node", "power", "status", node_name], |
... | ... | |
398 | 400 |
AssertCommand(["gnt-node", "modify", "--node-parameters", |
399 | 401 |
"oob_program=default", node_name]) |
400 | 402 |
AssertCommand(["rm", "-f", oob_path2, verify_path2]) |
403 |
|
|
404 |
verify_path3 = qa_utils.UploadData(master["primary"], "") |
|
405 |
oob_script = ("#!/bin/bash\n" |
|
406 |
"echo \"$@\" >> %s\n") % verify_path3 |
|
407 |
oob_path3 = qa_utils.UploadData(master["primary"], oob_script, mode=0700) |
|
408 |
|
|
409 |
AssertCommand(["gnt-cluster", "modify", "--node-parameters", |
|
410 |
"oob_program=%s" % oob_path3]) |
|
411 |
|
|
412 |
non_master_nodes = [] |
|
413 |
for node in qa_config.get('nodes'): |
|
414 |
if node != master: |
|
415 |
non_master_nodes.append(qa_utils.ResolveNodeName(node)) |
|
416 |
|
|
417 |
try: |
|
418 |
# Without the --force-master it should not have the master in it |
|
419 |
verify_content = ["power-cycle %s" % name for name in non_master_nodes] |
|
420 |
AssertCommand(["gnt-node", "power", "-f", "--all", "cycle"]) |
|
421 |
_AssertOobCall(verify_path3, "\n".join(verify_content)) |
|
422 |
|
|
423 |
# Empty file |
|
424 |
_UpdateOobFile(verify_path3, "") |
|
425 |
# With the --force-master it should have the master at last position |
|
426 |
verify_content.append("power-cycle %s" % full_master_name) |
|
427 |
AssertCommand(["gnt-node", "power", "--force-master", "-f", "--all", |
|
428 |
"cycle"]) |
|
429 |
_AssertOobCall(verify_path3, "\n".join(verify_content)) |
|
430 |
|
|
431 |
# Empty file |
|
432 |
_UpdateOobFile(verify_path3, "") |
|
433 |
# With master as first argument it should still be called last |
|
434 |
cmd = ["gnt-node", "power", "--force-master", "-f", "cycle", master_name] |
|
435 |
cmd.extend(non_master_nodes) |
|
436 |
AssertCommand(cmd) |
|
437 |
_AssertOobCall(verify_path3, "\n".join(verify_content)) |
|
438 |
finally: |
|
439 |
AssertCommand(["rm", "-f", oob_path3, verify_path3]) |
|
401 | 440 |
finally: |
402 | 441 |
AssertCommand(["gnt-cluster", "modify", "--node-parameters", |
403 | 442 |
"oob_program="]) |
Also available in: Unified diff