Dont use query if network_ids is empty

A warning could be found in SQLAlchemy, if handling empty WHERE IN
clauses. This is found at neutron.db.segments_db.get_networks_segments

To avoid it, just return empty dict in such case.

Change-Id: I3cf727dede1d5909aeefbf852332818164ad3777
Closes-bug: #1586816
This commit is contained in:
Hong Hui Xiao 2016-05-30 03:13:21 +00:00
parent 8ca7154139
commit 1080620e5a
2 changed files with 32 additions and 0 deletions

View File

@ -87,6 +87,9 @@ def get_network_segments(session, network_id, filter_dynamic=False):
def get_networks_segments(session, network_ids, filter_dynamic=False):
if not network_ids:
return {}
with session.begin(subtransactions=True):
query = (session.query(NetworkSegment).
filter(NetworkSegment.network_id.in_(network_ids)).

View File

@ -0,0 +1,29 @@
# Copyright (c) 2016 IBM Corp.
#
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import mock
from neutron.db import segments_db
from neutron.tests import base
class TestSegmentsDb(base.BaseTestCase):
def test_get_networks_segments_with_empty_networks(self):
session = mock.MagicMock()
net_segs = segments_db.get_networks_segments(session, [])
self.assertFalse(session.query.called)
self.assertEqual({}, net_segs)