Implement '-F' option for 'net-ip-availability-*' command respond
In respond to 'net-ip-availability-list' and 'net-ip-availability-show' commands, follow the '-F' or '--field' option when present Change-Id: I688d77167a401aa07771fee5a46323c416a546ee Closes-Bug: #1586908
This commit is contained in:
parent
e67ed785b7
commit
ac8348853b
|
@ -15,6 +15,7 @@
|
|||
|
||||
from neutron_lib import exceptions
|
||||
|
||||
from neutron.db import _utils as db_utils
|
||||
import neutron.db.db_base_plugin_v2 as db_base_plugin_v2
|
||||
import neutron.db.network_ip_availability_db as ip_availability_db
|
||||
|
||||
|
@ -42,14 +43,16 @@ class NetworkIPAvailabilityPlugin(ip_availability_db.IpAvailabilityMixin,
|
|||
def get_network_ip_availabilities(self, context, filters=None,
|
||||
fields=None):
|
||||
"""Returns ip availability data for a collection of networks."""
|
||||
return super(NetworkIPAvailabilityPlugin,
|
||||
net_ip_availabilities = super(NetworkIPAvailabilityPlugin,
|
||||
self).get_network_ip_availabilities(context, filters)
|
||||
return [db_utils.resource_fields(net_ip_availability, fields)
|
||||
for net_ip_availability in net_ip_availabilities]
|
||||
|
||||
def get_network_ip_availability(self, context, id=None, fields=None):
|
||||
"""Return ip availability data for a specific network id."""
|
||||
filters = {'network_id': [id]}
|
||||
result = self.get_network_ip_availabilities(context, filters)
|
||||
if result:
|
||||
return result[0]
|
||||
return db_utils.resource_fields(result[0], fields)
|
||||
else:
|
||||
raise exceptions.NetworkNotFound(net_id=id)
|
||||
|
|
|
@ -59,6 +59,38 @@ class TestNetworkIPAvailabilityAPI(
|
|||
expected_used_ips=expected_used_ips,
|
||||
expected_total_ips=expected_total_ips)
|
||||
|
||||
def test_usages_query_list_with_fields_total_ips(self):
|
||||
with self.network() as net:
|
||||
with self.subnet(network=net):
|
||||
# list by query fields: total_ips
|
||||
params = 'fields=total_ips'
|
||||
request = self.new_list_request(API_RESOURCE, params=params)
|
||||
response = self.deserialize(self.fmt,
|
||||
request.get_response(self.ext_api))
|
||||
self.assertIn(IP_AVAILS_KEY, response)
|
||||
self.assertEqual(1, len(response[IP_AVAILS_KEY]))
|
||||
availability = response[IP_AVAILS_KEY][0]
|
||||
self.assertIn('total_ips', availability)
|
||||
self.assertEqual(253, availability['total_ips'])
|
||||
self.assertNotIn('network_id', availability)
|
||||
|
||||
def test_usages_query_show_with_fields_total_ips(self):
|
||||
with self.network() as net:
|
||||
with self.subnet(network=net):
|
||||
network = net['network']
|
||||
# Show by query fields: total_ips
|
||||
params = ['total_ips']
|
||||
request = self.new_show_request(API_RESOURCE,
|
||||
network['id'],
|
||||
fields=params)
|
||||
response = self.deserialize(
|
||||
self.fmt, request.get_response(self.ext_api))
|
||||
self.assertIn(IP_AVAIL_KEY, response)
|
||||
availability = response[IP_AVAIL_KEY]
|
||||
self.assertIn('total_ips', availability)
|
||||
self.assertEqual(253, availability['total_ips'])
|
||||
self.assertNotIn('network_id', availability)
|
||||
|
||||
@staticmethod
|
||||
def _find_availability(availabilities, net_id):
|
||||
for ip_availability in availabilities:
|
||||
|
|
Loading…
Reference in New Issue