diff options
author | Ladislav Smola <lsmola@redhat.com> | 2013-06-20 17:58:54 +0200 |
---|---|---|
committer | Tomas Sedovic <tomas@sedovic.cz> | 2013-08-01 16:18:54 +0200 |
commit | b3312a97d0b7ae3cfeaa09df22e875ed1b103baf (patch) | |
tree | 35eecf6af2b2d1a543cd19ac8dcba67963f185f4 | |
parent | 50ea6f89af3d8ec207e23d80ed3869ad2e7f8518 (diff) | |
download | tuskar-ui-b3312a97d0b7ae3cfeaa09df22e875ed1b103baf.tar.gz |
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
3 files changed, 54 insertions, 12 deletions
diff --git a/openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/tables.py b/openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/tables.py index 1b4a3b0c..7d549f61 100644 --- a/openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/tables.py +++ b/openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/tables.py @@ -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"), diff --git a/openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/tests.py b/openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/tests.py index 7f004580..bdb5cd20 100644 --- a/openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/tests.py +++ b/openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/tests.py @@ -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) diff --git a/openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/workflows.py b/openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/workflows.py index aaa68984..3a3b7752 100644 --- a/openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/workflows.py +++ b/openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/workflows.py @@ -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 " |