/** * Creates a RSP and all the associated operational state based on the * given service function path * <p> * * @param createdServiceFunctionPath Service Function Path * @param createRenderedPathInput CreateRenderedPathInput object * @return RenderedServicePath Created RSP or null */ public static RenderedServicePath createRenderedServicePathAndState(ServiceFunctionPath createdServiceFunctionPath, CreateRenderedPathInput createRenderedPathInput) { return createRenderedServicePathAndState(createdServiceFunctionPath, createRenderedPathInput, defaultScheduler); }
private RenderedServicePath createSymmetricRsp(RenderedServicePath rsp) { if (rsp == null) { return null; } return SfcProviderRenderedPathAPI.createSymmetricRenderedServicePathAndState(rsp); }
private static void createSFHopBuilder(int serviceIndex, RenderedServicePathHopBuilder renderedServicePathHopBuilder, short posIndex, SfName serviceFunctionName, ServiceFunction serviceFunction) { createHopBuilderInternal(serviceIndex, renderedServicePathHopBuilder, posIndex, serviceFunction); renderedServicePathHopBuilder.setServiceFunctionName(serviceFunctionName); }
scheduler = getServiceFunctionScheduler(serviceFunctionSchedulerType); createRenderedPathInputBuilder.setSymmetric(serviceFunctionPath.isSymmetric()); renderedServicePath = SfcProviderRenderedPathAPI.createRenderedServicePathAndState(serviceFunctionPath, createRenderedPathInputBuilder.build(), scheduler); if (renderedServicePath == null) { SfcProviderRenderedPathAPI.createSymmetricRenderedServicePathAndState(renderedServicePath); if (revRenderedServicePath == null) { LOG.error("Failed to create symmetric RenderedServicePath for ServiceFunctionPath: {}", pathName); firstHop = SfcProviderRenderedPathAPI.readRenderedServicePathFirstHop(renderedServicePath.getName()); printTraceStop(LOG); return firstHop;
.createRenderedServicePathAndState(createdServiceFunctionPath, createRenderedPathInput); if (renderedServicePath != null) { retRspName = renderedServicePath.getName(); SfcProviderRenderedPathAPI.createSymmetricRenderedServicePathAndState(renderedServicePath); if (revRenderedServicePath == null) { LOG.error("Failed to create symmetric service path: {}"); } else { SfcProviderRenderedPathAPI.setSymmetricPathId(renderedServicePath, revRenderedServicePath.getPathId());
.setSymmetric(sfp.isSymmetric()) .build(); rsp = SfcProviderRenderedPathAPI.createRenderedServicePathAndState(sfp, rspInput); if (rsp == null) { LOG.warn("failed to add RSP"); getRspId(rspNameRev)); if (rspReverse == null) { rspReverse = SfcProviderRenderedPathAPI.createSymmetricRenderedServicePathAndState(rsp); if (rspReverse == null) { LOG.warn("failed to add reverse RSP");
.readRenderedServicePathFirstHop(rsp.getName()); LOG.info("handleRenderedServicePath: firstRspHop: {}", firstRspHop);
SfcProviderRenderedPathAPI.initDefaultServiceFunctionScheduler(); scheduler = defaultScheduler; if ((renderedServicePath = SfcProviderRenderedPathAPI.createRenderedServicePathEntry(createdServiceFunctionPath, createRenderedPathInput, scheduler)) != null) { rspSuccessful = true; } else { if (renderedServicePath != null) { SfcProviderRenderedPathAPI.deleteRenderedServicePath(renderedServicePath.getName()); SfcProviderServiceForwarderAPI.deletePathFromServiceForwarderState(createdServiceFunctionPath); if (renderedServicePath != null) { SfcProviderRenderedPathAPI.deleteRenderedServicePath(renderedServicePath.getName()); SfcProviderServiceForwarderAPI.deletePathFromServiceForwarderState(createdServiceFunctionPath); if (renderedServicePath != null) { SfcProviderRenderedPathAPI.deleteRenderedServicePath(renderedServicePath.getName());
SfcProviderRenderedPathAPI.createReverseRenderedServicePathEntry(renderedServicePath)) != null) { revRspSuccessful = true; } else { addRevPathToSffStateSuccessful = true; } else { SfcProviderRenderedPathAPI.deleteRenderedServicePath(revRenderedServicePath.getName()); SfcProviderRenderedPathAPI.deleteRenderedServicePath(revRenderedServicePath.getName()); .deleteServicePathFromServiceFunctionState(new SfpName(revRenderedServicePath.getName().getValue())); SfcProviderServiceForwarderAPI.deletePathFromServiceForwarderState(revRenderedServicePath.getName()); SfcProviderRenderedPathAPI.deleteRenderedServicePath(revRenderedServicePath.getName());
createRenderedServicePathHopList(sfNameList, sfgNameList, serviceIndex);
/** * This method gets all necessary information for a system to construct * a NSH header and associated overlay packet to target the first * service hop of a Rendered Service Path * <p> * * @param input RPC input including a Rendered Service Path name * @return RPC output including a renderedServicePathFirstHop. */ @Override public Future<RpcResult<ReadRenderedServicePathFirstHopOutput>> readRenderedServicePathFirstHop( ReadRenderedServicePathFirstHopInput input) { RenderedServicePathFirstHop renderedServicePathFirstHop = null; RpcResultBuilder<ReadRenderedServicePathFirstHopOutput> rpcResultBuilder; renderedServicePathFirstHop = SfcProviderRenderedPathAPI.readRenderedServicePathFirstHop(new RspName(input.getName())); ReadRenderedServicePathFirstHopOutput renderedServicePathFirstHopOutput = null; if (renderedServicePathFirstHop != null) { ReadRenderedServicePathFirstHopOutputBuilder renderedServicePathFirstHopOutputBuilder = new ReadRenderedServicePathFirstHopOutputBuilder(); renderedServicePathFirstHopOutputBuilder.setRenderedServicePathFirstHop(renderedServicePathFirstHop); renderedServicePathFirstHopOutput = renderedServicePathFirstHopOutputBuilder.build(); rpcResultBuilder = RpcResultBuilder.success(renderedServicePathFirstHopOutput); } else { String message = "Error Reading RSP First Hop from DataStore: " + input.getName(); rpcResultBuilder = RpcResultBuilder.<ReadRenderedServicePathFirstHopOutput>failed() .withError(ErrorType.APPLICATION, message); } return Futures.immediateFuture(rpcResultBuilder.build()); }
RenderedServicePathFirstHop rspFirstHop = SfcProviderRenderedPathAPI.readRenderedServicePathFirstHop(rspName); if (!isValidRspFirstHop(rspFirstHop)) {
private RenderedServicePath createRsp(ServiceFunctionPath sfcPath, RspName rspName) { CreateRenderedPathInput rspInput = new CreateRenderedPathInputBuilder().setParentServiceFunctionPath(sfcPath.getName().getValue()) .setName(rspName.getValue()) .setSymmetric(sfcPath.isSymmetric()) .build(); return SfcProviderRenderedPathAPI.createRenderedServicePathAndState(sfcPath, rspInput); }
private RenderedServicePath createSymmetricRsp(RenderedServicePath rsp) { if (rsp == null) { return null; } return SfcProviderRenderedPathAPI.createSymmetricRenderedServicePathAndState(rsp); }
private static void createSFGHopBuilder(int serviceIndex, RenderedServicePathHopBuilder renderedServicePathHopBuilder, short posIndex, String serviceFunctionGroupName, ServiceFunction serviceFunction) { createHopBuilderInternal(serviceIndex, renderedServicePathHopBuilder, posIndex, serviceFunction); renderedServicePathHopBuilder.setServiceFunctionGroupName(serviceFunctionGroupName); }
.readRenderedServicePathFirstHop(new RspName(rsp.getName()));
.setSymmetric(sfp.isSymmetric()) .build(); rsp = SfcProviderRenderedPathAPI.createRenderedServicePathAndState(sfp, rspInput); if (rsp == null) { LOG.warn("getRenderedServicePathFromSfc: failed to add RSP");
RenderedServicePathFirstHop rspFirstHop = SfcProviderRenderedPathAPI.readRenderedServicePathFirstHop(rspName); if (!isValidRspFirstHop(rspFirstHop)) {
private RenderedServicePath createRsp(ServiceFunctionPath sfcPath, RspName rspName) { CreateRenderedPathInput rspInput = new CreateRenderedPathInputBuilder().setParentServiceFunctionPath(sfcPath.getName().getValue()) .setName(rspName.getValue()) .setSymmetric(sfcPath.isSymmetric()) .build(); return SfcProviderRenderedPathAPI.createRenderedServicePathAndState(sfcPath, rspInput); }