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():
|