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

25 statements  

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

1# Copyright (C) 2022 China Telecom Digital Intelligence. 

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 transfer API responses as a python dictionary.""" 

21 

22 _collection_name = "share-transfer" 

23 

24 def __init__(self): 

25 """Initialize view builder.""" 

26 super(ViewBuilder, self).__init__() 

27 

28 def summary_list(self, request, transfers,): 

29 """Show a list of transfers without many details.""" 

30 return self._list_view(self.summary, request, transfers) 

31 

32 def detail_list(self, request, transfers): 

33 """Detailed view of a list of transfers .""" 

34 return self._list_view(self.detail, request, transfers) 

35 

36 def summary(self, request, transfer): 

37 """Generic, non-detailed view of a transfer.""" 

38 return { 

39 'transfer': { 

40 'id': transfer['id'], 

41 'name': transfer['display_name'], 

42 'resource_type': transfer['resource_type'], 

43 'resource_id': transfer['resource_id'], 

44 'links': self._get_links(request, 

45 transfer['id']), 

46 }, 

47 } 

48 

49 def detail(self, request, transfer): 

50 """Detailed view of a single transfer.""" 

51 detail_body = { 

52 'transfer': { 

53 'id': transfer.get('id'), 

54 'created_at': transfer.get('created_at'), 

55 'name': transfer.get('display_name'), 

56 'resource_type': transfer['resource_type'], 

57 'resource_id': transfer['resource_id'], 

58 'source_project_id': transfer['source_project_id'], 

59 'destination_project_id': transfer.get( 

60 'destination_project_id'), 

61 'accepted': transfer['accepted'], 

62 'expires_at': transfer.get('expires_at'), 

63 'links': self._get_links(request, transfer['id']), 

64 } 

65 } 

66 return detail_body 

67 

68 def create(self, request, transfer): 

69 """Detailed view of a single transfer when created.""" 

70 create_body = self.detail(request, transfer) 

71 create_body['transfer']['auth_key'] = transfer.get('auth_key') 

72 return create_body 

73 

74 def _list_view(self, func, request, transfers): 

75 """Provide a view for a list of transfers.""" 

76 transfers_list = [func(request, transfer)['transfer'] for transfer in 

77 transfers] 

78 transfers_links = self._get_collection_links(request, 

79 transfers, 

80 self._collection_name) 

81 transfers_dict = dict(transfers=transfers_list) 

82 

83 if transfers_links: 

84 transfers_dict['transfers_links'] = transfers_links 

85 

86 return transfers_dict