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

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. 

15 

16from manila.api import common 

17from manila.common import constants 

18 

19 

20class ViewBuilder(common.ViewBuilder): 

21 """Model a server API response as a python dictionary.""" 

22 

23 _collection_name = 'security_services' 

24 _detail_version_modifiers = [ 

25 'add_ou_to_security_service', 

26 'add_default_ad_site_to_security_service', 

27 ] 

28 

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) 

32 

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) 

36 

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 } 

51 

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 

63 

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

67 

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

71 

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