Add Validation msg in Create Extra Spec Form under Volume Type Panel

This patch add a validation message when a user try to 'Create'
a extra spec with an existing key name under Volume Type panel.

Change-Id: I6a1eac269e616ba0861a41eda5eac1b1a4cdd1d0
Closes-Bug: #1818826
This commit is contained in:
manchandavishal 2019-03-06 14:04:34 +00:00
parent 8f335a42f6
commit a85687cb7e
2 changed files with 16 additions and 1 deletions

View File

@ -34,6 +34,20 @@ class CreateExtraSpec(forms.SelfHandlingForm):
error_messages=KEY_ERROR_MESSAGES)
value = forms.CharField(max_length=255, label=_("Value"))
def clean(self):
data = super(CreateExtraSpec, self).clean()
type_id = self.initial['type_id']
extra_list = api.cinder.volume_type_extra_get(self.request,
type_id)
for extra in extra_list:
if extra.key.lower() == data['key'].lower():
error_msg = _('Key with name "%s" already exists. Use Edit to '
'update the value, else create key with '
'different name.') % data['key']
raise forms.ValidationError(error_msg)
return data
def handle(self, request, data):
type_id = self.initial['type_id']
try:

View File

@ -54,7 +54,8 @@ class VolTypeExtrasTests(test.BaseAdminViewTests):
self.mock_volume_type_extra_get.assert_called_once_with(
test.IsHttpRequest(), vol_type.id)
@test.create_mocks({api.cinder: ('volume_type_extra_set', )})
@test.create_mocks({api.cinder: ('volume_type_extra_set',
'volume_type_extra_get')})
def test_extra_create_post(self):
vol_type = self.cinder_volume_types.first()
create_url = reverse(