private ObjectNode getSffDataPlaneLocatorObjectNode(SffDataPlaneLocator sffDataPlaneLocator) { if (sffDataPlaneLocator == null) { return null; } ObjectNode sffDataPlaneLocatorNode = mapper.createObjectNode(); sffDataPlaneLocatorNode.put(_NAME, sffDataPlaneLocator.getName().getValue()); sffDataPlaneLocatorNode.put(_DATA_PLANE_LOCATOR, ExporterUtil.getDataPlaneLocatorObjectNode(sffDataPlaneLocator.getDataPlaneLocator())); sffDataPlaneLocatorNode.put(SERVICE_FUNCTION_FORWARDER_PREFIX + _OVS_BRIDGE, this.getSffDataPlaneLocatorOvsBridgeObjectNode(sffDataPlaneLocator)); return sffDataPlaneLocatorNode; }
/** * This method searches for a data plane locator of a given name within a SFF * <p> * * @param sffName SFF name * @param sffLocatorName SFF data plane locator name * @return SffDataPlaneLocator object or null if not found */ public static SffDataPlaneLocator readServiceFunctionForwarderDataPlaneLocator(SffName sffName, SffDataPlaneLocatorName sffLocatorName) { ServiceFunctionForwarder serviceFunctionForwarder = readServiceFunctionForwarder(sffName); if (serviceFunctionForwarder != null) { List<SffDataPlaneLocator> sffDataPlaneLocatorList = serviceFunctionForwarder.getSffDataPlaneLocator(); for (SffDataPlaneLocator sffDataPlaneLocator : sffDataPlaneLocatorList) { if (sffDataPlaneLocator.getName().equals(sffLocatorName)) { return sffDataPlaneLocator; } } } else { LOG.error("{}: Failed to read SFF: {}", Thread.currentThread().getStackTrace()[1], sffName); } return null; }
private static void createHopBuilderInternal(int serviceIndex, RenderedServicePathHopBuilder renderedServicePathHopBuilder, short posIndex, ServiceFunction serviceFunction) { SffName serviceFunctionForwarderName = serviceFunction.getSfDataPlaneLocator().get(0).getServiceFunctionForwarder(); ServiceFunctionForwarder serviceFunctionForwarder = SfcProviderServiceForwarderAPI.readServiceFunctionForwarder(serviceFunctionForwarderName); if (serviceFunctionForwarder != null && serviceFunctionForwarder.getSffDataPlaneLocator() != null && serviceFunctionForwarder.getSffDataPlaneLocator().get(0) != null) { renderedServicePathHopBuilder .setServiceFunctionForwarderLocator(serviceFunctionForwarder.getSffDataPlaneLocator().get(0).getName()); } renderedServicePathHopBuilder.setHopNumber(posIndex) .setServiceIndex((short) serviceIndex) .setServiceFunctionForwarder(serviceFunctionForwarderName); }
/** * Builds a list of OvsdbTerminationPointAugmentation from a list of SffDataPlanLocators. * In other words, it transforms ServiceForwarder DataPlane locators to OVS TerminationPoints. * <p> * Built list of augmentations is intended to be written into Configuration Ovsdb DataStore * (network-topology/topology/ovsdb:1). * <p> * * @param sffDataPlaneLocatorList List<SffDataPlaneLocator> * @return List<OvsdbTerminationPointAugmentation> */ public static List<OvsdbTerminationPointAugmentation> buildTerminationPointAugmentationList( List<SffDataPlaneLocator> sffDataPlaneLocatorList) { Preconditions.checkNotNull(sffDataPlaneLocatorList, "Cannot build TerminationPointAugmentation, SffDataPlaneLocatorList is null."); List<OvsdbTerminationPointAugmentation> ovsdbTerminationPointList = new ArrayList<>(); for (SffDataPlaneLocator sffDataPlaneLocator : sffDataPlaneLocatorList) { OvsdbTerminationPointAugmentationBuilder ovsdbTerminationPointBuilder = new OvsdbTerminationPointAugmentationBuilder(); ovsdbTerminationPointBuilder.setName(sffDataPlaneLocator.getName().getValue()); ovsdbTerminationPointBuilder .setInterfaceType(getDataPlaneLocatorInterfaceType(sffDataPlaneLocator.getDataPlaneLocator())); List<Options> optionsList = getSffDataPlaneLocatorOptions(sffDataPlaneLocator); if (!optionsList.isEmpty()) { ovsdbTerminationPointBuilder.setOptions(optionsList); } ovsdbTerminationPointList.add(ovsdbTerminationPointBuilder.build()); } return ovsdbTerminationPointList; }
LOG.debug("Deleted SffDataPlaneLocator: {}", sffDataPlaneLocator.getName()); ServiceFunctionForwarderKey sffKey = (ServiceFunctionForwarderKey) keyedInstanceIdentifier.getKey(); String sffNameAsString = sffKey.getName().getValue(); String sffDataPlaneLocatorNameAsString = sffDataPlaneLocator.getName().getValue();
if (locator.getName().equals(locatorName)) { DataPlaneLocator dpLocator = locator.getDataPlaneLocator(); LOG.debug("Found for SFF {} the locator {}", sffName, dpLocator);
sffSfDplBuilder.setSffDplName(sffBuilder.getSffDataPlaneLocator().get(0).getName()); sfdBuilder.setSffSfDataPlaneLocator(sffSfDplBuilder.build());
if (locator.getName().equals(locatorName)) { DataPlaneLocator dpLocator = locator.getDataPlaneLocator(); LOG.debug("Found for SFF {} the locator {}", sffName, dpLocator);
.readServiceFunctionForwarder(sfdpl.getServiceFunctionForwarder()).getSffDataPlaneLocator(); for (SffDataPlaneLocator sffdpl : listOfSffdpl) { SffDataPlaneLocatorName sffdplName = sffdpl.getName(); SffDataPlaneLocator1 sffdpl1 = sffdpl.getAugmentation(SffDataPlaneLocator1.class); OfsPort ofsPort = sffdpl1.getOfsPort();