API v2.41, create share type with description
Added possibility to create share type with description. Partial-Bug: #1823078 Change-Id: Ib665c7a9b02be902c89422221f640364390d7eba
This commit is contained in:
@@ -28,7 +28,7 @@ from manilaclient import client as manila_client
|
|||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
MANILA_UI_USER_AGENT_REPR = "manila_ui_plugin_for_horizon"
|
MANILA_UI_USER_AGENT_REPR = "manila_ui_plugin_for_horizon"
|
||||||
MANILA_VERSION = "2.40"
|
MANILA_VERSION = "2.41"
|
||||||
MANILA_SERVICE_TYPE = "sharev2"
|
MANILA_SERVICE_TYPE = "sharev2"
|
||||||
|
|
||||||
# API static values
|
# API static values
|
||||||
@@ -398,9 +398,10 @@ def share_type_get(request, share_type_id):
|
|||||||
|
|
||||||
|
|
||||||
def share_type_create(request, name, spec_driver_handles_share_servers,
|
def share_type_create(request, name, spec_driver_handles_share_servers,
|
||||||
is_public=True):
|
description=None, is_public=True):
|
||||||
return manilaclient(request).share_types.create(
|
return manilaclient(request).share_types.create(
|
||||||
name=name,
|
name=name,
|
||||||
|
description=description,
|
||||||
spec_driver_handles_share_servers=spec_driver_handles_share_servers,
|
spec_driver_handles_share_servers=spec_driver_handles_share_servers,
|
||||||
is_public=is_public)
|
is_public=is_public)
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ ST_EXTRA_SPECS_FORM_ATTRS = {
|
|||||||
|
|
||||||
class CreateShareType(forms.SelfHandlingForm):
|
class CreateShareType(forms.SelfHandlingForm):
|
||||||
name = forms.CharField(max_length="255", label=_("Name"), required=True)
|
name = forms.CharField(max_length="255", label=_("Name"), required=True)
|
||||||
|
description = forms.CharField(widget=forms.Textarea, max_length="255",
|
||||||
|
label=_("Description"), required=False)
|
||||||
spec_driver_handles_share_servers = forms.ChoiceField(
|
spec_driver_handles_share_servers = forms.ChoiceField(
|
||||||
label=_("Driver handles share servers"), required=True,
|
label=_("Driver handles share servers"), required=True,
|
||||||
choices=(('False', 'False'), ('True', 'True')))
|
choices=(('False', 'False'), ('True', 'True')))
|
||||||
@@ -72,7 +74,8 @@ class CreateShareType(forms.SelfHandlingForm):
|
|||||||
is_public = (self.enable_public_share_type_creation and
|
is_public = (self.enable_public_share_type_creation and
|
||||||
data["is_public"])
|
data["is_public"])
|
||||||
share_type = manila.share_type_create(
|
share_type = manila.share_type_create(
|
||||||
request, data["name"], spec_dhss, is_public=is_public)
|
request, data["name"], spec_dhss,
|
||||||
|
description=data["description"], is_public=is_public)
|
||||||
if set_dict:
|
if set_dict:
|
||||||
manila.share_type_set_extra_specs(
|
manila.share_type_set_extra_specs(
|
||||||
request, share_type.id, set_dict)
|
request, share_type.id, set_dict)
|
||||||
@@ -90,6 +93,9 @@ class CreateShareType(forms.SelfHandlingForm):
|
|||||||
|
|
||||||
|
|
||||||
class UpdateShareType(forms.SelfHandlingForm):
|
class UpdateShareType(forms.SelfHandlingForm):
|
||||||
|
extra_specs = forms.CharField(
|
||||||
|
required=False, label=_("Extra specs"),
|
||||||
|
widget=forms.widgets.Textarea(attrs=ST_EXTRA_SPECS_FORM_ATTRS))
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(UpdateShareType, self).__init__(*args, **kwargs)
|
super(UpdateShareType, self).__init__(*args, **kwargs)
|
||||||
@@ -100,10 +106,6 @@ class UpdateShareType(forms.SelfHandlingForm):
|
|||||||
es_str += "%s=%s\r\n" % (k, v)
|
es_str += "%s=%s\r\n" % (k, v)
|
||||||
self.initial["extra_specs"] = es_str
|
self.initial["extra_specs"] = es_str
|
||||||
|
|
||||||
extra_specs = forms.CharField(
|
|
||||||
required=False, label=_("Extra specs"),
|
|
||||||
widget=forms.widgets.Textarea(attrs=ST_EXTRA_SPECS_FORM_ATTRS))
|
|
||||||
|
|
||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
try:
|
try:
|
||||||
set_dict, unset_list = utils.parse_str_meta(data['extra_specs'])
|
set_dict, unset_list = utils.parse_str_meta(data['extra_specs'])
|
||||||
|
|||||||
@@ -83,6 +83,8 @@ class UpdateShareType(tables.LinkAction):
|
|||||||
|
|
||||||
class ShareTypesTable(tables.DataTable):
|
class ShareTypesTable(tables.DataTable):
|
||||||
name = tables.WrappingColumn("name", verbose_name=_("Name"))
|
name = tables.WrappingColumn("name", verbose_name=_("Name"))
|
||||||
|
description = tables.WrappingColumn(
|
||||||
|
"description", verbose_name=_("Description"))
|
||||||
extra_specs = tables.Column("extra_specs", verbose_name=_("Extra specs"), )
|
extra_specs = tables.Column("extra_specs", verbose_name=_("Extra specs"), )
|
||||||
visibility = tables.Column(
|
visibility = tables.Column(
|
||||||
"is_public", verbose_name=_("Visibility"),
|
"is_public", verbose_name=_("Visibility"),
|
||||||
|
|||||||
@@ -674,24 +674,27 @@ class ManilaApiTests(base.APITestCase):
|
|||||||
self.manilaclient.share_types.create.assert_called_once_with(
|
self.manilaclient.share_types.create.assert_called_once_with(
|
||||||
name=name,
|
name=name,
|
||||||
spec_driver_handles_share_servers=dhss,
|
spec_driver_handles_share_servers=dhss,
|
||||||
|
description=None,
|
||||||
is_public=True)
|
is_public=True)
|
||||||
|
|
||||||
@ddt.data(
|
@ddt.data(
|
||||||
(True, True),
|
(True, "fake_description", True),
|
||||||
(False, True),
|
(False, "fake_description", True),
|
||||||
(True, False),
|
(True, "fake_description", False),
|
||||||
(False, False),
|
(False, "fake_description", False),
|
||||||
)
|
)
|
||||||
@ddt.unpack
|
@ddt.unpack
|
||||||
def test_share_type_create_with_custom_values(
|
def test_share_type_create_with_custom_values(
|
||||||
self, dhss, is_public):
|
self, dhss, description, is_public):
|
||||||
name = 'fake_share_type_name'
|
name = 'fake_share_type_name'
|
||||||
|
|
||||||
api.share_type_create(
|
api.share_type_create(
|
||||||
self.request, name, dhss, is_public)
|
self.request, name, dhss, description,
|
||||||
|
is_public)
|
||||||
|
|
||||||
self.manilaclient.share_types.create.assert_called_once_with(
|
self.manilaclient.share_types.create.assert_called_once_with(
|
||||||
name=name,
|
name=name,
|
||||||
|
description=description,
|
||||||
spec_driver_handles_share_servers=dhss,
|
spec_driver_handles_share_servers=dhss,
|
||||||
is_public=is_public)
|
is_public=is_public)
|
||||||
|
|
||||||
|
|||||||
@@ -180,6 +180,7 @@ class ManilaDashboardsAdminSharesCreateShareTypeFormTests(base.APITestCase):
|
|||||||
'is_public': False,
|
'is_public': False,
|
||||||
'spec_driver_handles_share_servers': 'True',
|
'spec_driver_handles_share_servers': 'True',
|
||||||
'name': 'share',
|
'name': 'share',
|
||||||
|
'description': ''
|
||||||
}
|
}
|
||||||
|
|
||||||
result = form.handle(self.request, data)
|
result = form.handle(self.request, data)
|
||||||
@@ -188,17 +189,19 @@ class ManilaDashboardsAdminSharesCreateShareTypeFormTests(base.APITestCase):
|
|||||||
self.manilaclient.share_types.create.assert_called_once_with(
|
self.manilaclient.share_types.create.assert_called_once_with(
|
||||||
name=data['name'],
|
name=data['name'],
|
||||||
spec_driver_handles_share_servers='true',
|
spec_driver_handles_share_servers='true',
|
||||||
|
description=data['description'],
|
||||||
is_public=data["is_public"])
|
is_public=data["is_public"])
|
||||||
mock_horizon_messages_success.assert_called_once_with(
|
mock_horizon_messages_success.assert_called_once_with(
|
||||||
self.request, mock.ANY)
|
self.request, mock.ANY)
|
||||||
|
|
||||||
@mock.patch('horizon.messages.success')
|
@mock.patch('horizon.messages.success')
|
||||||
def test_create_share_type_with_extra_specs(self,
|
def test_create_share_type_with_extra_specs_and_description(
|
||||||
mock_horizon_messages_success):
|
self, mock_horizon_messages_success):
|
||||||
form = self._get_form()
|
form = self._get_form()
|
||||||
data = {'extra_specs': 'a=b \n c=d',
|
data = {'extra_specs': 'a=b \n c=d',
|
||||||
'is_public': False,
|
'is_public': False,
|
||||||
'spec_driver_handles_share_servers': 'True',
|
'spec_driver_handles_share_servers': 'True',
|
||||||
|
'description': 'st_description',
|
||||||
'name': 'share'}
|
'name': 'share'}
|
||||||
|
|
||||||
result = form.handle(self.request, data)
|
result = form.handle(self.request, data)
|
||||||
@@ -211,6 +214,7 @@ class ManilaDashboardsAdminSharesCreateShareTypeFormTests(base.APITestCase):
|
|||||||
self.manilaclient.share_types.create.assert_called_once_with(
|
self.manilaclient.share_types.create.assert_called_once_with(
|
||||||
name=data['name'],
|
name=data['name'],
|
||||||
spec_driver_handles_share_servers='true',
|
spec_driver_handles_share_servers='true',
|
||||||
|
description=data['description'],
|
||||||
is_public=data["is_public"])
|
is_public=data["is_public"])
|
||||||
mock_horizon_messages_success.assert_called_once_with(
|
mock_horizon_messages_success.assert_called_once_with(
|
||||||
self.request, mock.ANY)
|
self.request, mock.ANY)
|
||||||
@@ -230,6 +234,7 @@ class ManilaDashboardsAdminSharesCreateShareTypeFormTests(base.APITestCase):
|
|||||||
'is_public': enable_public_share_type_creation,
|
'is_public': enable_public_share_type_creation,
|
||||||
'spec_driver_handles_share_servers': 'True',
|
'spec_driver_handles_share_servers': 'True',
|
||||||
'name': 'share',
|
'name': 'share',
|
||||||
|
'description': '',
|
||||||
}
|
}
|
||||||
|
|
||||||
result = form.handle(self.request, data)
|
result = form.handle(self.request, data)
|
||||||
@@ -246,6 +251,7 @@ class ManilaDashboardsAdminSharesCreateShareTypeFormTests(base.APITestCase):
|
|||||||
self.manilaclient.share_types.create.assert_called_once_with(
|
self.manilaclient.share_types.create.assert_called_once_with(
|
||||||
name=data['name'],
|
name=data['name'],
|
||||||
spec_driver_handles_share_servers='true',
|
spec_driver_handles_share_servers='true',
|
||||||
|
description=data['description'],
|
||||||
is_public=enable_public_share_type_creation)
|
is_public=enable_public_share_type_creation)
|
||||||
mock_horizon_messages_success.assert_called_once_with(
|
mock_horizon_messages_success.assert_called_once_with(
|
||||||
self.request, mock.ANY)
|
self.request, mock.ANY)
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ class ShareTypeTests(test.BaseAdminViewTests):
|
|||||||
data = {
|
data = {
|
||||||
'is_public': True,
|
'is_public': True,
|
||||||
'name': 'my_share_type',
|
'name': 'my_share_type',
|
||||||
|
'description': 'share_type_description',
|
||||||
'spec_driver_handles_share_servers': 'False'
|
'spec_driver_handles_share_servers': 'False'
|
||||||
}
|
}
|
||||||
form_data = data.copy()
|
form_data = data.copy()
|
||||||
@@ -61,6 +62,7 @@ class ShareTypeTests(test.BaseAdminViewTests):
|
|||||||
api_manila.share_type_create.assert_called_once_with(
|
api_manila.share_type_create.assert_called_once_with(
|
||||||
mock.ANY, form_data['name'],
|
mock.ANY, form_data['name'],
|
||||||
form_data['spec_driver_handles_share_servers'],
|
form_data['spec_driver_handles_share_servers'],
|
||||||
|
description=form_data['description'],
|
||||||
is_public=form_data['is_public'])
|
is_public=form_data['is_public'])
|
||||||
self.assertRedirectsNoFollow(res, INDEX_URL)
|
self.assertRedirectsNoFollow(res, INDEX_URL)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- Added possibility to create share type with description.
|
||||||
Reference in New Issue
Block a user