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