Merge " API v2.44, added 'ou' field to security service"

This commit is contained in:
Zuul 2021-03-18 01:39:56 +00:00 committed by Gerrit Code Review
commit 8a98b99415
12 changed files with 109 additions and 34 deletions

View File

@ -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):

View File

@ -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"))

View File

@ -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>

View File

@ -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']

View File

@ -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"))

View File

@ -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>

View File

@ -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):

View File

@ -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"

View File

@ -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(

View File

@ -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'])

View File

@ -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',

View File

@ -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.