X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=appc-provider%2Fappc-provider-bundle%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fappc%2Fprovider%2FAppcProviderLcm.java;h=6d186ab5f29277cb8a1157eab7910a123b16cd12;hb=HEAD;hp=a340aa04698ab96e96b4286ce9065d71fb5bc326;hpb=c7d0075d223eab9f89fd28853c4b138792059be9;p=appc.git diff --git a/appc-provider/appc-provider-bundle/src/main/java/org/openecomp/appc/provider/AppcProviderLcm.java b/appc-provider/appc-provider-bundle/src/main/java/org/openecomp/appc/provider/AppcProviderLcm.java deleted file mode 100644 index a340aa046..000000000 --- a/appc-provider/appc-provider-bundle/src/main/java/org/openecomp/appc/provider/AppcProviderLcm.java +++ /dev/null @@ -1,985 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : APP-C - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.appc.provider; - -import java.text.ParseException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; - -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; -import org.opendaylight.controller.sal.binding.api.NotificationProviderService; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; -import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.common.header.CommonHeader; -import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.*; -import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.status.Status; -import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.status.StatusBuilder; -import org.opendaylight.yangtools.yang.common.RpcResult; -import org.opendaylight.yangtools.yang.common.RpcResultBuilder; -import org.openecomp.appc.Constants; -import org.openecomp.appc.configuration.Configuration; -import org.openecomp.appc.configuration.ConfigurationFactory; -import org.openecomp.appc.domainmodel.lcm.ResponseContext; -import org.openecomp.appc.domainmodel.lcm.RuntimeContext; -import org.openecomp.appc.executor.objects.LCMCommandStatus; -import org.openecomp.appc.executor.objects.Params; -import org.openecomp.appc.i18n.Msg; -import org.openecomp.appc.logging.LoggingConstants; -import org.openecomp.appc.logging.LoggingUtils; -import org.openecomp.appc.provider.lcm.util.RequestInputBuilder; -import org.openecomp.appc.provider.lcm.util.ValidationService; -import org.openecomp.appc.requesthandler.RequestHandler; -import org.openecomp.appc.requesthandler.objects.RequestHandlerInput; -import org.openecomp.appc.requesthandler.objects.RequestHandlerOutput; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.osgi.framework.BundleContext; -import org.osgi.framework.FrameworkUtil; -import org.osgi.framework.ServiceReference; - -import com.google.common.util.concurrent.Futures; -import org.slf4j.MDC; - - -public class AppcProviderLcm implements AutoCloseable, AppcProviderLcmService { - - private Configuration configuration = ConfigurationFactory.getConfiguration(); - private final EELFLogger logger = EELFManager.getInstance().getLogger(AppcProviderLcm.class); - - private final ExecutorService executor; - - private final String COMMON_ERROR_MESSAGE_TEMPLATE = "Error processing %s input : %s"; - - /** - * The ODL data store broker. Provides access to a conceptual data tree store and also provides the ability to - * subscribe for changes to data under a given branch of the tree. - */ - protected DataBroker dataBroker; - - /** - * ODL Notification Service that provides publish/subscribe capabilities for YANG modeled notifications. - */ - protected NotificationProviderService notificationService; - - /** - * Provides a registry for Remote Procedure Call (RPC) service implementations. The RPCs are defined in YANG models. - */ - protected RpcProviderRegistry rpcRegistry; - - /** - * Represents our RPC implementation registration - */ - protected BindingAwareBroker.RpcRegistration rpcRegistration; - - - /** - * @param dataBroker - * @param notificationProviderService - * @param rpcProviderRegistry - */ - @SuppressWarnings({ - "javadoc", "nls" - }) - public AppcProviderLcm(DataBroker dataBroker, NotificationProviderService notificationProviderService, - RpcProviderRegistry rpcProviderRegistry) { - - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - logger.info(Msg.COMPONENT_INITIALIZING, appName, "provider-lcm"); - - executor = Executors.newFixedThreadPool(1); - this.dataBroker = dataBroker; - this.notificationService = notificationProviderService; - this.rpcRegistry = rpcProviderRegistry; - - if (this.rpcRegistry != null) { - rpcRegistration = rpcRegistry.addRpcImplementation(AppcProviderLcmService.class, this); - } - - logger.info(Msg.COMPONENT_INITIALIZED, appName, "provider"); - } - - /** - * Implements the close of the service - * - * @see java.lang.AutoCloseable#close() - */ - @SuppressWarnings("nls") - @Override - public void close() throws Exception { - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - logger.info(Msg.COMPONENT_TERMINATING, appName, "provider"); - executor.shutdown(); - if (rpcRegistration != null) { - rpcRegistration.close(); - } - logger.info(Msg.COMPONENT_TERMINATED, appName, "provider"); - } - - - /** - * Rebuilds a specific VNF - * - * @see org.opendaylight.yang.gen.v1.org.openecomp.appc.rev160108.AppcProviderLcmService#rebuild(RebuildInput) - */ - @Override - public Future> rebuild(RebuildInput input) { - logger.debug("Input received : " + input.toString()); - - RebuildOutputBuilder outputBuilder = new RebuildOutputBuilder(); - String action = Action.Rebuild.toString() ; - String rpcName = Action.Rebuild.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - - } - - - /** - * Restarts a specific VNF - * - * @see org.opendaylight.yang.gen.v1.org.openecomp.appc.rev160108.AppcProviderLcmService#restart(RestartInput) - */ - @Override - public Future> restart(RestartInput input) { - logger.debug("Input received : " + input.toString()); - - RestartOutputBuilder outputBuilder = new RestartOutputBuilder(); - String action = Action.Restart.toString() ; - String rpcName = Action.Restart.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext() - .commonHeader(input.getCommonHeader()) - .actionIdentifiers(input.getActionIdentifiers()) - .payload(input.getPayload()) - .action(action) - .rpcName(rpcName) - .build(); - - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - - /** - * Migrates a specific VNF - * - * @see org.opendaylight.yang.gen.v1.org.openecomp.appc.rev160108.AppcProviderLcmService#migrate(MigrateInput) - */ - @Override - public Future> migrate(MigrateInput input) { - logger.debug("Input received : " + input.toString()); - - MigrateOutputBuilder outputBuilder = new MigrateOutputBuilder(); - String action = Action.Migrate.toString() ; - String rpcName = Action.Migrate.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - - /** - * Evacuates a specific VNF - * - * @see org.opendaylight.yang.gen.v1.org.openecomp.appc.rev160108.AppcProviderLcmService#evacuate(EvacuateInput) - */ - @Override - public Future> evacuate(EvacuateInput input) { - logger.debug("Input received : " + input.toString()); - - EvacuateOutputBuilder outputBuilder = new EvacuateOutputBuilder(); - String action = Action.Evacuate.toString() ; - String rpcName = Action.Evacuate.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - - /** - * Evacuates a specific VNF - * - * @see org.opendaylight.yang.gen.v1.org.openecomp.appc.rev160108.AppcProviderLcmService#snapshot(SnapshotInput) - */ - @Override - public Future> snapshot(SnapshotInput input) { - logger.debug("Input received : " + input.toString()); - - SnapshotOutputBuilder outputBuilder = new SnapshotOutputBuilder(); - String action = Action.Snapshot.toString() ; - String rpcName = Action.Snapshot.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - String identityUrl = input.getIdentityUrl(); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).additionalContext("identity-url", identityUrl).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - @Override - public Future> rollback(RollbackInput input) { - logger.debug("Input received : " + input.toString()); - - RollbackOutputBuilder outputBuilder = new RollbackOutputBuilder(); - String rpcName = Action.Rollback.toString() ; - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), rpcName); - String identityUrl = input.getIdentityUrl(); - String snapshotId = input.getSnapshotId(); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).additionalContext("identity-url", identityUrl).additionalContext("snapshot-id", snapshotId).action(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, rpcName, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - @Override - public Future> sync(SyncInput input) { - logger.debug("Input received : " + input.toString()); - SyncOutputBuilder outputBuilder = new SyncOutputBuilder(); - String action = Action.Sync.toString() ; - String rpcName = Action.Sync.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - private Status buildParsingErrorStatus(ParseException e){ - LCMCommandStatus requestParsingFailure = LCMCommandStatus.REQUEST_PARSING_FAILED; - String errorMessage = e.getMessage() != null ? e.getMessage() : e.toString(); - Params params = new Params().addParam("errorMsg", errorMessage); - return buildStatus(requestParsingFailure.getResponseCode(), requestParsingFailure.getFormattedMessage(params)); - } - - private Status buildStatus(Integer code,String message){ - StatusBuilder status = new StatusBuilder(); - status.setCode(code); - status.setMessage(message); - return status.build(); - } - - private Status buildStatusWithDispatcherOutput(RequestHandlerOutput requestHandlerOutput){ - Integer statusCode = requestHandlerOutput.getResponseContext().getStatus().getCode(); - String statusMessage = requestHandlerOutput.getResponseContext().getStatus().getMessage(); - return buildStatus(statusCode, statusMessage); - } - - private RequestHandlerOutput executeRequest(RequestHandlerInput request){ - - RequestHandler handler = getRequestHandler(); - RequestHandlerOutput requestHandlerOutput; - try { - requestHandlerOutput = handler.handleRequest(request); - } catch (Exception e) { - - final String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - final String reason = EELFResourceManager.format(Msg.EXCEPTION_CALLING_DG, e, appName, e.getClass().getSimpleName(), "", e.getMessage()); - - logger.info("UNEXPECTED FAILURE while executing " + request.getRequestContext().getAction().name()); - - - final ResponseContext responseContext = new ResponseContext(); - requestHandlerOutput = new RequestHandlerOutput(); - requestHandlerOutput.setResponseContext(responseContext); - responseContext.setCommonHeader(request.getRequestContext().getCommonHeader()); - String errorMessage = e.getMessage() != null ? e.getMessage() : e.toString(); - Params params = new Params().addParam("errorMsg", errorMessage); - responseContext.setStatus(LCMCommandStatus.UNEXPECTED_ERROR.toStatus(params)); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - reason, - this.getClass().getName()); - - - } - return requestHandlerOutput; - } - - private RequestHandler getRequestHandler(){ - RequestHandler handler ; - final BundleContext context = FrameworkUtil.getBundle(RequestHandler.class).getBundleContext(); - final ServiceReference reference = context.getServiceReference(RequestHandler.class.getName()); - - if (reference != null) { - handler = (RequestHandler) context.getService(reference); - } else { - logger.error("Cannot find service reference for " + RequestHandler.class.getName()); - throw new RuntimeException(); - } - return handler ; - } - - - @Override - public Future> terminate(TerminateInput input) { - logger.debug("Input received : " + input.toString()); - TerminateOutputBuilder outputBuilder = new TerminateOutputBuilder(); - String action = Action.Terminate.toString() ; - String rpcName = Action.Terminate.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - @Override - public Future> configure(ConfigureInput input) { - logger.debug("Input received : " + input.toString()); - ConfigureOutputBuilder outputBuilder = new ConfigureOutputBuilder(); - String action = Action.Configure.toString() ; - String rpcName = "configure"; - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - @Override - public Future> configModify(ConfigModifyInput input) { - logger.debug("Input received : " + input.toString()); - ConfigModifyOutputBuilder outputBuilder = new ConfigModifyOutputBuilder(); - String action = Action.ConfigModify.toString() ; - String rpcName = "config-modify"; - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - @Override - public Future> configScaleout(ConfigScaleoutInput input) { - logger.debug("Input received : " + input.toString()); - ConfigScaleoutOutputBuilder outputBuilder = new ConfigScaleoutOutputBuilder(); - String action = Action.ConfigScaleOut.toString() ; - String rpcName = "config-scaleout"; - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - @Override - public Future> configRestore(ConfigRestoreInput input) { - logger.debug("Input received : " + input.toString()); - ConfigRestoreOutputBuilder outputBuilder = new ConfigRestoreOutputBuilder(); - String action = Action.ConfigRestore.toString() ; - String rpcName = "config-restore"; - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - @Override - public Future> test(TestInput input) { - logger.debug("Input received : " + input.toString()); - TestOutputBuilder outputBuilder = new TestOutputBuilder(); - String action = Action.Test.toString() ; - String rpcName = Action.Test.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - - @Override - public Future> stop(StopInput input) { - logger.debug("Input received : " + input.toString()); - StopOutputBuilder outputBuilder = new StopOutputBuilder(); - String action = Action.Stop.toString() ; - String rpcName = Action.Stop.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - /** - * Starts a specific VNF - * - * @see org.opendaylight.yang.gen.v1.org.openecomp.appc.rev160108.AppcProviderLcmService#start(StartInput) - */ - @Override - public Future> start(StartInput input) { - logger.debug("Input received : " + input.toString()); - - StartOutputBuilder outputBuilder = new StartOutputBuilder(); - String action = Action.Start.toString() ; - String rpcName = Action.Start.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext() - .commonHeader(input.getCommonHeader()) - .actionIdentifiers(input.getActionIdentifiers()) - .payload(input.getPayload()) - .action(action) - .rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - - @Override - public Future> audit(AuditInput input) { - logger.debug("Input received : " + input.toString()); - AuditOutputBuilder outputBuilder = new AuditOutputBuilder(); - String action = Action.Audit.toString(); - String rpcName = Action.Audit.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - @Override - public Future> softwareUpload(SoftwareUploadInput input) { - logger.debug("Input received : " + input.toString()); - SoftwareUploadOutputBuilder outputBuilder = new SoftwareUploadOutputBuilder(); - String action = Action.SoftwareUpload.toString() ; - String rpcName = convertActionNameToUrl(action); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder(). - requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - @Override - public Future> healthCheck(HealthCheckInput input) { - logger.debug("Input received : " + input.toString()); - HealthCheckOutputBuilder outputBuilder = new HealthCheckOutputBuilder(); - String action = Action.HealthCheck.toString() ; - String rpcName = convertActionNameToUrl(action); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - @Override - public Future> liveUpgrade(LiveUpgradeInput input) { - logger.debug("Input received : " + input.toString()); - LiveUpgradeOutputBuilder outputBuilder = new LiveUpgradeOutputBuilder(); - String action = Action.LiveUpgrade.toString() ; - String rpcName = convertActionNameToUrl(action); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - - @Override - public Future> lock(LockInput input) { - logger.debug("Input received : " + input.toString()); - LockOutputBuilder outputBuilder = new LockOutputBuilder(); - String action = Action.Lock.toString() ; - String rpcName = Action.Lock.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - - @Override - public Future> unlock(UnlockInput input) { - logger.debug("Input received : " + input.toString()); - UnlockOutputBuilder outputBuilder = new UnlockOutputBuilder(); - String action = Action.Unlock.toString() ; - String rpcName = Action.Unlock.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - @Override - public Future> checkLock(CheckLockInput input) { - logger.debug("Input received : " + input.toString()); - CheckLockOutputBuilder outputBuilder = new CheckLockOutputBuilder(); - String action = Action.CheckLock.toString() ; - String rpcName = Action.CheckLock.name().toLowerCase(); - RequestHandlerOutput requestHandlerOutput=null; - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).action(action).rpcName(rpcName).build(); - requestHandlerOutput=executeRequest(request); - - status = buildStatusWithDispatcherOutput(requestHandlerOutput); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - if(requestHandlerOutput.getResponseContext().getStatus().getCode() == 400) { - outputBuilder.setLocked(CheckLockOutput.Locked.valueOf(requestHandlerOutput.getResponseContext().getAdditionalContext().get("locked").toUpperCase())); - } - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - @Override - public Future> configBackup(ConfigBackupInput input) { - logger.debug("Input received : " + input.toString()); - ConfigBackupOutputBuilder outputBuilder = new ConfigBackupOutputBuilder(); - String action = Action.ConfigBackup.toString() ; - String rpcName = Action.ConfigBackup.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - - @Override - public Future> configBackupDelete(ConfigBackupDeleteInput input) { - logger.debug("Input received : " + input.toString()); - ConfigBackupDeleteOutputBuilder outputBuilder = new ConfigBackupDeleteOutputBuilder(); - String action = Action.ConfigBackupDelete.toString() ; - String rpcName = Action.ConfigBackupDelete.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - - @Override - public Future> configExport(ConfigExportInput input) { - logger.debug("Input received : " + input.toString()); - ConfigExportOutputBuilder outputBuilder = new ConfigExportOutputBuilder(); - String action = Action.ConfigExport.toString() ; - String rpcName = Action.ConfigExport.name().toLowerCase(); - Status status = ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action); - if(null == status) { - try { - RequestHandlerInput request = new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers()).action(action).rpcName(rpcName).build(); - status = buildStatusWithDispatcherOutput(executeRequest(request)); - logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s", input.getActionIdentifiers(), status.getCode(), status.getMessage())); - } catch (ParseException e) { - status = buildParsingErrorStatus(e); - - LoggingUtils.logErrorMessage( - LoggingConstants.TargetNames.APPC_PROVIDER, - String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()), - this.getClass().getName()); - - } - } - outputBuilder.setCommonHeader(input.getCommonHeader()); - outputBuilder.setStatus(status); - RpcResult result = RpcResultBuilder. status(true).withResult(outputBuilder.build()).build(); - return Futures.immediateFuture(result); - } - - private String convertActionNameToUrl(String action) { - String regex = "([a-z])([A-Z]+)"; - String replacement = "$1-$2"; - return action.replaceAll(regex, replacement) - .toLowerCase(); - } - - -}