Merge pull request #461 from asadoughi/master
Fixed /ip_address/{ipAddressId}/ports query for service filter
This commit is contained in:
@@ -199,6 +199,10 @@ def port_find(context, limit=None, sorts=None, marker_obj=None, fields=None,
|
||||
if filters.get("device_id"):
|
||||
model_filters.append(models.Port.device_id.in_(filters["device_id"]))
|
||||
|
||||
if filters.get("service"):
|
||||
model_filters.append(models.Port.associations.any(
|
||||
models.PortIpAssociation.service == filters["service"]))
|
||||
|
||||
if "join_security_groups" in filters:
|
||||
query = query.options(orm.joinedload(models.Port.security_groups))
|
||||
|
||||
|
||||
@@ -3,9 +3,11 @@ import netaddr
|
||||
|
||||
import contextlib
|
||||
|
||||
from quark.db import api as db_api
|
||||
from quark import exceptions
|
||||
import quark.ipam
|
||||
import quark.plugin
|
||||
import quark.plugin_modules.ip_addresses as ip_api
|
||||
import quark.plugin_modules.mac_address_ranges as macrng_api
|
||||
import quark.plugin_modules.networks as network_api
|
||||
import quark.plugin_modules.ports as port_api
|
||||
@@ -67,3 +69,27 @@ class QuarkUpdatePorts(MySqlBaseFunctionalTest):
|
||||
ip = "192.168.1.50"
|
||||
port = port_api.update_port(self.context, id, _make_body(ip))
|
||||
self.assertEqual(ip, port['fixed_ips'][0]['ip_address'])
|
||||
|
||||
|
||||
class QuarkFindPorts(MySqlBaseFunctionalTest):
|
||||
def test_ip_address_port_find_service(self):
|
||||
net = db_api.network_create(self.context)
|
||||
port = db_api.port_create(self.context, network_id=net["id"],
|
||||
backend_key="", device_id="")
|
||||
ip_address = db_api.ip_address_create(
|
||||
self.context, address=netaddr.IPAddress("0.0.0.0"))
|
||||
self.context.session.flush()
|
||||
|
||||
ip_address = db_api.port_associate_ip(self.context, [port], ip_address)
|
||||
ip_address.set_service_for_port(port, "foobar")
|
||||
self.context.session.flush()
|
||||
|
||||
ports = ip_api.get_ports_for_ip_address(
|
||||
self.context, ip_address["id"],
|
||||
filters={"service": "not-foobar"})
|
||||
self.assertEqual(len(ports), 0)
|
||||
|
||||
ports = ip_api.get_ports_for_ip_address(
|
||||
self.context, ip_address["id"],
|
||||
filters={"service": "foobar"})
|
||||
self.assertEqual(len(ports), 1)
|
||||
|
||||
Reference in New Issue
Block a user