Revision b24b52d9 qa/qa_cluster.py
b/qa/qa_cluster.py | ||
---|---|---|
185 | 185 |
if constants.DT_FILE in enabled_disk_templates: |
186 | 186 |
cmd.append( |
187 | 187 |
"--file-storage-dir=%s" % |
188 |
qa_config.get("file-storage-dir", pathutils.DEFAULT_FILE_STORAGE_DIR)) |
|
188 |
qa_config.get("default-file-storage-dir", |
|
189 |
pathutils.DEFAULT_FILE_STORAGE_DIR)) |
|
189 | 190 |
|
190 | 191 |
for spec_type in ("mem-size", "disk-size", "disk-count", "cpu-count", |
191 | 192 |
"nic-count"): |
... | ... | |
439 | 440 |
AssertCommand(["gnt-cluster", "modify", "-D", param], fail=True) |
440 | 441 |
|
441 | 442 |
|
443 |
def _GetOtherEnabledDiskTemplate(undesired_disk_templates, |
|
444 |
enabled_disk_templates): |
|
445 |
"""Returns one template that is not in the undesired set. |
|
446 |
|
|
447 |
@type undesired_disk_templates: list of string |
|
448 |
@param undesired_disk_templates: a list of disk templates that we want to |
|
449 |
exclude when drawing one disk template from the list of enabled |
|
450 |
disk templates |
|
451 |
@type enabled_disk_templates: list of string |
|
452 |
@param enabled_disk_templates: list of enabled disk templates (in QA) |
|
453 |
|
|
454 |
""" |
|
455 |
desired_templates = list(set(enabled_disk_templates) |
|
456 |
- set(undesired_disk_templates)) |
|
457 |
if desired_templates: |
|
458 |
template = desired_templates[0] |
|
459 |
else: |
|
460 |
# If no desired disk template is available for QA, choose 'diskless' and |
|
461 |
# hope for the best. |
|
462 |
template = constants.ST_DISKLESS |
|
463 |
|
|
464 |
return template |
|
465 |
|
|
466 |
|
|
467 |
def TestClusterModifyFileBasedStorageDir( |
|
468 |
file_disk_template, dir_config_key, default_dir, option_name): |
|
469 |
"""Tests gnt-cluster modify wrt to file-based directory options. |
|
470 |
|
|
471 |
@type file_disk_template: string |
|
472 |
@param file_disk_template: file-based disk template |
|
473 |
@type dir_config_key: string |
|
474 |
@param dir_config_key: key for the QA config to retrieve the default |
|
475 |
directory value |
|
476 |
@type default_dir: string |
|
477 |
@param default_dir: default directory, if the QA config does not specify |
|
478 |
it |
|
479 |
@type option_name: string |
|
480 |
@param option_name: name of the option of 'gnt-cluster modify' to |
|
481 |
change the directory |
|
482 |
|
|
483 |
""" |
|
484 |
enabled_disk_templates = qa_config.GetEnabledDiskTemplates() |
|
485 |
assert file_disk_template in [constants.DT_FILE, constants.DT_SHARED_FILE] |
|
486 |
if not qa_config.IsTemplateSupported(file_disk_template): |
|
487 |
return |
|
488 |
|
|
489 |
# Get some non-file-based disk template to disable file storage |
|
490 |
other_disk_template = _GetOtherEnabledDiskTemplate( |
|
491 |
utils.storage.GetDiskTemplatesOfStorageType(constants.ST_FILE), |
|
492 |
enabled_disk_templates) |
|
493 |
|
|
494 |
file_storage_dir = qa_config.get(dir_config_key, default_dir) |
|
495 |
invalid_file_storage_dir = "/boot/" |
|
496 |
|
|
497 |
for fail, cmd in [ |
|
498 |
(False, ["gnt-cluster", "modify", |
|
499 |
"--enabled-disk-templates=%s" % file_disk_template]), |
|
500 |
(False, ["gnt-cluster", "modify", |
|
501 |
"--%s=%s" % (option_name, file_storage_dir)]), |
|
502 |
(False, ["gnt-cluster", "modify", |
|
503 |
"--%s=%s" % (option_name, invalid_file_storage_dir)]), |
|
504 |
# file storage dir is set to an inacceptable path, thus verify |
|
505 |
# should fail |
|
506 |
(True, ["gnt-cluster", "verify"]), |
|
507 |
# unsetting the storage dir while file storage is enabled |
|
508 |
# should fail |
|
509 |
(True, ["gnt-cluster", "modify", |
|
510 |
"--%s=" % option_name]), |
|
511 |
(False, ["gnt-cluster", "modify", |
|
512 |
"--%s=%s" % (option_name, file_storage_dir)]), |
|
513 |
(False, ["gnt-cluster", "modify", |
|
514 |
"--enabled-disk-templates=%s" % other_disk_template]), |
|
515 |
(False, ["gnt-cluster", "modify", |
|
516 |
"--%s=%s" % (option_name, invalid_file_storage_dir)]), |
|
517 |
# file storage is set to an inacceptable path, but file storage |
|
518 |
# is disabled, thus verify should not fail |
|
519 |
(False, ["gnt-cluster", "verify"]), |
|
520 |
# unsetting the file storage dir while file storage is not enabled |
|
521 |
# should be fine |
|
522 |
(False, ["gnt-cluster", "modify", |
|
523 |
"--%s=" % option_name]), |
|
524 |
# resetting everything to sane values |
|
525 |
(False, ["gnt-cluster", "modify", |
|
526 |
"--%s=%s" % (option_name, file_storage_dir), |
|
527 |
"--enabled-disk-templates=%s" % ",".join(enabled_disk_templates)]) |
|
528 |
]: |
|
529 |
AssertCommand(cmd, fail=fail) |
|
530 |
|
|
531 |
|
|
532 |
def TestClusterModifyFileStorageDir(): |
|
533 |
"""gnt-cluster modify --file-storage-dir=...""" |
|
534 |
TestClusterModifyFileBasedStorageDir( |
|
535 |
constants.DT_FILE, "default-file-storage-dir", |
|
536 |
pathutils.DEFAULT_FILE_STORAGE_DIR, |
|
537 |
"file-storage-dir") |
|
538 |
|
|
539 |
|
|
540 |
def TestClusterModifySharedFileStorageDir(): |
|
541 |
"""gnt-cluster modify --shared-file-storage-dir=...""" |
|
542 |
TestClusterModifyFileBasedStorageDir( |
|
543 |
constants.DT_SHARED_FILE, "default-shared-file-storage-dir", |
|
544 |
pathutils.DEFAULT_SHARED_FILE_STORAGE_DIR, |
|
545 |
"shared-file-storage-dir") |
|
546 |
|
|
547 |
|
|
442 | 548 |
def TestClusterModifyDiskTemplates(): |
443 | 549 |
"""gnt-cluster modify --enabled-disk-templates=...""" |
444 | 550 |
enabled_disk_templates = qa_config.GetEnabledDiskTemplates() |
... | ... | |
530 | 636 |
return |
531 | 637 |
|
532 | 638 |
# determine an LVM and a non-LVM disk template for the tests |
533 |
non_lvm_templates = list(set(enabled_disk_templates)
|
|
534 |
- set(utils.GetLvmDiskTemplates()))
|
|
639 |
non_lvm_template = _GetOtherEnabledDiskTemplate(utils.GetLvmDiskTemplates(),
|
|
640 |
enabled_disk_templates)
|
|
535 | 641 |
lvm_template = list(set(enabled_disk_templates) |
536 | 642 |
.intersection(set(utils.GetLvmDiskTemplates())))[0] |
537 |
non_lvm_template = None |
|
538 |
if non_lvm_templates: |
|
539 |
non_lvm_template = non_lvm_templates[0] |
|
540 |
else: |
|
541 |
# If no non-lvm disk template is available for QA, choose 'diskless' and |
|
542 |
# hope for the best. |
|
543 |
non_lvm_template = constants.ST_DISKLESS |
|
544 | 643 |
|
545 | 644 |
vgname = qa_config.get("vg-name", constants.DEFAULT_VG) |
546 | 645 |
|
Also available in: Unified diff