* @brief Class that instantiated per-container implements the
* interface IContainer
*
- *
*/
package org.opendaylight.controller.containermanager.internal;
+import java.util.ArrayList;
import java.util.Dictionary;
-import org.apache.felix.dm.Component;
-import org.opendaylight.controller.sal.core.NodeConnector;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
-import org.opendaylight.controller.sal.core.Node;
+import java.util.concurrent.ConcurrentMap;
+
+import org.apache.felix.dm.Component;
+import org.opendaylight.controller.containermanager.ContainerData;
import org.opendaylight.controller.sal.core.ContainerFlow;
-import java.util.List;
import org.opendaylight.controller.sal.core.IContainer;
+import org.opendaylight.controller.sal.core.Node;
+import org.opendaylight.controller.sal.core.NodeConnector;
public class ContainerImpl implements IContainer {
private String containerName = null;
+ private IContainerInternal iContainerInternal = null;
+
+ public void setIContainerInternal(IContainerInternal s) {
+ this.iContainerInternal = s;
+ }
+
+ public void unsetIContainerInternal(IContainerInternal s) {
+ if (this.iContainerInternal == s) {
+ this.iContainerInternal = null;
+ }
+ }
/**
* Function called by the dependency manager when all the required
@Override
public List<ContainerFlow> getContainerFlows() {
- return null;
+ List<ContainerFlow> list = new ArrayList<ContainerFlow>();
+
+ ContainerData d = this.iContainerInternal.getContainerData(this.containerName);
+ if (d != null) {
+ list.addAll(d.getContainerFlowSpecs());
+ }
+ return list;
}
@Override
public short getTag(Node n) {
+ ContainerData d = this.iContainerInternal.getContainerData(this.containerName);
+ if (d != null) {
+ return d.getStaticVlan();
+ }
+ // Return 0 because in containerData that means an unassigned tag
return (short) 0;
}
@Override
public Set<NodeConnector> getNodeConnectors() {
- return null;
+ Set<NodeConnector> set = new HashSet<NodeConnector>();
+
+ ContainerData d = this.iContainerInternal.getContainerData(this.containerName);
+ if (d != null) {
+ ConcurrentMap<Node, Set<NodeConnector>> m = d.getSwPorts();
+ if (m != null) {
+ for (Map.Entry<Node, Set<NodeConnector>> entry : m.entrySet()) {
+ set.addAll(entry.getValue());
+ }
+ }
+ }
+ return set;
}
@Override
public Set<Node> getNodes() {
- return null;
+ Set<Node> set = new HashSet<Node>();
+
+ ContainerData d = this.iContainerInternal.getContainerData(this.containerName);
+ if (d != null) {
+ ConcurrentMap<Node, Set<NodeConnector>> m = d.getSwPorts();
+ if (m != null) {
+ set.addAll(m.keySet());
+ }
+ }
+ return set;
+ }
+
+ @Override
+ public String getContainerAdminRole() {
+ return iContainerInternal.getContainerData(containerName).getContainerAdminRole();
+ }
+
+ @Override
+ public String getContainerOperatorRole() {
+ return iContainerInternal.getContainerData(containerName).getContainerOperatorRole();
}
}