Merge "Stop ignoring 400 errors returned by ODL"

This commit is contained in:
Jenkins 2014-11-02 11:15:55 +00:00 committed by Gerrit Code Review
commit fc4c2507e0
2 changed files with 24 additions and 38 deletions

View File

@ -218,10 +218,7 @@ class OpenDaylightMechanismDriver(api.MechanismDriver):
ctx.reraise = False ctx.reraise = False
key = collection_name[:-1] if len(to_be_synced) == 1 else ( key = collection_name[:-1] if len(to_be_synced) == 1 else (
collection_name) collection_name)
self.sendjson('post', collection_name, {key: to_be_synced})
# 400 errors are returned if an object exists, which we ignore.
self.sendjson('post', collection_name, {key: to_be_synced},
[requests.codes.bad_request])
@utils.synchronized('odl-sync-full') @utils.synchronized('odl-sync-full')
def sync_full(self, context): def sync_full(self, context):
@ -276,9 +273,7 @@ class OpenDaylightMechanismDriver(api.MechanismDriver):
attr_filter = self.update_object_map[object_type] attr_filter = self.update_object_map[object_type]
resource = context.current.copy() resource = context.current.copy()
attr_filter(resource, context) attr_filter(resource, context)
# 400 errors are returned if an object exists, which we ignore. self.sendjson(method, urlpath, {object_type[:-1]: resource})
self.sendjson(method, urlpath, {object_type[:-1]: resource},
[requests.codes.bad_request])
except Exception: except Exception:
with excutils.save_and_reraise_exception(): with excutils.save_and_reraise_exception():
self.out_of_sync = True self.out_of_sync = True
@ -291,7 +286,7 @@ class OpenDaylightMechanismDriver(api.MechanismDriver):
for sg in port['security_groups']] for sg in port['security_groups']]
port['security_groups'] = groups port['security_groups'] = groups
def sendjson(self, method, urlpath, obj, ignorecodes=[]): def sendjson(self, method, urlpath, obj):
"""Send json to the OpenDaylight controller.""" """Send json to the OpenDaylight controller."""
headers = {'Content-Type': 'application/json'} headers = {'Content-Type': 'application/json'}
data = jsonutils.dumps(obj, indent=2) if obj else None data = jsonutils.dumps(obj, indent=2) if obj else None
@ -301,10 +296,6 @@ class OpenDaylightMechanismDriver(api.MechanismDriver):
r = requests.request(method, url=url, r = requests.request(method, url=url,
headers=headers, data=data, headers=headers, data=data,
auth=self.auth, timeout=self.timeout) auth=self.auth, timeout=self.timeout)
# ignorecodes contains a list of HTTP error codes to ignore.
if r.status_code in ignorecodes:
return
r.raise_for_status() r.raise_for_status()
def bind_port(self, context): def bind_port(self, context):

View File

@ -286,18 +286,17 @@ class OpenDaylightMechanismDriverTestCase(base.BaseTestCase):
'delete', **kwargs) 'delete', **kwargs)
def test_create_network_postcommit(self): def test_create_network_postcommit(self):
for status_code in (requests.codes.created, self._test_create_resource_postcommit('network',
requests.codes.bad_request): requests.codes.created)
self._test_create_resource_postcommit('network', status_code) for status_code in (requests.codes.bad_request,
requests.codes.unauthorized):
self._test_create_resource_postcommit( self._test_create_resource_postcommit(
'network', requests.codes.unauthorized, 'network', status_code, requests.exceptions.HTTPError)
requests.exceptions.HTTPError)
def test_create_subnet_postcommit(self): def test_create_subnet_postcommit(self):
for status_code in (requests.codes.created, self._test_create_resource_postcommit('subnet', requests.codes.created)
requests.codes.bad_request): for status_code in (requests.codes.bad_request,
self._test_create_resource_postcommit('subnet', status_code) requests.codes.unauthorized,
for status_code in (requests.codes.unauthorized,
requests.codes.forbidden, requests.codes.forbidden,
requests.codes.not_found, requests.codes.not_found,
requests.codes.conflict, requests.codes.conflict,
@ -306,10 +305,9 @@ class OpenDaylightMechanismDriverTestCase(base.BaseTestCase):
'subnet', status_code, requests.exceptions.HTTPError) 'subnet', status_code, requests.exceptions.HTTPError)
def test_create_port_postcommit(self): def test_create_port_postcommit(self):
for status_code in (requests.codes.created, self._test_create_resource_postcommit('port', requests.codes.created)
requests.codes.bad_request): for status_code in (requests.codes.bad_request,
self._test_create_resource_postcommit('port', status_code) requests.codes.unauthorized,
for status_code in (requests.codes.unauthorized,
requests.codes.forbidden, requests.codes.forbidden,
requests.codes.not_found, requests.codes.not_found,
requests.codes.conflict, requests.codes.conflict,
@ -319,19 +317,17 @@ class OpenDaylightMechanismDriverTestCase(base.BaseTestCase):
'port', status_code, requests.exceptions.HTTPError) 'port', status_code, requests.exceptions.HTTPError)
def test_update_network_postcommit(self): def test_update_network_postcommit(self):
for status_code in (requests.codes.ok, self._test_update_resource_postcommit('network', requests.codes.ok)
requests.codes.bad_request): for status_code in (requests.codes.bad_request,
self._test_update_resource_postcommit('network', status_code) requests.codes.forbidden,
for status_code in (requests.codes.forbidden,
requests.codes.not_found): requests.codes.not_found):
self._test_update_resource_postcommit( self._test_update_resource_postcommit(
'network', status_code, requests.exceptions.HTTPError) 'network', status_code, requests.exceptions.HTTPError)
def test_update_subnet_postcommit(self): def test_update_subnet_postcommit(self):
for status_code in (requests.codes.ok, self._test_update_resource_postcommit('subnet', requests.codes.ok)
requests.codes.bad_request): for status_code in (requests.codes.bad_request,
self._test_update_resource_postcommit('subnet', status_code) requests.codes.unauthorized,
for status_code in (requests.codes.unauthorized,
requests.codes.forbidden, requests.codes.forbidden,
requests.codes.not_found, requests.codes.not_found,
requests.codes.not_implemented): requests.codes.not_implemented):
@ -339,10 +335,9 @@ class OpenDaylightMechanismDriverTestCase(base.BaseTestCase):
'subnet', status_code, requests.exceptions.HTTPError) 'subnet', status_code, requests.exceptions.HTTPError)
def test_update_port_postcommit(self): def test_update_port_postcommit(self):
for status_code in (requests.codes.ok, self._test_update_resource_postcommit('port', requests.codes.ok)
requests.codes.bad_request): for status_code in (requests.codes.bad_request,
self._test_update_resource_postcommit('port', status_code) requests.codes.unauthorized,
for status_code in (requests.codes.unauthorized,
requests.codes.forbidden, requests.codes.forbidden,
requests.codes.not_found, requests.codes.not_found,
requests.codes.conflict, requests.codes.conflict,