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:
committed by
Tomas Sedovic
parent
50ea6f89af
commit
b3312a97d0
@@ -89,16 +89,31 @@ class ResourceClassesTable(tables.DataTable):
|
|||||||
class FlavorsTable(tables.DataTable):
|
class FlavorsTable(tables.DataTable):
|
||||||
name = tables.Column("name",
|
name = tables.Column("name",
|
||||||
verbose_name=_("Name"))
|
verbose_name=_("Name"))
|
||||||
vcpus = tables.Column("vcpus",
|
vcpu = tables.Column(
|
||||||
verbose_name=_("Vcpus"))
|
"vcpu",
|
||||||
ram = tables.Column("ram",
|
verbose_name=_('VCPU'),
|
||||||
verbose_name=_("RAM (MB)"))
|
filters=(lambda x: getattr(x, 'value', ''),)
|
||||||
root_disk = tables.Column("root_disk",
|
)
|
||||||
verbose_name=_("Root Disk (GB)"))
|
ram = tables.Column(
|
||||||
ephem_d = tables.Column("ephem_d",
|
"ram",
|
||||||
verbose_name=_("Ephem. D. (GB)"))
|
verbose_name=_('RAM (MB)'),
|
||||||
swap_disk = tables.Column("swap_disk",
|
filters=(lambda x: getattr(x, 'value', ''),)
|
||||||
verbose_name=_("Swap Disk (GB)"))
|
)
|
||||||
|
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",
|
max_vms = tables.Column("max_vms",
|
||||||
auto='form_widget',
|
auto='form_widget',
|
||||||
verbose_name=_("Max. VMs"),
|
verbose_name=_("Max. VMs"),
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class ResourceClassesTests(test.BaseAdminViewTests):
|
|||||||
)})
|
)})
|
||||||
def test_create_resource_class(self):
|
def test_create_resource_class(self):
|
||||||
new_resource_class = self.management_resource_classes.first()
|
new_resource_class = self.management_resource_classes.first()
|
||||||
|
new_unique_name = "unique_name_for_sure"
|
||||||
|
|
||||||
all_flavors = self.management_flavors.list()
|
all_flavors = self.management_flavors.list()
|
||||||
all_racks = self.management_racks.list()
|
all_racks = self.management_racks.list()
|
||||||
@@ -54,7 +55,7 @@ class ResourceClassesTests(test.BaseAdminViewTests):
|
|||||||
# post
|
# post
|
||||||
api.management.ResourceClass.create(
|
api.management.ResourceClass.create(
|
||||||
IsA(http.HttpRequest),
|
IsA(http.HttpRequest),
|
||||||
name=new_resource_class.name,
|
name=new_unique_name,
|
||||||
service_type=new_resource_class.service_type).\
|
service_type=new_resource_class.service_type).\
|
||||||
AndReturn(new_resource_class)
|
AndReturn(new_resource_class)
|
||||||
api.management.ResourceClass.set_resources(
|
api.management.ResourceClass.set_resources(
|
||||||
@@ -72,7 +73,7 @@ class ResourceClassesTests(test.BaseAdminViewTests):
|
|||||||
res = self.client.get(url)
|
res = self.client.get(url)
|
||||||
self.assertEqual(res.status_code, 200)
|
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}
|
'service_type': new_resource_class.service_type}
|
||||||
res = self.client.post(url, form_data)
|
res = self.client.post(url, form_data)
|
||||||
self.assertNoFormErrors(res)
|
self.assertNoFormErrors(res)
|
||||||
|
|||||||
@@ -46,6 +46,32 @@ class ResourceClassInfoAndFlavorsAction(workflows.Action):
|
|||||||
attrs={'class': 'switchable'})
|
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:
|
class Meta:
|
||||||
name = _("Class Settings")
|
name = _("Class Settings")
|
||||||
help_text = _("From here you can fill the class "
|
help_text = _("From here you can fill the class "
|
||||||
|
|||||||
Reference in New Issue
Block a user