]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Stop ignoring 400 errors returned by ODL
authorCédric Ollivier <ollivier.cedric@gmail.com>
Sun, 14 Sep 2014 11:04:21 +0000 (13:04 +0200)
committerCédric Ollivier <ollivier.cedric@gmail.com>
Sun, 14 Sep 2014 11:27:01 +0000 (13:27 +0200)
This commit stops ignoring 400 (Bad Request) HTTP codes returned by ODL
in create and update operations. It also modifies sendjson() because it
doesn't ignore any HTTP error code now.

Change-Id: Id0db2c0c1d8fddfbd16b3ce9476a2358e2ef1e49
Closes-Bug: #1369239

neutron/plugins/ml2/drivers/mechanism_odl.py
neutron/tests/unit/ml2/test_mechanism_odl.py

index dfe0c12c950522801df2442124265ff1126a6f7c..db765294b8d9e8ba75e4928fc2838d7f4214f80c 100644 (file)
@@ -220,10 +220,7 @@ class OpenDaylightMechanismDriver(api.MechanismDriver):
                         ctx.reraise = False
         key = collection_name[:-1] if len(to_be_synced) == 1 else (
             collection_name)
-
-        # 400 errors are returned if an object exists, which we ignore.
-        self.sendjson('post', collection_name, {key: to_be_synced},
-                      [requests.codes.bad_request])
+        self.sendjson('post', collection_name, {key: to_be_synced})
 
     @utils.synchronized('odl-sync-full')
     def sync_full(self, context):
@@ -278,9 +275,7 @@ class OpenDaylightMechanismDriver(api.MechanismDriver):
                     attr_filter = self.update_object_map[object_type]
                 resource = context.current.copy()
                 attr_filter(resource, context)
-                # 400 errors are returned if an object exists, which we ignore.
-                self.sendjson(method, urlpath, {object_type[:-1]: resource},
-                              [requests.codes.bad_request])
+                self.sendjson(method, urlpath, {object_type[:-1]: resource})
         except Exception:
             with excutils.save_and_reraise_exception():
                 self.out_of_sync = True
@@ -293,7 +288,7 @@ class OpenDaylightMechanismDriver(api.MechanismDriver):
                   for sg in port['security_groups']]
         port['security_groups'] = groups
 
-    def sendjson(self, method, urlpath, obj, ignorecodes=[]):
+    def sendjson(self, method, urlpath, obj):
         """Send json to the OpenDaylight controller."""
         headers = {'Content-Type': 'application/json'}
         data = jsonutils.dumps(obj, indent=2) if obj else None
@@ -303,10 +298,6 @@ class OpenDaylightMechanismDriver(api.MechanismDriver):
         r = requests.request(method, url=url,
                              headers=headers, data=data,
                              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()
 
     def bind_port(self, context):
index ff813778ef01652ae4a934b282f7680b8f094c9e..17a5d0babcae697f1b1cb6308e31e01cab6ed005 100644 (file)
@@ -287,18 +287,17 @@ class OpenDaylightMechanismDriverTestCase(base.BaseTestCase):
                                     'delete', **kwargs)
 
     def test_create_network_postcommit(self):
-        for status_code in (requests.codes.created,
-                            requests.codes.bad_request):
-            self._test_create_resource_postcommit('network', status_code)
-        self._test_create_resource_postcommit(
-            'network', requests.codes.unauthorized,
-            requests.exceptions.HTTPError)
+        self._test_create_resource_postcommit('network',
+                                              requests.codes.created)
+        for status_code in (requests.codes.bad_request,
+                            requests.codes.unauthorized):
+            self._test_create_resource_postcommit(
+                'network', status_code, requests.exceptions.HTTPError)
 
     def test_create_subnet_postcommit(self):
-        for status_code in (requests.codes.created,
-                            requests.codes.bad_request):
-            self._test_create_resource_postcommit('subnet', status_code)
-        for status_code in (requests.codes.unauthorized,
+        self._test_create_resource_postcommit('subnet', requests.codes.created)
+        for status_code in (requests.codes.bad_request,
+                            requests.codes.unauthorized,
                             requests.codes.forbidden,
                             requests.codes.not_found,
                             requests.codes.conflict,
@@ -307,10 +306,9 @@ class OpenDaylightMechanismDriverTestCase(base.BaseTestCase):
                 'subnet', status_code, requests.exceptions.HTTPError)
 
     def test_create_port_postcommit(self):
-        for status_code in (requests.codes.created,
-                            requests.codes.bad_request):
-            self._test_create_resource_postcommit('port', status_code)
-        for status_code in (requests.codes.unauthorized,
+        self._test_create_resource_postcommit('port', requests.codes.created)
+        for status_code in (requests.codes.bad_request,
+                            requests.codes.unauthorized,
                             requests.codes.forbidden,
                             requests.codes.not_found,
                             requests.codes.conflict,
@@ -320,19 +318,17 @@ class OpenDaylightMechanismDriverTestCase(base.BaseTestCase):
                 'port', status_code, requests.exceptions.HTTPError)
 
     def test_update_network_postcommit(self):
-        for status_code in (requests.codes.ok,
-                            requests.codes.bad_request):
-            self._test_update_resource_postcommit('network', status_code)
-        for status_code in (requests.codes.forbidden,
+        self._test_update_resource_postcommit('network', requests.codes.ok)
+        for status_code in (requests.codes.bad_request,
+                            requests.codes.forbidden,
                             requests.codes.not_found):
             self._test_update_resource_postcommit(
                 'network', status_code, requests.exceptions.HTTPError)
 
     def test_update_subnet_postcommit(self):
-        for status_code in (requests.codes.ok,
-                            requests.codes.bad_request):
-            self._test_update_resource_postcommit('subnet', status_code)
-        for status_code in (requests.codes.unauthorized,
+        self._test_update_resource_postcommit('subnet', requests.codes.ok)
+        for status_code in (requests.codes.bad_request,
+                            requests.codes.unauthorized,
                             requests.codes.forbidden,
                             requests.codes.not_found,
                             requests.codes.not_implemented):
@@ -340,10 +336,9 @@ class OpenDaylightMechanismDriverTestCase(base.BaseTestCase):
                 'subnet', status_code, requests.exceptions.HTTPError)
 
     def test_update_port_postcommit(self):
-        for status_code in (requests.codes.ok,
-                            requests.codes.bad_request):
-            self._test_update_resource_postcommit('port', status_code)
-        for status_code in (requests.codes.unauthorized,
+        self._test_update_resource_postcommit('port', requests.codes.ok)
+        for status_code in (requests.codes.bad_request,
+                            requests.codes.unauthorized,
                             requests.codes.forbidden,
                             requests.codes.not_found,
                             requests.codes.conflict,