@@ -29,6 +29,10 @@ class TestListIPAvailability(network_fakes.TestNetworkV2):
2929 'Network Name' ,
3030 'Total IPs' ,
3131 'Used IPs' ,
32+ 'Total IPs in Subnet' ,
33+ 'Total IPs in Allocation Pool' ,
34+ 'Used IPs in Subnet' ,
35+ 'Used IPs in Allocation Pool' ,
3236 )
3337 data = []
3438 for net in _ip_availability :
@@ -38,6 +42,10 @@ class TestListIPAvailability(network_fakes.TestNetworkV2):
3842 net .network_name ,
3943 net .total_ips ,
4044 net .used_ips ,
45+ net .ip_availability_details ['total_ips_in_subnet' ],
46+ net .ip_availability_details ['total_ips_in_allocation_pool' ],
47+ net .ip_availability_details ['used_ips_in_subnet' ],
48+ net .ip_availability_details ['used_ips_in_allocation_pool' ],
4149 )
4250 )
4351
@@ -124,6 +132,37 @@ def test_list_project(self):
124132 self .assertEqual (self .columns , columns )
125133 self .assertCountEqual (self .data , list (data ))
126134
135+ def test_list_without_ip_availability_details (self ):
136+ # The 'network-ip-availability-details' extension may not be
137+ # enabled, in which case the detail columns are left empty.
138+ ip_availability = network_fakes .create_one_ip_availability (
139+ attrs = {'ip_availability_details' : None }
140+ )
141+ self .network_client .network_ip_availabilities .return_value = [
142+ ip_availability
143+ ]
144+
145+ parsed_args = self .check_parser (self .cmd , [], [])
146+
147+ columns , data = self .cmd .take_action (parsed_args )
148+
149+ self .assertEqual (self .columns , columns )
150+ self .assertEqual (
151+ [
152+ (
153+ ip_availability .network_id ,
154+ ip_availability .network_name ,
155+ ip_availability .total_ips ,
156+ ip_availability .used_ips ,
157+ '' ,
158+ '' ,
159+ '' ,
160+ '' ,
161+ )
162+ ],
163+ list (data ),
164+ )
165+
127166
128167class TestShowIPAvailability (network_fakes .TestNetworkV2 ):
129168 _network = network_fakes .create_one_network ()
@@ -132,6 +171,7 @@ class TestShowIPAvailability(network_fakes.TestNetworkV2):
132171 )
133172
134173 columns = (
174+ 'ip_availability_details' ,
135175 'network_id' ,
136176 'network_name' ,
137177 'project_id' ,
@@ -140,6 +180,7 @@ class TestShowIPAvailability(network_fakes.TestNetworkV2):
140180 'used_ips' ,
141181 )
142182 data = (
183+ format_columns .DictColumn (_ip_availability .ip_availability_details ),
143184 _ip_availability .network_id ,
144185 _ip_availability .network_name ,
145186 _ip_availability .project_id ,
0 commit comments