Revision 462f0faa qa/qa_cluster.py

b/qa/qa_cluster.py
35 35
import qa_config
36 36
import qa_utils
37 37
import qa_error
38
import qa_instance
38 39

  
39 40
from qa_utils import AssertEqual, AssertCommand, GetCommandOutput
40 41

  
......
392 393

  
393 394
def TestClusterModifyDiskTemplates():
394 395
  """gnt-cluster modify --enabled-disk-templates=..."""
396
  enabled_disk_templates = qa_config.GetEnabledDiskTemplates()
395 397
  default_disk_template = qa_config.GetDefaultDiskTemplate()
398

  
399
  _TestClusterModifyDiskTemplatesArguments(default_disk_template,
400
                                           enabled_disk_templates)
401

  
402
  _RestoreEnabledDiskTemplates()
403
  nodes = qa_config.AcquireManyNodes(2)
404

  
405
  instance_template = enabled_disk_templates[0]
406
  instance = qa_instance.CreateInstanceByDiskTemplate(nodes, instance_template)
407

  
408
  _TestClusterModifyUnusedDiskTemplate(instance_template)
409
  _TestClusterModifyUsedDiskTemplate(instance_template,
410
                                     enabled_disk_templates)
411

  
412
  qa_instance.TestInstanceRemove(instance)
413
  _RestoreEnabledDiskTemplates()
414

  
415

  
416
def _RestoreEnabledDiskTemplates():
417
  """Sets the list of enabled disk templates back to the list of enabled disk
418
     templates from the QA configuration. This can be used to make sure that
419
     the tests that modify the list of disk templates do not interfere with
420
     other tests.
421

  
422
  """
396 423
  AssertCommand(
397 424
    ["gnt-cluster", "modify",
398
     "--enabled-disk-templates=%s" % default_disk_template],
425
     "--enabled-disk-template=%s" %
426
       ",".join(qa_config.GetEnabledDiskTemplates())],
399 427
    fail=False)
400
  AssertCommand(["gnt-cluster", "info"])
428

  
429

  
430
def _TestClusterModifyDiskTemplatesArguments(default_disk_template,
431
                                             enabled_disk_templates):
432
  """Tests argument handling of 'gnt-cluster modify' with respect to
433
     the parameter '--enabled-disk-templates'. This test is independent
434
     of instances.
435

  
436
  """
401 437
  AssertCommand(
402 438
    ["gnt-cluster", "modify",
403 439
     "--enabled-disk-template=%s" %
404
       ",".join(qa_config.GetEnabledDiskTemplates())],
440
       ",".join(enabled_disk_templates)],
405 441
    fail=False)
406
  AssertCommand(["gnt-cluster", "info"])
442

  
407 443
  # bogus templates
408 444
  AssertCommand(["gnt-cluster", "modify",
409 445
                 "--enabled-disk-templates=pinkbunny"],
410 446
                fail=True)
447

  
411 448
  # duplicate entries do no harm
412 449
  AssertCommand(
413 450
    ["gnt-cluster", "modify",
414 451
     "--enabled-disk-templates=%s,%s" %
415 452
      (default_disk_template, default_disk_template)],
416 453
    fail=False)
417
  AssertCommand(["gnt-cluster", "info"])
454

  
455

  
456
def _TestClusterModifyUsedDiskTemplate(instance_template,
457
                                       enabled_disk_templates):
458
  """Tests that disk templates that are currently in use by instances cannot
459
     be disabled on the cluster.
460

  
461
  """
462
  # If the list of enabled disk templates contains only one template
463
  # we need to add some other templates, because the list of enabled disk
464
  # templates can only be set to a non-empty list.
465
  new_disk_templates = list(set(enabled_disk_templates)
466
                              - set([instance_template]))
467
  if not new_disk_templates:
468
    new_disk_templates = list(set(constants.DISK_TEMPLATES)
469
                                - set([instance_template]))
470
  AssertCommand(
471
    ["gnt-cluster", "modify",
472
     "--enabled-disk-templates=%s" %
473
       ",".join(new_disk_templates)],
474
    fail=True)
475

  
476

  
477
def _TestClusterModifyUnusedDiskTemplate(instance_template):
478
  """Tests that unused disk templates can be disabled safely."""
479
  all_disk_templates = constants.DISK_TEMPLATES
480
  AssertCommand(
481
    ["gnt-cluster", "modify",
482
     "--enabled-disk-templates=%s" %
483
       ",".join(all_disk_templates)],
484
    fail=False)
485
  new_disk_templates = [instance_template]
486
  AssertCommand(
487
    ["gnt-cluster", "modify",
488
     "--enabled-disk-templates=%s" %
489
       ",".join(new_disk_templates)],
490
    fail=False)
418 491

  
419 492

  
420 493
def TestClusterModifyBe():

Also available in: Unified diff