diff options
Diffstat (limited to 'client/client-deployment/src/main')
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" + } + } ] + } + } + } +} |