1616# vim: tabstop=4 shiftwidth=4 softtabstop=4
1717
1818import sys
19+ from mox import ContainsKeyValue
1920
2021from quantumclient .common import exceptions
2122from quantumclient .common import utils
2728from quantumclient .quantum .v2_0 .network import UpdateNetwork
2829from quantumclient .quantum .v2_0 .network import ShowNetwork
2930from quantumclient .quantum .v2_0 .network import DeleteNetwork
31+ from quantumclient .quantum .v2_0 .network import ListExternalNetwork
3032
3133
3234class CLITestV20Network (CLITestV20Base ):
@@ -39,8 +41,8 @@ def test_create_network(self):
3941 args = [name , ]
4042 position_names = ['name' , ]
4143 position_values = [name , ]
42- _str = self ._test_create_resource (resource , cmd , name , myid , args ,
43- position_names , position_values )
44+ self ._test_create_resource (resource , cmd , name , myid , args ,
45+ position_names , position_values )
4446
4547 def test_create_network_tenant (self ):
4648 """Create net: --tenant_id tenantid myname."""
@@ -51,15 +53,15 @@ def test_create_network_tenant(self):
5153 args = ['--tenant_id' , 'tenantid' , name ]
5254 position_names = ['name' , ]
5355 position_values = [name , ]
54- _str = self ._test_create_resource (resource , cmd , name , myid , args ,
55- position_names , position_values ,
56- tenant_id = 'tenantid' )
56+ self ._test_create_resource (resource , cmd , name , myid , args ,
57+ position_names , position_values ,
58+ tenant_id = 'tenantid' )
5759
5860 # Test dashed options
5961 args = ['--tenant-id' , 'tenantid' , name ]
60- _str = self ._test_create_resource (resource , cmd , name , myid , args ,
61- position_names , position_values ,
62- tenant_id = 'tenantid' )
62+ self ._test_create_resource (resource , cmd , name , myid , args ,
63+ position_names , position_values ,
64+ tenant_id = 'tenantid' )
6365
6466 def test_create_network_tags (self ):
6567 """Create net: myname --tags a b."""
@@ -70,9 +72,9 @@ def test_create_network_tags(self):
7072 args = [name , '--tags' , 'a' , 'b' ]
7173 position_names = ['name' , ]
7274 position_values = [name , ]
73- _str = self ._test_create_resource (resource , cmd , name , myid , args ,
74- position_names , position_values ,
75- tags = ['a' , 'b' ])
75+ self ._test_create_resource (resource , cmd , name , myid , args ,
76+ position_names , position_values ,
77+ tags = ['a' , 'b' ])
7678
7779 def test_create_network_state (self ):
7880 """Create net: --admin_state_down myname."""
@@ -83,15 +85,15 @@ def test_create_network_state(self):
8385 args = ['--admin_state_down' , name , ]
8486 position_names = ['name' , ]
8587 position_values = [name , ]
86- _str = self ._test_create_resource (resource , cmd , name , myid , args ,
87- position_names , position_values ,
88- admin_state_up = False )
88+ self ._test_create_resource (resource , cmd , name , myid , args ,
89+ position_names , position_values ,
90+ admin_state_up = False )
8991
9092 # Test dashed options
9193 args = ['--admin-state-down' , name , ]
92- _str = self ._test_create_resource (resource , cmd , name , myid , args ,
93- position_names , position_values ,
94- admin_state_up = False )
94+ self ._test_create_resource (resource , cmd , name , myid , args ,
95+ position_names , position_values ,
96+ admin_state_up = False )
9597
9698 def test_list_nets_empty_with_column (self ):
9799 resources = "networks"
@@ -179,6 +181,130 @@ def test_list_nets_with_default_column(self):
179181 self .assertEquals (0 , len (set (network ) ^
180182 set (cmd .list_columns )))
181183
184+ def test_list_external_nets_empty_with_column (self ):
185+ resources = "networks"
186+ cmd = ListExternalNetwork (MyApp (sys .stdout ), None )
187+ self .mox .StubOutWithMock (cmd , "get_client" )
188+ self .mox .StubOutWithMock (self .client .httpclient , "request" )
189+ cmd .get_client ().MultipleTimes ().AndReturn (self .client )
190+ reses = {resources : []}
191+ resstr = self .client .serialize (reses )
192+ # url method body
193+ query = "router%3Aexternal=True&id=myfakeid"
194+ args = ['-c' , 'id' , '--' , '--id' , 'myfakeid' ]
195+ path = getattr (self .client , resources + "_path" )
196+ self .client .httpclient .request (
197+ test_cli20 .end_url (path , query ), 'GET' ,
198+ body = None ,
199+ headers = test_cli20 .ContainsKeyValue (
200+ 'X-Auth-Token' ,
201+ test_cli20 .TOKEN )).AndReturn (
202+ (test_cli20 .MyResp (200 ), resstr ))
203+ self .mox .ReplayAll ()
204+ cmd_parser = cmd .get_parser ("list_" + resources )
205+
206+ parsed_args = cmd_parser .parse_args (args )
207+
208+ cmd .run (parsed_args )
209+ self .mox .VerifyAll ()
210+ self .mox .UnsetStubs ()
211+ _str = self .fake_stdout .make_string ()
212+ self .assertEquals ('\n ' , _str )
213+
214+ def _test_list_external_nets (self , resources , cmd ,
215+ detail = False , tags = [],
216+ fields_1 = [], fields_2 = []):
217+ self .mox .StubOutWithMock (cmd , "get_client" )
218+ self .mox .StubOutWithMock (self .client .httpclient , "request" )
219+ cmd .get_client ().MultipleTimes ().AndReturn (self .client )
220+ reses = {resources : [{'id' : 'myid1' , },
221+ {'id' : 'myid2' , }, ], }
222+
223+ resstr = self .client .serialize (reses )
224+
225+ # url method body
226+ query = ""
227+ args = detail and ['-D' , ] or []
228+ if fields_1 :
229+ for field in fields_1 :
230+ args .append ('--fields' )
231+ args .append (field )
232+ if tags :
233+ args .append ('--' )
234+ args .append ("--tag" )
235+ for tag in tags :
236+ args .append (tag )
237+ if (not tags ) and fields_2 :
238+ args .append ('--' )
239+ if fields_2 :
240+ args .append ("--fields" )
241+ for field in fields_2 :
242+ args .append (field )
243+ fields_1 .extend (fields_2 )
244+ for field in fields_1 :
245+ if query :
246+ query += "&fields=" + field
247+ else :
248+ query = "fields=" + field
249+ if query :
250+ query += '&router%3Aexternal=True'
251+ else :
252+ query += 'router%3Aexternal=True'
253+ for tag in tags :
254+ if query :
255+ query += "&tag=" + tag
256+ else :
257+ query = "tag=" + tag
258+ if detail :
259+ query = query and query + '&verbose=True' or 'verbose=True'
260+ path = getattr (self .client , resources + "_path" )
261+
262+ self .client .httpclient .request (
263+ test_cli20 .end_url (path , query ), 'GET' ,
264+ body = None ,
265+ headers = ContainsKeyValue ('X-Auth-Token' ,
266+ test_cli20 .TOKEN )).AndReturn (
267+ (test_cli20 .MyResp (200 ), resstr ))
268+ self .mox .ReplayAll ()
269+ cmd_parser = cmd .get_parser ("list_" + resources )
270+
271+ parsed_args = cmd_parser .parse_args (args )
272+ cmd .run (parsed_args )
273+
274+ self .mox .VerifyAll ()
275+ self .mox .UnsetStubs ()
276+ _str = self .fake_stdout .make_string ()
277+
278+ self .assertTrue ('myid1' in _str )
279+
280+ def test_list_external_nets_detail (self ):
281+ """list external nets: -D."""
282+ resources = "networks"
283+ cmd = ListExternalNetwork (MyApp (sys .stdout ), None )
284+ self ._test_list_external_nets (resources , cmd , True )
285+
286+ def test_list_external_nets_tags (self ):
287+ """List external nets: -- --tags a b."""
288+ resources = "networks"
289+ cmd = ListExternalNetwork (MyApp (sys .stdout ), None )
290+ self ._test_list_external_nets (resources ,
291+ cmd , tags = ['a' , 'b' ])
292+
293+ def test_list_external_nets_detail_tags (self ):
294+ """List external nets: -D -- --tags a b."""
295+ resources = "networks"
296+ cmd = ListExternalNetwork (MyApp (sys .stdout ), None )
297+ self ._test_list_external_nets (resources , cmd ,
298+ detail = True , tags = ['a' , 'b' ])
299+
300+ def test_list_externel_nets_fields (self ):
301+ """List external nets: --fields a --fields b -- --fields c d."""
302+ resources = "networks"
303+ cmd = ListExternalNetwork (MyApp (sys .stdout ), None )
304+ self ._test_list_external_nets (resources , cmd ,
305+ fields_1 = ['a' , 'b' ],
306+ fields_2 = ['c' , 'd' ])
307+
182308 def test_update_network_exception (self ):
183309 """Update net: myid."""
184310 resource = 'network'
0 commit comments