import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.data.plane.locator.locator.type.IpBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeVxlan;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
*/
public class SfcOvsToSffMappingAPI {
+ private static final String OPENFLOW_PREFIX = "openflow:";
private static final Logger LOG = LoggerFactory.getLogger(SfcOvsToSffMappingAPI.class);
/**
OvsBridgeBuilder ovsBridgeBuilder = new OvsBridgeBuilder();
ovsBridgeBuilder.setBridgeName(ovsdbBridgeAugmentation.getBridgeName().getValue());
ovsBridgeBuilder.setUuid(ovsdbBridgeAugmentation.getBridgeUuid());
+ ovsBridgeBuilder.setOpenflowNodeId(getOvsBridgeOpenflowNodeId(ovsdbBridgeAugmentation.getDatapathId()));
ovsServiceForwarder2Augmentation.setOvsBridge(ovsBridgeBuilder.build());
serviceFunctionForwarderBuilder.addAugmentation(ServiceFunctionForwarder2.class, ovsServiceForwarder2Augmentation.build());
OvsBridgeBuilder ovsBridgeBuilder = new OvsBridgeBuilder();
ovsBridgeBuilder.setBridgeName(ovsdbBridge.getBridgeName().getValue());
ovsBridgeBuilder.setUuid(ovsdbBridge.getBridgeUuid());
+ ovsBridgeBuilder.setOpenflowNodeId(getOvsBridgeOpenflowNodeId(ovsdbBridge.getDatapathId()));
//fill SffDataPlaneLocatorList with DP locators
for (TerminationPoint terminationPoint : terminationPointList) {
//set ip:port locator
IpBuilder ipBuilder = new IpBuilder();
- List<Options> options = terminationPoint.getOptions();
- for (Options option : options) {
+ for (Options option : terminationPoint.getOptions()) {
switch (option.getOption()) {
case SfcOvsUtil.OVSDB_OPTION_LOCAL_IP:
IpAddress localIp = SfcOvsUtil.convertStringToIpAddress(option.getValue());
}
return null;
}
+
+ /**
+ * Returns OpenflowNodeId of OvsBridge specified by DatapathId.
+ * OpenflowNodeId = openflow:hexTodec(DatapathId)
+ * <p/>
+ * Parameter DatapathId
+ * must be not null otherwise NullPointerException will be raised.
+ *
+ * @param datapathId DatapathId
+ * @return String OpenflowNodeId
+ */
+ private static String getOvsBridgeOpenflowNodeId(DatapathId datapathId) {
+ Preconditions.checkNotNull(datapathId, "DatapathId is null, cannot get Bridge OpenflowNode Id");
+
+ Long datapathIdDec = Long.parseLong(datapathId.getValue().replaceAll(":", ""), 16);
+ return OPENFLOW_PREFIX + datapathIdDec.toString();
+ }
}
"SFC_FORWARDER_IP_MGMT_ADDRESS": "The IP and port used to configure this SFF",\r
"SFC_FORWARDER_SHORT_IP_MGMT_ADDRESS": "IP management address",\r
"SFC_FORWARDER_CREATE_IP_MGMT_ADDRESS": "Example 10.0.0.1:5555",\r
+ "SFC_FORWARDER_BRIDGE_OPENFLOW_NODE_ID": "Openflow Node Id",\r
"SFC_FORWARDER_OVS_BRIDGE": "OVS Bridge",\r
"SFC_FORWARDER_BRIDGE_NAME": "Open vSwitch bridge name",\r
"SFC_FORWARDER_SHORT_BRIDGE_NAME": "Name",\r