Merge "Implement '-F' option for 'net-ip-availability-*' command respond"
This commit is contained in:
7
neutron/services/network_ip_availability/plugin.py
Normal file → Executable file
7
neutron/services/network_ip_availability/plugin.py
Normal file → Executable file
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
from neutron_lib import exceptions
|
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.db_base_plugin_v2 as db_base_plugin_v2
|
||||||
import neutron.db.network_ip_availability_db as ip_availability_db
|
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,
|
def get_network_ip_availabilities(self, context, filters=None,
|
||||||
fields=None):
|
fields=None):
|
||||||
"""Returns ip availability data for a collection of networks."""
|
"""Returns ip availability data for a collection of networks."""
|
||||||
return super(NetworkIPAvailabilityPlugin,
|
net_ip_availabilities = super(NetworkIPAvailabilityPlugin,
|
||||||
self).get_network_ip_availabilities(context, filters)
|
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):
|
def get_network_ip_availability(self, context, id=None, fields=None):
|
||||||
"""Return ip availability data for a specific network id."""
|
"""Return ip availability data for a specific network id."""
|
||||||
filters = {'network_id': [id]}
|
filters = {'network_id': [id]}
|
||||||
result = self.get_network_ip_availabilities(context, filters)
|
result = self.get_network_ip_availabilities(context, filters)
|
||||||
if result:
|
if result:
|
||||||
return result[0]
|
return db_utils.resource_fields(result[0], fields)
|
||||||
else:
|
else:
|
||||||
raise exceptions.NetworkNotFound(net_id=id)
|
raise exceptions.NetworkNotFound(net_id=id)
|
||||||
|
|||||||
32
neutron/tests/unit/extensions/test_network_ip_availability.py
Normal file → Executable file
32
neutron/tests/unit/extensions/test_network_ip_availability.py
Normal file → Executable file
@@ -59,6 +59,38 @@ class TestNetworkIPAvailabilityAPI(
|
|||||||
expected_used_ips=expected_used_ips,
|
expected_used_ips=expected_used_ips,
|
||||||
expected_total_ips=expected_total_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
|
@staticmethod
|
||||||
def _find_availability(availabilities, net_id):
|
def _find_availability(availabilities, net_id):
|
||||||
for ip_availability in availabilities:
|
for ip_availability in availabilities:
|
||||||
|
|||||||
Reference in New Issue
Block a user