Resource Class update (validation, list of flavors)

- List of flavors fixed, according to tzumains latest patch
- Validation of uniquenes of ResourceClass name added
- Test fixed for unique validation

Change-Id: Ibfaae64c126c4af00cdc32813d290189c25c255e
This commit is contained in:
Ladislav Smola
2013-06-20 17:58:54 +02:00
committed by Tomas Sedovic
parent 50ea6f89af
commit b3312a97d0
3 changed files with 54 additions and 12 deletions

View File

@@ -89,16 +89,31 @@ class ResourceClassesTable(tables.DataTable):
class FlavorsTable(tables.DataTable):
name = tables.Column("name",
verbose_name=_("Name"))
vcpus = tables.Column("vcpus",
verbose_name=_("Vcpus"))
ram = tables.Column("ram",
verbose_name=_("RAM (MB)"))
root_disk = tables.Column("root_disk",
verbose_name=_("Root Disk (GB)"))
ephem_d = tables.Column("ephem_d",
verbose_name=_("Ephem. D. (GB)"))
swap_disk = tables.Column("swap_disk",
verbose_name=_("Swap Disk (GB)"))
vcpu = tables.Column(
"vcpu",
verbose_name=_('VCPU'),
filters=(lambda x: getattr(x, 'value', ''),)
)
ram = tables.Column(
"ram",
verbose_name=_('RAM (MB)'),
filters=(lambda x: getattr(x, 'value', ''),)
)
root_disk = tables.Column(
"root_disk",
verbose_name=_('Root Disk (GB)'),
filters=(lambda x: getattr(x, 'value', ''),)
)
ephemeral_disk = tables.Column(
"ephemeral_disk",
verbose_name=_('Ephemeral Disk (GB)'),
filters=(lambda x: getattr(x, 'value', ''),)
)
swap_disk = tables.Column(
"swap_disk",
verbose_name=_('Swap Disk (MB)'),
filters=(lambda x: getattr(x, 'value', ''),)
)
max_vms = tables.Column("max_vms",
auto='form_widget',
verbose_name=_("Max. VMs"),

View File

@@ -34,6 +34,7 @@ class ResourceClassesTests(test.BaseAdminViewTests):
)})
def test_create_resource_class(self):
new_resource_class = self.management_resource_classes.first()
new_unique_name = "unique_name_for_sure"
all_flavors = self.management_flavors.list()
all_racks = self.management_racks.list()
@@ -54,7 +55,7 @@ class ResourceClassesTests(test.BaseAdminViewTests):
# post
api.management.ResourceClass.create(
IsA(http.HttpRequest),
name=new_resource_class.name,
name=new_unique_name,
service_type=new_resource_class.service_type).\
AndReturn(new_resource_class)
api.management.ResourceClass.set_resources(
@@ -72,7 +73,7 @@ class ResourceClassesTests(test.BaseAdminViewTests):
res = self.client.get(url)
self.assertEqual(res.status_code, 200)
form_data = {'name': new_resource_class.name,
form_data = {'name': new_unique_name,
'service_type': new_resource_class.service_type}
res = self.client.post(url, form_data)
self.assertNoFormErrors(res)

View File

@@ -46,6 +46,32 @@ class ResourceClassInfoAndFlavorsAction(workflows.Action):
attrs={'class': 'switchable'})
)
def clean(self):
cleaned_data = super(ResourceClassInfoAndFlavorsAction,
self).clean()
name = cleaned_data.get('name')
resource_class_id = self.initial.get('resource_class_id', None)
try:
resource_classes = api.management.ResourceClass.list(self.request)
except:
resource_classes = []
msg = _('Unable to get resource class list')
exceptions.check_message(["Connection", "refused"], msg)
raise
if resource_classes is not None:
for resource_class in resource_classes:
if resource_class.name == name and (
resource_class_id is None or
resource_class_id != resource_class.id):
raise forms.ValidationError(
_('The name "%s" is already used by'
' another resource class.')
% name
)
return cleaned_data
class Meta:
name = _("Class Settings")
help_text = _("From here you can fill the class "