Files
manila-ui/manila_ui/dashboards/project/security_services/views.py
Dina Saparbaeva b748f23ed1 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
2021-03-12 10:15:13 +00:00

170 lines
6.6 KiB
Python

# Copyright 2012 Nebula, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from django.urls import reverse
from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy as _
from horizon import exceptions
from horizon import forms
from horizon import tables
from horizon import tabs
from horizon.utils import memoized
from manila_ui.api import manila
from manila_ui.dashboards.project.security_services import forms as ss_forms
from manila_ui.dashboards.project.security_services import tables as ss_tables
from manila_ui.dashboards.project.security_services import tabs as ss_tabs
from manila_ui.dashboards.project.share_networks import forms as sn_forms
from manila_ui.dashboards import utils
class SecurityServicesView(tables.MultiTableView):
table_classes = (
ss_tables.SecurityServicesTable,
)
template_name = "project/security_services/index.html"
page_title = _("Security Services")
@memoized.memoized_method
def get_security_services_data(self):
try:
security_services = manila.security_service_list(self.request)
except Exception:
security_services = []
exceptions.handle(
self.request, _("Unable to retrieve security services"))
return security_services
class UpdateView(forms.ModalFormView):
template_name = "project/security_services/update.html"
form_class = ss_forms.Update
form_id = "update_security_service"
modal_header = _("Edit Security Service")
modal_id = "update_security_service_modal"
submit_label = _("Edit")
submit_url = "horizon:project:security_services:security_service_update"
success_url = reverse_lazy("horizon:project:security_services:index")
page_title = _('Edit Security Service')
def get_object(self):
if not hasattr(self, "_object"):
sec_service_id = self.kwargs['sec_service_id']
try:
self._object = manila.security_service_get(
self.request, sec_service_id)
except Exception:
msg = _('Unable to retrieve security_service.')
url = reverse('horizon:project:security_services:index')
exceptions.handle(self.request, msg, redirect=url)
return self._object
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):
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,
}
class CreateView(forms.ModalFormView):
form_class = ss_forms.Create
form_id = "create_security_service"
template_name = 'project/security_services/create.html'
modal_header = _("Create Security Service")
modal_id = "create_security_service_modal"
submit_label = _("Create")
submit_url = reverse_lazy(
"horizon:project:security_services:security_service_create")
success_url = reverse_lazy("horizon:project:security_services:index")
page_title = _('Create Security Service')
class AddSecurityServiceView(forms.ModalFormView):
form_class = sn_forms.AddSecurityServiceForm
template_name = 'project/security_services/add.html'
success_url = 'horizon:project:security_services:index'
page_title = _('Add Security Service')
def get_object(self):
if not hasattr(self, "_object"):
share_id = self.kwargs['share_network_id']
try:
self._object = manila.share_network_get(self.request, share_id)
except Exception:
msg = _('Unable to retrieve share network.')
url = reverse('horizon:project:security_services:index')
exceptions.handle(self.request, msg, redirect=url)
return self._object
def get_context_data(self, **kwargs):
context = super(AddSecurityServiceView,
self).get_context_data(**kwargs)
context['share_network'] = self.get_object()
return context
def get_initial(self):
share_net = self.get_object()
return {'share_net_id': self.kwargs["share_network_id"],
'name': share_net.name,
'description': share_net.description}
class Detail(tabs.TabView):
tab_group_class = ss_tabs.SecurityServiceDetailTabs
template_name = 'project/security_services/detail.html'
redirect_url = reverse_lazy('horizon:project:security_services:index')
def get_context_data(self, **kwargs):
context = super(Detail, self).get_context_data(**kwargs)
sec_service = self.get_data()
context["sec_service"] = sec_service
sec_service_display_name = sec_service.name or sec_service.id
context["sec_service_display_name"] = sec_service_display_name
context["page_title"] = _("Security Service Details: "
"%(service_display_name)s") % \
{'service_display_name': sec_service_display_name}
return context
@memoized.memoized_method
def get_data(self):
try:
sec_service_id = self.kwargs['sec_service_id']
sec_service = manila.security_service_get(
self.request, sec_service_id)
sec_service.type = utils.get_nice_security_service_type(
sec_service)
except Exception:
message = _("Unable to retrieve security service "
"'%s' details.") % sec_service_id
exceptions.handle(
self.request, message, redirect=self.redirect_url)
return sec_service
def get_tabs(self, request, *args, **kwargs):
sec_service = self.get_data()
return self.tab_group_class(request, sec_service=sec_service, **kwargs)