Merge "Fix error 500 during segment range creation"
This commit is contained in:
commit
d49f343239
|
@ -13,6 +13,7 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from neutron_lib.api.definitions import network_segment_range as range_def
|
from neutron_lib.api.definitions import network_segment_range as range_def
|
||||||
|
from neutron_lib.api import validators
|
||||||
from neutron_lib import constants as const
|
from neutron_lib import constants as const
|
||||||
from neutron_lib.db import api as db_api
|
from neutron_lib.db import api as db_api
|
||||||
from neutron_lib import exceptions as lib_exc
|
from neutron_lib import exceptions as lib_exc
|
||||||
|
@ -40,6 +41,20 @@ def is_network_segment_range_enabled():
|
||||||
for p in ['network_segment_range', network_segment_range_class])
|
for p in ['network_segment_range', network_segment_range_class])
|
||||||
|
|
||||||
|
|
||||||
|
def _get_physical_network(network_segment_range):
|
||||||
|
if network_segment_range.get('network_type') != const.TYPE_VLAN:
|
||||||
|
return None
|
||||||
|
|
||||||
|
physical_network = network_segment_range.get(
|
||||||
|
"physical_network", const.ATTR_NOT_SPECIFIED)
|
||||||
|
if not validators.is_attr_set(physical_network):
|
||||||
|
message = _("Network type %s requires 'physical_network' to be "
|
||||||
|
"specified while creating new range") % const.TYPE_VLAN
|
||||||
|
raise lib_exc.BadRequest(resource=range_def.RESOURCE_NAME,
|
||||||
|
msg=message)
|
||||||
|
return physical_network
|
||||||
|
|
||||||
|
|
||||||
class NetworkSegmentRangePlugin(ext_range.NetworkSegmentRangePluginBase):
|
class NetworkSegmentRangePlugin(ext_range.NetworkSegmentRangePluginBase):
|
||||||
"""Implements Neutron Network Segment Range Service plugin."""
|
"""Implements Neutron Network Segment Range Service plugin."""
|
||||||
|
|
||||||
|
@ -77,9 +92,7 @@ class NetworkSegmentRangePlugin(ext_range.NetworkSegmentRangePluginBase):
|
||||||
filters = {
|
filters = {
|
||||||
'default': False,
|
'default': False,
|
||||||
'network_type': network_segment_range['network_type'],
|
'network_type': network_segment_range['network_type'],
|
||||||
'physical_network': (network_segment_range['physical_network']
|
'physical_network': _get_physical_network(network_segment_range)
|
||||||
if network_segment_range['network_type'] ==
|
|
||||||
const.TYPE_VLAN else None),
|
|
||||||
}
|
}
|
||||||
range_objs = obj_network_segment_range.NetworkSegmentRange.get_objects(
|
range_objs = obj_network_segment_range.NetworkSegmentRange.get_objects(
|
||||||
context, **filters)
|
context, **filters)
|
||||||
|
|
|
@ -175,6 +175,17 @@ class TestNetworkSegmentRange(testlib_api.SqlTestCase):
|
||||||
self.context,
|
self.context,
|
||||||
network_segment_range)
|
network_segment_range)
|
||||||
|
|
||||||
|
def test_create_network_segment_range_missing_physical_network_for_vlan(
|
||||||
|
self):
|
||||||
|
test_range = self._vlan_range.copy()
|
||||||
|
test_range.pop("physical_network")
|
||||||
|
network_segment_range = {'network_segment_range': test_range}
|
||||||
|
self.assertRaises(
|
||||||
|
exc.NeutronException,
|
||||||
|
self.plugin.create_network_segment_range,
|
||||||
|
self.context,
|
||||||
|
network_segment_range)
|
||||||
|
|
||||||
def test_update_network_segment_range(self):
|
def test_update_network_segment_range(self):
|
||||||
test_range = self._vlan_range
|
test_range = self._vlan_range
|
||||||
network_segment_range = {'network_segment_range': test_range}
|
network_segment_range = {'network_segment_range': test_range}
|
||||||
|
|
Loading…
Reference in New Issue