]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Fix tenant-id in Arista ML2 driver to support HA router
authorSukhdev Kapur <sukhdev@aristanetworks.com>
Thu, 25 Jun 2015 22:11:28 +0000 (15:11 -0700)
committerSukhdev Kapur <sukhdev@aristanetworks.com>
Thu, 25 Jun 2015 23:18:24 +0000 (16:18 -0700)
When HA router is created, the framework creates a network and does
not specify the tenant-id. This casuse Arista ML2 driver to fail.
This patch sets the tenant-id when it is not passed explicitly by
by the network_create() call from the HA router framework.

Even though original issue was discovered for network_create()
it turns out the same issue applies for port_create() as well
so all the methods are fixed in this patch

Change-Id: Id03e26dac003fa589477ed78a4ed3c44cc2f708d
Closes-Bug: 1468828

neutron/plugins/ml2/drivers/arista/mechanism_arista.py

index 4011f1c38cb9bc1b5f29da523f51966bafd651b6..b82bf1af23cb54a86e63e07ac16271acdb1388a8 100644 (file)
@@ -71,6 +71,8 @@ class AristaDriver(driver_api.MechanismDriver):
         segments = context.network_segments
         network_id = network['id']
         tenant_id = network['tenant_id']
+        if not tenant_id:
+            tenant_id = context._plugin_context.tenant_id
         segmentation_id = segments[0]['segmentation_id']
         with self.eos_sync_lock:
             db_lib.remember_tenant(tenant_id)
@@ -85,6 +87,8 @@ class AristaDriver(driver_api.MechanismDriver):
         network_id = network['id']
         network_name = network['name']
         tenant_id = network['tenant_id']
+        if not tenant_id:
+            tenant_id = context._plugin_context.tenant_id
         segments = context.network_segments
         vlan_id = segments[0]['segmentation_id']
         shared_net = network['shared']
@@ -129,6 +133,8 @@ class AristaDriver(driver_api.MechanismDriver):
             network_id = new_network['id']
             network_name = new_network['name']
             tenant_id = new_network['tenant_id']
+            if not tenant_id:
+                tenant_id = context._plugin_context.tenant_id
             vlan_id = new_network['provider:segmentation_id']
             shared_net = new_network['shared']
             with self.eos_sync_lock:
@@ -161,6 +167,8 @@ class AristaDriver(driver_api.MechanismDriver):
         network = context.current
         network_id = network['id']
         tenant_id = network['tenant_id']
+        if not tenant_id:
+            tenant_id = context._plugin_context.tenant_id
         with self.eos_sync_lock:
 
             # Succeed deleting network in case EOS is not accessible.
@@ -191,6 +199,8 @@ class AristaDriver(driver_api.MechanismDriver):
             port_id = port['id']
             network_id = port['network_id']
             tenant_id = port['tenant_id']
+            if not tenant_id:
+                tenant_id = context._plugin_context.tenant_id
             with self.eos_sync_lock:
                 db_lib.remember_tenant(tenant_id)
                 db_lib.remember_vm(device_id, host, port_id,
@@ -214,6 +224,8 @@ class AristaDriver(driver_api.MechanismDriver):
             port_name = port['name']
             network_id = port['network_id']
             tenant_id = port['tenant_id']
+            if not tenant_id:
+                tenant_id = context._plugin_context.tenant_id
             with self.eos_sync_lock:
                 hostname = self._host_name(host)
                 vm_provisioned = db_lib.is_vm_provisioned(device_id,
@@ -278,6 +290,8 @@ class AristaDriver(driver_api.MechanismDriver):
             port_name = port['name']
             network_id = port['network_id']
             tenant_id = port['tenant_id']
+            if not tenant_id:
+                tenant_id = context._plugin_context.tenant_id
             with self.eos_sync_lock:
                 hostname = self._host_name(host)
                 segmentation_id = db_lib.get_segmentation_id(tenant_id,
@@ -317,6 +331,8 @@ class AristaDriver(driver_api.MechanismDriver):
         host_id = context.host
         device_id = port['device_id']
         tenant_id = port['tenant_id']
+        if not tenant_id:
+            tenant_id = context._plugin_context.tenant_id
         network_id = port['network_id']
         port_id = port['id']
         with self.eos_sync_lock:
@@ -337,6 +353,8 @@ class AristaDriver(driver_api.MechanismDriver):
         port_id = port['id']
         network_id = port['network_id']
         tenant_id = port['tenant_id']
+        if not tenant_id:
+            tenant_id = context._plugin_context.tenant_id
         device_owner = port['device_owner']
 
         try: