summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLadislav Smola <lsmola@redhat.com>2013-06-20 17:58:54 +0200
committerTomas Sedovic <tomas@sedovic.cz>2013-08-01 16:18:54 +0200
commitb3312a97d0b7ae3cfeaa09df22e875ed1b103baf (patch)
tree35eecf6af2b2d1a543cd19ac8dcba67963f185f4
parent50ea6f89af3d8ec207e23d80ed3869ad2e7f8518 (diff)
downloadtuskar-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
-rw-r--r--openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/tables.py35
-rw-r--r--openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/tests.py5
-rw-r--r--openstack_dashboard/dashboards/infrastructure/resource_management/resource_classes/workflows.py26
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 "