package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.node;
import static com.google.common.base.Preconditions.checkNotNull;
+import static org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow.FlowUtils.getOfPortNum;
import java.util.Collection;
import java.util.Collections;
import javax.annotation.Nullable;
+import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.OfContext;
import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.node.SwitchListener;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.Name;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayConfig.EncapsulationFormat;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayNodeConfig;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.ExternalInterfaces;
state.updateStatus();
}
+ public synchronized InstanceIdentifier<NodeConnector> getNodeConnectorIidForPortName(Name portName) {
+ for (SwitchState sw : switches.values()) {
+ if (sw.fcncByNcIid == null) {
+ continue;
+ }
+ for (Entry<InstanceIdentifier<NodeConnector>, FlowCapableNodeConnector> fcncByNcIidEntry : sw.fcncByNcIid
+ .entrySet()) {
+ FlowCapableNodeConnector fcnc = fcncByNcIidEntry.getValue();
+ if (portName.getValue().equals(fcnc.getName())) {
+ return fcncByNcIidEntry.getKey();
+ }
+ }
+ }
+ return null;
+ }
+
/**
* Get the collection of switches that are in the "ready" state. Note
* that the collection is immutable.
return ImmutableSet.copyOf(state.externalPorts);
}
+ public Set<Long> getExternalPortNumbers(NodeId nodeId) {
+ Set<Long> extPortNumbers = new HashSet<>();
+ for(NodeConnectorId nc : getExternalPorts(nodeId)) {
+ long portNum;
+ try {
+ portNum = getOfPortNum(nc);
+ } catch (NumberFormatException ex) {
+ LOG.warn("Could not parse port number {}", nc, ex);
+ return null;
+ }
+ extPortNumbers.add(portNum);
+ }
+ return extPortNumbers;
+ }
+
public synchronized Collection<NodeConnectorId> getTunnelPorts(NodeId nodeId) {
Collection<NodeConnectorId> ncIds = new HashSet<>();
SwitchState state = switches.get(nodeId);
/**
* Constructor used for tests
+ *
+ * @param node the node id
+ * @param tunnelPort the tunnel port
+ * @param externalPorts the set of expternal ports
+ * @param nodeConfig the ofoverlay node config
*/
public SwitchState(NodeId node, NodeConnectorId tunnelPort, Set<NodeConnectorId> externalPorts,
OfOverlayNodeConfig nodeConfig) {