Merge " API v2.44, added 'ou' field to security service"
This commit is contained in:
commit
8a98b99415
|
@ -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
|
||||
|
@ -315,22 +315,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):
|
||||
|
|
|
@ -452,7 +452,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",
|
||||
|
@ -465,10 +465,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
|
||||
}
|
||||
|
@ -481,33 +482,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