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