Merge "Stop ignoring 400 errors returned by ODL"
This commit is contained in:
commit
fc4c2507e0
@ -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):
|
||||||
|
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user