Coverage for manila/api/views/security_service.py: 100%
28 statements
« prev ^ index » next coverage.py v7.11.0, created at 2026-02-18 22:19 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2026-02-18 22:19 +0000
1# Copyright 2013 OpenStack LLC.
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
16from manila.api import common
17from manila.common import constants
20class ViewBuilder(common.ViewBuilder):
21 """Model a server API response as a python dictionary."""
23 _collection_name = 'security_services'
24 _detail_version_modifiers = [
25 'add_ou_to_security_service',
26 'add_default_ad_site_to_security_service',
27 ]
29 def summary_list(self, request, security_services):
30 """Show a list of security services without many details."""
31 return self._list_view(self.summary, request, security_services)
33 def detail_list(self, request, security_services):
34 """Detailed view of a list of security services."""
35 return self._list_view(self.detail, request, security_services)
37 def summary(self, request, security_service):
38 """Generic, non-detailed view of a security service."""
39 return {
40 'security_service': {
41 'id': security_service.get('id'),
42 'name': security_service.get('name'),
43 'type': security_service.get('type'),
44 # NOTE(vponomaryov): attr "status" was removed from model and
45 # is left in view for compatibility purposes since it affects
46 # user-facing API. This should be removed right after no one
47 # uses it anymore.
48 'status': constants.STATUS_NEW,
49 }
50 }
52 def detail(self, request, security_service):
53 """Detailed view of a single security service."""
54 view = self.summary(request, security_service)
55 keys = (
56 'created_at', 'updated_at', 'description', 'dns_ip', 'server',
57 'domain', 'user', 'password', 'project_id')
58 for key in keys:
59 view['security_service'][key] = security_service.get(key)
60 self.update_versioned_resource_dict(
61 request, view['security_service'], security_service)
62 return view
64 @common.ViewBuilder.versioned_method("2.44")
65 def add_ou_to_security_service(self, context, ss_dict, ss):
66 ss_dict['ou'] = ss.get('ou')
68 @common.ViewBuilder.versioned_method("2.76")
69 def add_default_ad_site_to_security_service(self, context, ss_dict, ss):
70 ss_dict['default_ad_site'] = ss.get('default_ad_site')
72 def _list_view(self, func, request, security_services):
73 """Provide a view for a list of security services."""
74 security_services_list = [func(request, service)['security_service']
75 for service in security_services]
76 security_services_dict = dict(security_services=security_services_list)
77 return security_services_dict