From ffe5943e657ef32bf4c509a8965cf03a4703be1d Mon Sep 17 00:00:00 2001 From: mmidolesov Date: Wed, 11 Sep 2019 00:09:45 -0700 Subject: [PATCH] Make port list by mac case insesitive This fix removes the case sensitivity when performing port list by mac address criteria. Closes-Bug: #1843428 Change-Id: I7ab6934ea333467d2efc5da0471b1af82ebb44b8 --- neutron/db/db_base_plugin_v2.py | 6 ++++++ ...8-mac-addres-case-insensitivity-750299c11b49a9a8.yaml | 9 +++++++++ 2 files changed, 15 insertions(+) create mode 100644 releasenotes/notes/bug-1843428-mac-addres-case-insensitivity-750299c11b49a9a8.yaml diff --git a/neutron/db/db_base_plugin_v2.py b/neutron/db/db_base_plugin_v2.py index b93c3b08e7c..b47ee562e3d 100644 --- a/neutron/db/db_base_plugin_v2.py +++ b/neutron/db/db_base_plugin_v2.py @@ -42,6 +42,7 @@ from oslo_log import log as logging from oslo_utils import excutils from oslo_utils import uuidutils from sqlalchemy import exc as sql_exc +from sqlalchemy import func from sqlalchemy import not_ from neutron._i18n import _ @@ -1540,6 +1541,7 @@ class NeutronDbPluginV2(db_base_plugin_common.DbBasePluginCommon, limit = kwargs.pop('limit', None) filters = filters or {} fixed_ips = filters.pop('fixed_ips', {}) + mac_address = filters.pop('mac_address', {}) vif_type = filters.pop(portbindings_def.VIF_TYPE, None) query = model_query.get_collection_query(context, Port, filters=filters, @@ -1548,6 +1550,10 @@ class NeutronDbPluginV2(db_base_plugin_common.DbBasePluginCommon, subnet_ids = fixed_ips.get('subnet_id') if vif_type is not None: query = query.filter(Port.port_bindings.any(vif_type=vif_type)) + if mac_address: + lowered_macs = [x.lower() for x in mac_address] + query = query.filter(func.lower(Port.mac_address).in_( + lowered_macs)) if ip_addresses: query = query.filter( Port.fixed_ips.any(IPAllocation.ip_address.in_(ip_addresses))) diff --git a/releasenotes/notes/bug-1843428-mac-addres-case-insensitivity-750299c11b49a9a8.yaml b/releasenotes/notes/bug-1843428-mac-addres-case-insensitivity-750299c11b49a9a8.yaml new file mode 100644 index 00000000000..5f1790b7574 --- /dev/null +++ b/releasenotes/notes/bug-1843428-mac-addres-case-insensitivity-750299c11b49a9a8.yaml @@ -0,0 +1,9 @@ +--- +fixes: + - | + When listing ports using the + ``openstack port list --mac-address A:B:C:D:E:F`` command we + might not return any result when trying to list ports by MAC + address if the cases differ. This fix makes the search based + on MAC address case insensitive. For more information see + `bug 1843428 `_. \ No newline at end of file