X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fprotocol_plugins%2Fopenflow%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fprotocol_plugin%2Fopenflow%2Finternal%2FReadServiceFilter.java;h=b21a105f157809a94d7e4ff3530318c1921e9f4d;hb=34fc95a8574f5b8344e5c3b1000c9459517238c2;hp=b877eb0ee793626d2990e24855052653466aa4ba;hpb=0d1d688ac55acc55c3909c52c2cdb940cfb3764f;p=controller.git diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadServiceFilter.java b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadServiceFilter.java index b877eb0ee7..b21a105f15 100644 --- a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadServiceFilter.java +++ b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadServiceFilter.java @@ -27,6 +27,7 @@ import org.opendaylight.controller.sal.action.Action; import org.opendaylight.controller.sal.action.ActionType; import org.opendaylight.controller.sal.action.Output; import org.opendaylight.controller.sal.core.ContainerFlow; +import org.opendaylight.controller.sal.core.IContainerAware; import org.opendaylight.controller.sal.core.IContainerListener; import org.opendaylight.controller.sal.core.Node; import org.opendaylight.controller.sal.core.NodeConnector; @@ -55,7 +56,7 @@ import org.slf4j.LoggerFactory; * Read Service shim layer which is in charge of filtering the flow statistics * based on container. It is a Global instance. */ -public class ReadServiceFilter implements IReadServiceFilter, IContainerListener, IOFStatisticsListener { +public class ReadServiceFilter implements IReadServiceFilter, IContainerListener, IOFStatisticsListener, IContainerAware { private static final Logger logger = LoggerFactory .getLogger(ReadServiceFilter.class); private IController controller = null; @@ -188,7 +189,7 @@ public class ReadServiceFilter implements IReadServiceFilter, IContainerListener List flowOnNodeList = new FlowStatisticsConverter(ofList).getFlowOnNodeList(node); List filteredList = filterFlowListPerContainer(container, node, flowOnNodeList); - return (filteredList == null || filteredList.isEmpty()) ? null : filteredList.get(0); + return (filteredList.isEmpty()) ? null : filteredList.get(0); } @Override @@ -202,10 +203,8 @@ public class ReadServiceFilter implements IReadServiceFilter, IContainerListener // Convert and filter the statistics per container List flowOnNodeList = new FlowStatisticsConverter(ofList).getFlowOnNodeList(node); - List filteredList = filterFlowListPerContainer(container, node, flowOnNodeList); - - return (filteredList == null) ? null : filteredList; + return filterFlowListPerContainer(container, node, flowOnNodeList); } @Override @@ -232,10 +231,10 @@ public class ReadServiceFilter implements IReadServiceFilter, IContainerListener * @param list * @return */ - public List filterFlowListPerContainer(String container, + private List filterFlowListPerContainer(String container, Node nodeId, List list) { if (list == null) { - return null; + return Collections.emptyList(); } // Create new filtered list of flows @@ -259,9 +258,9 @@ public class ReadServiceFilter implements IReadServiceFilter, IContainerListener * @param list * @return */ - public List filterPortListPerContainer(String container, long switchId, List list) { + private List filterPortListPerContainer(String container, long switchId, List list) { if (list == null) { - return null; + return Collections.emptyList(); } // Create new filtered list of flows @@ -280,10 +279,10 @@ public class ReadServiceFilter implements IReadServiceFilter, IContainerListener } - public List filterTableListPerContainer( + private List filterTableListPerContainer( String container, long switchId, List list) { if (list == null) { - return null; + return Collections.emptyList(); } // Create new filtered list of node tables @@ -632,4 +631,17 @@ public class ReadServiceFilter implements IReadServiceFilter, IContainerListener l.getValue().nodeTableStatisticsUpdated(node, tableStatsList); } } + + @Override + public void containerCreate(String containerName) { + // do nothing + } + + @Override + public void containerDestroy(String containerName) { + containerToNc.remove(containerName); + containerToNode.remove(containerName); + containerToNt.remove(containerName); + containerFlows.remove(containerName); + } }