API v2.44, added 'ou' field to security service
Added 'ou' field to security service field. Also, 'description' field was added to display in both project and admin module. Options to update dns_ip, ou, server, domain, password and user fields were added as well. As this options are available for command line interface. Partial-Bug: #1823078 Change-Id: I03c0cb01cc04745e67d94a45e3f7570c1609ede0
This commit is contained in:
parent
03caca6932
commit
b748f23ed1
|
@ -28,7 +28,7 @@ from manilaclient import client as manila_client
|
|||
LOG = logging.getLogger(__name__)
|
||||
|
||||
MANILA_UI_USER_AGENT_REPR = "manila_ui_plugin_for_horizon"
|
||||
MANILA_VERSION = "2.41"
|
||||
MANILA_VERSION = "2.44"
|
||||
MANILA_SERVICE_TYPE = "sharev2"
|
||||
|
||||
# API static values
|
||||
|
@ -312,22 +312,25 @@ def security_service_get(request, sec_service_id, search_opts=None):
|
|||
return manilaclient(request).security_services.get(sec_service_id)
|
||||
|
||||
|
||||
def security_service_create(request, type, dns_ip=None, server=None,
|
||||
def security_service_create(request, type, dns_ip=None, ou=None, server=None,
|
||||
domain=None, user=None, password=None, name=None,
|
||||
description=None):
|
||||
return manilaclient(request).security_services.create(
|
||||
type, dns_ip=dns_ip, server=server, domain=domain, user=user,
|
||||
type, dns_ip=dns_ip, ou=ou, server=server, domain=domain, user=user,
|
||||
password=password, name=name, description=description)
|
||||
|
||||
|
||||
def security_service_update(request, security_service_id, dns_ip=None,
|
||||
server=None,
|
||||
domain=None, user=None, password=None, name=None,
|
||||
description=None):
|
||||
def security_service_update(request, security_service_id,
|
||||
dns_ip=None, ou=None,
|
||||
server=None, domain=None,
|
||||
password=None, user=None,
|
||||
name=None, description=None):
|
||||
return manilaclient(request).security_services.update(
|
||||
security_service_id, dns_ip=dns_ip, server=server, domain=domain,
|
||||
user=user, password=password, name=name, description=description,
|
||||
)
|
||||
security_service_id,
|
||||
dns_ip=dns_ip, ou=ou,
|
||||
server=server, domain=domain,
|
||||
password=password, user=user,
|
||||
name=name, description=description)
|
||||
|
||||
|
||||
def security_service_delete(request, security_service_id):
|
||||
|
|
|
@ -44,8 +44,10 @@ class SecurityServicesTable(tables.DataTable):
|
|||
name = tables.WrappingColumn(
|
||||
"name", verbose_name=_("Name"),
|
||||
link="horizon:admin:security_services:security_service_detail")
|
||||
description = tables.Column("description", verbose_name=_("Description"))
|
||||
project = tables.Column("project_name", verbose_name=_("Project"))
|
||||
dns_ip = tables.Column("dns_ip", verbose_name=_("DNS IP"))
|
||||
ou = tables.Column("ou", verbose_name=_("Organizational Unit"))
|
||||
server = tables.Column("server", verbose_name=_("Server"))
|
||||
domain = tables.Column("domain", verbose_name=_("Domain"))
|
||||
user = tables.Column("user", verbose_name=_("Sid"))
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
<dl class="dl-horizontal">
|
||||
<dt>{% trans "DNS IP" %}</dt>
|
||||
<dd>{{ sec_service.dns_ip }}</dd>
|
||||
<dt>{% trans "Organizational Unit" %}</dt>
|
||||
<dd>{{ sec_service.ou }}</dd>
|
||||
<dt>{% trans "Server" %}</dt>
|
||||
<dd>{{ sec_service.server }}</dd>
|
||||
<dt>{% trans "Domain" %}</dt>
|
||||
|
|
|
@ -27,6 +27,10 @@ from manila_ui.api import manila
|
|||
class Create(forms.SelfHandlingForm):
|
||||
name = forms.CharField(max_length="255", label=_("Name"))
|
||||
dns_ip = forms.CharField(max_length="15", label=_("DNS IP"))
|
||||
ou = forms.CharField(
|
||||
max_length="255",
|
||||
label=_("Organizational Unit"),
|
||||
required=False)
|
||||
server = forms.CharField(max_length="255", label=_("Server"))
|
||||
domain = forms.CharField(max_length="255", label=_("Domain"))
|
||||
user = forms.CharField(max_length="255", label=_("User"), required=False)
|
||||
|
@ -36,7 +40,8 @@ class Create(forms.SelfHandlingForm):
|
|||
required=False)
|
||||
confirm_password = forms.CharField(
|
||||
label=_("Confirm Password"),
|
||||
widget=forms.PasswordInput(render_value=False))
|
||||
widget=forms.PasswordInput(render_value=False),
|
||||
required=False)
|
||||
type = forms.ChoiceField(choices=(("", ""),
|
||||
("active_directory", "Active Directory"),
|
||||
("ldap", "LDAP"),
|
||||
|
@ -70,15 +75,52 @@ class Create(forms.SelfHandlingForm):
|
|||
|
||||
class Update(forms.SelfHandlingForm):
|
||||
name = forms.CharField(max_length="255", label=_("Share Name"))
|
||||
dns_ip = forms.CharField(
|
||||
max_length="15", label=_("DNS IP"), required=False)
|
||||
ou = forms.CharField(
|
||||
max_length="255",
|
||||
label=_("Organizational Unit"),
|
||||
required=False)
|
||||
server = forms.CharField(
|
||||
max_length="255", label=_("Server"), required=False)
|
||||
domain = forms.CharField(
|
||||
max_length="255", label=_("Domain"), required=False)
|
||||
user = forms.CharField(
|
||||
max_length="255", label=_("User"), required=False)
|
||||
password = forms.CharField(
|
||||
label=_("Password"),
|
||||
widget=forms.PasswordInput(render_value=False),
|
||||
required=False)
|
||||
confirm_password = forms.CharField(
|
||||
label=_("Confirm Password"),
|
||||
widget=forms.PasswordInput(render_value=False),
|
||||
required=False)
|
||||
description = forms.CharField(
|
||||
widget=forms.Textarea, label=_("Description"), required=False)
|
||||
|
||||
def clean(self):
|
||||
'''Check to make sure password fields match.'''
|
||||
cleaned_data = super(forms.Form, self).clean()
|
||||
password = self.cleaned_data.get('password')
|
||||
confirm_password = self.cleaned_data.get('confirm_password')
|
||||
if password != confirm_password:
|
||||
raise ValidationError(_('Passwords do not match.'))
|
||||
return cleaned_data
|
||||
|
||||
@sensitive_variables('data')
|
||||
def handle(self, request, data):
|
||||
sec_service_id = self.initial['sec_service_id']
|
||||
try:
|
||||
manila.security_service_update(request, sec_service_id,
|
||||
name=data['name'],
|
||||
description=data['description'])
|
||||
manila.security_service_update(
|
||||
request, sec_service_id,
|
||||
dns_ip=data['dns_ip'],
|
||||
ou=data['ou'],
|
||||
server=data['server'],
|
||||
domain=data['domain'],
|
||||
password=data.get('password') or None,
|
||||
user=data['user'],
|
||||
name=data['name'],
|
||||
description=data['description'])
|
||||
|
||||
message = _('Successfully updated security service '
|
||||
'"%s"') % data['name']
|
||||
|
|
|
@ -63,7 +63,9 @@ class SecurityServicesTable(tables.DataTable):
|
|||
name = tables.WrappingColumn(
|
||||
"name", verbose_name=_("Name"),
|
||||
link="horizon:project:security_services:security_service_detail")
|
||||
description = tables.Column("description", verbose_name=_("Description"))
|
||||
dns_ip = tables.Column("dns_ip", verbose_name=_("DNS IP"))
|
||||
ou = tables.Column("ou", verbose_name=_("Organizational Unit"))
|
||||
server = tables.Column("server", verbose_name=_("Server"))
|
||||
domain = tables.Column("domain", verbose_name=_("Domain"))
|
||||
user = tables.Column("user", verbose_name=_("User"))
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
<dl class="dl-horizontal">
|
||||
<dt>{% trans "DNS IP" %}</dt>
|
||||
<dd>{{ sec_service.dns_ip }}</dd>
|
||||
<dt>{% trans "Organizational Unit" %}</dt>
|
||||
<dd>{{ sec_service.ou }}</dd>
|
||||
<dt>{% trans "Server" %}</dt>
|
||||
<dd>{{ sec_service.server }}</dd>
|
||||
<dt>{% trans "Domain" %}</dt>
|
||||
|
|
|
@ -73,14 +73,21 @@ class UpdateView(forms.ModalFormView):
|
|||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(UpdateView, self).get_context_data(**kwargs)
|
||||
args = (self.kwargs['sec_service_id'],)
|
||||
context['submit_url'] = reverse(self.submit_url, args=args)
|
||||
return context
|
||||
|
||||
def get_initial(self):
|
||||
self.submit_url = reverse(self.submit_url, kwargs=self.kwargs)
|
||||
sec_service = self.get_object()
|
||||
return {'sec_service_id': self.kwargs["sec_service_id"],
|
||||
'dns_ip': sec_service.dns_ip,
|
||||
'ou': sec_service.ou,
|
||||
'server': sec_service.server,
|
||||
'domain': sec_service.domain,
|
||||
'user': sec_service.user,
|
||||
'name': sec_service.name,
|
||||
'description': sec_service.description}
|
||||
'description': sec_service.description,
|
||||
}
|
||||
|
||||
|
||||
class CreateView(forms.ModalFormView):
|
||||
|
|
|
@ -449,7 +449,7 @@ class ManilaApiTests(base.APITestCase):
|
|||
("ldap", {}),
|
||||
("kerberos", {}),
|
||||
("ldap",
|
||||
{"dns_ip": "8.8.8.8",
|
||||
{"dns_ip": "8.8.8.8", "ou": "fakeOU",
|
||||
"name": "my_fake_ldap_security_service",
|
||||
"description": "LDAP security service"}),
|
||||
("kerberos",
|
||||
|
@ -462,10 +462,11 @@ class ManilaApiTests(base.APITestCase):
|
|||
def test_security_service_create(self, ss_type, kwargs):
|
||||
expected_kwargs = {
|
||||
"dns_ip": None,
|
||||
"ou": None,
|
||||
"server": None,
|
||||
"domain": None,
|
||||
"user": None,
|
||||
"password": None,
|
||||
"user": None,
|
||||
"name": None,
|
||||
"description": None
|
||||
}
|
||||
|
@ -478,33 +479,25 @@ class ManilaApiTests(base.APITestCase):
|
|||
ss_type, **expected_kwargs)
|
||||
|
||||
@ddt.data(
|
||||
{"dns_ip": "8.8.4.4",
|
||||
{"dns_ip": "8.8.4.4", "ou": "testOU",
|
||||
"server": "10.254.0.3", "domain": "None",
|
||||
"password": "wr67p6", "user": "demo",
|
||||
"name": "my_fake_ldap_security_service_2",
|
||||
"description": "LDAP security service 2"},
|
||||
{"server": "10.254.0.10",
|
||||
"user": "demo", "password": "n0_m0r3_s3cr37",
|
||||
{"dns_ip": "None", "ou": "None",
|
||||
"server": "10.254.0.10", "domain": "None",
|
||||
"password": "None", "user": "demo",
|
||||
"name": "my_fake_kerberos_security_service_2",
|
||||
"description": "Kerberos security service 2"}
|
||||
)
|
||||
def test_security_service_update(self, kwargs):
|
||||
sec_service_id = "fake_sec_service_id"
|
||||
|
||||
expected_kwargs = {
|
||||
"dns_ip": None,
|
||||
"server": None,
|
||||
"domain": None,
|
||||
"user": None,
|
||||
"password": None,
|
||||
"name": None,
|
||||
"description": None
|
||||
}
|
||||
expected_kwargs.update(**kwargs)
|
||||
|
||||
api.security_service_update(self.request, sec_service_id, **kwargs)
|
||||
|
||||
mock_sec_service_update = self.manilaclient.security_services.update
|
||||
mock_sec_service_update.assert_called_once_with(
|
||||
sec_service_id, **expected_kwargs)
|
||||
sec_service_id, **kwargs)
|
||||
|
||||
def test_security_service_delete(self):
|
||||
sec_service_id = "fake_sec_service_id"
|
||||
|
|
|
@ -56,6 +56,7 @@ class SecurityServicesTests(test.BaseAdminViewTests):
|
|||
self.assertContains(res, "<dd>%s</dd>" % sec_service.user, 1, 200)
|
||||
self.assertContains(res, "<dd>%s</dd>" % sec_service.server, 1, 200)
|
||||
self.assertContains(res, "<dd>%s</dd>" % sec_service.dns_ip, 1, 200)
|
||||
self.assertContains(res, "<dd>%s</dd>" % sec_service.ou, 1, 200)
|
||||
self.assertContains(res, "<dd>%s</dd>" % sec_service.domain, 1, 200)
|
||||
self.assertNoMessages()
|
||||
api_manila.security_service_get.assert_called_once_with(
|
||||
|
|
|
@ -37,6 +37,7 @@ class SecurityServicesViewTests(test.TestCase):
|
|||
'description': 'This is test security service',
|
||||
'method': 'CreateForm',
|
||||
'dns_ip': '1.2.3.4',
|
||||
'ou': 'someOU',
|
||||
'user': 'SomeUser',
|
||||
'password': 'safepass',
|
||||
'confirm_password': 'safepass',
|
||||
|
@ -94,6 +95,7 @@ class SecurityServicesViewTests(test.TestCase):
|
|||
self.assertContains(res, "<dd>%s</dd>" % sec_service.user, 1, 200)
|
||||
self.assertContains(res, "<dd>%s</dd>" % sec_service.server, 1, 200)
|
||||
self.assertContains(res, "<dd>%s</dd>" % sec_service.dns_ip, 1, 200)
|
||||
self.assertContains(res, "<dd>%s</dd>" % sec_service.ou, 1, 200)
|
||||
self.assertContains(res, "<dd>%s</dd>" % sec_service.domain, 1, 200)
|
||||
self.assertNoMessages()
|
||||
api_manila.security_service_get.assert_called_once_with(
|
||||
|
@ -141,6 +143,13 @@ class SecurityServicesViewTests(test.TestCase):
|
|||
'method': 'UpdateForm',
|
||||
'name': sec_service.name,
|
||||
'description': sec_service.description,
|
||||
'dns_ip': sec_service.dns_ip,
|
||||
'ou': sec_service.ou,
|
||||
'server': sec_service.server,
|
||||
'domain': sec_service.domain,
|
||||
'password': sec_service.password,
|
||||
'confirm_password': sec_service.password,
|
||||
'user': sec_service.user,
|
||||
}
|
||||
self.mock_object(api_manila, "security_service_update")
|
||||
self.mock_object(
|
||||
|
@ -156,4 +165,10 @@ class SecurityServicesViewTests(test.TestCase):
|
|||
mock.ANY,
|
||||
sec_service.id,
|
||||
name=formData['name'],
|
||||
description=formData['description'])
|
||||
description=formData['description'],
|
||||
dns_ip=formData['dns_ip'],
|
||||
ou=formData['ou'],
|
||||
server=formData['server'],
|
||||
domain=formData['domain'],
|
||||
password=formData['password'],
|
||||
user=formData['user'])
|
||||
|
|
|
@ -260,6 +260,7 @@ sec_service = security_services.SecurityService(
|
|||
{'id': '7f3d1c33-8d10-4511-29df-a2def31f3b5d',
|
||||
'server': '1.1.1.1',
|
||||
'dns_ip': '2.2.2.2',
|
||||
'ou': 'someOU',
|
||||
'user': 'someuser',
|
||||
'password': 'somepass',
|
||||
'type': 'active_directory',
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
features:
|
||||
- |
|
||||
Added ‘ou’ field to ‘security_service’ object. Additionally added options to update dns_ip,
|
||||
ou, server, domain, password and user fields.
|
Loading…
Reference in New Issue