+ log.info(CALLED_STR, SVC_OPERATION);
+ // create a new response object
+ BrgTopologyOperationOutputBuilder responseBuilder = new BrgTopologyOperationOutputBuilder();
+
+ if (input == null || input.getServiceInformation() == null
+ || input.getServiceInformation().getServiceInstanceId() == null
+ || input.getServiceInformation().getServiceInstanceId().length() == 0) {
+ log.debug(NULL_OR_EMPTY_ERROR_LOG, SVC_OPERATION);
+ responseBuilder.setResponseCode("404");
+ responseBuilder.setResponseMessage(NULL_OR_EMPTY_ERROR_PARAM);
+ responseBuilder.setAckFinalIndicator("Y");
+ RpcResult<BrgTopologyOperationOutput> rpcResult = RpcResultBuilder.<BrgTopologyOperationOutput>status(true)
+ .withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }
+
+ String siid = input.getServiceInformation().getServiceInstanceId();
+
+/* // Get the service-instance service data from MD-SAL
+ ServiceDataBuilder serviceDataBuilder = new ServiceDataBuilder();
+ getServiceData(siid, serviceDataBuilder);
+
+ if (input.getSdncRequestHeader() != null) {
+ responseBuilder.setSvcRequestId(input.getSdncRequestHeader().getSvcRequestId());
+ }
+
+ ServiceData sd = serviceDataBuilder.build();
+ if (sd == null || sd.getServiceLevelOperStatus() == null) {
+ log.debug("exiting {} because the service-instance does not have any service data in SDNC", SVC_OPERATION);
+ responseBuilder.setResponseCode("404");
+ responseBuilder
+ .setResponseMessage("invalid input: the service-instance does not have any service data in SDNC");
+ responseBuilder.setAckFinalIndicator("Y");
+ RpcResult<BrgTopologyOperationOutput> rpcResult = RpcResultBuilder.<BrgTopologyOperationOutput>status(true)
+ .withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }*/
+
+ log.info(ADDING_INPUT_DATA_LOG, SVC_OPERATION, siid, input);
+ BrgTopologyOperationInputBuilder inputBuilder = new BrgTopologyOperationInputBuilder(input);
+ GenericResourceApiUtil.toProperties(parms, inputBuilder.build());
+
+ // Call SLI sync method
+ // Get SvcLogicService reference
+
+ Properties respProps = null;
+
+ String errorCode = "200";
+ String errorMessage = null;
+ String ackFinal = "Y";
+ String allottedResourceId = ERROR_NETWORK_ID;
+ String serviceObjectPath = null;
+ String brgObjectPath = null;
+
+ try {
+ if (svcLogicClient.hasGraph(APP_NAME, SVC_OPERATION, null, "sync")) {
+
+ try {
+ respProps = svcLogicClient.execute(APP_NAME, SVC_OPERATION, null, "sync", parms);
+ } catch (Exception e) {
+ log.error("Caught exception executing service logic for {}", SVC_OPERATION, e);
+ errorMessage = e.getMessage();
+ errorCode = "500";
+ }
+ } else {
+ errorMessage = NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'";
+ errorCode = "503";
+ }
+ } catch (Exception e) {
+ errorCode = "500";
+ errorMessage = e.getMessage();
+ log.error(SERVICE_LOGIC_SEARCH_ERROR_MESSAGE, e);
+ }
+
+ if (respProps != null) {
+ errorCode = respProps.getProperty(ERROR_CODE_PARAM);
+ errorMessage = respProps.getProperty(ERROR_MESSAGE_PARAM);
+ ackFinal = respProps.getProperty(ACK_FINAL_PARAM, "Y");
+ allottedResourceId = respProps.getProperty(ALLOTTED_RESOURCE_ID_PARAM);
+ serviceObjectPath = respProps.getProperty(SERVICE_OBJECT_PATH_PARAM);
+ brgObjectPath = respProps.getProperty("brg-object-path");
+ }
+
+ if (errorCode != null && errorCode.length() != 0 && !(errorCode.equals("0") || errorCode.equals("200"))) {
+ responseBuilder.setResponseCode(errorCode);
+ responseBuilder.setResponseMessage(errorMessage);
+ responseBuilder.setAckFinalIndicator(ackFinal);
+
+ log.error(RETURNED_FAILED_MESSAGE, SVC_OPERATION, siid, responseBuilder.build());
+
+ RpcResult<BrgTopologyOperationOutput> rpcResult = RpcResultBuilder.<BrgTopologyOperationOutput>status(true)
+ .withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }
+
+ // Got success from SLI
+ try {
+
+
+ BrgResponseInformationBuilder brgResponseInformationBuilder = new BrgResponseInformationBuilder();
+ brgResponseInformationBuilder.setInstanceId(allottedResourceId);
+ brgResponseInformationBuilder.setObjectPath(brgObjectPath);
+ responseBuilder.setBrgResponseInformation(brgResponseInformationBuilder.build());
+
+ ServiceResponseInformationBuilder serviceResponseInformationBuilder = new ServiceResponseInformationBuilder();
+ serviceResponseInformationBuilder.setInstanceId(siid);
+ serviceResponseInformationBuilder.setObjectPath(serviceObjectPath);
+ responseBuilder.setServiceResponseInformation(serviceResponseInformationBuilder.build());
+
+ } catch (IllegalStateException e) {
+ log.error(UPDATING_MDSAL_ERROR_MESSAGE, SVC_OPERATION, siid, e);
+ responseBuilder.setResponseCode("500");
+ responseBuilder.setResponseMessage(e.toString());
+ responseBuilder.setAckFinalIndicator("Y");
+ log.error(RETURNED_FAILED_MESSAGE, SVC_OPERATION, siid, responseBuilder.build());
+ RpcResult<BrgTopologyOperationOutput> rpcResult = RpcResultBuilder.<BrgTopologyOperationOutput>status(true)
+ .withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }
+
+ // Update succeeded
+ responseBuilder.setResponseCode(errorCode);
+ responseBuilder.setAckFinalIndicator(ackFinal);
+ if (errorMessage != null) {
+ responseBuilder.setResponseMessage(errorMessage);
+ }
+ log.info(UPDATED_MDSAL_INFO_MESSAGE, SVC_OPERATION, siid);
+ log.info(RETURNED_SUCCESS_MESSAGE, SVC_OPERATION, siid, responseBuilder.build());
+
+ RpcResult<BrgTopologyOperationOutput> rpcResult = RpcResultBuilder.<BrgTopologyOperationOutput>status(true)
+ .withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }
+
+ @Override
+ public Future<RpcResult<PreloadVnfTopologyOperationOutput>> preloadVnfTopologyOperation(
+ PreloadVnfTopologyOperationInput input) {
+
+ final String SVC_OPERATION = "preload-vnf-topology-operation";
+ PreloadData preloadData;
+ Properties parms = new Properties();
+
+ log.info(CALLED_STR, SVC_OPERATION);
+ // create a new response object
+ PreloadVnfTopologyOperationOutputBuilder responseBuilder = new PreloadVnfTopologyOperationOutputBuilder();
+
+ // Result from savePreloadData
+ final SettableFuture<RpcResult<Void>> futureResult = SettableFuture.create();
+
+ if (input == null || input.getVnfTopologyInformation() == null
+ || input.getVnfTopologyInformation().getVnfTopologyIdentifier() == null) {
+ log.debug("exiting {} because of null input", SVC_OPERATION);
+ responseBuilder.setResponseCode("403");
+ responseBuilder.setResponseMessage("invalid input: input is null");
+ responseBuilder.setAckFinalIndicator("Y");
+ RpcResult<PreloadVnfTopologyOperationOutput> rpcResult = RpcResultBuilder
+ .<PreloadVnfTopologyOperationOutput>status(true).withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }
+
+ // Grab the name and type from the input buffer
+ String preload_name = input.getVnfTopologyInformation().getVnfTopologyIdentifier().getVnfName();
+ String preload_type = input.getVnfTopologyInformation().getVnfTopologyIdentifier().getVnfType();
+
+ // Make sure we have a preload_name and preload_type
+ if (preload_name == null || preload_name.length() == 0 || preload_type == null || preload_type.length() == 0) {
+ log.debug("exiting {} vnf-name or vnf-type is null or empty", SVC_OPERATION);
+ responseBuilder.setResponseCode("403");
+ responseBuilder.setResponseMessage("invalid input: vnf-name or vnf-type is null or empty");
+ responseBuilder.setAckFinalIndicator("Y");
+ RpcResult<PreloadVnfTopologyOperationOutput> rpcResult = RpcResultBuilder
+ .<PreloadVnfTopologyOperationOutput>status(true).withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }
+
+ if (input.getSdncRequestHeader() != null) {
+ responseBuilder.setSvcRequestId(input.getSdncRequestHeader().getSvcRequestId());
+ }
+
+ PreloadDataBuilder preloadDataBuilder = new PreloadDataBuilder();
+ getPreloadData(preload_name, preload_type, preloadDataBuilder);
+
+ PreloadDataBuilder operDataBuilder = new PreloadDataBuilder();
+ getPreloadData(preload_name, preload_type, operDataBuilder, LogicalDatastoreType.OPERATIONAL);
+
+ // setup a preload-data object builder
+ // ACTION preload-vnf-topology-operation
+ // INPUT:
+ // USES sdnc-request-header;
+ // USES request-information;
+ // uses vnf-topology-information;
+ // OUTPUT:
+ // USES vnf-topology-response-body;
+ //
+ // container preload-data
+ // uses vnf-topology-information;
+ // uses network-topology-information;
+ // uses oper-status;
+
+ log.info("Adding INPUT data for {} [{},{}] input: {}", SVC_OPERATION, preload_name, preload_type, input);
+ PreloadVnfTopologyOperationInputBuilder inputBuilder = new PreloadVnfTopologyOperationInputBuilder(input);
+ GenericResourceApiUtil.toProperties(parms, inputBuilder.build());
+ log.info("Adding OPERATIONAL data for {} [{},{}] operational-data: {}", SVC_OPERATION, preload_name,
+ preload_type, operDataBuilder.build());
+ GenericResourceApiUtil.toProperties(parms, OPERATIONAL_DATA_PARAM, operDataBuilder);
+
+ // Call SLI sync method
+ // Get SvcLogicService reference
+
+ Properties respProps = null;
+
+ String errorCode = "200";
+ String errorMessage = null;
+ String ackFinal = "Y";
+
+ try {
+ if (svcLogicClient.hasGraph(APP_NAME, SVC_OPERATION, null, "sync")) {
+
+ try {
+ respProps = svcLogicClient.execute(APP_NAME, SVC_OPERATION, null, "sync", preloadDataBuilder, parms);
+ } catch (Exception e) {
+ log.error("Caught exception executing service logic for {}", SVC_OPERATION, e);
+ errorMessage = e.getMessage();
+ errorCode = "500";
+ }
+ } else {
+ errorMessage = NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'";
+ errorCode = "503";
+ }
+ } catch (Exception e) {
+ errorCode = "500";
+ errorMessage = e.getMessage();
+ log.error(SERVICE_LOGIC_SEARCH_ERROR_MESSAGE, e);
+ }
+
+ if (respProps != null) {
+ errorCode = respProps.getProperty(ERROR_CODE_PARAM);
+ errorMessage = respProps.getProperty(ERROR_MESSAGE_PARAM);
+ ackFinal = respProps.getProperty(ACK_FINAL_PARAM, "Y");
+ // internalError = respProps.getProperty("internal-error", "false");
+ }
+
+ if (errorCode != null && errorCode.length() != 0 && !(errorCode.equals("0") || errorCode.equals("200"))) {
+
+ responseBuilder.setResponseCode(errorCode);
+ responseBuilder.setResponseMessage(errorMessage);
+ responseBuilder.setAckFinalIndicator(ackFinal);
+
+ VnfPreloadListBuilder preloadVnfListBuilder = new VnfPreloadListBuilder();
+ preloadVnfListBuilder.setVnfName(preload_name);
+ preloadVnfListBuilder.setVnfType(preload_type);
+ preloadVnfListBuilder.setPreloadData(preloadDataBuilder.build());
+ log.error("Returned FAILED for {} [{},{}] error code: '{}', Reason: '{}'", SVC_OPERATION, preload_name,
+ preload_type, errorCode, errorMessage);
+ try {
+ savePreloadList(preloadVnfListBuilder.build(), true, LogicalDatastoreType.CONFIGURATION);
+ } catch (Exception e) {
+ log.error("Caught Exception updating MD-SAL for {} [{},{}] \n", SVC_OPERATION, preload_name,
+ preload_type, e);
+ }
+ log.debug("Sending Success rpc result due to external error");
+ RpcResult<PreloadVnfTopologyOperationOutput> rpcResult = RpcResultBuilder
+ .<PreloadVnfTopologyOperationOutput>status(true).withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }
+
+ // Got success from SLI
+ try {
+ preloadData = preloadDataBuilder.build();
+ log.info("Updating MD-SAL for {} [{},{}] preloadData: {}", SVC_OPERATION, preload_name, preload_type,
+ preloadData);
+ // svc-configuration-list
+ VnfPreloadListBuilder preloadVnfListBuilder = new VnfPreloadListBuilder();
+ preloadVnfListBuilder.setVnfName(preload_name);
+ preloadVnfListBuilder.setVnfType(preload_type);
+ preloadVnfListBuilder.setPreloadData(preloadData);
+
+ // merge flag sets to false to allow it to be overwritten (not appended)
+ savePreloadList(preloadVnfListBuilder.build(), false, LogicalDatastoreType.CONFIGURATION);
+ log.info(UPDATING_TREE_INFO_MESSAGE);
+ savePreloadList(preloadVnfListBuilder.build(), false, LogicalDatastoreType.OPERATIONAL);
+ } catch (Exception e) {
+ log.error("Caught Exception updating MD-SAL for {} [{},{}] \n", SVC_OPERATION, preload_name, preload_type,
+ e);
+ responseBuilder.setResponseCode("500");
+ responseBuilder.setResponseMessage(e.toString());
+ responseBuilder.setAckFinalIndicator("Y");
+ log.error("Returned FAILED for {} [{},{}] {}", SVC_OPERATION, preload_name, preload_type,
+ responseBuilder.build());
+ RpcResult<PreloadVnfTopologyOperationOutput> rpcResult = RpcResultBuilder
+ .<PreloadVnfTopologyOperationOutput>status(false).withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }
+
+ // Update succeeded
+ responseBuilder.setResponseCode(errorCode);
+ responseBuilder.setAckFinalIndicator(ackFinal);
+ if (errorMessage != null) {
+ responseBuilder.setResponseMessage(errorMessage);
+ }
+ log.info("Updated MD-SAL for {} [{},{}]", SVC_OPERATION, preload_name, preload_type);
+ log.info("Returned SUCCESS for {} [{},{}] {}", SVC_OPERATION, preload_name, preload_type,
+ responseBuilder.build());
+
+ RpcResult<PreloadVnfTopologyOperationOutput> rpcResult = RpcResultBuilder
+ .<PreloadVnfTopologyOperationOutput>status(true).withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }
+
+ @Override
+ public Future<RpcResult<PreloadNetworkTopologyOperationOutput>> preloadNetworkTopologyOperation(
+ PreloadNetworkTopologyOperationInput input) {
+
+ final String SVC_OPERATION = "preload-network-topology-operation";
+ PreloadData preloadData;
+ Properties parms = new Properties();
+
+ log.info(CALLED_STR, SVC_OPERATION);
+ // create a new response object
+ PreloadNetworkTopologyOperationOutputBuilder responseBuilder = new PreloadNetworkTopologyOperationOutputBuilder();
+
+ // Result from savePreloadData
+ final SettableFuture<RpcResult<Void>> futureResult = SettableFuture.create();
+
+ if (input == null || input.getNetworkTopologyInformation() == null
+ || input.getNetworkTopologyInformation().getNetworkTopologyIdentifier() == null) {
+
+ log.debug("exiting {} because of null input", SVC_OPERATION);
+ responseBuilder.setResponseCode("403");
+ responseBuilder.setResponseMessage("input is null");
+ responseBuilder.setAckFinalIndicator("Y");
+ RpcResult<PreloadNetworkTopologyOperationOutput> rpcResult = RpcResultBuilder
+ .<PreloadNetworkTopologyOperationOutput>status(true).withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }
+
+ // Grab the name and type from the input buffer
+ String preload_name = input.getNetworkTopologyInformation().getNetworkTopologyIdentifier().getNetworkName();
+ String preload_type = input.getNetworkTopologyInformation().getNetworkTopologyIdentifier().getNetworkType();
+
+ // Make sure we have a preload_name and preload_type
+ if (preload_name == null || preload_name.length() == 0 || preload_type == null || preload_type.length() == 0) {
+ log.debug("exiting {} because of invalid preload-name", SVC_OPERATION);
+ responseBuilder.setResponseCode("403");
+ responseBuilder.setResponseMessage("input, invalid preload-name");
+ responseBuilder.setAckFinalIndicator("Y");
+ RpcResult<PreloadNetworkTopologyOperationOutput> rpcResult = RpcResultBuilder
+ .<PreloadNetworkTopologyOperationOutput>status(true).withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }
+
+ if (input.getSdncRequestHeader() != null) {
+ responseBuilder.setSvcRequestId(input.getSdncRequestHeader().getSvcRequestId());
+ }
+
+ PreloadDataBuilder preloadDataBuilder = new PreloadDataBuilder();
+ getPreloadData(preload_name, preload_type, preloadDataBuilder);
+
+ PreloadDataBuilder operDataBuilder = new PreloadDataBuilder();
+ getPreloadData(preload_name, preload_type, operDataBuilder, LogicalDatastoreType.OPERATIONAL);
+
+ //
+ // setup a preload-data object builder
+ // ACTION preload-network-topology-operation
+ // INPUT:
+ // USES sdnc-request-header;
+ // USES request-information;
+ // uses network-topology-information;
+ // OUTPUT:
+ // USES vnf-topology-response-body;
+ //
+ // container preload-data
+ // uses vnf-topology-information;
+ // uses network-topology-information;
+ // uses oper-status;
+
+ log.info("Adding INPUT data for {} [{},{}] input: {}", SVC_OPERATION, preload_name, preload_type, input);
+ PreloadNetworkTopologyOperationInputBuilder inputBuilder = new PreloadNetworkTopologyOperationInputBuilder(
+ input);
+ GenericResourceApiUtil.toProperties(parms, inputBuilder.build());
+ log.info("Adding OPERATIONAL data for {} [{},{}] operational-data: {}", SVC_OPERATION, preload_name,
+ preload_type, operDataBuilder.build());
+ GenericResourceApiUtil.toProperties(parms, OPERATIONAL_DATA_PARAM, operDataBuilder);
+
+ // Call SLI sync method
+ // Get SvcLogicService reference
+
+ Properties respProps = null;
+
+ String errorCode = "200";
+ String errorMessage = null;
+ String ackFinal = "Y";
+
+ try {
+ if (svcLogicClient.hasGraph(APP_NAME, SVC_OPERATION, null, "sync")) {
+
+ try {
+ respProps = svcLogicClient.execute(APP_NAME, SVC_OPERATION, null, "sync", preloadDataBuilder, parms);
+ } catch (Exception e) {
+ log.error("Caught exception executing service logic for {}", SVC_OPERATION, e);
+ errorMessage = e.getMessage();
+ errorCode = "500";
+ }
+ } else {
+ errorMessage = NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'";
+ errorCode = "503";
+ }
+ } catch (Exception e) {
+ errorCode = "500";
+ errorMessage = e.getMessage();
+ log.error(SERVICE_LOGIC_SEARCH_ERROR_MESSAGE, e);
+ }
+
+ if (respProps != null) {
+ errorCode = respProps.getProperty(ERROR_CODE_PARAM);
+ errorMessage = respProps.getProperty(ERROR_MESSAGE_PARAM);
+ ackFinal = respProps.getProperty(ACK_FINAL_PARAM, "Y");
+ // internalError = respProps.getProperty("internal-error", "false");
+ }
+
+ if (errorCode != null && errorCode.length() != 0 && !(errorCode.equals("0") || errorCode.equals("200"))) {
+
+ responseBuilder.setResponseCode(errorCode);
+ responseBuilder.setResponseMessage(errorMessage);
+ responseBuilder.setAckFinalIndicator(ackFinal);
+
+ VnfPreloadListBuilder preloadVnfListBuilder = new VnfPreloadListBuilder();
+ preloadVnfListBuilder.setVnfName(preload_name);
+ preloadVnfListBuilder.setVnfType(preload_type);
+ preloadVnfListBuilder.setPreloadData(preloadDataBuilder.build());
+ log.error("Returned FAILED for {} [{},{}] error code: '{}', Reason: '{}'", SVC_OPERATION, preload_name,
+ preload_type, errorCode, errorMessage);
+ try {
+ savePreloadList(preloadVnfListBuilder.build(), true, LogicalDatastoreType.CONFIGURATION);
+ } catch (Exception e) {
+ log.error("Caught Exception updating MD-SAL for {} [{},{}] \n", SVC_OPERATION, preload_name,
+ preload_type, e);
+
+ }
+ log.debug("Sending Success rpc result due to external error");
+ RpcResult<PreloadNetworkTopologyOperationOutput> rpcResult = RpcResultBuilder
+ .<PreloadNetworkTopologyOperationOutput>status(true).withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }
+
+ // Got success from SLI
+ try {
+ preloadData = preloadDataBuilder.build();
+ log.info("Updating MD-SAL for {} [{},{}] preloadData: {}", SVC_OPERATION, preload_name, preload_type,
+ preloadData);
+ // svc-configuration-list
+ VnfPreloadListBuilder preloadVnfListBuilder = new VnfPreloadListBuilder();
+ preloadVnfListBuilder.setVnfName(preload_name);
+ preloadVnfListBuilder.setVnfType(preload_type);
+ preloadVnfListBuilder.setPreloadData(preloadData);
+
+ // merge flag sets to false to allow it to be overwritten (not appended)
+ savePreloadList(preloadVnfListBuilder.build(), false, LogicalDatastoreType.CONFIGURATION);
+ log.info(UPDATING_TREE_INFO_MESSAGE);
+ savePreloadList(preloadVnfListBuilder.build(), false, LogicalDatastoreType.OPERATIONAL);
+ } catch (Exception e) {
+ log.error("Caught Exception updating MD-SAL for " + SVC_OPERATION + " [" + preload_name + "," + preload_type
+ + "] \n", e);
+ responseBuilder.setResponseCode("500");
+ responseBuilder.setResponseMessage(e.toString());
+ responseBuilder.setAckFinalIndicator("Y");
+ log.error("Returned FAILED for {} [{},{}] {}", SVC_OPERATION, preload_name, preload_type,
+ responseBuilder.build());
+ RpcResult<PreloadNetworkTopologyOperationOutput> rpcResult = RpcResultBuilder
+ .<PreloadNetworkTopologyOperationOutput>status(false).withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }
+
+ // Update succeeded
+ responseBuilder.setResponseCode(errorCode);
+ responseBuilder.setAckFinalIndicator(ackFinal);
+ if (errorMessage != null) {
+ responseBuilder.setResponseMessage(errorMessage);
+ }
+ log.info("Updated MD-SAL for {} [{},{}]", SVC_OPERATION, preload_name, preload_type);
+ log.info("Returned SUCCESS for {} [{},{}] {}", SVC_OPERATION, preload_name, preload_type,
+ responseBuilder.build());
+
+ RpcResult<PreloadNetworkTopologyOperationOutput> rpcResult = RpcResultBuilder
+ .<PreloadNetworkTopologyOperationOutput>status(true).withResult(responseBuilder.build()).build();
+ return Futures.immediateFuture(rpcResult);
+ }