@@ -88,6 +88,14 @@ class TestCreateSubnet(TestSubnet):
8888 }
8989 )
9090
91+ # The network segment to be returned from find_segment
92+ _network_segment = \
93+ network_fakes .FakeNetworkSegment .create_one_network_segment (
94+ attrs = {
95+ 'network_id' : _subnet .network_id ,
96+ }
97+ )
98+
9199 columns = (
92100 'allocation_pools' ,
93101 'cidr' ,
@@ -102,6 +110,7 @@ class TestCreateSubnet(TestSubnet):
102110 'name' ,
103111 'network_id' ,
104112 'project_id' ,
113+ 'segment_id' ,
105114 'subnetpool_id' ,
106115 )
107116
@@ -119,6 +128,7 @@ class TestCreateSubnet(TestSubnet):
119128 _subnet .name ,
120129 _subnet .network_id ,
121130 _subnet .project_id ,
131+ _subnet .segment_id ,
122132 _subnet .subnetpool_id ,
123133 )
124134
@@ -136,6 +146,7 @@ class TestCreateSubnet(TestSubnet):
136146 _subnet_from_pool .name ,
137147 _subnet_from_pool .network_id ,
138148 _subnet_from_pool .project_id ,
149+ _subnet_from_pool .segment_id ,
139150 _subnet_from_pool .subnetpool_id ,
140151 )
141152
@@ -153,6 +164,7 @@ class TestCreateSubnet(TestSubnet):
153164 _subnet_ipv6 .name ,
154165 _subnet_ipv6 .network_id ,
155166 _subnet_ipv6 .project_id ,
167+ _subnet_ipv6 .segment_id ,
156168 _subnet_ipv6 .subnetpool_id ,
157169 )
158170
@@ -186,6 +198,15 @@ def setUp(self):
186198 loaded = True ,
187199 )
188200
201+ # Mock SDK calls for all tests.
202+ self .network .find_network = mock .Mock (return_value = self ._network )
203+ self .network .find_segment = mock .Mock (
204+ return_value = self ._network_segment
205+ )
206+ self .network .find_subnet_pool = mock .Mock (
207+ return_value = self ._subnet_pool
208+ )
209+
189210 def test_create_no_options (self ):
190211 arglist = []
191212 verifylist = []
@@ -196,11 +217,9 @@ def test_create_no_options(self):
196217 self .check_parser , self .cmd , arglist , verifylist )
197218
198219 def test_create_default_options (self ):
199- # Mock create_subnet and find_network sdk calls to return the
200- # values we want for this test
220+ # Mock SDK calls for this test.
201221 self .network .create_subnet = mock .Mock (return_value = self ._subnet )
202222 self ._network .id = self ._subnet .network_id
203- self .network .find_network = mock .Mock (return_value = self ._network )
204223
205224 arglist = [
206225 "--subnet-range" , self ._subnet .cidr ,
@@ -230,14 +249,10 @@ def test_create_default_options(self):
230249 self .assertEqual (self .data , data )
231250
232251 def test_create_from_subnet_pool_options (self ):
233- # Mock create_subnet, find_subnet_pool, and find_network sdk calls
234- # to return the values we want for this test
252+ # Mock SDK calls for this test.
235253 self .network .create_subnet = \
236254 mock .Mock (return_value = self ._subnet_from_pool )
237255 self ._network .id = self ._subnet_from_pool .network_id
238- self .network .find_network = mock .Mock (return_value = self ._network )
239- self .network .find_subnet_pool = \
240- mock .Mock (return_value = self ._subnet_pool )
241256
242257 arglist = [
243258 self ._subnet_from_pool .name ,
@@ -290,11 +305,9 @@ def test_create_from_subnet_pool_options(self):
290305 self .assertEqual (self .data_subnet_pool , data )
291306
292307 def test_create_options_subnet_range_ipv6 (self ):
293- # Mock create_subnet and find_network sdk calls to return the
294- # values we want for this test
308+ # Mock SDK calls for this test.
295309 self .network .create_subnet = mock .Mock (return_value = self ._subnet_ipv6 )
296310 self ._network .id = self ._subnet_ipv6 .network_id
297- self .network .find_network = mock .Mock (return_value = self ._network )
298311
299312 arglist = [
300313 self ._subnet_ipv6 .name ,
@@ -357,6 +370,59 @@ def test_create_options_subnet_range_ipv6(self):
357370 self .assertEqual (self .columns , columns )
358371 self .assertEqual (self .data_ipv6 , data )
359372
373+ def test_create_no_beta_command_options (self ):
374+ arglist = [
375+ "--subnet-range" , self ._subnet .cidr ,
376+ "--network-segment" , self ._network_segment .id ,
377+ "--network" , self ._subnet .network_id ,
378+ self ._subnet .name ,
379+ ]
380+ verifylist = [
381+ ('name' , self ._subnet .name ),
382+ ('subnet_range' , self ._subnet .cidr ),
383+ ('network-segment' , self ._network_segment .id ),
384+ ('network' , self ._subnet .network_id ),
385+ ]
386+ self .app .options .os_beta_command = False
387+ self .assertRaises (tests_utils .ParserException ,
388+ self .check_parser , self .cmd , arglist , verifylist )
389+
390+ def test_create_with_network_segment (self ):
391+ # Mock SDK calls for this test.
392+ self .network .create_subnet = mock .Mock (return_value = self ._subnet )
393+ self ._network .id = self ._subnet .network_id
394+
395+ arglist = [
396+ "--subnet-range" , self ._subnet .cidr ,
397+ "--network-segment" , self ._network_segment .id ,
398+ "--network" , self ._subnet .network_id ,
399+ self ._subnet .name ,
400+ ]
401+ verifylist = [
402+ ('name' , self ._subnet .name ),
403+ ('subnet_range' , self ._subnet .cidr ),
404+ ('network_segment' , self ._network_segment .id ),
405+ ('network' , self ._subnet .network_id ),
406+ ('ip_version' , self ._subnet .ip_version ),
407+ ('gateway' , 'auto' ),
408+
409+ ]
410+
411+ self .app .options .os_beta_command = True
412+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
413+ columns , data = self .cmd .take_action (parsed_args )
414+
415+ self .network .create_subnet .assert_called_once_with (** {
416+ 'cidr' : self ._subnet .cidr ,
417+ 'enable_dhcp' : self ._subnet .enable_dhcp ,
418+ 'ip_version' : self ._subnet .ip_version ,
419+ 'name' : self ._subnet .name ,
420+ 'network_id' : self ._subnet .network_id ,
421+ 'segment_id' : self ._network_segment .id ,
422+ })
423+ self .assertEqual (self .columns , columns )
424+ self .assertEqual (self .data , data )
425+
360426
361427class TestDeleteSubnet (TestSubnet ):
362428
@@ -593,6 +659,7 @@ class TestShowSubnet(TestSubnet):
593659 'name' ,
594660 'network_id' ,
595661 'project_id' ,
662+ 'segment_id' ,
596663 'subnetpool_id' ,
597664 )
598665
@@ -610,6 +677,7 @@ class TestShowSubnet(TestSubnet):
610677 _subnet .name ,
611678 _subnet .network_id ,
612679 _subnet .tenant_id ,
680+ _subnet .segment_id ,
613681 _subnet .subnetpool_id ,
614682 )
615683
0 commit comments