Avoid KeyError 'distributed' exception when using NVP <3.x

This patch fixes an issue found when creating routers with
NVP plugin and NVP platform 2.2

Fixes bug 1220931

Change-Id: Ia7b358b59e48a723c07efec015bb650accaa3322
This commit is contained in:
armando-migliaccio 2013-09-09 14:54:32 -07:00
parent d7855621b1
commit 5281b806d2
2 changed files with 14 additions and 2 deletions

View File

@ -1420,8 +1420,9 @@ class NvpPluginV2(addr_pair_db.AllowedAddressPairsMixin,
r['id'] = lrouter['uuid']
# Update 'distributed' with value returned from NVP
# This will be useful for setting the value if the API request
# did not specify any value for the 'distributed' attribute
r['distributed'] = lrouter['distributed']
# did not specify any value for the 'distributed' attribute.
# Platforms older than 3.x do not support the attribute
r['distributed'] = lrouter.get('distributed', False)
except nvp_exc.NvpInvalidVersion:
msg = _("Cannot create a distributed router with the NVP "
"platform currently in execution. Please, try "

View File

@ -548,6 +548,17 @@ class TestNiciraL3NatTestCase(test_l3_plugin.L3NatDBTestCase,
def test_router_create_distributed_returns_400(self):
self._test_router_create_with_distributed(True, None, '3.0', 400)
def test_router_create_on_obsolete_platform(self):
def obsolete_response(*args, **kwargs):
response = nvplib._create_implicit_routing_lrouter(*args, **kwargs)
response.pop('distributed')
return response
with mock.patch.object(
nvplib, 'create_lrouter', new=obsolete_response):
self._test_router_create_with_distributed(None, False, '2.2')
def test_router_create_nvp_error_returns_500(self, vlan_id=None):
with mock.patch.object(nvplib,
'create_router_lport',