summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java8
-rw-r--r--src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java28
-rw-r--r--src/main/java/org/onap/clamp/clds/model/properties/Global.java31
-rw-r--r--src/main/java/org/onap/clamp/clds/service/CldsService.java50
-rw-r--r--src/main/resources/META-INF/resources/designer/scripts/DeploymentCtrl.js10
-rw-r--r--src/main/resources/clds/templates/ui-alarm-default.json2
-rw-r--r--src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java8
-rw-r--r--src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java23
-rw-r--r--src/test/resources/clds/templates/ui-alarm-default.json2
-rw-r--r--src/test/resources/example/model-properties/holmes/modelBpmnProperties.json227
-rw-r--r--src/test/resources/example/model-properties/tca/modelBpmnProperties.json293
-rw-r--r--src/test/resources/http-cache/example/pdp/api/deletePolicy/.file1
-rw-r--r--src/test/resources/http-cache/example/pdp/api/deletePolicy/.header1
-rwxr-xr-xsrc/test/resources/http-cache/start_http_cache.sh2
-rwxr-xr-xsrc/test/resources/http-cache/third_party_proxy.py110
15 files changed, 477 insertions, 319 deletions
diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
index f20668e59..26281dad4 100644
--- a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
+++ b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
@@ -25,6 +25,7 @@ package org.onap.clamp.clds.client;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.util.Date;
@@ -152,16 +153,19 @@ public class DcaeDispatcherServices {
* The deployment ID
* @param serviceTypeId
* Service type ID
- * @param blueprintInput
+ * @param blueprintInputJson
* The value for each blueprint parameters in a flat JSON
* @return The status URL
*/
- public String createNewDeployment(String deploymentId, String serviceTypeId) {
+ public String createNewDeployment(String deploymentId, String serviceTypeId, JsonNode blueprintInputJson) {
Date startTime = new Date();
LoggingUtils.setTargetContext("DCAE", "createNewDeployment");
try {
ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("dcae.deployment.template");
rootNode.put("serviceTypeId", serviceTypeId);
+ if (blueprintInputJson != null) {
+ rootNode.put("inputs", blueprintInputJson);
+ }
String apiBodyString = rootNode.toString();
logger.info("Dcae api Body String - " + apiBodyString);
String url = refProp.getStringValue(DCAE_URL_PROPERTY_NAME) + DCAE_URL_PREFIX + deploymentId;
diff --git a/src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java b/src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java
index 9b8d9d9ce..118059d59 100644
--- a/src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java
+++ b/src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java
@@ -26,29 +26,26 @@ package org.onap.clamp.clds.model.properties;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import com.fasterxml.jackson.databind.JsonNode;
+
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* Provide base ModelElement functionality. Perform base parsing of properties
- * for a ModelElement (such as, VesCollector, Policy, Tca, Holmes,
- * ...)
+ * for a ModelElement (such as, VesCollector, Policy, Tca, Holmes, ...)
*/
public abstract class AbstractModelElement {
protected static final EELFLogger logger = EELFManager.getInstance().getLogger(AbstractModelElement.class);
protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
-
private final String type;
private final ModelBpmn modelBpmn;
private final String id;
protected String topicPublishes;
protected final JsonNode modelElementJsonNode;
private boolean isFound;
-
private final ModelProperties modelProp;
-
private static final String LOG_ELEMENT_NOT_FOUND = "Value '{}' for key 'name' not found in JSON";
private static final String LOG_ELEMENT_NOT_FOUND_IN_JSON = "Value '{}' for key 'name' not found in JSON {}";
@@ -118,6 +115,27 @@ public abstract class AbstractModelElement {
}
/**
+ * Return the Json value field of the json node element that has a name
+ * field equals to the given name.
+ */
+ public static JsonNode getJsonNodeByName(JsonNode nodeIn, String name) {
+ JsonNode vnode = null;
+ if (nodeIn != null) {
+ for (JsonNode node : nodeIn) {
+ if (node.path("name").asText().equals(name)) {
+ vnode = node.path("value");
+ }
+ }
+ }
+ if (vnode == null) {
+ logger.warn(LOG_ELEMENT_NOT_FOUND, name);
+ } else {
+ logger.debug(LOG_ELEMENT_NOT_FOUND_IN_JSON, name, nodeIn.toString());
+ }
+ return vnode;
+ }
+
+ /**
* Return the value field of the json node element that has a name field
* that equals the given name.
*/
diff --git a/src/main/java/org/onap/clamp/clds/model/properties/Global.java b/src/main/java/org/onap/clamp/clds/model/properties/Global.java
index ef36fef91..c4532b2ea 100644
--- a/src/main/java/org/onap/clamp/clds/model/properties/Global.java
+++ b/src/main/java/org/onap/clamp/clds/model/properties/Global.java
@@ -23,12 +23,12 @@
package org.onap.clamp.clds.model.properties;
-import java.util.List;
-
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import com.fasterxml.jackson.databind.JsonNode;
+import java.util.List;
+
/**
* Parse global json properties.
* <p>
@@ -38,14 +38,15 @@ import com.fasterxml.jackson.databind.JsonNode;
* ,"kings_mountain","Secaucus","lisle","concord","houston","akron"]}]
*/
public class Global {
- protected static final EELFLogger logger = EELFManager.getInstance().getLogger(Global.class);
- protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
- private String service;
- private String actionSet;
- private List<String> resourceVf;
- private List<String> resourceVfc;
- private List<String> location;
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(Global.class);
+ protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
+ private String service;
+ private String actionSet;
+ private List<String> resourceVf;
+ private List<String> resourceVfc;
+ private JsonNode deployParameters;
+ private List<String> location;
/**
* Parse global given json node.
@@ -58,6 +59,7 @@ public class Global {
actionSet = AbstractModelElement.getValueByName(globalNode, "actionSet");
resourceVf = AbstractModelElement.getValuesByName(globalNode, "vf");
resourceVfc = AbstractModelElement.getValuesByName(globalNode, "vfc");
+ deployParameters = AbstractModelElement.getJsonNodeByName(globalNode, "deployParameters");
location = AbstractModelElement.getValuesByName(globalNode, "location");
}
@@ -83,6 +85,10 @@ public class Global {
return actionSet;
}
+ public void setActionSet(String actionSet) {
+ this.actionSet = actionSet;
+ }
+
/**
* @return the resourceVf
*/
@@ -128,4 +134,11 @@ public class Global {
this.location = location;
}
+ public JsonNode getDeployParameters() {
+ return deployParameters;
+ }
+
+ public void setDeployParameters(JsonNode deployParameters) {
+ this.deployParameters = deployParameters;
+ }
}
diff --git a/src/main/java/org/onap/clamp/clds/service/CldsService.java b/src/main/java/org/onap/clamp/clds/service/CldsService.java
index e828f844f..2b6862dc5 100644
--- a/src/main/java/org/onap/clamp/clds/service/CldsService.java
+++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java
@@ -377,6 +377,20 @@ public class CldsService extends SecureServiceBase {
return names;
}
+ private void fillInCldsModel(CldsModel model) {
+ if (model.getTemplateName() != null) {
+ CldsTemplate template = cldsDao.getTemplate(model.getTemplateName());
+ if (template != null) {
+ model.setTemplateId(template.getId());
+ model.setDocText(template.getPropText());
+ // This is to provide the Bpmn XML when Template part in UI
+ // is
+ // disabled
+ model.setBpmnText(template.getBpmnText());
+ }
+ }
+ }
+
/**
* REST service that saves and processes an action for a CLDS model by name.
*
@@ -400,7 +414,7 @@ public class CldsService extends SecureServiceBase {
@Produces(MediaType.APPLICATION_JSON)
public Response putModelAndProcessAction(@PathParam("action") String action,
@PathParam("modelName") String modelName, @QueryParam("test") String test, CldsModel model)
- throws TransformerException, ParseException, GeneralSecurityException, DecoderException {
+ throws TransformerException, ParseException {
Date startTime = new Date();
CldsModel retrievedModel = null;
Boolean errorCase = false;
@@ -412,9 +426,7 @@ public class CldsService extends SecureServiceBase {
isAuthorized(permisionManage);
isAuthorizedForVf(model);
String userId = getUserId();
- String actionStateCd = CldsEvent.ACTION_STATE_INITIATED;
logger.info("PUT actionCd={}", actionCd);
- logger.info("PUT actionStateCd={}", actionStateCd);
logger.info("PUT modelName={}", modelName);
logger.info("PUT test={}", test);
logger.info("PUT bpmnText={}", model.getBpmnText());
@@ -422,17 +434,7 @@ public class CldsService extends SecureServiceBase {
logger.info("PUT userId={}", userId);
logger.info("PUT getTypeId={}", model.getTypeId());
logger.info("PUT deploymentId={}", model.getDeploymentId());
- if (model.getTemplateName() != null) {
- CldsTemplate template = cldsDao.getTemplate(model.getTemplateName());
- if (template != null) {
- model.setTemplateId(template.getId());
- model.setDocText(template.getPropText());
- // This is to provide the Bpmn XML when Template part in UI
- // is
- // disabled
- model.setBpmnText(template.getBpmnText());
- }
- }
+ this.fillInCldsModel(model);
// save model to db
model.setName(modelName);
model.save(cldsDao, getUserId());
@@ -568,9 +570,8 @@ public class CldsService extends SecureServiceBase {
Date startTime = new Date();
LoggingUtils.setRequestContext("CldsService: GET sdc services", getPrincipalName());
String retStr;
- String responseStr = sdcCatalogServices.getSdcServicesInformation(null);
try {
- retStr = createUiServiceFormatJson(responseStr);
+ retStr = createUiServiceFormatJson(sdcCatalogServices.getSdcServicesInformation(null));
} catch (IOException e) {
logger.error("IOException during SDC communication", e);
throw new SdcCommunicationException("IOException during SDC communication", e);
@@ -814,12 +815,12 @@ public class CldsService extends SecureServiceBase {
LoggingUtils.setRequestContext("CldsService: Deploy model", getPrincipalName());
Boolean errorCase = false;
try {
- try {
- checkForDuplicateServiceVf(modelName, model.getPropText());
- } catch (IOException | BadRequestException e) {
- errorCase = true;
- logger.error("Exception occured during duplicate check for service and VF", e);
- }
+ fillInCldsModel(model);
+ String bpmnJson = cldsBpmnTransformer.doXslTransformToString(model.getBpmnText());
+ logger.info("PUT bpmnJson={}", bpmnJson);
+ ModelProperties modelProp = new ModelProperties(modelName, model.getControlName(), CldsEvent.ACTION_DEPLOY,
+ false, bpmnJson, model.getPropText());
+ checkForDuplicateServiceVf(modelName, model.getPropText());
String deploymentId = "";
// If model is already deployed then pass same deployment id
if (model.getDeploymentId() != null && !model.getDeploymentId().isEmpty()) {
@@ -828,7 +829,7 @@ public class CldsService extends SecureServiceBase {
deploymentId = "closedLoop_" + UUID.randomUUID() + "_deploymentId";
}
String createNewDeploymentStatusUrl = dcaeDispatcherServices.createNewDeployment(deploymentId,
- model.getTypeId());
+ model.getTypeId(), modelProp.getGlobal().getDeployParameters());
String operationStatus = "processing";
long waitingTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(10);
while ("processing".equalsIgnoreCase(operationStatus)) {
@@ -930,7 +931,8 @@ public class CldsService extends SecureServiceBase {
if (service != null && resourceVf != null && !resourceVf.isEmpty()) {
List<CldsModelProp> cldsModelPropList = cldsDao.getDeployedModelProperties();
for (CldsModelProp cldsModelProp : cldsModelPropList) {
- JsonNode currentNode = JacksonUtils.getObjectMapperInstance().readTree(cldsModelProp.getPropText()).get("global");
+ JsonNode currentNode = JacksonUtils.getObjectMapperInstance().readTree(cldsModelProp.getPropText())
+ .get("global");
String currentService = AbstractModelElement.getValueByName(currentNode, "service");
List<String> currentVf = AbstractModelElement.getValuesByName(currentNode, "vf");
if (currentVf != null && !currentVf.isEmpty()) {
diff --git a/src/main/resources/META-INF/resources/designer/scripts/DeploymentCtrl.js b/src/main/resources/META-INF/resources/designer/scripts/DeploymentCtrl.js
index 3a5faf592..04ba83a78 100644
--- a/src/main/resources/META-INF/resources/designer/scripts/DeploymentCtrl.js
+++ b/src/main/resources/META-INF/resources/designer/scripts/DeploymentCtrl.js
@@ -30,11 +30,11 @@ app.controller('DeploymentCtrl',
elementMap["global"] = [];
}
- var index = elementMap["global"].findIndex(function (e) { return (typeof e == "object" && !(e instanceof Array)) && "deployParameters" in e; });
- if (index == -1) {
- elementMap["global"].push({"deployParameters": parameters});
- } else {
- elementMap["global"][index]["deployParameters"] = parameters;
+ var index = elementMap["global"].findIndex(function (e) { return (typeof e == "object" && !(e instanceof Array)) && "deployParameters" == e["name"]; });
+ if (index == -1) {
+ elementMap["global"].push({"name": "deployParameters", "value": parameters});
+ } else {
+ elementMap["global"][index]["value"] = parameters;
}
}
diff --git a/src/main/resources/clds/templates/ui-alarm-default.json b/src/main/resources/clds/templates/ui-alarm-default.json
index 0d0835981..c851e6cdd 100644
--- a/src/main/resources/clds/templates/ui-alarm-default.json
+++ b/src/main/resources/clds/templates/ui-alarm-default.json
@@ -267,7 +267,7 @@
"jnxSpaceSNAProcessUp": "vDBE-EMS-Juniper: jnxSpaceSNAProcessUp",
"jnxSpaceNodeDown": "vDBE-EMS-Juniper: jnxSpaceNodeDown",
"jnxSpaceNodeUp": "vDBE-EMS-Juniper: jnxSpaceNodeUp",
- " jnxSpaceNodeRemoval": "vDBE-EMS-Juniper: jnxSpaceNodeRemoval",
+ "jnxSpaceNodeRemoval": "vDBE-EMS-Juniper: jnxSpaceNodeRemoval",
"jnxCmCfgChange": "vDBE-Juniper: jnxCmCfgChange",
"jnxCmRescueChange": "vDBE-Juniper: jnxCmRescueChange",
"jnxEventTrap": "vDBE-Juniper: jnxEventTrap",
diff --git a/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java
index 40dffcd6b..fc5cb040f 100644
--- a/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java
+++ b/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java
@@ -57,8 +57,8 @@ import org.springframework.test.context.junit4.SpringRunner;
public class CsarInstallerItCase {
private static final String CSAR_ARTIFACT_NAME = "testArtifact.csar";
- private static final String SERVICE_UUID = "serviceUUID";
- private static final String RESOURCE1_UUID = "resource1UUID";
+ private static final String INVARIANT_SERVICE_UUID = "4cc5b45a-1f63-4194-8100-cd8e14248c92";
+ private static final String INVARIANT_RESOURCE1_UUID = "ba4d4b5d-f861-4155-886b-b1cdba5e0957";
@Autowired
private CsarInstaller csarInstaller;
@Autowired
@@ -84,8 +84,8 @@ public class CsarInstallerItCase {
Mockito.when(csarHelper.getServiceMetadata()).thenReturn(data);
Mockito.when(csarHandler.getSdcCsarHelper()).thenReturn(csarHelper);
Mockito.when(csarHandler.getBlueprintArtifactName()).thenReturn(CSAR_ARTIFACT_NAME);
- Mockito.when(csarHandler.getBlueprintInvariantServiceUuid()).thenReturn(SERVICE_UUID);
- Mockito.when(csarHandler.getBlueprintInvariantResourceUuid()).thenReturn(RESOURCE1_UUID);
+ Mockito.when(csarHandler.getBlueprintInvariantServiceUuid()).thenReturn(INVARIANT_SERVICE_UUID);
+ Mockito.when(csarHandler.getBlueprintInvariantResourceUuid()).thenReturn(INVARIANT_RESOURCE1_UUID);
return csarHandler;
}
diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
index a7ab94c57..25daf01f3 100644
--- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
+++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
@@ -28,6 +28,7 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
+import java.util.Arrays;
import org.junit.Before;
import org.junit.Test;
@@ -84,6 +85,17 @@ public class ModelPropertiesTest {
tca.getTcaItem().getTcaThresholds().get(1).getFieldPath());
assertEquals("GREATER_OR_EQUAL", tca.getTcaItem().getTcaThresholds().get(1).getOperator());
assertEquals(Integer.valueOf(123), tca.getTcaItem().getTcaThresholds().get(1).getThreshold());
+ // Test global prop
+ assertEquals("vnfRecipe", prop.getGlobal().getActionSet());
+ assertEquals("4cc5b45a-1f63-4194-8100-cd8e14248c92", prop.getGlobal().getService());
+ assertTrue(Arrays.equals(new String[] {
+ "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad"
+ }, prop.getGlobal().getResourceVf().toArray()));
+ assertTrue(Arrays.equals(new String[] {
+ "SNDGCA64", "ALPRGAED", "LSLEILAA", "MDTWNJC1"
+ }, prop.getGlobal().getLocation().toArray()));
+ assertEquals("value1", prop.getGlobal().getDeployParameters().get("input1").asText());
+ assertEquals("value2", prop.getGlobal().getDeployParameters().get("input2").asText());
}
@Test
@@ -108,6 +120,17 @@ public class ModelPropertiesTest {
assertTrue(holmes.isFound());
assertEquals("configPolicy1", holmes.getConfigPolicyName());
assertEquals("blabla", holmes.getCorrelationLogic());
+ // Test global prop
+ assertEquals("vnfRecipe", prop.getGlobal().getActionSet());
+ assertEquals("4cc5b45a-1f63-4194-8100-cd8e14248c92", prop.getGlobal().getService());
+ assertTrue(Arrays.equals(new String[] {
+ "f5213e3a-9191-4362-93b5-b67f8d770e44"
+ }, prop.getGlobal().getResourceVf().toArray()));
+ assertTrue(Arrays.equals(new String[] {
+ "SNDGCA64", "ALPRGAED", "LSLEILAA", "MDTWNJC1"
+ }, prop.getGlobal().getLocation().toArray()));
+ assertEquals("value1", prop.getGlobal().getDeployParameters().get("input1").asText());
+ assertEquals("value2", prop.getGlobal().getDeployParameters().get("input2").asText());
}
@Test
diff --git a/src/test/resources/clds/templates/ui-alarm-default.json b/src/test/resources/clds/templates/ui-alarm-default.json
index 0d0835981..c851e6cdd 100644
--- a/src/test/resources/clds/templates/ui-alarm-default.json
+++ b/src/test/resources/clds/templates/ui-alarm-default.json
@@ -267,7 +267,7 @@
"jnxSpaceSNAProcessUp": "vDBE-EMS-Juniper: jnxSpaceSNAProcessUp",
"jnxSpaceNodeDown": "vDBE-EMS-Juniper: jnxSpaceNodeDown",
"jnxSpaceNodeUp": "vDBE-EMS-Juniper: jnxSpaceNodeUp",
- " jnxSpaceNodeRemoval": "vDBE-EMS-Juniper: jnxSpaceNodeRemoval",
+ "jnxSpaceNodeRemoval": "vDBE-EMS-Juniper: jnxSpaceNodeRemoval",
"jnxCmCfgChange": "vDBE-Juniper: jnxCmCfgChange",
"jnxCmRescueChange": "vDBE-Juniper: jnxCmRescueChange",
"jnxEventTrap": "vDBE-Juniper: jnxEventTrap",
diff --git a/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json
index 43fecc9ea..6ac97ec85 100644
--- a/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json
+++ b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json
@@ -1,109 +1,122 @@
{
- "Holmes_0i4n2mm": [
- {
- "name": "correlationalLogic",
- "value": "blabla"
- },
- {
- "name": "configPolicyName",
- "value": "configPolicy1"
- }
- ],
- "Policy_0honxgv": {
- "policy1": [
- {
- "name": "pname",
- "value": "policy1"
- },
- {
- "name": "pid",
- "value": "0"
- },
- {
- "name": "timeout",
- "value": "345"
- },
- {
- "policyConfigurations": [
- [
- {
- "name": "maxRetries",
- "value": [
- "3"
- ]
- },
- {
- "name": "retryTimeLimit",
- "value": [
- "180"
- ]
- },
- {
- "name": "_id",
- "value": [
- "dGLuNqg"
- ]
- },
- {
- "name": "parentPolicy",
- "value": [
- ""
- ]
- },
- {
- "name": "targetResourceId",
- "value": [
- "resourceid"
- ]
- }
- ]
- ]
- }
- ]
- },
- "global": [
- {
- "name": "actionSet",
- "value": [
- "vnfRecipe"
- ]
- },
- {
- "name": "vf",
- "value": [
- "f5213e3a-9191-4362-93b5-b67f8d770e44"
- ]
- },
- {
- "name": "location",
- "value": [
- "SNDGCA64",
- "ALPRGAED",
- "LSLEILAA",
- "MDTWNJC1"
- ]
- }
- ],
- "shared": {
- "byService": {
- "": {
- "vf": {
- "": ""
- },
- "location": {
- "": ""
- },
- "alarmCondition": {
- "": ""
- }
- }
- },
- "byVf": {
- "": {
- "vfc": {
- "": ""
- }
- }
- }
- }
+ "Holmes_0i4n2mm": [
+ {
+ "name": "correlationalLogic",
+ "value": "blabla"
+ },
+ {
+ "name": "configPolicyName",
+ "value": "configPolicy1"
+ }
+ ],
+ "Policy_0honxgv": {
+ "policy1": [
+ {
+ "name": "pname",
+ "value": "policy1"
+ },
+ {
+ "name": "pid",
+ "value": "0"
+ },
+ {
+ "name": "timeout",
+ "value": "345"
+ },
+ {
+ "policyConfigurations": [
+ [
+ {
+ "name": "maxRetries",
+ "value": [
+ "3"
+ ]
+ },
+ {
+ "name": "retryTimeLimit",
+ "value": [
+ "180"
+ ]
+ },
+ {
+ "name": "_id",
+ "value": [
+ "dGLuNqg"
+ ]
+ },
+ {
+ "name": "parentPolicy",
+ "value": [
+ ""
+ ]
+ },
+ {
+ "name": "targetResourceId",
+ "value": [
+ "resourceid"
+ ]
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "global": [
+ {
+ "name": "actionSet",
+ "value": [
+ "vnfRecipe"
+ ]
+ },
+ {
+ "name": "service",
+ "value": [
+ "4cc5b45a-1f63-4194-8100-cd8e14248c92"
+ ]
+ },
+ {
+ "name": "vf",
+ "value": [
+ "f5213e3a-9191-4362-93b5-b67f8d770e44"
+ ]
+ },
+ {
+ "name": "location",
+ "value": [
+ "SNDGCA64",
+ "ALPRGAED",
+ "LSLEILAA",
+ "MDTWNJC1"
+ ]
+ },
+ {
+ "name": "deployParameters",
+ "value": {
+ "input1": "value1",
+ "input2": "value2"
+ }
+ }
+ ],
+ "shared": {
+ "byService": {
+ "": {
+ "vf": {
+ "": ""
+ },
+ "location": {
+ "": ""
+ },
+ "alarmCondition": {
+ "": ""
+ }
+ }
+ },
+ "byVf": {
+ "": {
+ "vfc": {
+ "": ""
+ }
+ }
+ }
+ }
}
diff --git a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json
index 8e2780cda..ce0f317dd 100644
--- a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json
+++ b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json
@@ -1,145 +1,152 @@
{
- "TCA_1jy9to4": {
- "group1": [
- {
- "name": "tname",
- "value": "group1"
- },
- {
- "name": "tuuid",
- "value": "f734f031-10aa-t8fb-330f-04dde2886325"
- },
- {
- "name": "tcaPolId",
- "value": "policy1"
- },
- {
- "name": "eventName",
- "value": "vFirewallBroadcastPackets"
- },
- {
- "name": "controlLoopSchemaType",
- "value": "VNF"
- },
- {
- "serviceConfigurations": [
- [
- "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
- "LESS_OR_EQUAL",
- "123",
- "ABATED"
- ],
- [
- "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
- "GREATER_OR_EQUAL",
- "123",
- "ONSET"
- ]
- ]
- }
- ]
- },
- "Policy_0honxgv": {
- "policy1": [
- {
- "name": "pname",
- "value": "policy1"
- },
- {
- "name": "pid",
- "value": "0"
- },
- {
- "name": "timeout",
- "value": "345"
- },
- {
- "policyConfigurations": [
- [
- {
- "name": "maxRetries",
- "value": [
- "3"
- ]
- },
- {
- "name": "retryTimeLimit",
- "value": [
- "180"
- ]
- },
- {
- "name": "_id",
- "value": [
- "dGLuNqg"
- ]
- },
- {
- "name": "parentPolicy",
- "value": [
- ""
- ]
- },
- {
- "name": "targetResourceId",
- "value": [
- "resourceid"
- ]
- }
- ]
- ]
- }
- ]
- },
- "global": [
- {
- "name": "actionSet",
- "value": [
- "vnfRecipe"
- ]
- },
- {
- "name": "service",
- "value": [
- "4cc5b45a-1f63-4194-8100-cd8e14248c92"
- ]
- },
- {
- "name": "vf",
- "value": [
- "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad"
- ]
- },
- {
- "name": "location",
- "value": [
- "SNDGCA64",
- "ALPRGAED",
- "LSLEILAA",
- "MDTWNJC1"
- ]
- }
- ],
- "shared": {
- "byService": {
- "": {
- "vf": {
- "": ""
- },
- "location": {
- "": ""
- },
- "alarmCondition": {
- "": ""
- }
- }
- },
- "byVf": {
- "": {
- "vfc": {
- "": ""
- }
- }
- }
- }
+ "TCA_1jy9to4": {
+ "group1": [
+ {
+ "name": "tname",
+ "value": "group1"
+ },
+ {
+ "name": "tuuid",
+ "value": "f734f031-10aa-t8fb-330f-04dde2886325"
+ },
+ {
+ "name": "tcaPolId",
+ "value": "policy1"
+ },
+ {
+ "name": "eventName",
+ "value": "vFirewallBroadcastPackets"
+ },
+ {
+ "name": "controlLoopSchemaType",
+ "value": "VNF"
+ },
+ {
+ "serviceConfigurations": [
+ [
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+ "LESS_OR_EQUAL",
+ "123",
+ "ABATED"
+ ],
+ [
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+ "GREATER_OR_EQUAL",
+ "123",
+ "ONSET"
+ ]
+ ]
+ }
+ ]
+ },
+ "Policy_0honxgv": {
+ "policy1": [
+ {
+ "name": "pname",
+ "value": "policy1"
+ },
+ {
+ "name": "pid",
+ "value": "0"
+ },
+ {
+ "name": "timeout",
+ "value": "345"
+ },
+ {
+ "policyConfigurations": [
+ [
+ {
+ "name": "maxRetries",
+ "value": [
+ "3"
+ ]
+ },
+ {
+ "name": "retryTimeLimit",
+ "value": [
+ "180"
+ ]
+ },
+ {
+ "name": "_id",
+ "value": [
+ "dGLuNqg"
+ ]
+ },
+ {
+ "name": "parentPolicy",
+ "value": [
+ ""
+ ]
+ },
+ {
+ "name": "targetResourceId",
+ "value": [
+ "resourceid"
+ ]
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "global": [
+ {
+ "name": "actionSet",
+ "value": [
+ "vnfRecipe"
+ ]
+ },
+ {
+ "name": "service",
+ "value": [
+ "4cc5b45a-1f63-4194-8100-cd8e14248c92"
+ ]
+ },
+ {
+ "name": "vf",
+ "value": [
+ "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad"
+ ]
+ },
+ {
+ "name": "location",
+ "value": [
+ "SNDGCA64",
+ "ALPRGAED",
+ "LSLEILAA",
+ "MDTWNJC1"
+ ]
+ },
+ {
+ "name": "deployParameters",
+ "value": {
+ "input1": "value1",
+ "input2": "value2"
+ }
+ }
+ ],
+ "shared": {
+ "byService": {
+ "": {
+ "vf": {
+ "": ""
+ },
+ "location": {
+ "": ""
+ },
+ "alarmCondition": {
+ "": ""
+ }
+ }
+ },
+ "byVf": {
+ "": {
+ "vfc": {
+ "": ""
+ }
+ }
+ }
+ }
}
diff --git a/src/test/resources/http-cache/example/pdp/api/deletePolicy/.file b/src/test/resources/http-cache/example/pdp/api/deletePolicy/.file
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/src/test/resources/http-cache/example/pdp/api/deletePolicy/.file
@@ -0,0 +1 @@
+[] \ No newline at end of file
diff --git a/src/test/resources/http-cache/example/pdp/api/deletePolicy/.header b/src/test/resources/http-cache/example/pdp/api/deletePolicy/.header
new file mode 100644
index 000000000..6a280d972
--- /dev/null
+++ b/src/test/resources/http-cache/example/pdp/api/deletePolicy/.header
@@ -0,0 +1 @@
+{"Transfer-Encoding": "chunked", "Set-Cookie": "JSESSIONID=158qxkdtdobkd1umr3ikkgrmlx;Path=/", "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", "Server": "Jetty(9.3.21.v20170918)", "Content-Type": "application/json", "X-ECOMP-RequestID": "e2ddb3c8-994f-47df-b4dc-097d4fb55c08"} \ No newline at end of file
diff --git a/src/test/resources/http-cache/start_http_cache.sh b/src/test/resources/http-cache/start_http_cache.sh
index fe9e9911f..47c3cc87b 100755
--- a/src/test/resources/http-cache/start_http_cache.sh
+++ b/src/test/resources/http-cache/start_http_cache.sh
@@ -34,4 +34,4 @@ fi
echo 'Installing requests packages for Python'
pip install requests
echo 'Executing the Http proxy in Cache mode only'
-python third_party_proxy.py --port 8080 --root /usr/src/http-cache-app/data-cache
+python third_party_proxy.py --port 8080 --root /usr/src/http-cache-app/data-cache --proxyaddress localhost:8085
diff --git a/src/test/resources/http-cache/third_party_proxy.py b/src/test/resources/http-cache/third_party_proxy.py
index 72ea49587..29d34cc89 100755
--- a/src/test/resources/http-cache/third_party_proxy.py
+++ b/src/test/resources/http-cache/third_party_proxy.py
@@ -41,6 +41,7 @@ parser.add_argument("--root", "-r", default=tempfile.mkdtemp, type=str, help
parser.add_argument("--proxy" , type=str, help="Url of the Act as a proxy. If not set, this script only uses the cache and will return a 404 if files aren't found")
parser.add_argument("--port", "-P", type=int, default="8081", help="Port on which the proxy should listen to")
parser.add_argument("--verbose", "-v", type=bool, help="Print more information in case of error")
+parser.add_argument("--proxyaddress","-a", type=str, help="Address of this proxy, generally either third_party_proxy:8085 or localhost:8085 depending if started with docker-compose or not")
options = parser.parse_args()
@@ -49,6 +50,7 @@ HOST = options.proxy
AUTH = (options.username, options.password)
HEADERS = {'X-ECOMP-InstanceID':'CLAMP'}
CACHE_ROOT = options.root
+PROXY_ADDRESS=options.proxyaddress
def signal_handler(signal_sent, frame):
global httpd
@@ -116,7 +118,17 @@ class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
os.makedirs(cached_file, True)
with open(cached_file_header, 'w') as f:
- f.write("{\"Content-Length\": \"144\", \"Content-Type\": \"application/json\"}")
+ f.write("{\"Content-Length\": \"" + str(len(jsonGenerated)) + "\", \"Content-Type\": \"application/json\"}")
+ with open(cached_file_content, 'w') as f:
+ f.write(jsonGenerated)
+ elif self.path.startswith("/dcae-operationstatus"):
+ print "self.path start with /dcae-operationstatus, generating response json..."
+ jsonGenerated = "{\"operationType\": \"operationType1\", \"status\": \"succeeded\"}"
+ print "jsonGenerated: " + jsonGenerated
+
+ os.makedirs(cached_file, True)
+ with open(cached_file_header, 'w') as f:
+ f.write("{\"Content-Length\": \"" + str(len(jsonGenerated)) + "\", \"Content-Type\": \"application/json\"}")
with open(cached_file_content, 'w') as f:
f.write(jsonGenerated)
else:
@@ -215,27 +227,91 @@ class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
cached_file_header = "%s/.header" % (cached_file,)
_file_available = os.path.exists(cached_file_content)
- if not _file_available and not HOST:
- print("No file corresponding in cache and no HOST specified: %s" % HOST)
- self.send_response(404)
- return "404 Not found"
if not _file_available:
- print("Request for data currently not present in cache: %s" % (cached_file,))
+ if self.path.startswith("/dcae-deployments/"):
+ print "self.path start with /dcae-deployments/, generating response json..."
+ #jsondata = json.loads(self.data_string)
+ jsonGenerated = "{\"links\":{\"status\":\"http:\/\/" + PROXY_ADDRESS + "\/dcae-operationstatus\",\"test2\":\"test2\"}}"
+ print "jsonGenerated: " + jsonGenerated
+
+ os.makedirs(cached_file, True)
+ with open(cached_file_header, 'w') as f:
+ f.write("{\"Content-Length\": \"" + str(len(jsonGenerated)) + "\", \"Content-Type\": \"application/json\"}")
+ with open(cached_file_content, 'w') as f:
+ f.write(jsonGenerated)
+ else:
+ if not HOST:
+ self.send_response(404)
+ return "404 Not found"
+
+ print("Request for data currently not present in cache: %s" % (cached_file,))
+
+ url = '%s%s' % (HOST, self.path)
+ print("url: %s" % (url,))
+ response = requests.put(url, data=self.data_string, headers=self.headers, stream=True)
+
+ if response.status_code == 200:
+ self._write_cache(cached_file, cached_file_header, cached_file_content, response)
+ else:
+ print('Error when requesting file :')
+ print('Requested url : %s' % (url,))
+ print('Status code : %s' % (response.status_code,))
+ print('Content : %s' % (response.content,))
+ self.send_response(response.status_code)
+ return response.content
+ else:
+ print("Request for data present in cache: %s" % (cached_file,))
+
+ self._send_content(cached_file_header, cached_file_content)
- url = '%s%s' % (HOST, self.path)
- print("url: %s" % (url,))
- response = requests.put(url, data=self.data_string, headers=self.headers, stream=True)
- if response.status_code == 200:
- self._write_cache(cached_file, cached_file_header, cached_file_content, response)
+ def do_DELETE(self):
+ print("\n\n\nGot a DELETE for %s " % self.path)
+ self.check_credentials()
+ print("self.headers:\n %s" % self.headers)
+
+ cached_file = '%s/%s' % (CACHE_ROOT, self.path,)
+ print("Cached file name before escaping : %s" % cached_file)
+ cached_file = cached_file.replace('<','&#60;').replace('>','&#62;').replace('?','&#63;').replace('*','&#42;').replace('\\','&#42;').replace(':','&#58;').replace('|','&#124;')
+ print("Cached file name after escaping (used for cache storage) : %s" % cached_file)
+ cached_file_content = "%s/.file" % (cached_file,)
+ cached_file_header = "%s/.header" % (cached_file,)
+
+ _file_available = os.path.exists(cached_file_content)
+
+ if not _file_available:
+ if self.path.startswith("/dcae-deployments/"):
+ print "self.path start with /dcae-deployments/, generating response json..."
+ #jsondata = json.loads(self.data_string)
+ jsonGenerated = "{\"links\":{\"status\":\"http:\/\/" + PROXY_ADDRESS + "\/dcae-operationstatus\",\"test2\":\"test2\"}}"
+ print "jsonGenerated: " + jsonGenerated
+
+ os.makedirs(cached_file, True)
+ with open(cached_file_header, 'w') as f:
+ f.write("{\"Content-Length\": \"" + str(len(jsonGenerated)) + "\", \"Content-Type\": \"application/json\"}")
+ with open(cached_file_content, 'w') as f:
+ f.write(jsonGenerated)
else:
- print('Error when requesting file :')
- print('Requested url : %s' % (url,))
- print('Status code : %s' % (response.status_code,))
- print('Content : %s' % (response.content,))
- self.send_response(response.status_code)
- return response.content
+ if not HOST:
+ self.send_response(404)
+ return "404 Not found"
+
+ print("Request for data currently not present in cache: %s" % (cached_file,))
+
+ url = '%s%s' % (HOST, self.path)
+ print("url: %s" % (url,))
+ response = requests.put(url, data=self.data_string, headers=self.headers, stream=True)
+
+ if response.status_code == 200:
+ self._write_cache(cached_file, cached_file_header, cached_file_content, response)
+ else:
+ print('Error when requesting file :')
+ print('Requested url : %s' % (url,))
+ print('Status code : %s' % (response.status_code,))
+ print('Content : %s' % (response.content,))
+ self.send_response(response.status_code)
+ return response.content
else:
print("Request for data present in cache: %s" % (cached_file,))