160 |
160 |
"""
|
161 |
161 |
if disk_template == constants.DT_DRBD8:
|
162 |
162 |
return _CreateInstanceDrbd8(nodes, fail=fail)
|
163 |
|
elif disk_template in [constants.DT_DISKLESS, constants.DT_PLAIN]:
|
|
163 |
elif disk_template in [constants.DT_DISKLESS, constants.DT_PLAIN,
|
|
164 |
constants.DT_FILE]:
|
164 |
165 |
return _CreateInstanceByDiskTemplateOneNode(nodes, disk_template, fail=fail)
|
165 |
166 |
else:
|
166 |
|
#FIXME: Implement this for the remaining disk templates
|
167 |
|
qa_error.Error("Instance creation not implemented for disk type '%s'." %
|
168 |
|
disk_template)
|
|
167 |
# FIXME: This assumes that for all other disk templates, we only need one
|
|
168 |
# node and no disk template specific parameters. This else-branch is
|
|
169 |
# currently only used in cases where we expect failure. Extend it when
|
|
170 |
# QA needs for these templates change.
|
|
171 |
return _CreateInstanceByDiskTemplateOneNode(nodes, disk_template, fail=fail)
|
169 |
172 |
|
170 |
173 |
|
171 |
174 |
def _GetInstanceInfo(instance):
|
... | ... | |
1001 |
1004 |
filestorage = pathutils.DEFAULT_FILE_STORAGE_DIR
|
1002 |
1005 |
disk = os.path.join(filestorage, instance.name)
|
1003 |
1006 |
AssertCommand(["rm", "-rf", disk], node=snode)
|
|
1007 |
|
|
1008 |
|
|
1009 |
def TestInstanceCreationRestrictedByDiskTemplates():
|
|
1010 |
"""Test if adding instances is only possible if they use an enabled
|
|
1011 |
disk template."""
|
|
1012 |
enabled_disk_templates = qa_config.GetEnabledDiskTemplates()
|
|
1013 |
nodes = qa_config.AcquireManyNodes(2)
|
|
1014 |
|
|
1015 |
# Setup the cluster with the enabled_disk_templates
|
|
1016 |
AssertCommand(
|
|
1017 |
["gnt-cluster", "modify",
|
|
1018 |
"--enabled-disk-template=%s" %
|
|
1019 |
",".join(enabled_disk_templates)],
|
|
1020 |
fail=False)
|
|
1021 |
|
|
1022 |
# Test instance creation for enabled disk templates
|
|
1023 |
for disk_template in enabled_disk_templates:
|
|
1024 |
instance = CreateInstanceByDiskTemplate(nodes, disk_template, False)
|
|
1025 |
TestInstanceRemove(instance)
|
|
1026 |
|
|
1027 |
# Test that instance creation fails for disabled disk templates
|
|
1028 |
disabled_disk_templates = list(constants.DISK_TEMPLATES
|
|
1029 |
- set(enabled_disk_templates))
|
|
1030 |
for disk_template in disabled_disk_templates:
|
|
1031 |
instance = CreateInstanceByDiskTemplate(nodes, disk_template, True)
|
|
1032 |
|
|
1033 |
# Test instance creation for after disabling enabled disk templates
|
|
1034 |
if (len(enabled_disk_templates) > 1):
|
|
1035 |
# Partition the disk templates, enable them separately and check if the
|
|
1036 |
# disabled ones cannot be used by instances.
|
|
1037 |
middle = len(enabled_disk_templates) / 2
|
|
1038 |
templates1 = enabled_disk_templates[:middle]
|
|
1039 |
templates2 = enabled_disk_templates[middle:]
|
|
1040 |
|
|
1041 |
for (enabled, disabled) in [(templates1, templates2),
|
|
1042 |
(templates2, templates1)]:
|
|
1043 |
AssertCommand(["gnt-cluster", "modify",
|
|
1044 |
"--enabled-disk-template=%s" %
|
|
1045 |
",".join(enabled)],
|
|
1046 |
fail=False)
|
|
1047 |
for disk_template in disabled:
|
|
1048 |
CreateInstanceByDiskTemplate(nodes, disk_template, True)
|
|
1049 |
elif (len(enabled_disk_templates) == 1):
|
|
1050 |
# If only one disk template is enabled in the QA config, we have to enable
|
|
1051 |
# some of the disabled disk templates in order to test if the disabling the
|
|
1052 |
# only enabled disk template prohibits creating instances of that template.
|
|
1053 |
AssertCommand(["gnt-cluster", "modify",
|
|
1054 |
"--enabled-disk-template=%s" %
|
|
1055 |
",".join(disabled_disk_templates)],
|
|
1056 |
fail=False)
|
|
1057 |
CreateInstanceByDiskTemplate(nodes, enabled_disk_templates[0], True)
|
|
1058 |
else:
|
|
1059 |
raise qa_error.Error("Please enable at least one disk template"
|
|
1060 |
" in your QA setup.")
|
|
1061 |
|
|
1062 |
# Restore initially enabled disk templates
|
|
1063 |
AssertCommand(["gnt-cluster", "modify",
|
|
1064 |
"--enabled-disk-template=%s" %
|
|
1065 |
",".join(enabled_disk_templates)],
|
|
1066 |
fail=False)
|