File tree Expand file tree Collapse file tree
doc/source/command-objects Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -62,3 +62,13 @@ Delete an address scope
6262.. describe:: <address-scope>
6363
6464 Address scope to delete (name or ID)
65+
66+ address scope list
67+ ------------------
68+
69+ List address scopes
70+
71+ .. program:: address scope list
72+ .. code:: bash
73+
74+ os address scope list
Original file line number Diff line number Diff line change @@ -113,3 +113,30 @@ def take_action(self, parsed_args):
113113 client = self .app .client_manager .network
114114 obj = client .find_address_scope (parsed_args .address_scope )
115115 client .delete_address_scope (obj )
116+
117+
118+ class ListAddressScope (command .Lister ):
119+ """List address scopes"""
120+
121+ def take_action (self , parsed_args ):
122+ client = self .app .client_manager .network
123+ columns = (
124+ 'id' ,
125+ 'name' ,
126+ 'ip_version' ,
127+ 'shared' ,
128+ 'tenant_id' ,
129+ )
130+ column_headers = (
131+ 'ID' ,
132+ 'Name' ,
133+ 'IP Version' ,
134+ 'Shared' ,
135+ 'Project' ,
136+ )
137+ data = client .address_scopes ()
138+
139+ return (column_headers ,
140+ (utils .get_item_properties (
141+ s , columns , formatters = {},
142+ ) for s in data ))
Original file line number Diff line number Diff line change @@ -106,6 +106,24 @@ def create_one_address_scope(attrs=None):
106106
107107 return address_scope
108108
109+ @staticmethod
110+ def create_address_scopes (attrs = None , count = 2 ):
111+ """Create multiple fake address scopes.
112+
113+ :param Dictionary attrs:
114+ A dictionary with all attributes
115+ :param int count:
116+ The number of address scopes to fake
117+ :return:
118+ A list of FakeResource objects faking the address scopes
119+ """
120+ address_scopes = []
121+ for i in range (0 , count ):
122+ address_scopes .append (
123+ FakeAddressScope .create_one_address_scope (attrs ))
124+
125+ return address_scopes
126+
109127
110128class FakeAvailabilityZone (object ):
111129 """Fake one or more network availability zones (AZs)."""
Original file line number Diff line number Diff line change @@ -193,3 +193,45 @@ def test_delete(self):
193193 self .network .delete_address_scope .assert_called_once_with (
194194 self ._address_scope )
195195 self .assertIsNone (result )
196+
197+
198+ class TestListAddressScope (TestAddressScope ):
199+
200+ # The address scopes to list up.
201+ address_scopes = (
202+ network_fakes .FakeAddressScope .create_address_scopes (count = 3 ))
203+ columns = (
204+ 'ID' ,
205+ 'Name' ,
206+ 'IP Version' ,
207+ 'Shared' ,
208+ 'Project' ,
209+ )
210+ data = []
211+ for scope in address_scopes :
212+ data .append ((
213+ scope .id ,
214+ scope .name ,
215+ scope .ip_version ,
216+ scope .shared ,
217+ scope .project_id ,
218+ ))
219+
220+ def setUp (self ):
221+ super (TestListAddressScope , self ).setUp ()
222+ self .network .address_scopes = mock .Mock (
223+ return_value = self .address_scopes )
224+
225+ # Get the command object to test
226+ self .cmd = address_scope .ListAddressScope (self .app , self .namespace )
227+
228+ def test_address_scope_list (self ):
229+ arglist = []
230+ verifylist = []
231+
232+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
233+ columns , data = self .cmd .take_action (parsed_args )
234+
235+ self .network .address_scopes .assert_called_once_with (** {})
236+ self .assertEqual (self .columns , columns )
237+ self .assertEqual (self .data , list (data ))
Original file line number Diff line number Diff line change @@ -326,6 +326,7 @@ openstack.image.v2 =
326326openstack.network.v2 =
327327 address_scope_create = openstackclient.network.v2.address_scope:CreateAddressScope
328328 address_scope_delete = openstackclient.network.v2.address_scope:DeleteAddressScope
329+ address_scope_list = openstackclient.network.v2.address_scope:ListAddressScope
329330
330331 ip_floating_create = openstackclient.network.v2.floating_ip:CreateFloatingIP
331332 ip_floating_delete = openstackclient.network.v2.floating_ip:DeleteFloatingIP
You can’t perform that action at this time.
0 commit comments