Consolidated Container logic in 1 place and is configurable. Also fixed OF controller... 10/3110/1
authorMadhu Venugopal <mavenugo@gmail.com>
Tue, 26 Nov 2013 10:34:19 +0000 (02:34 -0800)
committerMadhu Venugopal <mavenugo@gmail.com>
Tue, 26 Nov 2013 10:34:19 +0000 (02:34 -0800)
Change-Id: I33f4986317f386b5707e95cb90f7db532812159c
Signed-off-by: Madhu Venugopal <mavenugo@gmail.com>
neutron/src/main/java/org/opendaylight/ovsdb/neutron/InternalNetworkManager.java
neutron/src/main/java/org/opendaylight/ovsdb/neutron/NetworkHandler.java
neutron/src/main/java/org/opendaylight/ovsdb/neutron/PortHandler.java
neutron/src/main/java/org/opendaylight/ovsdb/neutron/TenantNetworkManager.java

index cc195870cab011e05cfe966548d920c4bd37ef51..d3cbe8f87b0f7e8a35306ace0f94475819680926 100644 (file)
@@ -94,6 +94,9 @@ public class InternalNetworkManager {
         Status status = ovsdbTable.insertRow(node, Bridge.NAME.getName(), null, brTun);
         if (!status.isSuccess()) return status;
         String bridgeUUID = status.getDescription();
+        // Set OF Controller
+        IConnectionServiceInternal connectionService = (IConnectionServiceInternal)ServiceHelper.getGlobalInstance(IConnectionServiceInternal.class, this);
+        connectionService.setOFController(node, bridgeUUID);
 
         Port port = new Port();
         port.setName(brTun.getName());
index 18594c647ddf6b8f11333472251ea0524d310a91..72ba5c21458a1ebab9415e0fd7994be11bede2f1 100644 (file)
@@ -2,7 +2,6 @@ package org.opendaylight.ovsdb.neutron;
 
 import java.net.HttpURLConnection;
 
-import org.opendaylight.controller.containermanager.ContainerConfig;
 import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkAware;
 import org.opendaylight.controller.networkconfig.neutron.NeutronNetwork;
 import org.slf4j.Logger;
@@ -105,10 +104,6 @@ public class NetworkHandler extends BaseHandler
                     result);
             return;
         }
-        String networkID = convertNeutronIDToKey(network.getID());
-
-        ContainerConfig config = new ContainerConfig();
-        config.setContainer(networkID);
-        containerManager.removeContainer(config);
+        TenantNetworkManager.getManager().networkDeleted(network.getID());
     }
 }
index 3899616fe882a8fb1f0107b7fc924e3d1cf1a13f..d92391357c9972a944ba0db2d8dbb0ebabfd9d11 100644 (file)
@@ -128,25 +128,6 @@ public class PortHandler extends BaseHandler
         String tenantID = convertNeutronIDToKey(port.getTenantID());
         String networkID = convertNeutronIDToKey(port.getNetworkUUID());
         String portID = convertNeutronIDToKey(port.getID());
-/*
- * Delete the Corresponding OF NodeConnector from the Container
- *
-        ContainerConfig config = new ContainerConfig();
-        config.setContainer(networkID);
-        List<String> ncList = new ArrayList<String>();
-        ncList.add("OVS|"+ portID +"@OVS|"+networkID);
-        config.addNodeConnectors(ncList);
-        Status status = containerManager.removeContainerEntry(networkID, ncList);
-        if (!status.isSuccess()) {
-            logger.error(" PORT delete failed for tenant-id - {}, " +
-                    " bridge-id - {}, port-id - {}, result - {} ",
-                    tenantID, networkID, portID, status);
-        } else {
-            logger.error(" PORT delete successful for tenant-id - {}, " +
-                    " bridge-id - {}, port-id - {}, result - {} ",
-                    tenantID, networkID, portID, status);
-        }
-*/
         logger.debug(" PORT delete successful for tenant-id - {}, " +
                      " network-id - {}, port-id - {}", tenantID, networkID, portID);
 
index 9107ee4bff12156c6560a606c749ceb511ef9123..8a188f71ca4f9cbae2c2586a55f0033b59fe8a6f 100644 (file)
@@ -41,10 +41,15 @@ public class TenantNetworkManager {
     private static TenantNetworkManager tenantHelper = new TenantNetworkManager();
     private Queue<Integer> internalVlans = new LinkedList<Integer>();
     private Map<String, Integer> tenantVlanMap = new HashMap<String, Integer>();
+    private boolean enableContainer = false;
     private TenantNetworkManager() {
         for (int i = 1; i < MAX_VLAN ; i++) {
             internalVlans.add(i);
         }
+        String isTenantContainer = System.getProperty("TenantIsContainer");
+        if (isTenantContainer != null && isTenantContainer.equalsIgnoreCase("true")) {
+            enableContainer =  true;
+        }
     }
 
     public static TenantNetworkManager getManager() {
@@ -70,13 +75,14 @@ public class TenantNetworkManager {
     }
 
     public int networkCreated (String networkId) {
-        IContainerManager containerManager = (IContainerManager)ServiceHelper.getGlobalInstance(IContainerManager.class, this);
-        if (containerManager == null) {
-            logger.error("ContainerManager is null. Failed to create Container for {}", networkId);
-            return 0;
-        }
         int internalVlan = this.assignInternalVlan(networkId);
-        if (internalVlan != 0) {
+        if (enableContainer && internalVlan != 0) {
+            IContainerManager containerManager = (IContainerManager)ServiceHelper.getGlobalInstance(IContainerManager.class, this);
+            if (containerManager == null) {
+                logger.error("ContainerManager is null. Failed to create Container for {}", networkId);
+                return 0;
+            }
+
             ContainerConfig config = new ContainerConfig();
             config.setContainer(BaseHandler.convertNeutronIDToKey(networkId));
             Status status = containerManager.addContainer(config);
@@ -203,7 +209,7 @@ public class TenantNetworkManager {
         tags.add(BigInteger.valueOf(vlan));
         port.setTag(tags);
         ovsdbTable.updateRow(node, Port.NAME.getName(), null, portUUID, port);
-        this.addPortToTenantNetworkContainer(node, portUUID, network);
+        if (enableContainer) this.addPortToTenantNetworkContainer(node, portUUID, network);
     }
 
     private void addPortToTenantNetworkContainer(Node node, String portUUID, NeutronNetwork network) {
@@ -289,4 +295,19 @@ public class TenantNetworkManager {
         return null;
     }
 
+    public void networkDeleted(String id) {
+        if (!enableContainer) return;
+
+        IContainerManager containerManager = (IContainerManager)ServiceHelper.getGlobalInstance(IContainerManager.class, this);
+        if (containerManager == null) {
+            logger.error("ContainerManager is not accessible");
+            return;
+        }
+
+        String networkID = BaseHandler.convertNeutronIDToKey(id);
+        ContainerConfig config = new ContainerConfig();
+        config.setContainer(networkID);
+        containerManager.removeContainer(config);
+    }
+
 }