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
« 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.
16from manila.api import common
19class ViewBuilder(common.ViewBuilder):
20 """Model a server API response as a python dictionary."""
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 ]
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 }
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 }
47 def build_share_server_details(self, details):
48 return {'details': details}
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
64 self.update_versioned_resource_dict(
65 request, share_server_dict, share_server)
67 return share_server_dict
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)
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']
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'])
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']
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'])
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']