import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
import org.opendaylight.neutron.spi.NeutronNetwork;
import org.opendaylight.neutron.spi.NeutronSecurityGroup;
-import org.opendaylight.controller.sal.utils.HexEncode;
import org.opendaylight.ovsdb.lib.notation.Row;
import org.opendaylight.ovsdb.lib.notation.UUID;
import org.opendaylight.ovsdb.openstack.netvirt.NetworkHandler;
import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
import org.opendaylight.ovsdb.schema.openvswitch.Interface;
import org.opendaylight.ovsdb.schema.openvswitch.Port;
+import org.opendaylight.ovsdb.utils.mdsal.node.StringConvertor;
import org.opendaylight.ovsdb.utils.mdsal.openflow.InstructionUtils;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCase;
private static final short TABLE_0_DEFAULT_INGRESS = 0;
private static final short TABLE_1_ISOLATE_TENANT = 10;
private static final short TABLE_2_LOCAL_FORWARD = 20;
- private static final String OPENFLOW = "openflow:";
private static Long groupId = 1L;
private volatile ConfigurationService configurationService;
Bridge bridge = ovsdbConfigurationService.getTypedRow(node, Bridge.class, bridgeRow);
Set<String> dpids = bridge.getDatapathIdColumn().getData();
if (dpids == null || dpids.size() == 0) return 0L;
- return HexEncode.stringToLong((String) dpids.toArray()[0]);
+ return StringConvertor.dpidStringToLong((String) dpids.toArray()[0]);
} catch (Exception e) {
logger.error("Error finding Bridge's OF DPID", e);
return 0L;
String bridgeName = configurationService.getExternalBridgeName();
String brUuid = this.getInternalBridgeUUID(node, bridgeName);
if (brUuid == null) {
- logger.error("Unable to spot Bridge Identifier for {} in {}", bridgeName, node);
+ // Note: it is okay for certain nodes to not have br-ex configured; not an error
+ logger.info("Unable to spot Bridge Identifier for {} in {}", bridgeName, node);
return 0L;
}
return;
}
- Set<Long> of_ports = intf.getOpenFlowPortColumn().getData();
+ Set<Integer> of_ports = intf.getOpenFlowPortColumn().getData();
if (of_ports == null || of_ports.size() <= 0) {
logger.debug("Could NOT Identify OF value for port {} on {}", intf.getName(), node);
return;
return;
}
- Set<Long> of_ports = intf.getOpenFlowPortColumn().getData();
+ Set<Integer> of_ports = intf.getOpenFlowPortColumn().getData();
if (of_ports == null || of_ports.size() <= 0) {
logger.debug("Could NOT Identify OF value for port {} on {}", intf.getName(), node);
return;
return;
}
- Set<Long> of_ports = intf.getOpenFlowPortColumn().getData();
+ Set<Integer> of_ports = intf.getOpenFlowPortColumn().getData();
if (of_ports == null || of_ports.size() <= 0) {
logger.debug("Could NOT Identify OF value for port {} on {}", intf.getName(), node);
return;
return;
}
- Set<Long> of_ports = intf.getOpenFlowPortColumn().getData();
+ Set<Integer> of_ports = intf.getOpenFlowPortColumn().getData();
if (of_ports == null || of_ports.size() <= 0) {
logger.error("Could NOT Identify OF value for port {} on {}", intf.getName(), node);
return;
return;
}
- Set<Long> of_ports = intf.getOpenFlowPortColumn().getData();
+ Set<Integer> of_ports = intf.getOpenFlowPortColumn().getData();
int timeout = 6;
while ((of_ports == null) && (timeout > 0)) {
of_ports = intf.getOpenFlowPortColumn().getData();
return;
}
- Set<Long> of_ports = intf.getOpenFlowPortColumn().getData();
+ Set<Integer> of_ports = intf.getOpenFlowPortColumn().getData();
if (of_ports == null || of_ports.size() <= 0) {
logger.error("Could NOT Identify OF value for port {} on {}", intf.getName(), node);
return;
private void writeNormalRule(Long dpidLong) {
- String nodeName = OPENFLOW + dpidLong;
+ String nodeName = Constants.OPENFLOW_NODE_PREFIX + dpidLong;
MatchBuilder matchBuilder = new MatchBuilder();
NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
InstructionBuilder ib,
Long dpidLong, Long port ,
List<Instruction> instructions) {
- NodeConnectorId ncid = new NodeConnectorId(OPENFLOW + dpidLong + ":" + port);
+ NodeConnectorId ncid = new NodeConnectorId(Constants.OPENFLOW_NODE_PREFIX + dpidLong + ":" + port);
logger.debug("createOutputGroupInstructions() Node Connector ID is - Type=openflow: DPID={} port={} existingInstructions={}", dpidLong, port, instructions);
List<Action> actionList = Lists.newArrayList();
protected boolean removeOutputPortFromGroup(NodeBuilder nodeBuilder, InstructionBuilder ib,
Long dpidLong, Long port , List<Instruction> instructions) {
- NodeConnectorId ncid = new NodeConnectorId(OPENFLOW + dpidLong + ":" + port);
+ NodeConnectorId ncid = new NodeConnectorId(Constants.OPENFLOW_NODE_PREFIX + dpidLong + ":" + port);
logger.debug("removeOutputPortFromGroup() Node Connector ID is - Type=openflow: DPID={} port={} existingInstructions={}", dpidLong, port, instructions);
List<Action> actionList = Lists.newArrayList();
}
@Override
- public void initializeOFFlowRules(org.opendaylight.controller.sal.core.Node openflowNode) {
+ public void initializeOFFlowRules(Node openflowNode) {
Preconditions.checkNotNull(connectionService);
List<Node> ovsNodes = connectionService.getNodes();
if (ovsNodes == null) return;
for (Node ovsNode : ovsNodes) {
Long brIntDpid = this.getIntegrationBridgeOFDPID(ovsNode);
Long brExDpid = this.getExternalBridgeDpid(ovsNode);
- logger.debug("Compare openflowNode to OVS node {} vs {} and {}", openflowNode.getID(), brIntDpid, brExDpid);
- String openflowID = openflowNode.getID().toString();
+ logger.debug("Compare openflowNode to OVS node {} vs {} and {}",
+ openflowNode.getId().getValue(), brIntDpid, brExDpid);
+ String openflowID = openflowNode.getId().getValue();
if (openflowID.contains(brExDpid.toString())) {
this.initializeFlowRules(ovsNode, configurationService.getExternalBridgeName());
this.triggerInterfaceUpdates(ovsNode);
}
}
+ @Override
+ public void notifyFlowCapableNodeEvent(Long dpid, org.opendaylight.ovsdb.openstack.netvirt.api.Action action) {
+ mdsalConsumer.notifyFlowCapableNodeCreateEvent(Constants.OPENFLOW_NODE_PREFIX + dpid, action);
+ }
+
public static NodeBuilder createNodeBuilder(String nodeId) {
NodeBuilder builder = new NodeBuilder();
builder.setId(new NodeId(nodeId));