private Lisp getLispLocationFromSff(List<SffDataPlaneLocator> locations) { for (SffDataPlaneLocator location : locations) { DataPlaneLocator dpl = location.getDataPlaneLocator(); LocatorType lt = dpl.getLocatorType(); if (lt instanceof Lisp) { return (Lisp) lt; } } return null; }
/** * This gets VxlanDataLocator * * @param sff - Service Function Forwarder * @return Ip */ public static Ip getSffVxlanDataLocator(ServiceFunctionForwarder sff) { List<SffDataPlaneLocator> dplList = sff.getSffDataPlaneLocator(); for (SffDataPlaneLocator dpl: dplList) { if (dpl.getDataPlaneLocator() != null && dpl.getDataPlaneLocator().getTransport() == VxlanGpe.class) { return (Ip) dpl.getDataPlaneLocator().getLocatorType(); } } return null; }
private ObjectNode getSffDataPlaneLocatorOvsBridgeObjectNode(SffDataPlaneLocator sffDataPlaneLocator) { if (sffDataPlaneLocator == null || sffDataPlaneLocator.getAugmentation(SffOvsLocatorBridgeAugmentation.class) == null) { return null; } SffOvsLocatorBridgeAugmentation sffDataPlaneLocator1 = sffDataPlaneLocator.getAugmentation(SffOvsLocatorBridgeAugmentation.class); if (sffDataPlaneLocator1 != null) { return this.getOvsBridgeObjectNode(sffDataPlaneLocator1.getOvsBridge()); } return null; }
SffDataPlaneLocatorBuilder sffDplBuilder = new SffDataPlaneLocatorBuilder(); DataPlaneLocatorBuilder dplBuilder = new DataPlaneLocatorBuilder(); dplBuilder.setTransport(VxlanGpe.class); sffLocator.setPort(ovsdbNodeAug.getConnectionInfo().getRemotePort()); dplBuilder.setLocatorType(sffLocator.build()); sffDplBuilder.setDataPlaneLocator(dplBuilder.build()); sffDplBuilder.addAugmentation(SffOvsLocatorOptionsAugmentation.class, buildOvsOptions().build()); sffDplBuilder.setName(new SffDataPlaneLocatorName(sffBuilder.getName().getValue() + SFF_DPL_SUFFIX)); sffDplBuilder.setKey(new SffDataPlaneLocatorKey(sffDplBuilder.getName())); sffDataPlaneLocator.add(sffDplBuilder.build());
ApplicationData applicationData = (ApplicationData) address; Ip locatorType = SfcLispUtil.createLocator(applicationData); DataPlaneLocator dpl = new DataPlaneLocatorBuilder().setLocatorType(locatorType).build(); SffDataPlaneLocatorName name = new SffDataPlaneLocatorName(lispLocation.getEid().toString()); SffDataPlaneLocatorKey key = new SffDataPlaneLocatorKey(name); SffDataPlaneLocator loc = new SffDataPlaneLocatorBuilder().setDataPlaneLocator(dpl).setKey(key).setName(name).build(); ServiceFunctionForwarderBuilder fb = new ServiceFunctionForwarderBuilder(serviceFunctionForwarder); fb.getSffDataPlaneLocator().add(loc);
if (locator.getName().equals(locatorName)) { DataPlaneLocator dpLocator = locator.getDataPlaneLocator(); LOG.debug("Found for SFF {} the locator {}", sffName, dpLocator); if (dpLocator.getLocatorType() instanceof Ip) { Ip sffLocator = (Ip) dpLocator.getLocatorType();
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; }
.readServiceFunctionForwarder(sfdpl.getServiceFunctionForwarder()).getSffDataPlaneLocator(); for (SffDataPlaneLocator sffdpl : listOfSffdpl) { SffDataPlaneLocatorName sffdplName = sffdpl.getName(); SffDataPlaneLocator1 sffdpl1 = sffdpl.getAugmentation(SffDataPlaneLocator1.class); OfsPort ofsPort = sffdpl1.getOfsPort(); if (sffdplName.getValue().toUpperCase().equals("INGRESS"))
/** * Returns an Service Function Forwarder object which can be stored * in DataStore. The returned object is built on basis of OVS Bridge. * The ovsdbBridgeAugmentation argument must be not null otherwise * NullPointerException will be raised. * * @param nodeName * @param nnode Netconf node Object * @return ServiceFunctionForwarder Object */ public static ServiceFunctionForwarder buildServiceForwarderFromNetconf(String nodeName, NetconfNode nnode) { Preconditions.checkNotNull(nnode); SffName sffName = new SffName(nodeName); SffDataPlaneLocatorBuilder sffDataPlaneLocatorBuilder = new SffDataPlaneLocatorBuilder(); // TODO: should be replaced once OVS interface name will be available List<SffDataPlaneLocator> sffDataPlaneLocatorList = new ArrayList<>(); sffDataPlaneLocatorList.add(sffDataPlaneLocatorBuilder.build()); ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder = new ServiceFunctionForwarderBuilder(); serviceFunctionForwarderBuilder.setName(sffName); IpAddress ipAddress = new IpAddress(nnode.getHost().getIpAddress().getValue()); serviceFunctionForwarderBuilder.setIpMgmtAddress(ipAddress); return serviceFunctionForwarderBuilder.build(); }
public boolean containsLispAddress(ServiceFunctionForwarder serviceFunctionForwarder) { List<SffDataPlaneLocator> locations = serviceFunctionForwarder.getSffDataPlaneLocator(); for (SffDataPlaneLocator location : locations) { if (location.getDataPlaneLocator().getLocatorType() instanceof Lisp) { return true; } } return false; }
/** * 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; }
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); }
sffDataPlaneLocator.getAugmentation(SffOvsLocatorOptionsAugmentation.class); if (sffDataPlaneLocatorOvsOptions != null) {
public Ip getSffIp(ServiceFunctionForwarder serviceFunctionForwarder) { if (serviceFunctionForwarder != null && serviceFunctionForwarder.getSffDataPlaneLocator() != null && serviceFunctionForwarder.getSffDataPlaneLocator().get(0) != null && serviceFunctionForwarder.getSffDataPlaneLocator().get(0).getDataPlaneLocator() != null) { return (Ip)serviceFunctionForwarder.getSffDataPlaneLocator().get(0) .getDataPlaneLocator().getLocatorType(); } else { LOG.info("getSffIp: ServiceFunctionForwarder is null"); return null; } }
LOG.debug("Deleted SffDataPlaneLocator: {}", sffDataPlaneLocator.getName()); ServiceFunctionForwarderKey sffKey = (ServiceFunctionForwarderKey) keyedInstanceIdentifier.getKey(); String sffNameAsString = sffKey.getName().getValue(); String sffDataPlaneLocatorNameAsString = sffDataPlaneLocator.getName().getValue();
private ServiceFunctionForwarder findSffByIp(ServiceFunctionForwarders sffs, final IpAddress remoteIp) { List<ServiceFunctionForwarder> serviceFunctionForwarders = sffs.getServiceFunctionForwarder(); if (serviceFunctionForwarders != null && !serviceFunctionForwarders.isEmpty()) for (ServiceFunctionForwarder sff : serviceFunctionForwarders) { List<SffDataPlaneLocator> sffDataPlaneLocator = sff.getSffDataPlaneLocator(); for (SffDataPlaneLocator sffLocator : sffDataPlaneLocator) { LocatorType locatorType = sffLocator.getDataPlaneLocator().getLocatorType(); if (locatorType instanceof Ip) { Ip ip = (Ip) locatorType; if (ip.getIp().equals(remoteIp)) { return sff; } } } } return null; } }
sffSfDplBuilder.setSffDplName(sffBuilder.getSffDataPlaneLocator().get(0).getName()); sfdBuilder.setSffSfDataPlaneLocator(sffSfDplBuilder.build());
if ((sffDpl.getDataPlaneLocator() != null) && sffDpl.getDataPlaneLocator().getLocatorType() != null) { Class<? extends DataContainer> locatorType = sffDpl.getDataPlaneLocator().getLocatorType().getImplementedInterface(); if (locatorType.isAssignableFrom(Ip.class)) { Ip ipPortLocator = (Ip) sffDpl.getDataPlaneLocator().getLocatorType(); IpAddress ipAddress = new IpAddress(ipPortLocator.getIp().getValue()); ip = ipAddress;
.readServiceFunctionForwarderDataPlaneLocator(sffName, sffLocatorName); if ((sffDataPlaneLocator != null) && (sffDataPlaneLocator.getDataPlaneLocator() != null) && (sffDataPlaneLocator.getDataPlaneLocator().getLocatorType() != null) && (sffDataPlaneLocator.getDataPlaneLocator().getLocatorType().getImplementedInterface() != null) && (sffDataPlaneLocator.getDataPlaneLocator() .getLocatorType() .getImplementedInterface() .getSimpleName() != null)) { String type = sffDataPlaneLocator.getDataPlaneLocator() .getLocatorType() .getImplementedInterface() .getSimpleName() break; case IP: Ip ipLocator = (Ip) sffDataPlaneLocator.getDataPlaneLocator().getLocatorType(); if (ipLocator.getIp() != null) { renderedServicePathFirstHopBuilder.setIp(ipLocator.getIp());