aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/openecomp/appc/executor/impl/CommandTaskFactory.java16
-rw-r--r--appc-dispatcher/appc-dispatcher-common/domain-model-lib/src/main/java/org/openecomp/appc/domainmodel/lcm/OperationType.java29
-rw-r--r--appc-dispatcher/appc-dispatcher-common/domain-model-lib/src/main/java/org/openecomp/appc/domainmodel/lcm/VNFOperation.java66
-rw-r--r--appc-dispatcher/appc-request-handler/appc-request-handler-core/src/main/java/org/openecomp/appc/requesthandler/conv/Converter.java10
-rw-r--r--appc-provider/appc-provider-bundle/src/main/java/org/openecomp/appc/provider/AppcProviderLcm.java70
-rw-r--r--appc-provider/appc-provider-model/src/main/yang/appc-provider-lcm.yang44
6 files changed, 192 insertions, 43 deletions
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/openecomp/appc/executor/impl/CommandTaskFactory.java b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/openecomp/appc/executor/impl/CommandTaskFactory.java
index c5590f961..5a7550cc4 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/openecomp/appc/executor/impl/CommandTaskFactory.java
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/openecomp/appc/executor/impl/CommandTaskFactory.java
@@ -70,15 +70,13 @@ public class CommandTaskFactory {
if(ActionLevel.VM.equals(actionLevel)){
return new LCMReadonlyCommandTask(runtimeContext,requestHandler,workflowManager);
}
- if (VNFOperation.Sync.toString().equals(action) ||
- VNFOperation.Audit.toString().equals(action) ||
- VNFOperation.ConfigBackup.toString().equals(action) ||
- VNFOperation.ConfigBackupDelete.toString().equals(action) ||
- VNFOperation.ConfigExport.toString().equals(action)){
- return new LCMReadonlyCommandTask(runtimeContext,requestHandler,workflowManager);
- }else {
- return new LCMCommandTask(runtimeContext,requestHandler,workflowManager,
- lifecyclemanager);
+ switch (runtimeContext.getRequestContext().getAction().getOperationType()){
+ case ReadOnly:
+ case OperationStatusUpdate:
+ return new LCMReadonlyCommandTask(runtimeContext,requestHandler,workflowManager);
+ default:
+ return new LCMCommandTask(runtimeContext,requestHandler,workflowManager,
+ lifecyclemanager);
}
}
diff --git a/appc-dispatcher/appc-dispatcher-common/domain-model-lib/src/main/java/org/openecomp/appc/domainmodel/lcm/OperationType.java b/appc-dispatcher/appc-dispatcher-common/domain-model-lib/src/main/java/org/openecomp/appc/domainmodel/lcm/OperationType.java
new file mode 100644
index 000000000..becca04b6
--- /dev/null
+++ b/appc-dispatcher/appc-dispatcher-common/domain-model-lib/src/main/java/org/openecomp/appc/domainmodel/lcm/OperationType.java
@@ -0,0 +1,29 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APPC
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Copyright (C) 2017 Amdocs
+ * =============================================================================
+ * 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.
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.appc.domainmodel.lcm;
+
+public enum OperationType {
+ ReadOnly,BuiltIn,OrchestrationStatusUpdate,OperationStatusUpdate
+}
diff --git a/appc-dispatcher/appc-dispatcher-common/domain-model-lib/src/main/java/org/openecomp/appc/domainmodel/lcm/VNFOperation.java b/appc-dispatcher/appc-dispatcher-common/domain-model-lib/src/main/java/org/openecomp/appc/domainmodel/lcm/VNFOperation.java
index 3cf0e2f6d..316b5acb7 100644
--- a/appc-dispatcher/appc-dispatcher-common/domain-model-lib/src/main/java/org/openecomp/appc/domainmodel/lcm/VNFOperation.java
+++ b/appc-dispatcher/appc-dispatcher-common/domain-model-lib/src/main/java/org/openecomp/appc/domainmodel/lcm/VNFOperation.java
@@ -25,35 +25,39 @@
package org.openecomp.appc.domainmodel.lcm;
public enum VNFOperation {
-
- Configure, Test, HealthCheck, Start, Terminate, Restart, Rebuild, Stop, ConfigModify,
- ConfigScaleOut,ConfigRestore,Backup, Snapshot,
- SoftwareUpload, LiveUpgrade, Rollback, Sync, Audit, Test_lic, Migrate, Evacuate,ConfigBackup,ConfigBackupDelete,ConfigExport,
- Lock(true), Unlock(true), CheckLock(true);
-
- private boolean builtIn;
-
- VNFOperation(boolean builtIn) {
- this.builtIn = builtIn;
- }
-
- VNFOperation() {
- this(false);
- }
-
- /**
- * Operations handled directly by the RequestHandler without further call to DG are built-in operations.
- */
- public boolean isBuiltIn() {
- return builtIn;
- }
-
- public static VNFOperation findByString(String operationName) {
- for(VNFOperation operation: VNFOperation.values()) {
- if(operation.name().equals(operationName)) {
- return operation;
- }
- }
- return null;
- }
+ Configure, Test, HealthCheck, Start, Terminate, Restart, Rebuild, Stop, ConfigModify,
+ ConfigScaleOut,ConfigRestore,Backup, Snapshot,
+ SoftwareUpload, LiveUpgrade, Rollback, Test_lic, Migrate, Evacuate,StopApplication, StartApplication,
+ Sync(OperationType.ReadOnly), Audit(OperationType.ReadOnly),
+ ConfigBackup(OperationType.ReadOnly),ConfigBackupDelete(OperationType.ReadOnly),ConfigExport(OperationType.ReadOnly),
+ Lock(OperationType.BuiltIn), Unlock(OperationType.BuiltIn), CheckLock(OperationType.BuiltIn);
+
+ private OperationType operationType;
+
+ VNFOperation(OperationType operationType){
+ this.operationType=operationType;
+ }
+
+ VNFOperation() {
+ this.operationType=OperationType.OrchestrationStatusUpdate;
+ }
+ /**
+ * Operations handled directly by the RequestHandler without further call to DG are built-in operations.
+ */
+ public boolean isBuiltIn() {
+ return this.operationType.equals(OperationType.BuiltIn);
+ }
+
+ public OperationType getOperationType() {
+ return operationType;
+ }
+
+ public static VNFOperation findByString(String operationName) {
+ for(VNFOperation operation: VNFOperation.values()) {
+ if(operation.name().equals(operationName)) {
+ return operation;
+ }
+ }
+ return null;
+ }
}
diff --git a/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/main/java/org/openecomp/appc/requesthandler/conv/Converter.java b/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/main/java/org/openecomp/appc/requesthandler/conv/Converter.java
index 48091d3f3..aaa9933ed 100644
--- a/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/main/java/org/openecomp/appc/requesthandler/conv/Converter.java
+++ b/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/main/java/org/openecomp/appc/requesthandler/conv/Converter.java
@@ -213,6 +213,16 @@ public class Converter {
((StartOutputBuilder)outObj).setCommonHeader(commonHeader);
((StartOutputBuilder)outObj).setStatus(status);
return outObj;
+ case StopApplication:
+ outObj = new StopApplicationOutputBuilder();
+ ((StopApplicationOutputBuilder)outObj).setCommonHeader(commonHeader);
+ ((StopApplicationOutputBuilder)outObj).setStatus(status);
+ return outObj;
+ case StartApplication:
+ outObj = new StartApplicationOutputBuilder();
+ ((StartApplicationOutputBuilder)outObj).setCommonHeader(commonHeader);
+ ((StartApplicationOutputBuilder)outObj).setStatus(status);
+ return outObj;
default:
throw new IllegalArgumentException(action+" action is not supported");
}
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
index 292496958..370ed5287 100644
--- 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
@@ -32,7 +32,6 @@ 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.Action;
import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.AppcProviderLcmService;
import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.AuditInput;
import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.AuditOutput;
@@ -109,8 +108,15 @@ import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.TestOutputB
import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.UnlockInput;
import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.UnlockOutput;
import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.UnlockOutputBuilder;
+import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.StartApplicationOutput;
+import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.StartApplicationOutputBuilder;
+import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.StartApplicationInput;
+import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.StopApplicationOutput;
+import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.StopApplicationOutputBuilder;
+import org.opendaylight.yang.gen.v1.org.openecomp.appc.lcm.rev160108.StopApplicationInput;
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.yang.gen.v1.org.openecomp.appc.lcm.rev160108.Action;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.openecomp.appc.Constants;
@@ -1115,6 +1121,68 @@ public class AppcProviderLcm implements AutoCloseable, AppcProviderLcmService {
RpcResult<ConfigExportOutput> result = RpcResultBuilder.<ConfigExportOutput> status(true).withResult(outputBuilder.build()).build();
return Futures.immediateFuture(result);
}
+ @Override
+ public Future<RpcResult<StartApplicationOutput>> startApplication(StartApplicationInput input) {
+ logger.debug("Input received : " + input.toString());
+
+ StartApplicationOutputBuilder outputBuilder = new StartApplicationOutputBuilder();
+ String action = Action.StartApplication.toString() ;
+ String rpcName = Action.StartApplication.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<StartApplicationOutput> result = RpcResultBuilder.<StartApplicationOutput> status(true).withResult(outputBuilder.build()).build();
+ return Futures.immediateFuture(result);
+ }
+ @Override
+ public Future<RpcResult<StopApplicationOutput>> stopApplication(StopApplicationInput input){
+ logger.debug("Input received : " + input.toString());
+ StopApplicationOutputBuilder outputBuilder = new StopApplicationOutputBuilder();
+ String action = Action.StopApplication.toString() ;
+ String rpcName = Action.StopApplication.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<StopApplicationOutput> result = RpcResultBuilder.<StopApplicationOutput> status(true).withResult(outputBuilder.build()).build();
+ return Futures.immediateFuture(result);
+ }
private String convertActionNameToUrl(String action) {
String regex = "([a-z])([A-Z]+)";
diff --git a/appc-provider/appc-provider-model/src/main/yang/appc-provider-lcm.yang b/appc-provider/appc-provider-model/src/main/yang/appc-provider-lcm.yang
index d72b551a8..d46ba8cb4 100644
--- a/appc-provider/appc-provider-model/src/main/yang/appc-provider-lcm.yang
+++ b/appc-provider/appc-provider-model/src/main/yang/appc-provider-lcm.yang
@@ -110,6 +110,8 @@ module appc-provider-lcm {
enum "ConfigBackup";
enum "ConfigBackupDelete";
enum "ConfigExport";
+ enum "StopApplication";
+ enum "StartApplication";
}
description "The action to be taken by APP-C, e.g. Restart, Rebuild, Migrate";
}
@@ -922,8 +924,46 @@ module appc-provider-lcm {
uses common-header;
uses status;
}
- }
-
+ }
+ rpc stop-application {
+ description "An operation to Stop Application traffic to a virtual network function";
+ input {
+ uses common-header;
+ leaf action {
+ type action;
+ mandatory true;
+ }
+ uses action-identifiers;
+ leaf payload {
+ type payload;
+ mandatory false;
+ }
+ }
+ output {
+ uses common-header;
+ uses status;
+ }
+ }
+
+ rpc start-application {
+ description "An operation to Start Application traffic to a virtual network function";
+ input {
+ uses common-header;
+ leaf action {
+ type action;
+ mandatory true;
+ }
+ uses action-identifiers;
+ leaf payload {
+ type payload;
+ mandatory false;
+ }
+ }
+ output {
+ uses common-header;
+ uses status;
+ }
+ }
/**********************************************************************************
* Additional RPCs added here...
**********************************************************************************/