Fix _get_id_for
Raise BadRequest on the absense of the attribute. Also, ensure that the value is actually a UUID-like. Closes-Bug: #1595078 Change-Id: I6c236d5e4acdd6f13eca2877163facc2860a9445
This commit is contained in:
parent
ac14672612
commit
e2581d50e7
@ -23,6 +23,7 @@ from sqlalchemy import orm
|
|||||||
from sqlalchemy.orm import aliased
|
from sqlalchemy.orm import aliased
|
||||||
from sqlalchemy.orm import exc as sa_exc
|
from sqlalchemy.orm import exc as sa_exc
|
||||||
|
|
||||||
|
from neutron_lib.api import validators
|
||||||
from neutron_lib import constants as lib_consts
|
from neutron_lib import constants as lib_consts
|
||||||
from neutron_lib import exceptions as n_exc
|
from neutron_lib import exceptions as n_exc
|
||||||
|
|
||||||
@ -310,11 +311,14 @@ class BgpDbMixin(common_db.CommonDbMixin):
|
|||||||
|
|
||||||
def _get_id_for(self, resource, id_name):
|
def _get_id_for(self, resource, id_name):
|
||||||
try:
|
try:
|
||||||
return resource.get(id_name)
|
uuid = resource[id_name]
|
||||||
except AttributeError:
|
msg = validators.validate_uuid(uuid)
|
||||||
|
except KeyError:
|
||||||
msg = _("%s must be specified") % id_name
|
msg = _("%s must be specified") % id_name
|
||||||
|
if msg:
|
||||||
raise n_exc.BadRequest(resource=bgp_ext.BGP_SPEAKER_RESOURCE_NAME,
|
raise n_exc.BadRequest(resource=bgp_ext.BGP_SPEAKER_RESOURCE_NAME,
|
||||||
msg=msg)
|
msg=msg)
|
||||||
|
return uuid
|
||||||
|
|
||||||
def _get_bgp_peers_by_bgp_speaker_binding(self, context, bgp_speaker_id):
|
def _get_bgp_peers_by_bgp_speaker_binding(self, context, bgp_speaker_id):
|
||||||
with context.session.begin(subtransactions=True):
|
with context.session.begin(subtransactions=True):
|
||||||
|
@ -31,6 +31,7 @@ from neutron_dynamic_routing.services.bgp import bgp_plugin
|
|||||||
_uuid = uuidutils.generate_uuid
|
_uuid = uuidutils.generate_uuid
|
||||||
|
|
||||||
ADVERTISE_FIPS_KEY = 'advertise_floating_ip_host_routes'
|
ADVERTISE_FIPS_KEY = 'advertise_floating_ip_host_routes'
|
||||||
|
IMAGINARY = '2b2334c8-adfe-42d9-82c6-ad866c7fc5d8' # non existent resource id
|
||||||
|
|
||||||
|
|
||||||
class BgpEntityCreationMixin(object):
|
class BgpEntityCreationMixin(object):
|
||||||
@ -306,7 +307,7 @@ class BgpTests(test_plugin.Ml2PluginV2TestCase,
|
|||||||
{'bgp_peer_id': peer['id']})
|
{'bgp_peer_id': peer['id']})
|
||||||
|
|
||||||
def test_remove_non_existent_bgp_peer(self):
|
def test_remove_non_existent_bgp_peer(self):
|
||||||
bgp_peer_id = "imaginary"
|
bgp_peer_id = IMAGINARY
|
||||||
with self.subnetpool_with_address_scope(4,
|
with self.subnetpool_with_address_scope(4,
|
||||||
prefixes=['8.0.0.0/8']) as sp:
|
prefixes=['8.0.0.0/8']) as sp:
|
||||||
with self.bgp_speaker(sp['ip_version'], 1234) as speaker:
|
with self.bgp_speaker(sp['ip_version'], 1234) as speaker:
|
||||||
@ -317,7 +318,7 @@ class BgpTests(test_plugin.Ml2PluginV2TestCase,
|
|||||||
{'bgp_peer_id': bgp_peer_id})
|
{'bgp_peer_id': bgp_peer_id})
|
||||||
|
|
||||||
def test_add_non_existent_bgp_peer(self):
|
def test_add_non_existent_bgp_peer(self):
|
||||||
bgp_peer_id = "imaginary"
|
bgp_peer_id = IMAGINARY
|
||||||
with self.subnetpool_with_address_scope(4,
|
with self.subnetpool_with_address_scope(4,
|
||||||
prefixes=['8.0.0.0/8']) as sp:
|
prefixes=['8.0.0.0/8']) as sp:
|
||||||
with self.bgp_speaker(sp['ip_version'], 1234) as speaker:
|
with self.bgp_speaker(sp['ip_version'], 1234) as speaker:
|
||||||
@ -327,6 +328,36 @@ class BgpTests(test_plugin.Ml2PluginV2TestCase,
|
|||||||
speaker['id'],
|
speaker['id'],
|
||||||
{'bgp_peer_id': bgp_peer_id})
|
{'bgp_peer_id': bgp_peer_id})
|
||||||
|
|
||||||
|
def test_add_bgp_peer_without_id(self):
|
||||||
|
with self.subnetpool_with_address_scope(4,
|
||||||
|
prefixes=['8.0.0.0/8']) as sp:
|
||||||
|
with self.bgp_speaker(sp['ip_version'], 1234) as speaker:
|
||||||
|
self.assertRaises(n_exc.BadRequest,
|
||||||
|
self.bgp_plugin.add_bgp_peer,
|
||||||
|
self.context,
|
||||||
|
speaker['id'],
|
||||||
|
{})
|
||||||
|
|
||||||
|
def test_add_bgp_peer_with_bad_id(self):
|
||||||
|
with self.subnetpool_with_address_scope(4,
|
||||||
|
prefixes=['8.0.0.0/8']) as sp:
|
||||||
|
with self.bgp_speaker(sp['ip_version'], 1234) as speaker:
|
||||||
|
self.assertRaises(n_exc.BadRequest,
|
||||||
|
self.bgp_plugin.add_bgp_peer,
|
||||||
|
self.context,
|
||||||
|
speaker['id'],
|
||||||
|
{'bgp_peer_id': 'aaa'})
|
||||||
|
|
||||||
|
def test_add_bgp_peer_with_none_id(self):
|
||||||
|
with self.subnetpool_with_address_scope(4,
|
||||||
|
prefixes=['8.0.0.0/8']) as sp:
|
||||||
|
with self.bgp_speaker(sp['ip_version'], 1234) as speaker:
|
||||||
|
self.assertRaises(n_exc.BadRequest,
|
||||||
|
self.bgp_plugin.add_bgp_peer,
|
||||||
|
self.context,
|
||||||
|
speaker['id'],
|
||||||
|
{'bgp_peer_id': None})
|
||||||
|
|
||||||
def test_add_gateway_network(self):
|
def test_add_gateway_network(self):
|
||||||
with self.subnetpool_with_address_scope(4,
|
with self.subnetpool_with_address_scope(4,
|
||||||
prefixes=['8.0.0.0/8']) as sp:
|
prefixes=['8.0.0.0/8']) as sp:
|
||||||
@ -373,7 +404,7 @@ class BgpTests(test_plugin.Ml2PluginV2TestCase,
|
|||||||
self.assertEqual(1, len(new_speaker['networks']))
|
self.assertEqual(1, len(new_speaker['networks']))
|
||||||
|
|
||||||
def test_add_non_existent_gateway_network(self):
|
def test_add_non_existent_gateway_network(self):
|
||||||
network_id = "imaginary"
|
network_id = IMAGINARY
|
||||||
with self.subnetpool_with_address_scope(4,
|
with self.subnetpool_with_address_scope(4,
|
||||||
prefixes=['8.0.0.0/8']) as sp:
|
prefixes=['8.0.0.0/8']) as sp:
|
||||||
with self.bgp_speaker(sp['ip_version'], 1234) as speaker:
|
with self.bgp_speaker(sp['ip_version'], 1234) as speaker:
|
||||||
@ -383,7 +414,7 @@ class BgpTests(test_plugin.Ml2PluginV2TestCase,
|
|||||||
{'network_id': network_id})
|
{'network_id': network_id})
|
||||||
|
|
||||||
def test_remove_non_existent_gateway_network(self):
|
def test_remove_non_existent_gateway_network(self):
|
||||||
network_id = "imaginary"
|
network_id = IMAGINARY
|
||||||
with self.subnetpool_with_address_scope(4,
|
with self.subnetpool_with_address_scope(4,
|
||||||
prefixes=['8.0.0.0/8']) as sp:
|
prefixes=['8.0.0.0/8']) as sp:
|
||||||
with self.bgp_speaker(sp['ip_version'], 1234) as speaker:
|
with self.bgp_speaker(sp['ip_version'], 1234) as speaker:
|
||||||
|
Loading…
Reference in New Issue
Block a user