summaryrefslogtreecommitdiffstats
path: root/client/client-deployment/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'client/client-deployment/src/main')
-rw-r--r--client/client-deployment/src/main/java/org/onap/policy/apex/client/deployment/rest/ApexDeploymentRestResource.java26
-rw-r--r--client/client-deployment/src/main/java/org/onap/policy/apex/client/deployment/rest/ParameterCheck.java39
-rw-r--r--client/client-deployment/src/main/resources/webapp/resources/models/SmallModel.json416
3 files changed, 469 insertions, 12 deletions
diff --git a/client/client-deployment/src/main/java/org/onap/policy/apex/client/deployment/rest/ApexDeploymentRestResource.java b/client/client-deployment/src/main/java/org/onap/policy/apex/client/deployment/rest/ApexDeploymentRestResource.java
index d3a7d654a..55cabe900 100644
--- a/client/client-deployment/src/main/java/org/onap/policy/apex/client/deployment/rest/ApexDeploymentRestResource.java
+++ b/client/client-deployment/src/main/java/org/onap/policy/apex/client/deployment/rest/ApexDeploymentRestResource.java
@@ -21,9 +21,7 @@
package org.onap.policy.apex.client.deployment.rest;
import com.google.gson.JsonObject;
-
import java.io.InputStream;
-
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
@@ -32,8 +30,6 @@ import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataParam;
import org.onap.policy.apex.core.deployment.ApexDeploymentException;
import org.onap.policy.apex.core.deployment.EngineServiceFacade;
@@ -69,7 +65,7 @@ public class ApexDeploymentRestResource {
@GET
public Response createSession(@QueryParam("hostName") final String hostName, @QueryParam("port") final int port) {
final String host = hostName + ":" + port;
- final EngineServiceFacade engineServiceFacade = new EngineServiceFacade(hostName, port);
+ final EngineServiceFacade engineServiceFacade = getEngineServiceFacade(hostName, port);
try {
engineServiceFacade.init();
@@ -109,10 +105,10 @@ public class ApexDeploymentRestResource {
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response modelUpload(@FormDataParam("hostName") final String hostName, @FormDataParam("port") final int port,
@FormDataParam("file") final InputStream uploadedInputStream,
- @FormDataParam("file") final FormDataContentDisposition fileDetail,
+ @FormDataParam("fileName") final String fileName,
@FormDataParam("ignoreConflicts") final boolean ignoreConflicts,
@FormDataParam("forceUpdate") final boolean forceUpdate) {
- final EngineServiceFacade engineServiceFacade = new EngineServiceFacade(hostName, port);
+ final EngineServiceFacade engineServiceFacade = getEngineServiceFacade(hostName, port);
try {
engineServiceFacade.init();
@@ -124,8 +120,7 @@ public class ApexDeploymentRestResource {
}
try {
- engineServiceFacade.deployModel(fileDetail.getFileName(), uploadedInputStream, ignoreConflicts,
- forceUpdate);
+ engineServiceFacade.deployModel(fileName, uploadedInputStream, ignoreConflicts, forceUpdate);
} catch (final Exception e) {
LOGGER.warn("Error updating model on engine service " + engineServiceFacade.getKey().getId(), e);
final String errorMessage =
@@ -135,8 +130,19 @@ public class ApexDeploymentRestResource {
.build();
}
- return Response.ok("Model " + fileDetail.getFileName() + " deployed on engine service "
+ return Response.ok("Model " + fileName + " deployed on engine service "
+ engineServiceFacade.getKey().getId()).build();
}
+ /**
+ * Get an engine service facade for sending REST requests. This method is package because it is used by unit test.
+ *
+ * @param hostName the host name of the Apex engine
+ * @param port the port of the Apex engine
+ * @return the engine service facade
+ */
+ protected EngineServiceFacade getEngineServiceFacade(final String hostName, final int port) {
+ return new EngineServiceFacade(hostName, port);
+ }
+
}
diff --git a/client/client-deployment/src/main/java/org/onap/policy/apex/client/deployment/rest/ParameterCheck.java b/client/client-deployment/src/main/java/org/onap/policy/apex/client/deployment/rest/ParameterCheck.java
index 4e75763db..cad0911f1 100644
--- a/client/client-deployment/src/main/java/org/onap/policy/apex/client/deployment/rest/ParameterCheck.java
+++ b/client/client-deployment/src/main/java/org/onap/policy/apex/client/deployment/rest/ParameterCheck.java
@@ -1,6 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * Copyright (C) 2019 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,7 +22,6 @@
package org.onap.policy.apex.client.deployment.rest;
import java.util.Map;
-
import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
import org.slf4j.ext.XLogger;
import org.slf4j.ext.XLoggerFactory;
@@ -71,12 +71,19 @@ public final class ParameterCheck {
* @return the host name
*/
public static String getHostName(final Map<String, String[]> parameterMap) {
+ if (parameterMap == null) {
+ return null;
+ }
+
if (!parameterMap.containsKey(HOSTNAME_PAR)) {
LOGGER.warn(PARAMETER + HOSTNAME_PAR + NOT_FOUND);
return null;
}
final String[] hostNameValue = parameterMap.get(HOSTNAME_PAR);
+ if (hostNameValue == null) {
+ return null;
+ }
if (hostNameValue.length == 0 || hostNameValue[0].trim().length() == 0) {
LOGGER.warn("value of parameter \"" + HOSTNAME_PAR + NOT_FOUND);
@@ -93,6 +100,10 @@ public final class ParameterCheck {
* @return the port
*/
public static int getPort(final Map<String, String[]> parameterMap) {
+ if (parameterMap == null) {
+ return -1;
+ }
+
if (!parameterMap.containsKey(PORT_PAR)) {
LOGGER.warn(PARAMETER + PORT_PAR + NOT_FOUND);
return -1;
@@ -130,6 +141,10 @@ public final class ParameterCheck {
* @return the engine key
*/
public static AxArtifactKey getEngineKey(final Map<String, String[]> parameterMap) {
+ if (parameterMap == null) {
+ return null;
+ }
+
String artifactKeyParameter = null;
for (final String parameter : parameterMap.keySet()) {
// Check for an AxArtifactKey parameter
@@ -152,7 +167,12 @@ public final class ParameterCheck {
return null;
}
- return new AxArtifactKey(axArtifactKeyArray[1]);
+ try {
+ return new AxArtifactKey(axArtifactKeyArray[1]);
+ } catch (Exception apEx) {
+ LOGGER.trace("invalid artifact key ID {}", axArtifactKeyArray[1], apEx);
+ return null;
+ }
}
/**
@@ -164,6 +184,10 @@ public final class ParameterCheck {
*/
public static ParameterCheck.StartStop getStartStop(final Map<String, String[]> parameterMap,
final AxArtifactKey engineKey) {
+ if (parameterMap == null || engineKey == null) {
+ return null;
+ }
+
final String startStopPar = AXARTIFACTKEY_PAR + '#' + engineKey.getId();
if (!parameterMap.containsKey(startStopPar)) {
LOGGER.warn("parameter \"{}\" not found", startStopPar);
@@ -171,6 +195,9 @@ public final class ParameterCheck {
}
final String[] startStopValue = parameterMap.get(startStopPar);
+ if (startStopValue == null) {
+ return null;
+ }
if (startStopValue.length == 0 || startStopValue[0].trim().length() == 0) {
LOGGER.warn("value of parameter \"{}\" not found", startStopPar);
@@ -198,6 +225,10 @@ public final class ParameterCheck {
* @return The long value
*/
public static long getLong(final Map<String, String[]> parameterMap, final String longName) {
+ if (parameterMap == null || longName == null) {
+ return -1;
+ }
+
if (!parameterMap.containsKey(longName)) {
LOGGER.warn("parameter \"{}\" not found", longName);
return -1;
@@ -205,6 +236,10 @@ public final class ParameterCheck {
final String[] longValue = parameterMap.get(longName);
+ if (longValue == null) {
+ return -1;
+ }
+
if (longValue.length == 0 || longValue[0].trim().length() == 0) {
LOGGER.warn("value of parameter \"{}\" not found", longName);
return -1;
diff --git a/client/client-deployment/src/main/resources/webapp/resources/models/SmallModel.json b/client/client-deployment/src/main/resources/webapp/resources/models/SmallModel.json
new file mode 100644
index 000000000..5c0628809
--- /dev/null
+++ b/client/client-deployment/src/main/resources/webapp/resources/models/SmallModel.json
@@ -0,0 +1,416 @@
+{
+ "apexPolicyModel" : {
+ "key" : {
+ "name" : "SmallModel",
+ "version" : "0.0.1"
+ },
+ "keyInformation" : {
+ "key" : {
+ "name" : "SmallModel_KeyInfo",
+ "version" : "0.0.1"
+ },
+ "keyInfoMap" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "BasicContextAlbum",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "BasicContextAlbum",
+ "version" : "0.0.1"
+ },
+ "UUID" : "fec1b353-b35f-4384-b7d9-69622059c248",
+ "description" : "Generated description for a concept called \"BasicContextAlbum\" with version \"0.0.1\" and UUID \"fec1b353-b35f-4384-b7d9-69622059c248\""
+ }
+ }, {
+ "key" : {
+ "name" : "BasicEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "BasicEvent",
+ "version" : "0.0.1"
+ },
+ "UUID" : "cc8d3c1a-e975-459a-bcd2-69f423eaa1f3",
+ "description" : "Generated description for a concept called \"BasicEvent\" with version \"0.0.1\" and UUID \"cc8d3c1a-e975-459a-bcd2-69f423eaa1f3\""
+ }
+ }, {
+ "key" : {
+ "name" : "BasicPolicy",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "BasicPolicy",
+ "version" : "0.0.1"
+ },
+ "UUID" : "d0c5d8ee-5fe7-4978-89ce-4a3e69cad043",
+ "description" : "Generated description for a concept called \"BasicPolicy\" with version \"0.0.1\" and UUID \"d0c5d8ee-5fe7-4978-89ce-4a3e69cad043\""
+ }
+ }, {
+ "key" : {
+ "name" : "BasicTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "BasicTask",
+ "version" : "0.0.1"
+ },
+ "UUID" : "c5651414-fc1c-493b-878d-75f0ce685c36",
+ "description" : "Generated description for a concept called \"BasicTask\" with version \"0.0.1\" and UUID \"c5651414-fc1c-493b-878d-75f0ce685c36\""
+ }
+ }, {
+ "key" : {
+ "name" : "IntType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "IntType",
+ "version" : "0.0.1"
+ },
+ "UUID" : "790ff718-8dc0-44e0-89d8-1b3bbe238310",
+ "description" : "Generated description for a concept called \"IntType\" with version \"0.0.1\" and UUID \"790ff718-8dc0-44e0-89d8-1b3bbe238310\""
+ }
+ }, {
+ "key" : {
+ "name" : "SmallModel",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SmallModel",
+ "version" : "0.0.1"
+ },
+ "UUID" : "a1bd1f4e-713b-456b-b1a8-bb48beee28e8",
+ "description" : "Generated description for a concept called \"SmallModel\" with version \"0.0.1\" and UUID \"a1bd1f4e-713b-456b-b1a8-bb48beee28e8\""
+ }
+ }, {
+ "key" : {
+ "name" : "SmallModel_Albums",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SmallModel_Albums",
+ "version" : "0.0.1"
+ },
+ "UUID" : "72bed9af-ab7d-3379-b9f7-b5eca5c9ef22",
+ "description" : "Generated description for concept referred to by key \"SmallModel_Albums:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "SmallModel_Events",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SmallModel_Events",
+ "version" : "0.0.1"
+ },
+ "UUID" : "796dc6b0-627d-34ae-a5e2-1bc4b4b486b8",
+ "description" : "Generated description for concept referred to by key \"SmallModel_Events:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "SmallModel_KeyInfo",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SmallModel_KeyInfo",
+ "version" : "0.0.1"
+ },
+ "UUID" : "b4876774-6907-3d27-a2b8-f05737c5ee4a",
+ "description" : "Generated description for concept referred to by key \"SmallModel_KeyInfo:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "SmallModel_Policies",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SmallModel_Policies",
+ "version" : "0.0.1"
+ },
+ "UUID" : "5bcf946b-67be-3190-a906-f954896f999f",
+ "description" : "Generated description for concept referred to by key \"SmallModel_Policies:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "SmallModel_Schemas",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SmallModel_Schemas",
+ "version" : "0.0.1"
+ },
+ "UUID" : "c25bf5c3-7f1e-3667-b8a9-971ba21517bc",
+ "description" : "Generated description for concept referred to by key \"SmallModel_Schemas:0.0.1\""
+ }
+ }, {
+ "key" : {
+ "name" : "SmallModel_Tasks",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "SmallModel_Tasks",
+ "version" : "0.0.1"
+ },
+ "UUID" : "43b015ca-2ed1-3a35-b103-e8a5aa68f1ef",
+ "description" : "Generated description for concept referred to by key \"SmallModel_Tasks:0.0.1\""
+ }
+ } ]
+ }
+ },
+ "policies" : {
+ "key" : {
+ "name" : "SmallModel_Policies",
+ "version" : "0.0.1"
+ },
+ "policyMap" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "BasicPolicy",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "policyKey" : {
+ "name" : "BasicPolicy",
+ "version" : "0.0.1"
+ },
+ "template" : "FREEFORM",
+ "state" : {
+ "entry" : [ {
+ "key" : "OnlyState",
+ "value" : {
+ "stateKey" : {
+ "parentKeyName" : "BasicPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "NULL",
+ "localName" : "OnlyState"
+ },
+ "trigger" : {
+ "name" : "BasicEvent",
+ "version" : "0.0.1"
+ },
+ "stateOutputs" : {
+ "entry" : [ {
+ "key" : "OnlyOutput",
+ "value" : {
+ "key" : {
+ "parentKeyName" : "BasicPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "OnlyState",
+ "localName" : "OnlyOutput"
+ },
+ "outgoingEvent" : {
+ "name" : "BasicEvent",
+ "version" : "0.0.1"
+ },
+ "nextState" : {
+ "parentKeyName" : "NULL",
+ "parentKeyVersion" : "0.0.0",
+ "parentLocalName" : "NULL",
+ "localName" : "NULL"
+ }
+ }
+ } ]
+ },
+ "contextAlbumReference" : [ {
+ "name" : "BasicContextAlbum",
+ "version" : "0.0.1"
+ } ],
+ "taskSelectionLogic" : {
+ "key" : "NULL",
+ "logicFlavour" : "UNDEFINED",
+ "logic" : ""
+ },
+ "stateFinalizerLogicMap" : {
+ "entry" : [ ]
+ },
+ "defaultTask" : {
+ "name" : "BasicTask",
+ "version" : "0.0.1"
+ },
+ "taskReferences" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "BasicTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "parentKeyName" : "BasicPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "OnlyState",
+ "localName" : "BasicTask"
+ },
+ "outputType" : "DIRECT",
+ "output" : {
+ "parentKeyName" : "BasicPolicy",
+ "parentKeyVersion" : "0.0.1",
+ "parentLocalName" : "OnlyState",
+ "localName" : "OnlyOutput"
+ }
+ }
+ } ]
+ }
+ }
+ } ]
+ },
+ "firstState" : "OnlyState"
+ }
+ } ]
+ }
+ },
+ "tasks" : {
+ "key" : {
+ "name" : "SmallModel_Tasks",
+ "version" : "0.0.1"
+ },
+ "taskMap" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "BasicTask",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "BasicTask",
+ "version" : "0.0.1"
+ },
+ "inputFields" : {
+ "entry" : [ {
+ "key" : "intPar",
+ "value" : {
+ "key" : "intPar",
+ "fieldSchemaKey" : {
+ "name" : "IntType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "outputFields" : {
+ "entry" : [ {
+ "key" : "intPar",
+ "value" : {
+ "key" : "intPar",
+ "fieldSchemaKey" : {
+ "name" : "IntType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ },
+ "taskParameters" : {
+ "entry" : [ ]
+ },
+ "contextAlbumReference" : [ {
+ "name" : "BasicContextAlbum",
+ "version" : "0.0.1"
+ } ],
+ "taskLogic" : {
+ "key" : "TaskLogic",
+ "logicFlavour" : "JAVASCRIPT",
+ "logic" : "executor.logger.debug(executor.subject.id);\nvar gc = executor.getContextAlbum(\"BasicContextAlbum\");\nexecutor.logger.debug(gc.name);\nexecutor.logger.debug(executor.inFields);\n\nexecutor.logger.debug(executor.eo);\n\nvar returnValue = executor.isTrue;"
+ }
+ }
+ } ]
+ }
+ },
+ "events" : {
+ "key" : {
+ "name" : "SmallModel_Events",
+ "version" : "0.0.1"
+ },
+ "eventMap" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "BasicEvent",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "BasicEvent",
+ "version" : "0.0.1"
+ },
+ "nameSpace" : "org.onap.policy.apex.events",
+ "source" : "source",
+ "target" : "target",
+ "parameter" : {
+ "entry" : [ {
+ "key" : "intPar",
+ "value" : {
+ "key" : "intPar",
+ "fieldSchemaKey" : {
+ "name" : "IntType",
+ "version" : "0.0.1"
+ },
+ "optional" : false
+ }
+ } ]
+ }
+ }
+ } ]
+ }
+ },
+ "albums" : {
+ "key" : {
+ "name" : "SmallModel_Albums",
+ "version" : "0.0.1"
+ },
+ "albums" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "BasicContextAlbum",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "BasicContextAlbum",
+ "version" : "0.0.1"
+ },
+ "scope" : "GLOBAL",
+ "isWritable" : true,
+ "itemSchema" : {
+ "name" : "IntType",
+ "version" : "0.0.1"
+ }
+ }
+ } ]
+ }
+ },
+ "schemas" : {
+ "key" : {
+ "name" : "SmallModel_Schemas",
+ "version" : "0.0.1"
+ },
+ "schemas" : {
+ "entry" : [ {
+ "key" : {
+ "name" : "IntType",
+ "version" : "0.0.1"
+ },
+ "value" : {
+ "key" : {
+ "name" : "IntType",
+ "version" : "0.0.1"
+ },
+ "schemaFlavour" : "Java",
+ "schemaDefinition" : "java.lang.Integer"
+ }
+ } ]
+ }
+ }
+ }
+}