From: Alessandro Boch Date: Mon, 30 Sep 2013 17:33:37 +0000 (-0700) Subject: Container Manager to expose inContainerMode() X-Git-Tag: jenkins-controller-bulk-release-prepare-only-2-1~695 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=95aaa263a3331dcb0b9268f9df9993b507ea40ad Container Manager to expose inContainerMode() - So that IContainerLocalListener can poll the information when starting in default container Change-Id: I3d8ceec9adef58915379eda3d3adc752175ea74c Signed-off-by: Alessandro Boch --- diff --git a/opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerManager.java b/opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerManager.java index 5daaf00ece..b2e2a7631b 100644 --- a/opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerManager.java +++ b/opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerManager.java @@ -187,4 +187,11 @@ public interface IContainerManager { * @return List of Container name strings. */ public List getContainerNames(); + + /** + * Returns whether the controller is running in container mode + * + * @return true if controller is in container mode, false otherwise + */ + public boolean inContainerMode(); } diff --git a/opendaylight/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java b/opendaylight/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java index d420bdd0a9..c261073235 100644 --- a/opendaylight/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java +++ b/opendaylight/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java @@ -232,7 +232,7 @@ public class ContainerManager extends Authorization implements IContaine roles = (ConcurrentMap) clusterServices.getCache("containermgr.roles"); - if (containerConfigs.size() > 0) { + if (inContainerMode()) { for (Map.Entry entry : containerConfigs.entrySet()) { // Notify global and local listeners about the mode change notifyContainerChangeInternal(entry.getValue(), UpdateType.ADDED, true); @@ -1402,10 +1402,6 @@ public class ContainerManager extends Authorization implements IContaine return; } String staticVlan = ci.nextArgument(); - if (staticVlan == null) { - ci.print("Static Vlan not specified"); - return; - } ContainerConfig containerConfig = new ContainerConfig(containerName, staticVlan, null, null); ci.println(this.addRemoveContainer(containerConfig, false)); } @@ -1667,4 +1663,9 @@ public class ContainerManager extends Authorization implements IContaine public boolean hasNonDefaultContainer() { return !containerConfigs.keySet().isEmpty(); } + + @Override + public boolean inContainerMode() { + return this.containerConfigs.size() > 0; + } } diff --git a/opendaylight/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java b/opendaylight/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java index 24ef0c08ef..f2219e53b8 100644 --- a/opendaylight/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java +++ b/opendaylight/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java @@ -43,7 +43,7 @@ public class ContainerManager implements IContainerManager { * This is configuration world: container names (also the map key) * are maintained as they were configured by user, same case */ - private Set iContainerAware = (Set) Collections + private Set iContainerAware = Collections .synchronizedSet(new HashSet()); private Set iContainerListener = Collections .synchronizedSet(new HashSet()); @@ -213,4 +213,10 @@ public class ContainerManager implements IContainerManager { return null; } + @Override + public boolean inContainerMode() { + // TODO Auto-generated method stub + return false; + } + } diff --git a/opendaylight/forwardingrulesmanager/implementation/pom.xml b/opendaylight/forwardingrulesmanager/implementation/pom.xml index 9009bc30bd..2e12cf4b3b 100644 --- a/opendaylight/forwardingrulesmanager/implementation/pom.xml +++ b/opendaylight/forwardingrulesmanager/implementation/pom.xml @@ -52,6 +52,7 @@ org.opendaylight.controller.clustering.services, org.opendaylight.controller.configuration, + org.opendaylight.controller.containermanager, org.opendaylight.controller.hosttracker, org.opendaylight.controller.hosttracker.hostAware, org.opendaylight.controller.switchmanager, @@ -67,7 +68,6 @@ javax.xml.bind.annotation, javax.xml.bind, org.apache.felix.dm, - org.apache.commons.lang3.builder, org.osgi.service.component, org.slf4j, org.eclipse.osgi.framework.console, @@ -154,5 +154,10 @@ connectionmanager 0.1.1-SNAPSHOT + + org.opendaylight.controller + containermanager + 0.5.1-SNAPSHOT + diff --git a/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/Activator.java b/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/Activator.java index 7b37b4187c..3ac16f467c 100644 --- a/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/Activator.java +++ b/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/Activator.java @@ -18,6 +18,7 @@ import org.opendaylight.controller.clustering.services.ICacheUpdateAware; import org.opendaylight.controller.clustering.services.IClusterContainerServices; import org.opendaylight.controller.configuration.IConfigurationContainerAware; import org.opendaylight.controller.connectionmanager.IConnectionManager; +import org.opendaylight.controller.containermanager.IContainerManager; import org.opendaylight.controller.forwardingrulesmanager.IForwardingRulesManager; import org.opendaylight.controller.forwardingrulesmanager.IForwardingRulesManagerAware; import org.opendaylight.controller.sal.core.ComponentActivatorAbstractBase; @@ -25,6 +26,7 @@ import org.opendaylight.controller.sal.core.IContainer; import org.opendaylight.controller.sal.core.IContainerLocalListener; import org.opendaylight.controller.sal.flowprogrammer.IFlowProgrammerListener; import org.opendaylight.controller.sal.flowprogrammer.IFlowProgrammerService; +import org.opendaylight.controller.sal.utils.GlobalConstants; import org.opendaylight.controller.switchmanager.IInventoryListener; import org.opendaylight.controller.switchmanager.ISwitchManager; import org.opendaylight.controller.switchmanager.ISwitchManagerAware; @@ -94,8 +96,11 @@ public class Activator extends ComponentActivatorAbstractBase { c.add(createContainerServiceDependency(containerName).setService(IContainer.class) .setCallbacks("setIContainer", "unsetIContainer").setRequired(true)); c.add(createServiceDependency().setService(IConnectionManager.class) - .setCallbacks("setIConnectionManager", "unsetIConnectionManager") - .setRequired(true)); + .setCallbacks("setIConnectionManager", "unsetIConnectionManager").setRequired(true)); + if (GlobalConstants.DEFAULT.toString().equals(containerName)) { + c.add(createServiceDependency().setService(IContainerManager.class) + .setCallbacks("setIContainerManager", "unsetIContainerManager").setRequired(true)); + } } } } diff --git a/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManager.java b/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManager.java index 7676f0e7c4..45973fe167 100644 --- a/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManager.java +++ b/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManager.java @@ -39,6 +39,7 @@ import org.opendaylight.controller.clustering.services.IClusterContainerServices import org.opendaylight.controller.clustering.services.IClusterServices; import org.opendaylight.controller.configuration.IConfigurationContainerAware; import org.opendaylight.controller.connectionmanager.IConnectionManager; +import org.opendaylight.controller.containermanager.IContainerManager; import org.opendaylight.controller.forwardingrulesmanager.FlowConfig; import org.opendaylight.controller.forwardingrulesmanager.FlowEntry; import org.opendaylight.controller.forwardingrulesmanager.FlowEntryInstall; @@ -117,6 +118,7 @@ public class ForwardingRulesManager implements private ConcurrentMap portGroupConfigs; private ConcurrentMap> portGroupData; private ConcurrentMap TSPolicies; + private IContainerManager containerManager; private boolean inContainerMode; // being used by global instance only protected boolean stopping; @@ -2636,6 +2638,14 @@ public class ForwardingRulesManager implements * */ void start() { + /* + * If running in default container, need to know if controller is in + * container mode + */ + if (GlobalConstants.DEFAULT.toString().equals(this.getContainerName())) { + inContainerMode = containerManager.inContainerMode(); + } + // Initialize graceful stop flag stopping = false; @@ -3210,6 +3220,16 @@ public class ForwardingRulesManager implements this.connectionManager = s; } + public void unsetIContainerManager(IContainerManager s) { + if (s == this.containerManager) { + this.containerManager = null; + } + } + + public void setIContainerManager(IContainerManager s) { + this.containerManager = s; + } + @Override public void entryCreated(Object key, String cacheName, boolean originLocal) { /*