Coverage for manila/api/views/share_servers.py: 100%

38 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2026-02-18 22:19 +0000

1# Copyright 2014 OpenStack Foundation 

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 

17 

18 

19class ViewBuilder(common.ViewBuilder): 

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

21 

22 _collection_name = 'share_servers' 

23 _detail_version_modifiers = [ 

24 "add_is_auto_deletable_and_identifier_fields", 

25 "add_share_network_subnet_id_field", 

26 "add_task_state_and_source_server_fields", 

27 "add_sec_service_update_fields", 

28 "add_share_network_subnet_ids_and_network_allocation_update_support", 

29 "add_encryption_key_ref_field", 

30 ] 

31 

32 def build_share_server(self, request, share_server): 

33 """View of a share server.""" 

34 return { 

35 'share_server': 

36 self._build_share_server_view( 

37 request, share_server, detailed=True) 

38 } 

39 

40 def build_share_servers(self, request, share_servers): 

41 return { 

42 'share_servers': 

43 [self._build_share_server_view(request, share_server) 

44 for share_server in share_servers] 

45 } 

46 

47 def build_share_server_details(self, details): 

48 return {'details': details} 

49 

50 def _build_share_server_view(self, request, share_server, detailed=False): 

51 share_server_dict = { 

52 'id': share_server.id, 

53 'project_id': share_server.project_id, 

54 'updated_at': share_server.updated_at, 

55 'status': share_server.status, 

56 'host': share_server.host, 

57 'share_network_name': share_server.share_network_name, 

58 'share_network_id': share_server.share_network_id, 

59 } 

60 if detailed: 

61 share_server_dict['created_at'] = share_server.created_at 

62 share_server_dict['backend_details'] = share_server.backend_details 

63 

64 self.update_versioned_resource_dict( 

65 request, share_server_dict, share_server) 

66 

67 return share_server_dict 

68 

69 @common.ViewBuilder.versioned_method("2.51", "2.69") 

70 def add_share_network_subnet_id_field( 

71 self, context, share_server_dict, share_server): 

72 """In 2.70, share_network_subnet_id is dropped, it becomes a list.""" 

73 share_server_dict['share_network_subnet_id'] = ( 

74 share_server['share_network_subnet_ids'][0] 

75 if share_server['share_network_subnet_ids'] else None) 

76 

77 @common.ViewBuilder.versioned_method("2.49") 

78 def add_is_auto_deletable_and_identifier_fields( 

79 self, context, share_server_dict, share_server): 

80 share_server_dict['is_auto_deletable'] = ( 

81 share_server['is_auto_deletable']) 

82 share_server_dict['identifier'] = share_server['identifier'] 

83 

84 @common.ViewBuilder.versioned_method("2.57") 

85 def add_task_state_and_source_server_fields( 

86 self, context, share_server_dict, share_server): 

87 share_server_dict['task_state'] = share_server['task_state'] 

88 share_server_dict['source_share_server_id'] = ( 

89 share_server['source_share_server_id']) 

90 

91 @common.ViewBuilder.versioned_method("2.63") 

92 def add_sec_service_update_fields( 

93 self, context, share_server_dict, share_server): 

94 share_server_dict['security_service_update_support'] = share_server[ 

95 'security_service_update_support'] 

96 

97 @common.ViewBuilder.versioned_method("2.70") 

98 def add_share_network_subnet_ids_and_network_allocation_update_support( 

99 self, context, share_server_dict, share_server): 

100 share_server_dict['share_network_subnet_ids'] = sorted( 

101 share_server['share_network_subnet_ids']) 

102 share_server_dict['network_allocation_update_support'] = ( 

103 share_server['network_allocation_update_support']) 

104 

105 @common.ViewBuilder.versioned_method("2.90") 

106 def add_encryption_key_ref_field( 

107 self, context, share_server_dict, share_server): 

108 share_server_dict['encryption_key_ref'] = share_server[ 

109 'encryption_key_ref']