Coverage for manila/tests/api/views/test_share_network_subnets.py: 100%

43 statements  

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

1# Copyright 2019 NetApp, Inc. 

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 

16 

17import ddt 

18 

19from manila.api.openstack import api_version_request as api_version 

20from manila.api.views import share_network_subnets 

21from manila import test 

22from manila.tests.api import fakes 

23from manila.tests import db_utils 

24 

25 

26@ddt.ddt 

27class ViewBuilderTestCase(test.TestCase): 

28 

29 def setUp(self): 

30 super(ViewBuilderTestCase, self).setUp() 

31 self.builder = share_network_subnets.ViewBuilder() 

32 self.share_network = db_utils.create_share_network( 

33 name='fake_network', id='fake_sn_id') 

34 

35 def _validate_is_detail_return(self, result, metadata_support=False): 

36 expected_keys = ['id', 'created_at', 'updated_at', 'neutron_net_id', 

37 'neutron_subnet_id', 'network_type', 'cidr', 

38 'segmentation_id', 'ip_version', 'share_network_id', 

39 'availability_zone', 'gateway', 'mtu'] 

40 if metadata_support: 

41 expected_keys.append('metadata') 

42 

43 for key in expected_keys: 

44 self.assertIn(key, result) 

45 

46 def test_build_share_network_subnet(self): 

47 req = fakes.HTTPRequest.blank('/subnets', version='2.51') 

48 

49 subnet = db_utils.create_share_network_subnet( 

50 share_network_id=self.share_network['id']) 

51 

52 result = self.builder.build_share_network_subnet(req, subnet) 

53 

54 self.assertEqual(1, len(result)) 

55 self.assertIn('share_network_subnet', result) 

56 self.assertEqual(subnet['id'], 

57 result['share_network_subnet']['id']) 

58 self.assertEqual(subnet['share_network_id'], 

59 result['share_network_subnet']['share_network_id']) 

60 self.assertIsNone( 

61 result['share_network_subnet']['availability_zone']) 

62 self._validate_is_detail_return(result['share_network_subnet']) 

63 

64 @ddt.data("2.51", "2.78") 

65 def test_build_share_network_subnets(self, microversion): 

66 metadata_support = (api_version.APIVersionRequest(microversion) >= 

67 api_version.APIVersionRequest('2.78')) 

68 

69 req = fakes.HTTPRequest.blank('/subnets', version=microversion) 

70 

71 share_network = db_utils.create_share_network( 

72 name='fake_network', id='fake_sn_id_1') 

73 

74 expected_metadata = {'fake_key': 'fake_value'} 

75 subnet = db_utils.create_share_network_subnet( 

76 share_network_id=share_network['id'], metadata=expected_metadata) 

77 

78 result = self.builder.build_share_network_subnets(req, [subnet]) 

79 

80 self.assertIn('share_network_subnets', result) 

81 self.assertEqual(1, len(result['share_network_subnets'])) 

82 subnet_list = result['share_network_subnets'] 

83 for subnet in subnet_list: 

84 self._validate_is_detail_return(subnet, 

85 metadata_support=metadata_support) 

86 if metadata_support: 

87 self.assertEqual(expected_metadata, subnet['metadata'])