Include impacted changes for APPC-346,APPC-348
Issue-ID: APPC-347
Change-Id: I399bc2a1e0dfd481e103032a373bb80fce5baf41
Signed-off-by: Anand <ac204h@att.com>
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-api/pom.xml b/appc-dispatcher/appc-command-executor/appc-command-executor-api/pom.xml
index d58c7bd..2dc3fdb 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-api/pom.xml
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-api/pom.xml
@@ -1,44 +1,64 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-command-executor</artifactId>
- <version>1.3.0-SNAPSHOT</version>
- </parent>
- <artifactId>appc-command-executor-api</artifactId>
- <packaging>bundle</packaging>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============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
- <name>appc-command-executor-api</name>
- <url>http://maven.apache.org</url>
+ http://www.apache.org/licenses/LICENSE-2.0
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
+ 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.
- <dependencies>
- <dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>execution-queue-management-lib</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>domain-model-lib</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-common</artifactId>
- <version>${project.version}</version>
- <scope>compile</scope>
- </dependency>
- <!--<dependency>-->
- <!--<groupId>org.apache.commons</groupId>-->
- <!--<artifactId>commons-lang3</artifactId>-->
- <!--<version>3.4</version>-->
- <!--<scope>provided</scope>-->
- <!--</dependency>-->
- </dependencies>
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ ============LICENSE_END=========================================================
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>appc-command-executor</artifactId>
+ <version>1.3.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>appc-command-executor-api</artifactId>
+ <packaging>bundle</packaging>
+ <name>APPC Command Executor - API</name>
+ <url>http://maven.apache.org</url>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>execution-queue-management-lib</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>domain-model-lib</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>appc-common</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
<build>
<plugins>
<plugin>
@@ -48,7 +68,9 @@
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
- <Export-Package>org.onap.appc.executor,org.onap.appc.executor.objects,org.onap.appc.executor.conv,org.onap.appc.executor.helper</Export-Package>
+ <Export-Package>
+ org.onap.appc.executor,org.onap.appc.executor.objects,org.onap.appc.executor.conv,org.onap.appc.executor.helper
+ </Export-Package>
<Embed-Dependency>
javax.json;scope=compile|runtime;inline=false
</Embed-Dependency>
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/CommandExecutor.java b/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/CommandExecutor.java
index d6935b8..635c7d2 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/CommandExecutor.java
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/CommandExecutor.java
@@ -28,8 +28,8 @@
package org.onap.appc.executor;
-import org.onap.appc.domainmodel.lcm.RuntimeContext;
import org.onap.appc.exceptions.APPCException;
+import org.onap.appc.executor.objects.CommandExecutorInput;
@@ -40,5 +40,5 @@
* @param commandHeaderInput Contains CommandHeader, command , target Id , payload and conf ID (optional)
* @throws APPCException in case of error.
*/
- void executeCommand(RuntimeContext commandHeaderInput) throws APPCException;
+ void executeCommand(CommandExecutorInput commandHeaderInput) throws APPCException;
}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/UnstableVNFException.java b/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/UnstableVNFException.java
deleted file mode 100644
index 634bd0f..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/UnstableVNFException.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*-
- * ============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.onap.appc.executor;
-
-
-public class UnstableVNFException extends Exception{
- public UnstableVNFException(String message){
- super(message);
- }
-}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/conv/Converter.java b/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/conv/Converter.java
deleted file mode 100644
index 3cfc7ec..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/conv/Converter.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*-
- * ============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.onap.appc.executor.conv;
-
-import java.io.IOException;
-
-import org.onap.appc.executor.objects.Params;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-
-public class Converter {
-
- public static Params convJsonStringToParams(String inObj) throws IOException {
- Params outObj = null;
- if(inObj != null) {
- outObj = new ObjectMapper().readValue(inObj, Params.class);
- }
- return outObj;
- }
-
- public static String convParamsToJsonString(Params inObj) throws JsonProcessingException {
- String outObj = null;
- if(inObj != null) {
- outObj = new ObjectMapper().writeValueAsString(inObj);
- }
- return outObj;
- }
-}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/objects/CommandResponse.java b/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/objects/CommandExecutorInput.java
similarity index 74%
rename from appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/objects/CommandResponse.java
rename to appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/objects/CommandExecutorInput.java
index 4e7b9b1..7cd79ba 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/objects/CommandResponse.java
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/objects/CommandExecutorInput.java
@@ -26,17 +26,32 @@
import org.onap.appc.domainmodel.lcm.RuntimeContext;
+public class CommandExecutorInput {
+ private RuntimeContext runtimeContext ;
+ private int ttl;
-public class CommandResponse {
-
- private final RuntimeContext runtimeContext;
-
- public CommandResponse(RuntimeContext runtimeContext) {
- super();
- this.runtimeContext = runtimeContext;
- }
public RuntimeContext getRuntimeContext() {
return runtimeContext;
}
+
+ public void setRuntimeContext(RuntimeContext runtimeContext) {
+ this.runtimeContext = runtimeContext;
+ }
+
+ public int getTtl() {
+ return ttl;
+ }
+
+ public void setTtl(int ttl) {
+ this.ttl = ttl;
+ }
+
+ @Override
+ public String toString() {
+ return "CommandExecutorInput{" +
+ "runtimeContext=" + runtimeContext +
+ ", ttl=" + ttl +
+ '}';
+ }
}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/objects/LCMCommandStatus.java b/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/objects/LCMCommandStatus.java
index 849b5b0..b9430cc 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/objects/LCMCommandStatus.java
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/objects/LCMCommandStatus.java
@@ -24,97 +24,91 @@
package org.onap.appc.executor.objects;
-
-import org.onap.appc.domainmodel.lcm.Status;
import org.onap.appc.util.MessageFormatter;
import java.util.Map;
public enum LCMCommandStatus {
- ACCEPTED(100,"ACCEPTED - request accepted"),
+ ACCEPTED(100, "ACCEPTED - request accepted"),
//ERROR(2xx) - request can't be handled due to some technical error
- UNEXPECTED_ERROR(200,"UNEXPECTED ERROR - ${errorMsg}"),
+ UNEXPECTED_ERROR(200, "UNEXPECTED ERROR - ${errorMsg}"),
- //REJECT(3xx) - request has been rejected due to some business reason (e.g. no such service-instance-id, command is not supported, etc)
- REJECTED(300,"REJECTED - ${errorMsg}"),
- INVALID_INPUT_PARAMETER(301,"INVALID INPUT PARAMETER - ${errorMsg}"),// TODO 77777777 to support "${paramName} with invalid value ${paramValue}"
- MISSING_MANDATORY_PARAMETER(302,"MISSING MANDATORY PARAMETER - Parameter/s ${paramName} is/are missing" ),
- REQUEST_PARSING_FAILED(303,"REQUEST PARSING FAILED - ${errorMsg}"),
- NO_TRANSITION_DEFINE(304,"ACTION IS NOT ALLOWED - Action ${actionName} is not allowed for VNF in state ${currentState}"),
- INVALID_VNF_STATE(305,"Request rejected because VNF status in A&AI is - ${currentState}" ),
- VNF_NOT_FOUND(306,"VNF NOT FOUND - VNF with ID ${vnfId} was not found" ),
- DG_WORKFLOW_NOT_FOUND(307,"DG WORKFLOW NOT FOUND - No DG workflow found for the combination of ${dgModule} module ${dgName} name and ${dgVersion} version"),//TODO need to support it
- WORKFLOW_NOT_FOUND(308,"WORKFLOW NOT FOUND - No workflow found for VNF type ${vnfTypeVersion} and ${actionName} action"),
- UNSTABLE_VNF(309,"UNSTABLE VNF - VNF ${vnfId} is not stable to accept the command"),
- LOCKING_FAILURE(310,"LOCKING FAILURE - ${errorMsg}" ),
- EXPIRED_REQUEST(311,"EXPIRED REQUEST"),
- DUPLICATE_REQUEST(312,"DUPLICATE REQUEST"),
- MISSING_VNF_DATA_IN_AAI(313,"MISSING VNF DATA IN A&AI - ${attributeName} not found for VNF ID = ${vnfId}"),
+ //REJECT(3xx) - request has been rejected due to some business reason
+ // (e.g. no such service-instance-id, command is not supported, etc)
+ REJECTED(300, "REJECTED - ${errorMsg}"),
+ /*
+ * TODO: Change responseMessage from "INVALID INPUT PARAMETER" to "INVALID INPUT PARAMETER(S)" tracked ATTAPPC-4863
+ *
+ * With consideration of updating integration test case effort, "INVALID INPUT PARAMETER" is used while the task
+ * ATTAPPC-4863 is tracking the need of this change when resource is available.
+ *
+ * However, when pushing this file to ONAP, responseMessage should be changed to "INVALID INPUT PARAMETER(S)",
+ * and this comments should be removed.
+ */
+ // TODO 77777777 to support "${paramName} with invalid value ${paramValue}"
+ INVALID_INPUT_PARAMETER(301, "INVALID INPUT PARAMETER - ${errorMsg}"),
+ MISSING_MANDATORY_PARAMETER(302, "MISSING MANDATORY PARAMETER - Parameter/s ${paramName} is/are missing" ),
+ REQUEST_PARSING_FAILED(303, "REQUEST PARSING FAILED - ${errorMsg}"),
+ VNF_NOT_FOUND(306, "VNF NOT FOUND - VNF with ID ${vnfId} was not found" ),
+ DG_WORKFLOW_NOT_FOUND(307, "DG WORKFLOW NOT FOUND - No DG workflow found for the combination of ${dgModule} module ${dgName} name and ${dgVersion} version"),//TODO need to support it
+ WORKFLOW_NOT_FOUND(308, "WORKFLOW NOT FOUND - No workflow found for VNF type ${vnfTypeVersion} and ${actionName} action"),
+ EXPIRED_REQUEST(311, "EXPIRED REQUEST"),
+ DUPLICATE_REQUEST(312, "DUPLICATE REQUEST"),
+ MISSING_VNF_DATA_IN_AAI(313, "MISSING VNF DATA IN A&AI - ${attributeName} not found for VNF ID = ${vnfId}"),
+ VSERVER_NOT_FOUND(314, "VSERVER NOT FOUND - vserver with ID ${id} was not found"),
+ MULTIPLE_REQUESTS_FOUND(315, "MULTIPLE REQUESTS FOUND - using search criteria: ${parameters}"),
+ POLICY_VALIDATION_FAILURE(316,"POLICY VALIDATION FAILURE - ${errorMsg}"),
+ EXLCUSIVE_REQUEST_IN_PROGRESS(317,"EXCLUSIVE REQUEST IN PROGRESS - ${errorMsg}"),
+ LOCKED_VNF_ID(318,"${errorMsg}"),
- SUCCESS(400,"SUCCESS - request has been processed successfully"),
+ SUCCESS(400, "SUCCESS - request has been processed successfully"),
+
+ //ERROR(4xx) - failure for Async response
+ DG_FAILURE(401, "DG FAILURE - ${errorMsg}"),
+ EXPIRED_REQUEST_FAILURE(404, "EXPIRED REQUEST FAILURE - failed after accepted because TTL expired");
+ //ERROR(5xx) - failure for Intermediate response
// FAILURE(5xx) - request processing results with failure. The FAILURE response is always transmitted asynchronously, via DMaaP.
- DG_FAILURE(401,"DG FAILURE - ${errorMsg}"),
- NO_TRANSITION_DEFINE_FAILURE(402,"NO TRANSITION DEFINE - No Transition Defined for ${actionName} action and ${currentState} state"),
- UPDATE_AAI_FAILURE(403,"UPDATE_AAI_FAILURE - failed to update AAI. ${errorMsg}"),
- EXPIRED_REQUEST_FAILURE(404,"EXPIRED REQUEST FAILURE - failed after accepted because TTL expired"),
- UNEXPECTED_FAILURE(405,"UNEXPECTED FAILURE - ${errorMsg}"),
- UNSTABLE_VNF_FAILURE(406,"UNSTABLE VNF FAILURE - VNF ${vnfId} is not stable to accept the command"),
-
- ;
-
public static final String errorDgMessageParamName = "errorDgMessage";
- private int responseCode;
- private String responseMessage;
-
-
+ private int responseCode;
+ private String responseMessage;
LCMCommandStatus(int responseCode, String responseMessage) {
this.responseCode = responseCode;
this.responseMessage = responseMessage;
- }
+ }
public String getResponseMessage() {
- return responseMessage;
- }
+ return responseMessage;
+ }
- public int getResponseCode() {
- return responseCode;
- }
+ public int getResponseCode() {
+ return responseCode;
+ }
-
- /**
- *
- * @return messageTemplate
+ /**
+ * @return messageTemplate
*/
+ public String getFormattedMessage(Params params) {
+ Map<String, Object> paramsMap = params != null ? params.getParams() : null;
+ return MessageFormatter.format(getResponseMessage(), paramsMap);
+ }
-
- public String getFormattedMessage(Params params){
- Map<String,Object> paramsMap = params != null ? params.getParams() : null;
- return MessageFormatter.format(getResponseMessage(),paramsMap);
-
- }
-
- public String getFormattedMessageWithCode(Params params){
- return getResponseCode()+"-" + getFormattedMessage(params);
+ public String getFormattedMessageWithCode(Params params) {
+ return getResponseCode() + "-" + getFormattedMessage(params);
}
@Override
public String toString() {
return "LCMCommandStatus{" +
- "responseCode=" + responseCode +
- ", responseMessage='" + responseMessage + '\'' +
- '}';
- }
-
- public Status toStatus(Params params) {
- return new Status(responseCode, getFormattedMessage(params));
+ "responseCode=" + responseCode +
+ ", responseMessage='" + responseMessage + '\'' +
+ '}';
}
}
-
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/objects/UniqueRequestIdentifier.java b/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/objects/UniqueRequestIdentifier.java
deleted file mode 100644
index b2f2a1d..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-api/src/main/java/org/onap/appc/executor/objects/UniqueRequestIdentifier.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*-
- * ============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.onap.appc.executor.objects;
-
-
-import org.apache.commons.lang3.StringUtils;
-
-
-public class UniqueRequestIdentifier {
- private static final String IDENTIFIER_DELIMITER = "@";
-
- private String originatorID;
- private String requestID;
- private String subRequestID;
-
- private UniqueRequestIdentifier(){
-
- }
- public UniqueRequestIdentifier(String originatorID,
- String requestID,
- String subRequestID) {
- this();
- this.originatorID = originatorID;
- this.requestID = requestID;
- this.subRequestID = subRequestID;
- }
-
- public String toIdentifierString(){
- StringBuilder stringBuilder = new StringBuilder();
- if(originatorID != null){
- stringBuilder.append(originatorID);
- }
- stringBuilder.append(IDENTIFIER_DELIMITER);
-
- if(requestID != null){
- stringBuilder.append(requestID);
- }
- stringBuilder.append(IDENTIFIER_DELIMITER);
-
- if(subRequestID != null){
- stringBuilder.append(subRequestID);
- }
- return stringBuilder.toString();
- }
-
- public static UniqueRequestIdentifier getUniqueRequestIdentifier(String identifierString){
- String[] splitIdentifier = identifierString.split(IDENTIFIER_DELIMITER);
- if(splitIdentifier == null || splitIdentifier.length <2){
- throw new IllegalArgumentException("input identifierString is not valid "+identifierString);
- }
- String originatorID = splitIdentifier[0];
- String requestID = StringUtils.isEmpty(splitIdentifier[1])? null :splitIdentifier[1];
- String subRequestID = splitIdentifier.length>=3 ? splitIdentifier[2] : null;
- return new UniqueRequestIdentifier(originatorID,requestID,subRequestID);
- }
- public String toString(){
- return "originatorID = " + originatorID +
- " , requestID = " + requestID +
- " , subRequestID = " + subRequestID;
- }
- @Override
- public boolean equals(Object obj){
- if(obj ==null){
- return false;
- }
- if(!(obj instanceof UniqueRequestIdentifier)){
- return false;
- }
- UniqueRequestIdentifier identifier = (UniqueRequestIdentifier)obj;
- if(this.originatorID == null){
- if(identifier.originatorID !=null)
- return false;
- }
- else if(!this.originatorID.equals(identifier.originatorID))
- return false;
-
- if(this.requestID == null){
- if(identifier.requestID !=null)
- return false;
- }
- else if(!this.requestID.equals(identifier.requestID))
- return false;
-
- if(this.subRequestID == null){
- if(identifier.subRequestID !=null)
- return false;
- }
- else if(!this.subRequestID.equals(identifier.subRequestID))
- return false;
-
- return true;
- }
- @Override
- public int hashCode(){
- final int prime = 31;
- int result = 1;
- result = result * prime + (this.originatorID == null ? 0 :this.originatorID.hashCode());
- result = result * prime + (this.requestID == null ? 0 :this.requestID.hashCode());
- result = result * prime + (this.subRequestID == null ? 0 :this.subRequestID.hashCode());
- return result;
- }
-
-
-}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/pom.xml b/appc-dispatcher/appc-command-executor/appc-command-executor-core/pom.xml
index a0ebe9d..4c4f406 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/pom.xml
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-core/pom.xml
@@ -1,65 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<!--
+ ============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
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You 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
+ 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.
- 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=========================================================
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-command-executor</artifactId>
- <version>1.3.0-SNAPSHOT</version>
- </parent>
+ <parent>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>appc-command-executor</artifactId>
+ <version>1.3.0-SNAPSHOT</version>
+ </parent>
+
<artifactId>appc-command-executor-core</artifactId>
<packaging>bundle</packaging>
-
- <name>appc-command-executor-core Bundle</name>
+ <name>APPC Command Executor - Core</name>
<description>appc-command-executor-core OSGi bundle project.</description>
<dependencies>
<dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-common</artifactId>
- <version>${project.version}</version>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>appc-common</artifactId>
+ <version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-command-executor-api</artifactId>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>appc-command-executor-api</artifactId>
</dependency>
<dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-workflow-management-api</artifactId>
- <version>${project.version}</version>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>appc-workflow-management-api</artifactId>
+ <version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-request-handler-api</artifactId>
- <version>${project.version}</version>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>appc-request-handler-api</artifactId>
+ <version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>execution-queue-management-lib</artifactId>
- <version>${project.version}</version>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>execution-queue-management-lib</artifactId>
+ <version>${project.version}</version>
</dependency>
- <dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-data-access-lib</artifactId>
- <version>${project.version}</version>
+ <dependency>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>appc-data-access-lib</artifactId>
+ <version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.onap.appc</groupId>
@@ -91,7 +97,8 @@
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
- <Embed-Dependency>eelf-core,logback-core,logback-classic;scope=compile|runtime;inline=false</Embed-Dependency>
+ <Embed-Dependency>eelf-core,logback-core,logback-classic;scope=compile|runtime;inline=false
+ </Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
<Export-Service>org.onap.appc.executor.CommandExecutor</Export-Service>
<Import-Package>
@@ -107,12 +114,12 @@
</build>
<dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-command-executor-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>appc-command-executor-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
</dependencyManagement>
</project>
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommandExecutorImpl.java b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommandExecutorImpl.java
index d23a3fd..3ee89f1 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommandExecutorImpl.java
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommandExecutorImpl.java
@@ -22,128 +22,87 @@
* ============LICENSE_END=========================================================
*/
-/**
- *
- */
package org.onap.appc.executor.impl;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import org.apache.commons.lang.ObjectUtils;
-import org.onap.appc.domainmodel.lcm.RuntimeContext;
import org.onap.appc.exceptions.APPCException;
import org.onap.appc.executionqueue.ExecutionQueueService;
import org.onap.appc.executor.CommandExecutor;
+import org.onap.appc.executor.impl.objects.CommandRequest;
+import org.onap.appc.executor.objects.CommandExecutorInput;
+import org.onap.appc.requesthandler.RequestHandler;
+import org.onap.appc.workflow.WorkFlowManager;
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
+import java.util.Date;
import java.util.concurrent.TimeUnit;
public class CommandExecutorImpl implements CommandExecutor {
- private CommandTaskFactory executionTaskFactory;
- private static final EELFLogger logger = EELFManager.getInstance().getLogger(CommandExecutorImpl.class);
+ private final EELFLogger logger = EELFManager.getInstance().getLogger(CommandExecutorImpl.class);
private ExecutionQueueService executionQueueService;
- private ExpiredMessageHandler expiredMessageHandler;
-
- public CommandExecutorImpl() {
-
- }
+ private RequestHandler requestHandler;
+ private WorkFlowManager workflowManager;
/**
- * Injected by blueprint
- *
- * @param executionQueueService
+ * Initialization.
+ * <p>Used through blueprint.
*/
+ public void initialize() {
+ logger.info("initialization started of CommandExecutorImpl");
+ }
+
public void setExecutionQueueService(ExecutionQueueService executionQueueService) {
this.executionQueueService = executionQueueService;
}
- /**
- * Injected by blueprint
- * @param expiredMessageHandler
- */
- public void setExpiredMessageHandler(ExpiredMessageHandler expiredMessageHandler) {
- this.expiredMessageHandler = expiredMessageHandler;
+ public void setWorkflowManager(WorkFlowManager workflowManager) {
+ this.workflowManager = workflowManager;
}
- public void initialize() {
- logger.info("initialization started of CommandExecutorImpl");
- executionQueueService.registerMessageExpirationListener(expiredMessageHandler);
+ public void setRequestHandler(RequestHandler requestHandler) {
+ this.requestHandler = requestHandler;
}
- public void setExecutionTaskFactory(CommandTaskFactory executionTaskFactory) {
- this.executionTaskFactory = executionTaskFactory;
- }
/**
* Execute given command
* Create command request and enqueue it for execution.
- *
* @param commandExecutorInput Contains CommandHeader, command , target Id , payload and conf ID (optional)
* @throws APPCException in case of error.
*/
@Override
- public void executeCommand(RuntimeContext commandExecutorInput) throws APPCException {
+ public void executeCommand (CommandExecutorInput commandExecutorInput) throws APPCException{
if (logger.isTraceEnabled()) {
- logger.trace("Entering to executeCommand with CommandExecutorInput = " + ObjectUtils.toString(commandExecutorInput));
+ logger.trace("Entering to executeCommand with CommandExecutorInput = "+ ObjectUtils.toString(commandExecutorInput));
}
- enqueRequest(commandExecutorInput);
+ CommandTask commandTask;
+ try {
+ commandTask= new CommandTask(requestHandler,workflowManager);
+ commandTask.setCommandRequest(new CommandRequest(commandExecutorInput));
+ long remainingTTL = getRemainingTTL(commandTask.getCommandRequest());
+ if (logger.isTraceEnabled()) {
+ logger.trace("Queuing request with CommandRequest = "+ ObjectUtils.toString(commandTask.getCommandRequest()));
+ }
+ executionQueueService.putMessage(commandTask,remainingTTL, TimeUnit.MILLISECONDS);
+ } catch (Exception e) {
+ logger.error("Exception: "+e.getMessage());
+ throw new APPCException(e);
+ }
+
if (logger.isTraceEnabled()) {
logger.trace("Exiting from executeCommand");
}
}
- private RuntimeContext getCommandRequest(RuntimeContext commandExecutorInput) {
- if (logger.isTraceEnabled()) {
- logger.trace("Entering to getCommandRequest with CommandExecutorInput = " + ObjectUtils.toString(commandExecutorInput));
- }
- RuntimeContext commandRequest;
- commandRequest = commandExecutorInput;
- if (logger.isTraceEnabled()) {
- logger.trace("Exiting from getCommandRequest with (CommandRequest = " + ObjectUtils.toString(commandRequest) + ")");
- }
- return commandRequest;
+ private long getRemainingTTL(CommandRequest request) {
+ Date requestTimestamp = request.getCommandExecutorInput().getRuntimeContext().getRequestContext().getCommonHeader().getTimeStamp();
+ int ttl = request.getCommandExecutorInput().getRuntimeContext().getRequestContext().getCommonHeader().getFlags().getTtl();
+ return ttl*1000 + requestTimestamp.getTime() - System.currentTimeMillis();
}
- @SuppressWarnings("unchecked")
- private void enqueRequest(RuntimeContext request) throws APPCException {
- if (logger.isTraceEnabled()) {
- logger.trace("Entering to enqueRequest with CommandRequest = " + ObjectUtils.toString(request));
- }
- try {
- CommandTask commandTask = executionTaskFactory.getExecutionTask(request);
-
- long remainingTTL = getRemainingTTL(request);
-
- executionQueueService.putMessage(commandTask, remainingTTL, TimeUnit.MILLISECONDS);
- } catch (Exception e) {
- logger.error("Exception: " + e.getMessage());
- throw new APPCException(e);
- }
-
- if (logger.isTraceEnabled()) {
- logger.trace("Exiting from enqueRequest");
- }
- }
-
- private long getRemainingTTL(RuntimeContext request) {
- Instant requestTimestamp = request.getRequestContext().getCommonHeader().getTimeStamp();
- int ttl = request.getRequestContext().getCommonHeader().getFlags().getTtl();
- return ChronoUnit.MILLIS.between(Instant.now(), requestTimestamp.plusSeconds(ttl));
- }
-
- private CommandTask getMessageExecutor(RuntimeContext request) {
- if (logger.isTraceEnabled()) {
- logger.trace("Entering to getMessageExecutor with command = " + request);
- }
- CommandTask executionTask = executionTaskFactory.getExecutionTask(request);
- if (logger.isTraceEnabled()) {
- logger.trace("Exiting from getMessageExecutor");
- }
- return executionTask;
- }
}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommandTask.java b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommandTask.java
index ca86657..4a82ca6 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommandTask.java
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommandTask.java
@@ -24,59 +24,174 @@
package org.onap.appc.executor.impl;
-import org.onap.appc.executor.objects.CommandResponse;
+import org.onap.appc.domainmodel.lcm.Status;
+import org.onap.appc.domainmodel.lcm.VNFOperation;
+import org.onap.appc.executor.impl.objects.CommandRequest;
+import org.onap.appc.logging.LoggingConstants;
import org.onap.appc.requesthandler.RequestHandler;
import org.onap.appc.domainmodel.lcm.RuntimeContext;
import org.onap.appc.workflow.WorkFlowManager;
import org.onap.appc.workflow.objects.WorkflowRequest;
-import org.onap.appc.workflow.objects.WorkflowResponse;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
+import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
+import org.onap.ccsdk.sli.core.sli.SvcLogicResource;
+import org.onap.ccsdk.sli.adaptors.aai.AAIService;
+import org.onap.ccsdk.sli.adaptors.aai.AAIServiceException;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+import org.slf4j.MDC;
+
+import java.net.InetAddress;
+
+import static com.att.eelf.configuration.Configuration.*;
+import static com.att.eelf.configuration.Configuration.MDC_SERVICE_INSTANCE_ID;
+import static com.att.eelf.configuration.Configuration.MDC_SERVICE_NAME;
/**
* This abstract class is base class for all Command tasks. All command task must inherit this class.
*/
-public abstract class CommandTask implements Runnable {
+public class CommandTask implements Runnable {
- protected final RequestHandler requestHandler;
- protected final WorkFlowManager workflowManager;
- protected final RuntimeContext commandRequest;
+ private RequestHandler requestHandler;
+ private WorkFlowManager workflowManager;
+ private CommandRequest commandRequest;
+ private AAIService aaiService;
- protected CommandTask(RuntimeContext commandRequest, RequestHandler requestHandler,
- WorkFlowManager workflowManager) {
- super();
+
+ public CommandRequest getCommandRequest() {
+ return commandRequest;
+ }
+
+ public void setCommandRequest(CommandRequest commandRequest) {
this.commandRequest = commandRequest;
- this.requestHandler = requestHandler;
+ }
+
+ private final EELFLogger logger = EELFManager.getInstance().getLogger(CommandTask.class);
+
+ public void setWorkflowManager(WorkFlowManager workflowManager) {
this.workflowManager = workflowManager;
}
- private static final EELFLogger logger = EELFManager.getInstance().getLogger(CommandTask.class);
-
- public void onRequestCompletion(CommandResponse response, boolean isAAIUpdated) {
- logger.debug("Entry: onRequestCompletion()");
- requestHandler.onRequestExecutionEnd(commandRequest, isAAIUpdated);
+ public void setRequestHandler(RequestHandler requestHandler) {
+ this.requestHandler = requestHandler;
}
- public abstract void onRequestCompletion(CommandResponse response);
+ public CommandTask(RequestHandler requestHandler,
+ WorkFlowManager workflowManager){
+ this.requestHandler = requestHandler;
+ this.workflowManager = workflowManager;
+ getAAIservice();
+ }
- protected CommandResponse buildCommandResponse(WorkflowResponse response) {
+ private void getAAIservice() {
+ BundleContext bctx = FrameworkUtil.getBundle(AAIService.class).getBundleContext();
+ // Get AAIadapter reference
+ ServiceReference sref = bctx.getServiceReference(AAIService.class.getName());
+ if (sref != null) {
+ logger.info("AAIService from bundlecontext");
+ aaiService = (AAIService) bctx.getService(sref);
+ } else {
+ logger.info("AAIService error from bundlecontext");
+ logger.warn("Cannot find service reference for org.onap.ccsdk.sli.adaptors.aai.AAIService");
- return new CommandResponse(commandRequest);
+ }
}
- public void execute() {
- final RuntimeContext runtimeContext = commandRequest;
+ @Override
+ public void run() {
+ logger.debug("Starting execution of command :"+ commandRequest);
+ setInitialLogProperties(commandRequest);
+ final RuntimeContext runtimeContext = commandRequest.getCommandExecutorInput().getRuntimeContext();
+
+
WorkflowRequest workflowRequest = new WorkflowRequest();
workflowRequest.setRequestContext(runtimeContext.getRequestContext());
workflowRequest.setResponseContext(runtimeContext.getResponseContext());
workflowRequest.setVnfContext(runtimeContext.getVnfContext());
-
- WorkflowResponse response = workflowManager.executeWorkflow(workflowRequest);
-
- CommandResponse commandResponse = buildCommandResponse(response);
- this.onRequestCompletion(commandResponse);
+ logger.debug("Executing workflow :"+ workflowRequest);
+ workflowManager.executeWorkflow(workflowRequest);
+ logger.debug("Completed execution workflow with response:"+ commandRequest.getCommandExecutorInput().getRuntimeContext().getResponseContext());
+ try {
+ if (VNFOperation.Terminate == commandRequest.getCommandExecutorInput().getRuntimeContext().getRequestContext().getAction())
+ updateAAIForTerminate(commandRequest);
+ } catch (AAIServiceException e) {
+ logger.error("Exception = " + e);
+ // In case of any errors we are updating the response status code and message
+ Status updatedStatus = new Status();
+ updatedStatus.setCode(401);
+ updatedStatus.setMessage("Failed to update VNF status in A&AI");
+ commandRequest.getCommandExecutorInput().getRuntimeContext().getResponseContext().setStatus(updatedStatus);
+ throw new RuntimeException(e);
+ }finally {
+ requestHandler.onRequestExecutionEnd(commandRequest.getCommandExecutorInput().getRuntimeContext());
+ clearRequestLogProperties();
+ }
}
+ private void updateAAIForTerminate(CommandRequest commandRequest) throws AAIServiceException {
+ final int statusCode = commandRequest.getCommandExecutorInput().getRuntimeContext().getResponseContext().getStatus().getCode();
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Workflow Execution Status = "+ statusCode);
+ }
+ if (statusCode == 100 || statusCode == 400) {
+ SvcLogicContext ctx = new SvcLogicContext();
+ ctx = getVnfdata(commandRequest.getCommandExecutorInput().getRuntimeContext().getVnfContext().getId(), "vnf", ctx);
+ aaiService.deleteGenericVnfData(commandRequest.getCommandExecutorInput().getRuntimeContext().getVnfContext().getId(), ctx.getAttribute("vnf.resource-version"));
+
+ }
+ }
+
+ private SvcLogicContext getVnfdata(String vnf_id, String prefix,SvcLogicContext ctx) {
+ String key="generic-vnf.vnf-id = '"+ vnf_id+"'"+" AND http-header.Real-Time = 'true'";
+ logger.debug("inside getVnfdata=== "+key);
+ try {
+ SvcLogicResource.QueryStatus response = aaiService.query("generic-vnf", false, null, key,prefix, null, ctx);
+ if(SvcLogicResource.QueryStatus.NOT_FOUND.equals(response)){
+ logger.warn("VNF " + vnf_id + " not found while updating A&AI");
+ throw new RuntimeException("VNF not found for vnf_id = "+ vnf_id);
+ }
+ else if(SvcLogicResource.QueryStatus.FAILURE.equals(response)){
+ throw new RuntimeException("Error Querying AAI with vnfID = " +vnf_id);
+ }
+ logger.info("AAIResponse: " + response.toString());
+ } catch (SvcLogicException e) {
+ logger.error("Error in getVnfdata "+ e);
+ throw new RuntimeException(e);
+ }
+ return ctx;
+ }
+
+
+ private void setInitialLogProperties(CommandRequest request) {
+ MDC.put(MDC_KEY_REQUEST_ID, request.getCommandExecutorInput().getRuntimeContext().getRequestContext().getCommonHeader().getRequestId());
+ if (request.getCommandExecutorInput().getRuntimeContext().getRequestContext().getActionIdentifiers().getServiceInstanceId() != null)
+ MDC.put(MDC_SERVICE_INSTANCE_ID, request.getCommandExecutorInput().getRuntimeContext().getRequestContext().getActionIdentifiers().getServiceInstanceId());
+ MDC.put(LoggingConstants.MDCKeys.PARTNER_NAME, request.getCommandExecutorInput().getRuntimeContext().getRequestContext().getCommonHeader().getOriginatorId());
+ MDC.put(MDC_SERVICE_NAME, request.getCommandExecutorInput().getRuntimeContext().getRequestContext().getAction().name());
+ try {
+ MDC.put(MDC_SERVER_FQDN, InetAddress.getLocalHost().getCanonicalHostName());
+ MDC.put(MDC_SERVER_IP_ADDRESS, InetAddress.getLocalHost().getHostAddress());
+ } catch (Exception e) {
+ logger.error(e.getMessage(),e);
+ }
+ MDC.put(MDC_INSTANCE_UUID, ""); // make instanse_UUID generation once during APPC-instanse deploying
+ }
+
+ private void clearRequestLogProperties()
+ {
+ try {
+ MDC.remove(MDC_KEY_REQUEST_ID);
+ MDC.remove(MDC_SERVICE_INSTANCE_ID);
+ MDC.remove(MDC_SERVICE_NAME);
+ MDC.remove(LoggingConstants.MDCKeys.PARTNER_NAME);
+ } catch (Exception e) {
+ logger.error(e.getMessage(),e);
+ }
+ }
}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommandTaskFactory.java b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommandTaskFactory.java
deleted file mode 100644
index ac75e62..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommandTaskFactory.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*-
- * ============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.onap.appc.executor.impl;
-
-
-import org.onap.appc.domainmodel.lcm.ActionLevel;
-import org.onap.appc.domainmodel.lcm.RuntimeContext;
-import org.onap.appc.lifecyclemanager.LifecycleManager;
-import org.onap.appc.requesthandler.RequestHandler;
-import org.onap.appc.workflow.WorkFlowManager;
-
-
-
-
-public class CommandTaskFactory {
-
-// private LCMCommandTask lcmCommandTask;
-// private LCMReadonlyCommandTask LCMReadonlyCommandTask;
-
- private RequestHandler vnfRequestHandler;
- private RequestHandler vmRequestHandler;
- private WorkFlowManager workflowManager;
- private LifecycleManager lifecyclemanager;
-
-
- public void setWorkflowManager(WorkFlowManager workflowManager) {
- this.workflowManager = workflowManager;
- }
-
- public void setVnfRequestHandler(RequestHandler vnfRequestHandler) {
- this.vnfRequestHandler = vnfRequestHandler;
- }
-
- public void setVmRequestHandler(RequestHandler vmRequestHandler) {
- this.vmRequestHandler = vmRequestHandler;
- }
-
- public void setLifecyclemanager(LifecycleManager lifecyclemanager) {
- this.lifecyclemanager = lifecyclemanager;
- }
-
-
- public synchronized CommandTask getExecutionTask(RuntimeContext runtimeContext){
- String action = runtimeContext.getRequestContext().getAction().name();
- ActionLevel actionLevel = runtimeContext.getRequestContext().getActionLevel();
- RequestHandler requestHandler = readRequestHandler(actionLevel);
- if(ActionLevel.VM.equals(actionLevel)){
- return new LCMReadonlyCommandTask(runtimeContext,requestHandler,workflowManager);
- }
- switch (runtimeContext.getRequestContext().getAction().getOperationType()){
- case ReadOnly:
- case OperationStatusUpdate:
- return new LCMReadonlyCommandTask(runtimeContext,requestHandler,workflowManager);
- default:
- return new LCMCommandTask(runtimeContext,requestHandler,workflowManager,
- lifecyclemanager);
- }
- }
-
- private RequestHandler readRequestHandler(ActionLevel actionLevel) {
- if (ActionLevel.VM.equals(actionLevel)) {
- return vmRequestHandler;
- }
- return vnfRequestHandler;
- }
-
-}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommonMethods.java b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommonMethods.java
deleted file mode 100644
index a032f37..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/CommonMethods.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*-
- * ============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.onap.appc.executor.impl;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.HashMap;
-
-
-class CommonMethods {
-
- private static final HashMap m = new HashMap();
-
- static {
- m.put(34, """); // < - less-than
- m.put(60, "<"); // < - less-than
- m.put(62, ">"); // > - greater-than
- m.put(38, "&"); // & - Ampersand
- }
-
- static String escapeHtml(String source) {
- try {
- StringWriter writer = new StringWriter((int) (source.length() * 1.5));
- escape(writer, source);
- return writer.toString();
- } catch (IOException ioe) {
- ioe.printStackTrace();
- return null;
- }
- }
-
- private static void escape(Writer writer, String str) throws IOException {
- int len = str.length();
- for (int i = 0; i < len; i++) {
- char c = str.charAt(i);
- int ascii = (int) c;
- String entityName = (String) m.get(ascii);
- if (entityName == null) {
- if (c > 0x7F) {
- writer.write("&#");
- writer.write(Integer.toString(c, 10));
- writer.write(';');
- } else {
- writer.write(c);
- }
- } else {
- writer.write(entityName);
- }
- }
- }
-
-}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/ExpiredMessageHandler.java b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/ExpiredMessageHandler.java
deleted file mode 100644
index bd57732..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/ExpiredMessageHandler.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*-
- * ============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.onap.appc.executor.impl;
-
-import org.onap.appc.domainmodel.lcm.RuntimeContext;
-import org.onap.appc.domainmodel.lcm.ActionLevel;
-import org.onap.appc.executionqueue.MessageExpirationListener;
-import org.onap.appc.requesthandler.RequestHandler;
-
-
-public class ExpiredMessageHandler<M> implements MessageExpirationListener<M>{
- private RequestHandler vnfRequestHandler;
-
- private RequestHandler vmRequestHandler;
-
- public ExpiredMessageHandler(){
-
- }
-
- public void setVnfRequestHandler(RequestHandler vnfRequestHandler) {
- this.vnfRequestHandler = vnfRequestHandler;
- }
-
- public void setVmRequestHandler(RequestHandler vmRequestHandler) {
- this.vmRequestHandler = vmRequestHandler;
- }
-
- @Override
- public void onMessageExpiration(M message) {
- RuntimeContext commandRequest = (RuntimeContext)message;
- RequestHandler requestHandler = readRequestHandler(commandRequest);
- requestHandler.onRequestTTLEnd(commandRequest, true);
- }
-
- private RequestHandler readRequestHandler(RuntimeContext runtimeContext) {
- if(ActionLevel.VM.equals(runtimeContext.getRequestContext().getActionLevel())){
- return vmRequestHandler;
- }
- return vnfRequestHandler;
- }
-}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/LCMCommandTask.java b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/LCMCommandTask.java
deleted file mode 100644
index 13642ba..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/LCMCommandTask.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/*-
- * ============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.onap.appc.executor.impl;
-
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
-import org.onap.appc.domainmodel.lcm.CommonHeader;
-import org.onap.appc.domainmodel.lcm.RuntimeContext;
-import org.onap.appc.domainmodel.lcm.Status;
-import org.onap.appc.domainmodel.lcm.VNFOperation;
-import org.onap.appc.executor.UnstableVNFException;
-import org.onap.appc.executor.objects.CommandResponse;
-import org.onap.appc.executor.objects.LCMCommandStatus;
-import org.onap.appc.executor.objects.Params;
-import org.onap.appc.executor.objects.UniqueRequestIdentifier;
-import org.onap.appc.lifecyclemanager.LifecycleManager;
-import org.onap.appc.lifecyclemanager.objects.LifecycleException;
-import org.onap.appc.lifecyclemanager.objects.NoTransitionDefinedException;
-import org.onap.appc.lifecyclemanager.objects.VNFOperationOutcome;
-import org.onap.appc.logging.LoggingConstants;
-import org.onap.appc.requesthandler.RequestHandler;
-import org.onap.appc.workflow.WorkFlowManager;
-import org.onap.appc.workflow.objects.WorkflowResponse;
-import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
-import org.onap.ccsdk.sli.core.sli.SvcLogicException;
-import org.onap.ccsdk.sli.core.sli.SvcLogicResource;
-import org.onap.ccsdk.sli.adaptors.aai.AAIService;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
-import org.slf4j.MDC;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-
-import java.net.InetAddress;
-import static com.att.eelf.configuration.Configuration.*;
-import static com.att.eelf.configuration.Configuration.MDC_SERVICE_INSTANCE_ID;
-import static com.att.eelf.configuration.Configuration.MDC_SERVICE_NAME;
-
-
-public class LCMCommandTask extends CommandTask {
-
- private final AAIService aaiService;
- private final LifecycleManager lifecyclemanager;
-
- private static final EELFLogger logger = EELFManager.getInstance().getLogger(LCMCommandTask.class);
-
- public LCMCommandTask(RuntimeContext commandRequest, RequestHandler requestHandler, WorkFlowManager workflowManager,
- LifecycleManager lifecyclemanager) {
- super(commandRequest, requestHandler, workflowManager);
- this.lifecyclemanager = lifecyclemanager;
-
- BundleContext bctx = FrameworkUtil.getBundle(AAIService.class).getBundleContext();
- // Get AAIadapter reference
- ServiceReference sref = bctx.getServiceReference(AAIService.class.getName());
- if (sref != null) {
- logger.info("AAIService from bundlecontext");
- aaiService = (AAIService) bctx.getService(sref);
-
- } else {
- logger.info("AAIService error from bundlecontext");
- logger.warn("Cannot find service reference for org.onap.ccsdk.sli.adaptors.aai.AAIService");
- aaiService = null;
- }
- }
-
-
- @Override
- public void onRequestCompletion(CommandResponse response) {
- final RuntimeContext request = commandRequest;
- boolean isAAIUpdated = false;
- try {
-
- final int statusCode = request.getResponseContext().getStatus().getCode();
-
- if (logger.isDebugEnabled()) {
- logger.debug("Workflow Execution Status = "+ statusCode);
- }
-
- boolean isSuccess = statusCode == 100 || statusCode == 400;
-
- if (isSuccess && VNFOperation.Terminate == request.getRequestContext().getAction()) {
- SvcLogicContext ctx = new SvcLogicContext();
- ctx = getVnfdata(request.getVnfContext().getId(), "vnf", ctx);
- isAAIUpdated = aaiService.deleteGenericVnfData(request.getVnfContext().getId(), ctx.getAttribute("vnf.resource-version"));
- }
- else{
- isAAIUpdated = updateAAI(request.getVnfContext().getId() , false, isSuccess);
- }
- logger.debug("isAAIUpdated = " + isAAIUpdated);
- if(!isAAIUpdated){
- throw new Exception();
- }
- }
- catch(Exception e1) {
- logger.error("Exception = " + e1);
- // In case of any errors we are updating the response status code and message
- Status updatedStatus = new Status(401, "Fail to update VNF status in A&AI");
- request.getResponseContext().setStatus(updatedStatus);
- throw new RuntimeException(e1);
- }
- finally {
- super.onRequestCompletion(response, isAAIUpdated);
- }
- }
-
- @Override
- public void run() {
- final RuntimeContext request = commandRequest;
- setInitialLogProperties(request);
- boolean isAAIUpdated = false;
- final String vnfId = request.getVnfContext().getId();
- final String vnfType = request.getVnfContext().getType();
- try {
- final CommonHeader commonHeader = request.getRequestContext().getCommonHeader();
- final boolean forceFlag = commonHeader.getFlags().isForce();
- UniqueRequestIdentifier requestIdentifier = new UniqueRequestIdentifier(commonHeader.getOriginatorId(),
- commonHeader.getRequestId(), commonHeader.getSubRequestId());
- String requestIdentifierString = requestIdentifier.toIdentifierString();
- requestHandler.onRequestExecutionStart(vnfId,false, requestIdentifierString, forceFlag);
-
- final String currentStatus = request.getVnfContext().getStatus();
- final VNFOperation action = request.getRequestContext().getAction();
-
- final String nextState = lifecyclemanager.getNextState(vnfType, currentStatus, action.name());
-
- SvcLogicContext ctx = new SvcLogicContext();
- ctx=getVnfdata(vnfId, "onRequestExecutionStart", ctx);
- isAAIUpdated= postVnfdata(vnfId, nextState,"onRequestExecutionStart",ctx);
- } catch (NoTransitionDefinedException e) {
- logger.error("Error getting Next State for AAI Update: " + e.getMessage(), e);
- Params params = new Params().addParam("actionName",e.event).addParam("currentState",e.currentState);
- request.getResponseContext().setStatus(LCMCommandStatus.NO_TRANSITION_DEFINE_FAILURE.toStatus(params));
- isAAIUpdated = false;
- } catch (UnstableVNFException e) {
- logger.error(e.getMessage(), e);
- Params params = new Params().addParam("vnfId",vnfId);
- request.getResponseContext().setStatus(LCMCommandStatus.UNSTABLE_VNF_FAILURE.toStatus(params));
- isAAIUpdated = false;
- }catch (Exception e) {
- logger.error("Error before Request Execution starts.", e);
- String errorMsg = StringUtils.isEmpty(e.getMessage()) ? e.toString() : e.getMessage();
- Params params = new Params().addParam("errorMsg",errorMsg);
- request.getResponseContext().setStatus(LCMCommandStatus.UNEXPECTED_FAILURE.toStatus(params));
- isAAIUpdated = false;
- }
-
- if (isAAIUpdated){
- super.execute();
- }else{
- String errorMsg = "Error updating A& AI before Workflow execution";
- logger.error(errorMsg);
- WorkflowResponse response = new WorkflowResponse();
- response.setResponseContext(request.getResponseContext());
- CommandResponse commandResponse = super.buildCommandResponse(response);
- this.onRequestCompletion(commandResponse);
- }
-
- clearRequestLogProperties();
- }
-
-
- private boolean updateAAI(String vnf_id, boolean isTTLEnd, boolean executionStatus)
- {
- String orchestrationStatus = null;
- String nextState;
- boolean callbackResponse;
- VNFOperationOutcome outcome;
- SvcLogicContext ctx = new SvcLogicContext();
- try {
- ctx=getVnfdata(vnf_id, "onRequestExecutionEnd",ctx);
- orchestrationStatus=ctx.getAttribute("onRequestExecutionEnd.orchestration-status");
-
- if(isTTLEnd){
- outcome = VNFOperationOutcome.FAILURE;
- }
- else if(executionStatus){
- outcome = VNFOperationOutcome.SUCCESS;
- }
- else{
- outcome = VNFOperationOutcome.FAILURE;
- }
- nextState = lifecyclemanager.getNextState(null,orchestrationStatus, outcome.toString()) ;
- callbackResponse= postVnfdata(vnf_id, nextState,"onRequestExecutionEnd",ctx);
- logger.debug("AAI posting status: " + callbackResponse);
-
- } catch (NoTransitionDefinedException e) {
- logger.debug("Transition not defined for State = " + orchestrationStatus);
- callbackResponse =false;
- } catch (LifecycleException e) {
- logger.debug("State or command not registered with State Machine. State = " + orchestrationStatus);
- callbackResponse =false;
- }
- return callbackResponse;
- }
-
-
- private SvcLogicContext getVnfdata(String vnf_id, String prefix,SvcLogicContext ctx) {
- String key="generic-vnf.vnf-id = '"+ vnf_id+"'"+" AND http-header.Real-Time = 'true'";
- logger.debug("inside getVnfdata=== "+key);
- try {
- SvcLogicResource.QueryStatus response = aaiService.query("generic-vnf", false, null, key,prefix, null, ctx);
- if(SvcLogicResource.QueryStatus.NOT_FOUND.equals(response)){
- logger.warn("VNF " + vnf_id + " not found while updating A&AI");
- throw new RuntimeException("VNF not found for vnf_id = "+ vnf_id);
- }
- else if(SvcLogicResource.QueryStatus.FAILURE.equals(response)){
- throw new RuntimeException("Error Querying AAI with vnfID = " +vnf_id);
- }
- logger.info("AAIResponse: " + response.toString());
- } catch (SvcLogicException e) {
- logger.error("Error in getVnfdata "+ e);
- throw new RuntimeException(e);
- }
- return ctx;
- }
-
- private boolean postVnfdata(String vnf_id, String status,String prefix,SvcLogicContext ctx) {
- String key="vnf-id = '"+ vnf_id+"'";
- logger.debug("inside postVnfdata=== "+key);
- Map<String, String> data = new HashMap<>();
- data.put("orchestration-status", status);
- try {
- SvcLogicResource.QueryStatus response = aaiService.update("generic-vnf", key, data, prefix, ctx);
- if(SvcLogicResource.QueryStatus.NOT_FOUND.equals(response)){
- logger.warn("VNF " + vnf_id + " not found while updating A&AI");
- return false;
- }
- logger.info("AAIResponse: " + response.toString());
- if(response.toString().equals("SUCCESS"))
- {
- return true;
- }
- } catch (SvcLogicException e) {
- logger.error("Error in postVnfdata "+ e);
- throw new RuntimeException(e);
- }
- return false;
- }
-
- protected void setInitialLogProperties(RuntimeContext request)
- {
- MDC.put(MDC_KEY_REQUEST_ID, request.getRequestContext().getCommonHeader().getRequestId());
- if (request.getRequestContext().getActionIdentifiers().getServiceInstanceId() != null)
- MDC.put(MDC_SERVICE_INSTANCE_ID, request.getRequestContext().getActionIdentifiers().getServiceInstanceId());
- MDC.put(LoggingConstants.MDCKeys.PARTNER_NAME, request.getRequestContext().getCommonHeader().getOriginatorId());
- MDC.put(MDC_SERVICE_NAME, request.getRequestContext().getAction().name());
- try {
- MDC.put(MDC_SERVER_FQDN, InetAddress.getLocalHost().getCanonicalHostName());
- MDC.put(MDC_SERVER_IP_ADDRESS, InetAddress.getLocalHost().getHostAddress());
- } catch (Exception e) {
- logger.debug(e.getMessage());
- }
- MDC.put(MDC_INSTANCE_UUID, ""); //TODO make instanse_UUID generation once during APPC-instanse deploying
- }
-
- protected void clearRequestLogProperties()
- {
- try {
- MDC.remove(MDC_KEY_REQUEST_ID);
- MDC.remove(MDC_SERVICE_INSTANCE_ID);
- MDC.remove(MDC_SERVICE_NAME);
- MDC.remove(LoggingConstants.MDCKeys.PARTNER_NAME);
- } catch (Exception e) {
-
- }
- }
-}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/LCMReadonlyCommandTask.java b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/LCMReadonlyCommandTask.java
deleted file mode 100644
index 0eeefe5..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/LCMReadonlyCommandTask.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*-
- * ============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.onap.appc.executor.impl;
-
-
-import org.apache.commons.lang3.StringUtils;
-import org.onap.appc.domainmodel.lcm.CommonHeader;
-import org.onap.appc.domainmodel.lcm.RuntimeContext;
-import org.onap.appc.executor.UnstableVNFException;
-import org.onap.appc.executor.objects.CommandResponse;
-import org.onap.appc.executor.objects.LCMCommandStatus;
-import org.onap.appc.executor.objects.Params;
-import org.onap.appc.executor.objects.UniqueRequestIdentifier;
-import org.onap.appc.requesthandler.RequestHandler;
-import org.onap.appc.workflow.WorkFlowManager;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-
-public class LCMReadonlyCommandTask extends CommandTask {
-
- private static final EELFLogger logger = EELFManager.getInstance().getLogger(LCMReadonlyCommandTask.class);
-
- public LCMReadonlyCommandTask(RuntimeContext commandRequest, RequestHandler requestHandler,
- WorkFlowManager workflowManager) {
- super(commandRequest, requestHandler, workflowManager);
- }
-
- @Override
- public void onRequestCompletion(CommandResponse response) {
- super.onRequestCompletion(response, true);
- }
-
- @Override
- public void run() {
- RuntimeContext request = commandRequest;
- final CommonHeader commonHeader = request.getRequestContext().getCommonHeader();
- final boolean forceFlag = commonHeader.getFlags().isForce();
- UniqueRequestIdentifier requestIdentifier = new UniqueRequestIdentifier(commonHeader.getOriginatorId(), commonHeader.getRequestId(), commonHeader.getSubRequestId());
- String requestIdentifierString = requestIdentifier.toIdentifierString();
- final String vnfId = request.getVnfContext().getId();
- try {
- requestHandler.onRequestExecutionStart(vnfId,true, requestIdentifierString, forceFlag);
- super.execute();
- } catch (UnstableVNFException e) {
- logger.error(e.getMessage(), e);
- Params params = new Params().addParam("vnfId",vnfId);
- request.getResponseContext().setStatus(LCMCommandStatus.UNSTABLE_VNF_FAILURE.toStatus(params));
- }catch (Exception e) {
- logger.error("Error during runing LCMReadonlyCommandTask.", e);
- String errorMsg = StringUtils.isEmpty(e.getMessage()) ? e.toString() : e.getMessage();
- Params params = new Params().addParam("errorMsg",errorMsg);
- request.getResponseContext().setStatus(LCMCommandStatus.UNEXPECTED_FAILURE.toStatus(params));
- }
- }
-}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/objects/CommandRequest.java b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/objects/CommandRequest.java
new file mode 100644
index 0000000..90b5be9
--- /dev/null
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/java/org/onap/appc/executor/impl/objects/CommandRequest.java
@@ -0,0 +1,65 @@
+/*-
+ * ============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.onap.appc.executor.impl.objects;
+
+import java.util.Date;
+
+import org.onap.appc.executor.objects.CommandExecutorInput;
+
+public class CommandRequest {
+
+
+ private CommandExecutorInput commandExecutorInput;
+ private Date commandInTimeStamp;
+
+ public CommandRequest(CommandExecutorInput commandExecutorInput) {
+ this.commandExecutorInput = commandExecutorInput;
+ }
+
+
+ public CommandExecutorInput getCommandExecutorInput() {
+ return commandExecutorInput;
+ }
+
+ public void setCommandExecutorInput(CommandExecutorInput commandExecutorInput) {
+ this.commandExecutorInput = commandExecutorInput;
+ }
+
+ public Date getCommandInTimeStamp() {
+ return commandInTimeStamp;
+ }
+
+ public void setCommandInTimeStamp(Date commandInTimeStamp) {
+ this.commandInTimeStamp = commandInTimeStamp;
+ }
+
+ @Override
+ public String toString() {
+ return "CommandRequest{" +
+ "commandExecutorInput=" + commandExecutorInput +
+ ", commandInTimeStamp=" + commandInTimeStamp +
+ '}';
+ }
+}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index d0ee8cd..aa4e129 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -32,35 +32,14 @@
<bean id="commandExecutorBean" class="org.onap.appc.executor.impl.CommandExecutorImpl"
scope="singleton" init-method="initialize">
<property name="executionQueueService" ref="ExecutionQueueServiceRef"/>
- <property name="executionTaskFactory" ref="CommandExecutionTaskFactory"/>
- <property name="expiredMessageHandler" ref="expiredMessageHandlerBean"/>
+ <property name="workflowManager" ref="WorkFlowManagerRef" />
+ <property name="requestHandler" ref="RequestHandlerService" />
</bean>
- <bean id="CommandExecutionTaskFactory" class="org.onap.appc.executor.impl.CommandTaskFactory"
- scope="singleton">
- <property name="vnfRequestHandler" ref="vnfRequestHandlerService"/>
- <property name="vmRequestHandler" ref="vmRequestHandlerService"/>
- <property name="workflowManager" ref="WorkFlowManagerRef"/>
- <property name="lifecyclemanager" ref="LifecyclemanagerRef"/>
- </bean>
- <bean id="expiredMessageHandlerBean" class="org.onap.appc.executor.impl.ExpiredMessageHandler"
- scope="singleton">
- <property name="vnfRequestHandler" ref="vnfRequestHandlerService"/>
- <property name="vmRequestHandler" ref="vmRequestHandlerService"/>
- </bean>
+ <reference id="WorkFlowManagerRef" availability="mandatory" activation="eager" interface="org.onap.appc.workflow.WorkFlowManager" />
+ <reference id="RequestHandlerService" availability="optional" activation="eager" interface="org.onap.appc.requesthandler.RequestHandler" filter="(level=VNF)" />
+ <reference id="ExecutionQueueServiceRef" availability="mandatory" activation="eager" interface="org.onap.appc.executionqueue.ExecutionQueueService" />
- <reference id="WorkFlowManagerRef" availability="mandatory" activation="eager"
- interface="org.onap.appc.workflow.WorkFlowManager"/>
- <reference id="vnfRequestHandlerService" availability="optional" activation="eager"
- interface="org.onap.appc.requesthandler.RequestHandler" filter="(level=VNF)"/>
- <reference id="vmRequestHandlerService" availability="optional" activation="eager"
- interface="org.onap.appc.requesthandler.RequestHandler" filter="(level=VM)"/>
- <reference id="LifecyclemanagerRef" availability="mandatory" activation="eager"
- interface="org.onap.appc.lifecyclemanager.LifecycleManager"/>
- <reference id="ExecutionQueueServiceRef" availability="mandatory" activation="eager"
- interface="org.onap.appc.executionqueue.ExecutionQueueService"/>
-
- <service id="commandExecutorService" interface="org.onap.appc.executor.CommandExecutor"
- ref="commandExecutorBean"/>
+ <service id="commandExecutorService" interface="org.onap.appc.executor.CommandExecutor" ref="commandExecutorBean"/>
</blueprint>
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/resources/org/onap/appc/default.properties b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/resources/org/onap/appc/default.properties
index f24ee14..5899c6a 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/resources/org/onap/appc/default.properties
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/main/resources/org/onap/appc/default.properties
@@ -33,6 +33,6 @@
appc.LCM.service=dmaap
appc.LCM.topic.write=APPC-TEST2
appc.LCM.client.name=APPC-TEST-CLIENT-CMD-EXECUTOR-MAIN
-appc.LCM.provider.user=test
-appc.LCM.provider.pass=test
+appc.LCM.provider.user=admin
+appc.LCM.provider.pass=admin
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/java/org/onap/appc/executor/CommandExecutionTaskTest.java b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/java/org/onap/appc/executor/CommandExecutionTaskTest.java
deleted file mode 100644
index af62a06..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/java/org/onap/appc/executor/CommandExecutionTaskTest.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*-
- * ============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.onap.appc.executor;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mockito;
-import org.onap.appc.domainmodel.lcm.ActionIdentifiers;
-import org.onap.appc.domainmodel.lcm.CommonHeader;
-import org.onap.appc.domainmodel.lcm.Flags;
-import org.onap.appc.domainmodel.lcm.RequestContext;
-import org.onap.appc.domainmodel.lcm.ResponseContext;
-import org.onap.appc.domainmodel.lcm.RuntimeContext;
-import org.onap.appc.domainmodel.lcm.Status;
-import org.onap.appc.domainmodel.lcm.VNFContext;
-import org.onap.appc.domainmodel.lcm.VNFOperation;
-import org.onap.appc.executor.impl.CommandTask;
-import org.onap.appc.executor.impl.CommandTaskFactory;
-import org.onap.appc.executor.impl.LCMCommandTask;
-import org.onap.appc.executor.impl.LCMReadonlyCommandTask;
-import org.onap.appc.executor.objects.CommandResponse;
-import org.onap.appc.lifecyclemanager.LifecycleManager;
-import org.onap.appc.requesthandler.RequestHandler;
-import org.onap.appc.workflow.WorkFlowManager;
-import org.onap.appc.workflow.objects.WorkflowResponse;
-import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
-import org.onap.ccsdk.sli.core.sli.SvcLogicException;
-import org.onap.ccsdk.sli.core.sli.SvcLogicResource;
-import org.onap.ccsdk.sli.adaptors.aai.AAIService;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-import java.time.Instant;
-
-import static junit.framework.Assert.assertEquals;
-import static org.mockito.Matchers.*;
-
-@SuppressWarnings("unchecked")
-@RunWith(PowerMockRunner.class)
-@PrepareForTest( {FrameworkUtil.class, CommandTask.class, LCMCommandTask.class})
-public class CommandExecutionTaskTest {
-
- private final String TTL_FLAG= "TTL";
- private final String API_VERSION= "2.0.0";
- private final String ORIGINATOR_ID= "1";
- private CommandTaskFactory factory ;
-
- private RequestHandler requestHandler;
- private WorkFlowManager workflowManager;
- private AAIService aaiService;
- private LifecycleManager lifecyclemanager;
-
- private final BundleContext bundleContext=Mockito.mock(BundleContext.class);
- private final Bundle bundleService=Mockito.mock(Bundle.class);
- private final ServiceReference sref=Mockito.mock(ServiceReference.class);
-
- @Before
- public void init() throws SvcLogicException {
-
- // ***
- AAIService aaiService = Mockito.mock(AAIService.class);
- PowerMockito.mockStatic(FrameworkUtil.class);
- PowerMockito.when(FrameworkUtil.getBundle(AAIService.class)).thenReturn(bundleService);
- PowerMockito.when(bundleService.getBundleContext()).thenReturn(bundleContext);
- PowerMockito.when(bundleContext.getServiceReference(AAIService.class.getName())).thenReturn(sref);
- PowerMockito.when(bundleContext.<AAIService>getService(sref)).thenReturn(aaiService);
- PowerMockito.when(aaiService.query(anyString(),anyBoolean(),anyString(),anyString(),anyString(),
- anyString(), anyObject())).thenAnswer(invocation -> {
- Object[] args = invocation.getArguments();
- SvcLogicContext ctx =(SvcLogicContext)args[6];
- String prefix = (String)args[4];
- String key = (String)args[3];
- if(key.contains("'28'")){
- return SvcLogicResource.QueryStatus.FAILURE ;
- }else if ( key.contains("'8'")) {
- return SvcLogicResource.QueryStatus.NOT_FOUND ;
- }else {
- ctx.setAttribute(prefix + ".vnf-type", "FIREWALL");
- ctx.setAttribute(prefix + ".orchestration-status", "INSTANTIATED");
- }
- return SvcLogicResource.QueryStatus.SUCCESS ;
- });
- PowerMockito.when(aaiService.update(anyString(), anyString(), anyObject(), anyString(),
- anyObject())).thenReturn(SvcLogicResource.QueryStatus.SUCCESS);
-
- requestHandler = Mockito.mock(RequestHandler.class);
- workflowManager = Mockito.mock(WorkFlowManager.class);
- lifecyclemanager = Mockito.mock(LifecycleManager.class );
-
- factory = new CommandTaskFactory();
- factory.setLifecyclemanager(lifecyclemanager);
- factory.setWorkflowManager(workflowManager);
- factory.setVnfRequestHandler(requestHandler);
- Mockito.when(workflowManager.executeWorkflow(anyObject())).thenReturn(getWorkflowResponse ());
- }
-
-
- @Test
- public void testFactory(){
- CommandTask task;
- Instant timeStamp = Instant.now();
- String requestId = "1";
- RuntimeContext commandExecutorInputConfigure = pouplateCommandExecutorInput("FIREWALL", 30, "1.0",
- timeStamp, API_VERSION, requestId, ORIGINATOR_ID, "2", VNFOperation.Configure,"15","") ;
- task = factory.getExecutionTask(commandExecutorInputConfigure);
- assertEquals(LCMCommandTask.class,task.getClass() );
- RuntimeContext commandExecutorInputSync = pouplateCommandExecutorInput("FIREWALL", 30, "1.0",
- timeStamp, API_VERSION, requestId, ORIGINATOR_ID, "2", VNFOperation.Sync,"15","") ;
- task = factory.getExecutionTask(commandExecutorInputSync);
- assertEquals(LCMReadonlyCommandTask.class,task.getClass() );
-
- }
-
-
-
- @Test
- public void testOnRequestCompletion(){
- Mockito.doNothing().when(requestHandler).onRequestTTLEnd(anyObject(),anyBoolean());
- RuntimeContext request = pouplateCommandExecutorInput("FIREWALL", 30, "1.0",
- Instant.now(), API_VERSION, "11", ORIGINATOR_ID, "", VNFOperation.Configure,
- "1", "");
- CommandResponse response = getCommandResponse(VNFOperation.Configure, true, "11",
- "","1");
- LCMCommandTask executionTask = new LCMCommandTask(request, requestHandler,workflowManager,lifecyclemanager);
- executionTask.onRequestCompletion(response);
- }
-
- @Test
- public void testRunGetConfig(){
- RuntimeContext request = pouplateCommandExecutorInput("FIREWALL", 30, "1.0",
- Instant.now(), API_VERSION, "11", ORIGINATOR_ID, "", VNFOperation.Sync,
- "1", "");
- LCMReadonlyCommandTask readonlyCommandTask = new LCMReadonlyCommandTask(
- request, requestHandler,workflowManager);
- readonlyCommandTask.run();
- }
-
- @Test
- public void testRun(){
- RuntimeContext request = pouplateCommandExecutorInput("FIREWALL", 30, "1.0",
- Instant.now(), API_VERSION, "11", ORIGINATOR_ID, "", VNFOperation.Sync,
- "1", "");
- LCMCommandTask executionTask = new LCMCommandTask(request, requestHandler,workflowManager,lifecyclemanager);
- executionTask.run();
- }
-
- @Test
- public void testRunNegative(){
- RuntimeContext request = pouplateCommandExecutorInput("FIREWALL", 30, "1.0",
- Instant.now(), API_VERSION, "11", ORIGINATOR_ID, "", VNFOperation.Sync,
- "1", "");
- LCMCommandTask executionTask = new LCMCommandTask(request, requestHandler,workflowManager,lifecyclemanager);
- executionTask.run();
- }
-
-
- private CommandResponse getCommandResponse(VNFOperation action,
- boolean success,
- String responseId,
- String payload,
- String vnfId){
- RuntimeContext runtimeContext = new RuntimeContext();
- ResponseContext responseContext = new ResponseContext();
- runtimeContext.setResponseContext(responseContext);
- RequestContext requestContext = new RequestContext();
- runtimeContext.setRequestContext(requestContext);
- CommonHeader commonHeader = new CommonHeader();
- requestContext.setCommonHeader(commonHeader);
- responseContext.setCommonHeader(commonHeader);
- commonHeader.setFlags(new Flags(null, false, 0));
- ActionIdentifiers actionIdentifiers = new ActionIdentifiers();
- requestContext.setActionIdentifiers(actionIdentifiers);
- VNFContext vnfContext = new VNFContext();
- runtimeContext.setVnfContext(vnfContext);
- requestContext.setAction(action);
- runtimeContext.setRpcName(action.name().toLowerCase());
- commonHeader.setApiVer(API_VERSION);
- responseContext.setStatus(new Status(100, null));
- commonHeader.setRequestId(responseId);
- responseContext.setPayload(payload);
- commonHeader.setTimestamp(Instant.now());
- vnfContext.setId(vnfId);
- return new CommandResponse(runtimeContext);
- }
-
-
-
- @Test
- public void testPositiveFlow_configure() {
-
- String requestId = "1";
-
- pouplateCommandExecutorInput("FIREWALL",30,
- "1.0", Instant.now(), API_VERSION, requestId, ORIGINATOR_ID, "",
- VNFOperation.Configure, "33", "");
- }
-
- public WorkflowResponse getWorkflowResponse (){
- WorkflowResponse wfResponse = new WorkflowResponse();
- ResponseContext responseContext = createResponseContextWithSuObjects();
- wfResponse.setResponseContext(responseContext);
- responseContext.setPayload("");
- wfResponse.getResponseContext().setStatus(new Status(100, null));
- return wfResponse;
- }
-
- private RuntimeContext pouplateCommandExecutorInput(String vnfType,
- int ttl,
- String vnfVersion,
- Instant timeStamp,
- String apiVersion,
- String requestId,
- String originatorID,
- String subRequestID,
- VNFOperation action,
- String vnfId,
- String payload){
- RuntimeContext commandExecutorInput = createCommandExecutorInputWithSubObjects();
- RequestContext requestContext = commandExecutorInput.getRequestContext();
- ResponseContext responseContext = createResponseContextWithSuObjects();
- commandExecutorInput.setResponseContext(responseContext);
-
- requestContext.getCommonHeader().setFlags(new Flags(null, false, ttl));
- requestContext.getCommonHeader().setApiVer(apiVersion);
- requestContext.getCommonHeader().setTimestamp(timeStamp);
- requestContext.getCommonHeader().setRequestId(requestId);
- requestContext.getCommonHeader().setSubRequestId(subRequestID);
- requestContext.getCommonHeader().setOriginatorId(originatorID);
- requestContext.setAction(action);
- requestContext.setPayload(payload);
- requestContext.getActionIdentifiers().setVnfId(vnfId);
- VNFContext vnfContext = commandExecutorInput.getVnfContext();
- vnfContext.setType(vnfType);
- vnfContext.setId(vnfId);
- vnfContext.setVersion(vnfVersion);
- return commandExecutorInput;
- }
-
- private RuntimeContext createCommandExecutorInputWithSubObjects() {
- return createRuntimeContextWithSubObjects();
- }
-
- private RuntimeContext createRuntimeContextWithSubObjects() {
- RuntimeContext runtimeContext = new RuntimeContext();
- RequestContext requestContext = new RequestContext();
- runtimeContext.setRequestContext(requestContext);
- CommonHeader commonHeader = new CommonHeader();
- requestContext.setCommonHeader(commonHeader);
- commonHeader.setFlags(new Flags(null, false, 0));
- ActionIdentifiers actionIdentifiers = new ActionIdentifiers();
- requestContext.setActionIdentifiers(actionIdentifiers);
- VNFContext vnfContext = new VNFContext();
- runtimeContext.setVnfContext(vnfContext);
- return runtimeContext;
-
- }
-
- private ResponseContext createResponseContextWithSuObjects(){
- ResponseContext responseContext = new ResponseContext();
- CommonHeader commonHeader = new CommonHeader();
- responseContext.setCommonHeader(commonHeader);
- responseContext.setStatus(new Status(0, null));
- commonHeader.setFlags(new Flags(null, false, 0));
- return responseContext;
- }
-
-}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/java/org/onap/appc/executor/TestCommandExecutor.java b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/java/org/onap/appc/executor/TestCommandExecutor.java
index cd02c26..fcf45d5 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/java/org/onap/appc/executor/TestCommandExecutor.java
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/java/org/onap/appc/executor/TestCommandExecutor.java
@@ -24,30 +24,29 @@
package org.onap.appc.executor;
/**
- *
+ *
*/
-import java.time.Instant;
-
import org.junit.Assert;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
import org.mockito.Mockito;
-import org.onap.appc.domainmodel.lcm.ActionIdentifiers;
-import org.onap.appc.domainmodel.lcm.CommonHeader;
-import org.onap.appc.domainmodel.lcm.Flags;
-import org.onap.appc.domainmodel.lcm.RequestContext;
-import org.onap.appc.domainmodel.lcm.RuntimeContext;
-import org.onap.appc.domainmodel.lcm.VNFContext;
-import org.onap.appc.domainmodel.lcm.VNFOperation;
+import org.onap.appc.domainmodel.lcm.*;
import org.onap.appc.exceptions.APPCException;
import org.onap.appc.executionqueue.ExecutionQueueService;
import org.onap.appc.executor.impl.*;
+import org.onap.appc.executor.impl.objects.CommandRequest;
+import org.onap.appc.executor.objects.CommandExecutorInput;
import org.onap.appc.lifecyclemanager.LifecycleManager;
import org.onap.appc.requesthandler.RequestHandler;
import org.onap.appc.workflow.WorkFlowManager;
import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
import java.util.Date;
import java.util.concurrent.TimeUnit;
@@ -55,113 +54,99 @@
import static junit.framework.Assert.assertTrue;
import static org.powermock.api.support.membermodification.MemberMatcher.method;
-
-@SuppressWarnings("deprecation")
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({CommandTask.class,CommandExecutorImpl.class})
public class TestCommandExecutor {
- private static final String TTL_FLAG= "TTL";
- private static final String API_VERSION= "2.0.0";
- private static final String ORIGINATOR_ID= "1";
+ private static final String TTL_FLAG= "TTL";
+ private static final String API_VERSION= "2.0.0";
+ private static final String ORIGINATOR_ID= "1";
- private CommandExecutorImpl commandExecutor;
+ private CommandExecutorImpl commandExecutor;
- private CommandTaskFactory executionTaskFactory;
+ private RequestHandler requestHandler;
+ private WorkFlowManager workflowManager;
+ private ExecutionQueueService executionQueueService;
- private RequestHandler requestHandler;
- private WorkFlowManager workflowManager;
- private LifecycleManager lifecyclemanager;
+ private Date timeStamp = new Date();
+ private String requestId = "1";
+ private CommandExecutorInput commandExecutorInputConfigure = pouplateCommandExecutorInput("FIREWALL", 30000, "1.0",
+ timeStamp, API_VERSION, requestId, ORIGINATOR_ID, "2", VNFOperation.Configure,"15","") ;
+ private CommandExecutorInput commandExecutorInputSync = pouplateCommandExecutorInput("FIREWALL", 30, "1.0",
+ timeStamp, API_VERSION, requestId, ORIGINATOR_ID, "2", VNFOperation.Sync,"15","") ;
- private ExecutionQueueService executionQueueService;
- private Instant timeStamp = Instant.now();
- private String requestId = "1";
- private RuntimeContext commandExecutorInputConfigure = pouplateCommandExecutorInput("FIREWALL", 30000, "1.0",
- timeStamp, API_VERSION, requestId, ORIGINATOR_ID, "2", VNFOperation.Configure,"15","") ;
- private RuntimeContext commandExecutorInputSync = pouplateCommandExecutorInput("FIREWALL", 30, "1.0",
- timeStamp, API_VERSION, requestId, ORIGINATOR_ID, "2", VNFOperation.Sync,"15","") ;
+ @Before
+ public void init()throws Exception {
+ requestHandler= Mockito.mock(RequestHandler.class);
+ workflowManager= Mockito.mock(WorkFlowManager.class);
- @Before
- public void init()throws Exception {
- requestHandler= Mockito.mock(RequestHandler.class);
- lifecyclemanager= Mockito.mock(LifecycleManager.class);
- workflowManager= Mockito.mock(WorkFlowManager.class);
+ executionQueueService = Mockito.mock(ExecutionQueueService.class);
- executionQueueService = Mockito.mock(ExecutionQueueService.class);
+ commandExecutor = new CommandExecutorImpl();
+ commandExecutor.setExecutionQueueService(executionQueueService);
+ commandExecutor.setRequestHandler(requestHandler);
+ commandExecutor.setWorkflowManager(workflowManager);
+ commandExecutor.initialize();
+ CommandTask commandTask = Mockito.mock(CommandTask.class);
+ Mockito.when(commandTask.getCommandRequest()).thenReturn(new CommandRequest(commandExecutorInputConfigure));
+ PowerMockito.whenNew(CommandTask.class).withParameterTypes(RequestHandler.class,WorkFlowManager.class).withArguments(requestHandler,workflowManager).thenReturn(commandTask);
+ }
+
- commandExecutor = new CommandExecutorImpl();
- executionTaskFactory = Mockito.mock(CommandTaskFactory.class);
- commandExecutor.setExecutionTaskFactory(executionTaskFactory);
- commandExecutor.setExecutionQueueService(executionQueueService);
- LCMCommandTask lcmCommandTask = Mockito.mock(LCMCommandTask.class);
- LCMReadonlyCommandTask lCMReadonlyCommandTask = Mockito.mock(LCMReadonlyCommandTask.class);
+ @Test
+ public void testPositiveFlow_LCM() throws Exception {
+ //Map <String,Object> flags = setTTLInFlags("30");
+ try {
+ commandExecutor.executeCommand(commandExecutorInputConfigure);
+ } catch (APPCException e) {
+ Assert.fail(e.toString());
+ }
- Mockito.when(executionTaskFactory.getExecutionTask(commandExecutorInputConfigure)).thenReturn(lcmCommandTask);
- Mockito.when(executionTaskFactory.getExecutionTask(commandExecutorInputSync)).thenReturn(lCMReadonlyCommandTask);
+ }
-// Mockito.when(executionQueueService.putMessage((Runnable) Mockito.anyObject(),Mockito.anyLong(),(TimeUnit)Mockito.anyObject())).thenReturn(true);
+ @Test(expected = APPCException.class)
+ public void testNegativeFlow_LCM() throws APPCException{
+ Mockito.doThrow(new APPCException("Failed to enqueue request")).when(executionQueueService).putMessage((Runnable) Mockito.anyObject(),Mockito.anyLong(),(TimeUnit) Mockito.anyObject());
+ commandExecutor.executeCommand(commandExecutorInputSync);
+ }
- }
+
+ private CommandExecutorInput pouplateCommandExecutorInput(String vnfType, int ttl, String vnfVersion, Date timeStamp, String apiVersion, String requestId, String originatorID, String subRequestID, VNFOperation action, String vnfId , String payload){
+ CommandExecutorInput commandExecutorInput = createCommandExecutorInputWithSubObjects();
+ RuntimeContext runtimeContext = commandExecutorInput.getRuntimeContext();
+ RequestContext requestContext = runtimeContext.getRequestContext();
+ requestContext.getCommonHeader().getFlags().setTtl(ttl);
+ requestContext.getCommonHeader().setApiVer(apiVersion);
+ requestContext.getCommonHeader().setTimestamp(timeStamp);
+ requestContext.getCommonHeader().setRequestId(requestId);
+ requestContext.getCommonHeader().setSubRequestId(subRequestID);
+ requestContext.getCommonHeader().setOriginatorId(originatorID);
+ requestContext.setAction(action);
+ requestContext.setPayload(payload);
+ requestContext.getActionIdentifiers().setVnfId(vnfId);
+ VNFContext vnfContext = runtimeContext.getVnfContext();
+ vnfContext.setType(vnfType);
+ vnfContext.setId(vnfId);
+ vnfContext.setVersion(vnfVersion);
+ return commandExecutorInput;
+ }
-
- @Test
- public void testPositiveFlow_LCM() throws Exception {
- //Map <String,Object> flags = setTTLInFlags("30");
- String requestId = "1";
- RuntimeContext commandExecutorInput = pouplateCommandExecutorInput("FIREWALL", 30, "1.0", Instant.now(), API_VERSION, requestId, ORIGINATOR_ID, "2", VNFOperation.Configure, "15", "") ;
- try {
- commandExecutor.executeCommand(commandExecutorInput);
- } catch (APPCException e) {
- Assert.fail(e.toString());
- }
-
- }
-
- @Test
- public void testPositiveFlow_GetConfig(){
- String requestId = "1";
-
- RuntimeContext commandExecutorInput = pouplateCommandExecutorInput("FIREWALL", 30, "1.0", Instant.now(), API_VERSION, requestId, ORIGINATOR_ID, "2", VNFOperation.Sync,"15","") ;
- try {
- commandExecutor.executeCommand(commandExecutorInput);
- } catch (APPCException e) {
- Assert.fail(e.toString());
- }
-
- }
-
-
- private RuntimeContext pouplateCommandExecutorInput(String vnfType, int ttl, String vnfVersion, Instant timeStamp, String apiVersion, String requestId, String originatorID, String subRequestID, VNFOperation action, String vnfId , String payload){
- RuntimeContext commandExecutorInput = createCommandExecutorInputWithSubObjects();
- RequestContext requestContext = commandExecutorInput.getRequestContext();
- requestContext.getCommonHeader().setFlags(new Flags(null, false, ttl));
- requestContext.getCommonHeader().setApiVer(apiVersion);
- requestContext.getCommonHeader().setTimestamp(timeStamp);
- requestContext.getCommonHeader().setRequestId(requestId);
- requestContext.getCommonHeader().setSubRequestId(subRequestID);
- requestContext.getCommonHeader().setOriginatorId(originatorID);
- requestContext.setAction(action);
- requestContext.setPayload(payload);
- requestContext.getActionIdentifiers().setVnfId(vnfId);
- VNFContext vnfContext = commandExecutorInput.getVnfContext();
- vnfContext.setType(vnfType);
- vnfContext.setId(vnfId);
- vnfContext.setVersion(vnfVersion);
- return commandExecutorInput;
- }
-
- private RuntimeContext createCommandExecutorInputWithSubObjects() {
- RuntimeContext runtimeContext = new RuntimeContext();
+ private CommandExecutorInput createCommandExecutorInputWithSubObjects() {
+ CommandExecutorInput commandExecutorInput = new CommandExecutorInput();
+ RuntimeContext runtimeContext = new RuntimeContext();
+ commandExecutorInput.setRuntimeContext(runtimeContext);
RequestContext requestContext = new RequestContext();
- runtimeContext.setRequestContext(requestContext);
- CommonHeader commonHeader = new CommonHeader();
- requestContext.setCommonHeader(commonHeader);
- commonHeader.setFlags(new Flags(null, false, 0));
- ActionIdentifiers actionIdentifiers = new ActionIdentifiers();
- requestContext.setActionIdentifiers(actionIdentifiers);
- VNFContext vnfContext = new VNFContext();
- runtimeContext.setVnfContext(vnfContext);
- return runtimeContext;
- }
-
-
+ runtimeContext.setRequestContext(requestContext);
+ CommonHeader commonHeader = new CommonHeader();
+ requestContext.setCommonHeader(commonHeader);
+ Flags flags = new Flags();
+ commonHeader.setFlags(flags);
+ ActionIdentifiers actionIdentifiers = new ActionIdentifiers();
+ requestContext.setActionIdentifiers(actionIdentifiers);
+ VNFContext vnfContext = new VNFContext();
+ runtimeContext.setVnfContext(vnfContext);
+ return commandExecutorInput;
+ }
}
+
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/java/org/onap/appc/executor/TestCommandTask.java b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/java/org/onap/appc/executor/TestCommandTask.java
new file mode 100644
index 0000000..d21e788
--- /dev/null
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/java/org/onap/appc/executor/TestCommandTask.java
@@ -0,0 +1,231 @@
+/*-
+ * ============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.onap.appc.executor;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.onap.appc.domainmodel.lcm.*;
+import org.onap.appc.executor.impl.CommandExecutorImpl;
+import org.onap.appc.executor.impl.CommandTask;
+import org.onap.appc.executor.impl.objects.CommandRequest;
+import org.onap.appc.executor.objects.CommandExecutorInput;
+import org.onap.appc.requesthandler.RequestHandler;
+import org.onap.appc.workflow.WorkFlowManager;
+import org.onap.appc.workflow.objects.WorkflowRequest;
+import org.onap.appc.workflow.objects.WorkflowResponse;
+import org.onap.ccsdk.sli.adaptors.aai.AAIService;
+import org.osgi.framework.*;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyObject;
+
+/**
+ * @author sushilma
+ * @since September 04, 2017
+ */
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({FrameworkUtil.class,AAIService.class,BundleContext.class,ServiceReference.class,
+ BundleReference.class,Bundle.class,Filter.class,BundleListener.class,InvalidSyntaxException.class,
+ BundleException.class,FrameworkListener.class,ServiceRegistration.class,ServiceListener.class,
+ Version.class})
+public class TestCommandTask {
+ CommandTask task ;
+ private RequestHandler requestHandler;
+ private WorkFlowManager workflowManager;
+ private CommandRequest commandRequest;
+ private AAIService aaiService;
+
+ private BundleContext bundleContext = Mockito.mock(BundleContext.class);
+ private Bundle bundleService = Mockito.mock(Bundle.class);
+ private ServiceReference sref = Mockito.mock(ServiceReference.class);
+
+ private static final String TTL_FLAG= "TTL";
+ private static final String API_VERSION= "2.0.0";
+ private static final String ORIGINATOR_ID= "1";
+ @Before
+ public void init(){
+ aaiService = Mockito.mock(AAIService.class);
+/* PowerMockito.mockStatic(FrameworkUtil.class);
+ Mockito.when(bundleContext.getServiceReference(AAIService.class.getName())).thenReturn(sref);
+ Mockito.when(bundleContext.getService(any())).thenReturn(aaiService);
+ Mockito.when(FrameworkUtil.getBundle(AAIService.class).getBundleContext()).thenReturn(bundleContext);*/
+
+ PowerMockito.mockStatic(FrameworkUtil.class);
+ PowerMockito.when(FrameworkUtil.getBundle(AAIService.class)).thenReturn(bundleService);
+ PowerMockito.when(bundleService.getBundleContext()).thenReturn(bundleContext);
+ PowerMockito.when(bundleContext.getServiceReference(AAIService.class.getName())).thenReturn(sref);
+ PowerMockito.when(bundleContext.getService(sref)).thenReturn(aaiService);
+
+
+ requestHandler = Mockito.mock(RequestHandler.class);
+ workflowManager = Mockito.mock(WorkFlowManager.class);
+ task = new CommandTask(requestHandler ,workflowManager );
+ }
+
+ @Test
+ public void testRunPositive(){
+ Mockito.when(workflowManager.executeWorkflow(anyObject())).thenReturn(getWorkflowResponse());
+ task.setWorkflowManager(workflowManager);
+ task.setRequestHandler(requestHandler);
+ task.setCommandRequest(getCommandRequest("FIREWALL",30,new Date(), "11" ,setTTLInFlags("30"),VNFOperation.Sync, "1", "1.0"));
+ task.run();
+ Assert.assertNotNull(task.getCommandRequest().getCommandExecutorInput().getRuntimeContext().getResponseContext());
+ }
+
+ @Test
+ public void testRunPositiveTerminateFailed(){
+ Mockito.when(workflowManager.executeWorkflow(anyObject())).thenReturn(getWorkflowResponse());
+ task.setWorkflowManager(workflowManager);
+ task.setRequestHandler(requestHandler);
+ task.setCommandRequest(getCommandRequest("FIREWALL",30,new Date(), "12" ,setTTLInFlags("30"),VNFOperation.Terminate, "2", "1.0"));
+ setResponseContext(300,task.getCommandRequest().getCommandExecutorInput().getRuntimeContext());
+ task.run();
+ Assert.assertNotNull(task.getCommandRequest().getCommandExecutorInput().getRuntimeContext().getResponseContext());
+ }
+
+
+ @Ignore
+ public void testRunPositiveTerminateSuccess(){
+ Mockito.when(workflowManager.executeWorkflow(anyObject())).thenReturn(getWorkflowResponse());
+ task.setWorkflowManager(workflowManager);
+ task.setRequestHandler(requestHandler);
+ task.setCommandRequest(getCommandRequest("FIREWALL",30,new Date(), "12" ,setTTLInFlags("30"),VNFOperation.Terminate, "2", "1.0"));
+ setResponseContext(100,task.getCommandRequest().getCommandExecutorInput().getRuntimeContext());
+ task.run();
+ Assert.assertNotNull(task.getCommandRequest().getCommandExecutorInput().getRuntimeContext().getResponseContext());
+ }
+
+ private WorkflowResponse getWorkflowResponse (){
+ WorkflowResponse wfResponse = new WorkflowResponse();
+ ResponseContext responseContext = createResponseContextWithObjects();
+ wfResponse.setResponseContext(responseContext);
+ responseContext.setPayload("");
+ wfResponse.getResponseContext().getStatus().setCode(100);
+ return wfResponse;
+ }
+
+ private ResponseContext createResponseContextWithObjects(){
+ ResponseContext responseContext = new ResponseContext();
+ CommonHeader commonHeader = new CommonHeader();
+ Flags flags = new Flags();
+ Status status = new Status();
+ responseContext.setCommonHeader(commonHeader);
+ responseContext.setStatus(status);
+ commonHeader.setFlags(flags);
+ return responseContext;
+ }
+
+ private void setResponseContext(int statusCode ,RuntimeContext runtimeContext ){
+ ResponseContext responseContext = createResponseContextWithObjects();
+ responseContext.getStatus().setCode(statusCode);
+ runtimeContext.setResponseContext(responseContext);
+ }
+
+ private CommandRequest getCommandRequest(String vnfType , Integer ttl , Date timeStamp, String requestId,
+ Map<String,Object> flags, VNFOperation command , String vnfId, String vnfVersion ){
+
+ CommandExecutorInput commandExecutorInput = pouplateCommandExecutorInput(vnfType, ttl, vnfVersion, timeStamp, API_VERSION, requestId, ORIGINATOR_ID, "", command, vnfId, "");
+ CommandRequest request = new CommandRequest(commandExecutorInput);
+ request.setCommandExecutorInput(commandExecutorInput);
+ request.setCommandInTimeStamp(new Date());
+ return request;
+ }
+
+ private CommandExecutorInput pouplateCommandExecutorInput(String vnfType, int ttl, String vnfVersion, Date timeStamp, String apiVersion, String requestId, String originatorID, String subRequestID, VNFOperation action, String vnfId , String payload){
+ CommandExecutorInput commandExecutorInput = createCommandExecutorInputWithSubObjects();
+ RuntimeContext runtimeContext = commandExecutorInput.getRuntimeContext();
+ RequestContext requestContext = runtimeContext.getRequestContext();
+ ResponseContext responseContext = createResponseContextWithSuObjects();
+ runtimeContext.setResponseContext(responseContext);
+
+ requestContext.getCommonHeader().getFlags().setTtl(ttl);
+ requestContext.getCommonHeader().setApiVer(apiVersion);
+ requestContext.getCommonHeader().setTimestamp(timeStamp);
+ requestContext.getCommonHeader().setRequestId(requestId);
+ requestContext.getCommonHeader().setSubRequestId(subRequestID);
+ requestContext.getCommonHeader().setOriginatorId(originatorID);
+ requestContext.setAction(action);
+ requestContext.setPayload(payload);
+ requestContext.getActionIdentifiers().setVnfId(vnfId);
+ requestContext.getActionIdentifiers().setServiceInstanceId("test");
+ VNFContext vnfContext = runtimeContext.getVnfContext();
+ vnfContext.setType(vnfType);
+ vnfContext.setId(vnfId);
+ vnfContext.setVersion(vnfVersion);
+ return commandExecutorInput;
+ }
+
+ private CommandExecutorInput createCommandExecutorInputWithSubObjects() {
+ CommandExecutorInput commandExecutorInput = new CommandExecutorInput();
+ RuntimeContext runtimeContext = createRuntimeContextWithSubObjects();
+ commandExecutorInput.setRuntimeContext(runtimeContext);
+ return commandExecutorInput;
+ }
+
+ private ResponseContext createResponseContextWithSuObjects(){
+ ResponseContext responseContext = new ResponseContext();
+ CommonHeader commonHeader = new CommonHeader();
+ Flags flags = new Flags();
+ Status status = new Status();
+ responseContext.setCommonHeader(commonHeader);
+ responseContext.setStatus(status);
+ commonHeader.setFlags(flags);
+ return responseContext;
+ }
+
+ private RuntimeContext createRuntimeContextWithSubObjects() {
+ RuntimeContext runtimeContext = new RuntimeContext();
+ RequestContext requestContext = new RequestContext();
+ runtimeContext.setRequestContext(requestContext);
+ CommonHeader commonHeader = new CommonHeader();
+ requestContext.setCommonHeader(commonHeader);
+ Flags flags = new Flags();
+ commonHeader.setFlags(flags);
+ ActionIdentifiers actionIdentifiers = new ActionIdentifiers();
+ requestContext.setActionIdentifiers(actionIdentifiers);
+ VNFContext vnfContext = new VNFContext();
+ runtimeContext.setVnfContext(vnfContext);
+ return runtimeContext;
+ }
+
+ private Map<String,Object> setTTLInFlags( String value){
+ Map<String,Object> flags = new HashMap<String,Object>();
+ if( value != null || !("".equalsIgnoreCase(value))){
+ flags.put(TTL_FLAG, value);
+ }
+ return flags;
+ }
+}
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/resources/org/onap/appc/default.properties b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/resources/org/onap/appc/default.properties
index 671d8b0..28b45df 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/resources/org/onap/appc/default.properties
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-core/src/test/resources/org/onap/appc/default.properties
@@ -88,4 +88,3 @@
appc.LCM.provider.user=test
appc.LCM.provider.pass=test
-
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-features/pom.xml b/appc-dispatcher/appc-command-executor/appc-command-executor-features/pom.xml
index bed8584..566c1f4 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-features/pom.xml
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-features/pom.xml
@@ -1,107 +1,132 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>appc-command-executor</artifactId>
- <groupId>org.onap.appc</groupId>
- <version>1.3.0-SNAPSHOT</version>
- </parent>
- <name>appc-command-executor-features</name>
- <artifactId>appc-command-executor-features</artifactId>
+<!--
+ ============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
- <packaging>jar</packaging>
+ http://www.apache.org/licenses/LICENSE-2.0
- <dependencies>
- <dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-command-executor-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-command-executor-core</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
+ 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.
- <build>
- <resources>
- <resource>
- <filtering>true</filtering>
- <directory>src/main/resources</directory>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-resources-plugin</artifactId>
- <executions>
- <execution>
- <id>filter</id>
- <goals>
- <goal>resources</goal>
- </goals>
- <phase>generate-resources</phase>
- </execution>
- </executions>
- </plugin>
-<!-- <plugin> -->
- <!-- launches the feature test, which validates that your karaf feature
- can be installed inside of a karaf container. It doesn't validate that your
- functionality works correctly, just that you have all of the dependent bundles
- defined correctly. -->
-<!-- <groupId>org.apache.maven.plugins</groupId> -->
-<!-- <artifactId>maven-surefire-plugin</artifactId> -->
-<!-- <version>2.16</version> -->
-<!-- <configuration> -->
-<!-- <systemPropertyVariables> -->
-<!-- <karaf.distro.groupId>org.opendaylight.controller</karaf.distro.groupId> -->
-<!-- <karaf.distro.artifactId>opendaylight-karaf-empty</karaf.distro.artifactId> -->
-<!-- <karaf.distro.version>${odl.karaf.empty.distro.version}</karaf.distro.version> -->
-<!-- </systemPropertyVariables> -->
-<!-- <dependenciesToScan> -->
-<!-- <dependency>org.opendaylight.yangtools:features-test</dependency> -->
-<!-- </dependenciesToScan> -->
-<!-- <classpathDependencyExcludes> -->
- <!-- The dependencies which bring in AbstractDataBrokerTest class brings
- in a second PaxExam container which results in the feature tests failing
- with a message similar to: "ERROR o.ops4j.pax.exam.spi.PaxExamRuntime - Ambiguous
- TestContainer ..." This excludes the container we don't want to use. -->
-<!-- <classpathDependencyExcludes>org.ops4j.pax.exam:pax-exam-container-native</classpathDependencyExcludes> -->
-<!-- </classpathDependencyExcludes> -->
-<!-- </configuration> -->
-<!-- </plugin> -->
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>attach-artifacts</id>
- <goals>
- <goal>attach-artifact</goal>
- </goals>
- <phase>package</phase>
- <configuration>
- <artifacts>
- <artifact>
- <file>${project.build.directory}/classes/${features.file}</file>
- <type>xml</type>
- <classifier>features</classifier>
- </artifact>
- </artifacts>
- </configuration>
- </execution>
- </executions>
- </plugin>
+ ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ ============LICENSE_END=========================================================
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>appc-command-executor</artifactId>
+ <groupId>org.onap.appc</groupId>
+ <version>1.3.0-SNAPSHOT</version>
+ </parent>
- <!-- Skipping ODL feature test -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <skipTests>true</skipTests>
- </configuration>
- </plugin>
- </plugins>
- </build>
+ <name>APPC Command Executor - Features</name>
+ <artifactId>appc-command-executor-features</artifactId>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>appc-command-executor-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.appc</groupId>
+ <artifactId>appc-command-executor-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <resources>
+ <resource>
+ <filtering>true</filtering>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>filter</id>
+ <goals>
+ <goal>resources</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- <plugin> -->
+ <!-- launches the feature test, which validates that your karaf feature
+ can be installed inside of a karaf container. It doesn't validate that your
+ functionality works correctly, just that you have all of the dependent bundles
+ defined correctly. -->
+ <!-- <groupId>org.apache.maven.plugins</groupId> -->
+ <!-- <artifactId>maven-surefire-plugin</artifactId> -->
+ <!-- <version>2.16</version> -->
+ <!-- <configuration> -->
+ <!-- <systemPropertyVariables> -->
+ <!-- <karaf.distro.groupId>org.opendaylight.controller</karaf.distro.groupId> -->
+ <!-- <karaf.distro.artifactId>opendaylight-karaf-empty</karaf.distro.artifactId> -->
+ <!-- <karaf.distro.version>${odl.karaf.empty.distro.version}</karaf.distro.version> -->
+ <!-- </systemPropertyVariables> -->
+ <!-- <dependenciesToScan> -->
+ <!-- <dependency>org.opendaylight.yangtools:features-test</dependency> -->
+ <!-- </dependenciesToScan> -->
+ <!-- <classpathDependencyExcludes> -->
+ <!-- The dependencies which bring in AbstractDataBrokerTest class brings
+ in a second PaxExam container which results in the feature tests failing
+ with a message similar to: "ERROR o.ops4j.pax.exam.spi.PaxExamRuntime - Ambiguous
+ TestContainer ..." This excludes the container we don't want to use. -->
+ <!-- <classpathDependencyExcludes>org.ops4j.pax.exam:pax-exam-container-native</classpathDependencyExcludes> -->
+ <!-- </classpathDependencyExcludes> -->
+ <!-- </configuration> -->
+ <!-- </plugin> -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-artifacts</id>
+ <goals>
+ <goal>attach-artifact</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <artifacts>
+ <artifact>
+ <file>${project.build.directory}/classes/${features.file}</file>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </artifact>
+ </artifacts>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Skipping ODL feature test -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skipTests>true</skipTests>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</project>
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-features/src/main/resources/features.xml b/appc-dispatcher/appc-command-executor/appc-command-executor-features/src/main/resources/features.xml
index fc1ec09..0077d59 100644
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-features/src/main/resources/features.xml
+++ b/appc-dispatcher/appc-command-executor/appc-command-executor-features/src/main/resources/features.xml
@@ -25,13 +25,14 @@
<features name="appc-command-executor-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
-
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
+
<feature name='appc-command-executor' description="application executor" version='${project.version}'>
- <bundle>mvn:org.onap.appc/execution-queue-management-lib/${project.version}</bundle>
+ <bundle>mvn:org.onap.appc/execution-queue-management-lib/${project.version}</bundle>
<bundle>mvn:org.onap.appc/appc-command-executor-api/${project.version}</bundle>
<bundle>mvn:org.onap.appc/appc-command-executor-core/${project.version}</bundle>
+ <!--<bundle>mvn:org.apache.commons/commons-lang3/3.4</bundle>-->
</feature>
</features>
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-installer/.gitignore b/appc-dispatcher/appc-command-executor/appc-command-executor-installer/.gitignore
deleted file mode 100644
index 731eb43..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-installer/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/target/
-/.settings/
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-installer/pom.xml b/appc-dispatcher/appc-command-executor/appc-command-executor-installer/pom.xml
deleted file mode 100644
index 407af7e..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-installer/pom.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-command-executor</artifactId>
- <version>1.3.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>appc-command-executor-installer</artifactId>
- <name>APPC Command Executor - Karaf Installer</name>
- <packaging>pom</packaging>
-
- <properties>
- <application.name>appc-command-executor</application.name>
- <features.boot>appc-command-executor</features.boot>
- <features.repositories>
- mvn:org.onap.appc/appc-command-executor-features/${project.version}/xml/features
- </features.repositories>
- <include.transitive.dependencies>false</include.transitive.dependencies>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-command-executor-features</artifactId>
- <version>${project.version}</version>
- <classifier>features</classifier>
- <type>xml</type>
- <exclusions>
- <exclusion>
- <groupId>*</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-command-executor-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc-command-executor-core</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <executions>
- <execution>
- <id>maven-repo-zip</id>
- <goals>
- <goal>single</goal>
- </goals>
- <phase>package</phase>
- <configuration>
- <appendAssemblyId>false</appendAssemblyId>
- <attach>false</attach>
- <finalName>stage/${application.name}-${project.version}</finalName>
- <descriptors>
- <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor>
- </descriptors>
- </configuration>
- </execution>
- <execution>
- <id>installer-zip</id>
- <goals>
- <goal>single</goal>
- </goals>
- <phase>package</phase>
- <configuration>
- <appendAssemblyId>false</appendAssemblyId>
- <attach>true</attach>
- <finalName>${application.name}-${project.version}</finalName>
- <descriptors>
- <descriptor>src/assembly/assemble_installer_zip.xml</descriptor>
- </descriptors>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>copy-dependencies</id>
- <goals>
- <goal>copy-dependencies</goal>
- </goals>
- <phase>prepare-package</phase>
- <configuration>
- <outputDirectory>${project.build.directory}/assembly/system</outputDirectory>
- <overWriteReleases>false</overWriteReleases>
- <overWriteSnapshots>true</overWriteSnapshots>
- <overWriteIfNewer>true</overWriteIfNewer>
- <useRepositoryLayout>true</useRepositoryLayout>
- <addParentPoms>false</addParentPoms>
- <copyPom>false</copyPom>
- <excludeGroupIds>org.opendaylight</excludeGroupIds>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-resources-plugin</artifactId>
- <executions>
- <execution>
- <id>copy-version</id>
- <goals>
- <goal>copy-resources</goal>
- </goals>
- <!-- here the phase you need -->
- <phase>validate</phase>
- <configuration>
- <outputDirectory>${basedir}/target/stage</outputDirectory>
- <resources>
- <resource>
- <directory>src/main/resources/scripts</directory>
- <includes>
- <include>install-feature.sh</include>
- </includes>
- <filtering>true</filtering>
- </resource>
- </resources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-installer/src/assembly/assemble_installer_zip.xml b/appc-dispatcher/appc-command-executor/appc-command-executor-installer/src/assembly/assemble_installer_zip.xml
deleted file mode 100644
index df18e18..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-installer/src/assembly/assemble_installer_zip.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<!--
- ============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=========================================================
- -->
-
-<!-- Defines how we build the .zip file which is our distribution. -->
-
-<assembly
- xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
- <id>controller</id>
- <formats>
- <format>zip</format>
- </formats>
-
- <!-- we want "system" and related files right at the root level
- as this file is suppose to be unzip on top of a karaf
- distro. -->
- <includeBaseDirectory>false</includeBaseDirectory>
-
- <fileSets>
- <fileSet>
- <directory>target/stage/</directory>
- <outputDirectory>${application.name}</outputDirectory>
- <fileMode>755</fileMode>
- <includes>
- <include>*.sh</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>target/stage/</directory>
- <outputDirectory>${application.name}</outputDirectory>
- <fileMode>644</fileMode>
- <excludes>
- <exclude>*.sh</exclude>
- </excludes>
- </fileSet>
- </fileSets>
-
-</assembly>
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-installer/src/assembly/assemble_mvnrepo_zip.xml b/appc-dispatcher/appc-command-executor/appc-command-executor-installer/src/assembly/assemble_mvnrepo_zip.xml
deleted file mode 100644
index 4278b4d..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-installer/src/assembly/assemble_mvnrepo_zip.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<!--
- ============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=========================================================
- -->
-
-<!-- Defines how we build the .zip file which is our distribution. -->
-
-<assembly
- xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0
- http://maven.apache.org/xsd/assembly-1.1.0.xsd">
- <id>controller</id>
- <formats>
- <format>zip</format>
- </formats>
-
- <!-- we want "system" and related files right at the root level
- as this file is suppose to be unzip on top of a karaf
- distro. -->
- <includeBaseDirectory>false</includeBaseDirectory>
-
- <fileSets>
- <fileSet>
- <directory>target/assembly/</directory>
- <outputDirectory>.</outputDirectory>
- <excludes>
- </excludes>
- </fileSet>
- </fileSets>
-
-</assembly>
diff --git a/appc-dispatcher/appc-command-executor/appc-command-executor-installer/src/main/resources/scripts/install-feature.sh b/appc-dispatcher/appc-command-executor/appc-command-executor-installer/src/main/resources/scripts/install-feature.sh
deleted file mode 100644
index d3596c6..0000000
--- a/appc-dispatcher/appc-command-executor/appc-command-executor-installer/src/main/resources/scripts/install-feature.sh
+++ /dev/null
@@ -1,63 +0,0 @@
-###
-# ============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=========================================================
-###
-
-#!/bin/bash
-
-ODL_HOME=${ODL_HOME:-/opt/opendaylight/current}
-ODL_KARAF_CLIENT=${ODL_KARAF_CLIENT:-${ODL_HOME}/bin/client}
-ODL_KARAF_CLIENT_OPTS=${ODL_KARAF_CLIENT_OPTS:-"-u karaf"}
-INSTALLERDIR=$(dirname $0)
-
-REPOZIP=${INSTALLERDIR}/${features.boot}-${project.version}.zip
-
-if [ -f ${REPOZIP} ]
-then
- unzip -n -d ${ODL_HOME} ${REPOZIP}
-else
- echo "ERROR : repo zip ($REPOZIP) not found"
- exit 1
-fi
-
-COUNT=0
-while [ $COUNT -lt 10 ]; do
- ${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:repo-add ${features.repositories} 2> /tmp/installErr
- cat /tmp/installErr
- if grep -q 'Failed to get the session' /tmp/installErr; then
- sleep 10
- else
- let COUNT=10
- fi
- let COUNT=COUNT+1
-done
-COUNT=0
-while [ $COUNT -lt 10 ]; do
- ${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:install ${features.boot} 2> /tmp/installErr
- cat /tmp/installErr
- if grep -q 'Failed to get the session' /tmp/installErr; then
- sleep 10
- else
- let COUNT=10
- fi
- let COUNT=COUNT+1
-done
diff --git a/appc-dispatcher/appc-command-executor/pom.xml b/appc-dispatcher/appc-command-executor/pom.xml
index 69cf839..dde1b7d 100644
--- a/appc-dispatcher/appc-command-executor/pom.xml
+++ b/appc-dispatcher/appc-command-executor/pom.xml
@@ -1,10 +1,37 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============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=========================================================
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.appc</groupId>
<artifactId>appc-dispatcher</artifactId>
<version>1.3.0-SNAPSHOT</version>
</parent>
+
<artifactId>appc-command-executor</artifactId>
<packaging>pom</packaging>
<name>APPC Command Executor</name>
@@ -17,7 +44,6 @@
<module>appc-command-executor-api</module>
<module>appc-command-executor-core</module>
<module>appc-command-executor-features</module>
- <module>appc-command-executor-installer</module>
</modules>
-</project>
\ No newline at end of file
+</project>