From bb393ee2f520254b6fa47d282108790eeda95725 Mon Sep 17 00:00:00 2001 From: xg353y Date: Fri, 22 Mar 2019 15:43:15 +0100 Subject: [PATCH] Rework deploy/undeploy UI Rework the deploy/undeploy Ui based on the new data model. Issue-ID: CLAMP-334 Change-Id: I03d591bea81cb050e12031782dfa383656f1a32c Signed-off-by: xg353y --- .../clds/client/DcaeHttpConnectionManager.java | 145 --------------------- .../clamp/clds/client/DcaeInventoryServices.java | 9 +- .../partials/portfolios/deploy_parameters.html | 2 + .../resources/designer/scripts/CldsModelService.js | 136 +++++++------------ .../resources/designer/scripts/DeploymentCtrl.js | 83 +++++------- .../designer/scripts/OperationalPolicyCtrl.js | 2 +- .../resources/designer/scripts/ToscaModelCtrl.js | 2 +- .../META-INF/resources/designer/scripts/app.js | 37 +----- .../designer/scripts/propertyController.js | 34 +++-- .../clds/client/DcaeDispatcherServicesTest.java | 27 ++-- ...tCase.java => HttpConnectionManagerItCase.java} | 26 ++-- src/test/javascript/propertyController.test.js | 4 +- 12 files changed, 146 insertions(+), 361 deletions(-) delete mode 100644 src/main/java/org/onap/clamp/clds/client/DcaeHttpConnectionManager.java rename src/test/java/org/onap/clamp/clds/it/{DcaeHttpConnectionManagerItCase.java => HttpConnectionManagerItCase.java} (83%) diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeHttpConnectionManager.java b/src/main/java/org/onap/clamp/clds/client/DcaeHttpConnectionManager.java deleted file mode 100644 index 30afddcd..00000000 --- a/src/main/java/org/onap/clamp/clds/client/DcaeHttpConnectionManager.java +++ /dev/null @@ -1,145 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * 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. - * ============LICENSE_END============================================ - * Modifications copyright (c) 2018 Nokia - * =================================================================== - * - */ - -package org.onap.clamp.clds.client; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; - -import javax.net.ssl.HttpsURLConnection; -import javax.ws.rs.BadRequestException; - -import org.apache.commons.io.IOUtils; -import org.onap.clamp.clds.util.LoggingUtils; -import org.springframework.stereotype.Component; - -/** - * This class manages the HTTP and HTTPS connections to DCAE. - */ -@Component -public class DcaeHttpConnectionManager { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(DcaeHttpConnectionManager.class); - protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - private static final String DCAE_REQUEST_FAILED_LOG = "Request Failed - response payload="; - - private String doHttpsQuery(URL url, String requestMethod, String payload, String contentType) throws IOException { - logger.info("Using HTTPS URL to contact DCAE:" + url.toString()); - HttpsURLConnection secureConnection = (HttpsURLConnection) url.openConnection(); - secureConnection.setRequestMethod(requestMethod); - secureConnection.setRequestProperty("X-ECOMP-RequestID", LoggingUtils.getRequestId()); - if (payload != null && contentType != null) { - secureConnection.setRequestProperty("Content-Type", contentType); - secureConnection.setDoOutput(true); - try (DataOutputStream wr = new DataOutputStream(secureConnection.getOutputStream())) { - wr.writeBytes(payload); - wr.flush(); - } - } - int responseCode = secureConnection.getResponseCode(); - logger.info("Response Code: " + responseCode); - if (responseCode < 400) { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(secureConnection.getInputStream()))) { - String responseStr = IOUtils.toString(reader); - logger.info("Response Content: " + responseStr); - return responseStr; - } - } else { - // In case of connection failure just check whether there is a - // content or not - try (BufferedReader reader = new BufferedReader(new InputStreamReader(secureConnection.getErrorStream()))) { - String responseStr = IOUtils.toString(reader); - logger.error(DCAE_REQUEST_FAILED_LOG + responseStr); - throw new BadRequestException(responseStr); - } - } - } - - private String doHttpQuery(URL url, String requestMethod, String payload, String contentType) throws IOException { - LoggingUtils utils = new LoggingUtils(logger); - logger.info("Using HTTP URL to contact DCAE:" + url); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection = utils.invoke(connection, "DCAE", requestMethod); - connection.setRequestMethod(requestMethod); - connection.setRequestProperty("X-ECOMP-RequestID", LoggingUtils.getRequestId()); - if (payload != null && contentType != null) { - connection.setRequestProperty("Content-Type", contentType); - connection.setDoOutput(true); - try (DataOutputStream wr = new DataOutputStream(connection.getOutputStream())) { - wr.writeBytes(payload); - wr.flush(); - } - } - int responseCode = connection.getResponseCode(); - logger.info("Response Code: " + responseCode); - if (responseCode < 400) { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { - String responseStr = IOUtils.toString(reader); - logger.info("Response Content: " + responseStr); - utils.invokeReturn(); - return responseStr; - } - } else { - // In case of connection failure just check whether there is a - // content or not - try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getErrorStream()))) { - String responseStr = IOUtils.toString(reader); - logger.error(DCAE_REQUEST_FAILED_LOG + responseStr); - utils.invokeReturn(); - throw new BadRequestException(responseStr); - } - } - } - - /** - * This method does a HTTP/HTTPS query to DCAE with parameters specified. - * - * @param url - * The string HTTP or HTTPS that mustr be used to connect - * @param requestMethod - * The Request Method (PUT, POST, GET, DELETE, etc ...) - * @param payload - * The payload if any, in that case an ouputstream is opened - * @param contentType - * The "application/json or application/xml, or whatever" - * @return The payload of the answer - * @throws IOException - * In case of issue with the streams - */ - public String doDcaeHttpQuery(String url, String requestMethod, String payload, String contentType) - throws IOException { - URL urlObj = new URL(url); - if (url.contains("https://")) { // Support for HTTPS - return doHttpsQuery(urlObj, requestMethod, payload, contentType); - } else { // Support for HTTP - return doHttpQuery(urlObj, requestMethod, payload, contentType); - } - } -} diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java index ffd19d82..63fdc618 100644 --- a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java +++ b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java @@ -45,6 +45,7 @@ import org.onap.clamp.clds.model.properties.Global; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.clds.util.LoggingUtils; +import org.onap.clamp.util.HttpConnectionManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -62,17 +63,17 @@ public class DcaeInventoryServices { public static final String DCAE_INVENTORY_RETRY_LIMIT = "dcae.intentory.retry.limit"; private final ClampProperties refProp; private final CldsDao cldsDao; - private final DcaeHttpConnectionManager dcaeHttpConnectionManager; + private final HttpConnectionManager httpConnectionManager; /** * Constructor. */ @Autowired public DcaeInventoryServices(ClampProperties refProp, CldsDao cldsDao, - DcaeHttpConnectionManager dcaeHttpConnectionManager) { + HttpConnectionManager httpConnectionManager) { this.refProp = refProp; this.cldsDao = cldsDao; - this.dcaeHttpConnectionManager = dcaeHttpConnectionManager; + this.httpConnectionManager = httpConnectionManager; } /** @@ -206,7 +207,7 @@ public class DcaeInventoryServices { } for (int i = 0; i < retryLimit; i++) { metricsLogger.info("Attempt n°" + i + " to contact DCAE inventory"); - String response = dcaeHttpConnectionManager.doDcaeHttpQuery(fullUrl, "GET", null, null); + String response = httpConnectionManager.doGeneralHttpQuery(fullUrl, "GET", null, null, "DCAE"); int totalCount = getTotalCountFromDcaeInventoryResponse(response); metricsLogger.info("getDcaeInformation complete: totalCount returned=" + totalCount); if (totalCount > 0) { diff --git a/src/main/resources/META-INF/resources/designer/partials/portfolios/deploy_parameters.html b/src/main/resources/META-INF/resources/designer/partials/portfolios/deploy_parameters.html index 3fc1b030..7b1b6c23 100644 --- a/src/main/resources/META-INF/resources/designer/partials/portfolios/deploy_parameters.html +++ b/src/main/resources/META-INF/resources/designer/partials/portfolios/deploy_parameters.html @@ -29,6 +29,8 @@ diff --git a/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js b/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js index 972676b6..3dc4d003 100644 --- a/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js +++ b/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js @@ -24,84 +24,47 @@ app .service( 'cldsModelService', [ - 'alertService', - '$http', - '$q', - '$rootScope', - function(alertService, $http, $q, $rootScope) { - - function checkIfElementType(name) { - - //This will open the methods located in the app.js - if (undefined == name) { - return; - }else if (name.toLowerCase().indexOf("policy") >= 0){ - PolicyWindow(); - } else { - $rootScope.selectedBoxName = name; - ToscaModelWindow(); - } - } - function handleQueryToBackend(def, svcAction, svcUrl, svcPayload) { - - $http.put(svcUrl, svcPayload).success( - function(data) { - - def.resolve(data); - if (typeof data.statusCodeValue === 'undefined' - || data.statusCodeValue === 200) { - alertService.alertMessage( - "Action Successful: " + svcAction, 1) - } else { - if (typeof data.body !== 'undefined') { - alertService.alertMessage("Action Failure: " - + svcAction + ", " + data.body.errorMessageForUi, 2); - } else { - alertService.alertMessage("Action Failure: " - + svcAction, 2); - } - def.reject(svcAction + " not successful"); - } - }).error( - function(data) { - - def.resolve(data); - if (typeof data.body !== 'undefined') { - alertService.alertMessage("Action Failure: " + svcAction - + ", " + data.body.errorMessageForUi, 2); - } else { - alertService - .alertMessage("Action Failure: " + svcAction, 2); - } - def.reject(svcAction + " not successful"); - }); - } - this.toggleDeploy = function(uiAction, modelName, controlNamePrefixIn, - bpmnTextIn, propTextIn, svgXmlIn, - templateName, typeID, controlNameUuid, - modelEventService, deploymentId) { - - var def = $q.defer(); - var sets = []; - var action = uiAction.toLowerCase(); - var deployUrl = "/restservices/clds/v1/clds/" + action + "/" - + modelName; - var requestData = { - name : modelName, - controlNamePrefix : controlNamePrefixIn, - bpmnText : bpmnTextIn, - propText : propTextIn, - imageText : svgXmlIn, - templateName : templateName, - typeId : typeID, - controlNameUuid : controlNameUuid, - event : modelEventService, - deploymentId : deploymentId - }; - handleQueryToBackend(def, action, deployUrl, requestData); - return def.promise; - }; - this.getModel = function(modelName) { + 'alertService', + '$http', + '$q', + '$rootScope', + function(alertService, $http, $q, $rootScope) { + + function checkIfElementType(name) { + //This will open the methods located in the app.js + if (undefined == name) { + return; + }else if (name.toLowerCase().indexOf("policy") >= 0){ + PolicyWindow(); + } else { + $rootScope.selectedBoxName = name; + ToscaModelWindow(); + } + } + this.toggleDeploy = function(uiAction, modelName) { + var svcAction = uiAction.toLowerCase(); + var deployUrl = "/restservices/clds/v2/loop/" + svcAction + "Loop/" + modelName; + var def = $q.defer(); + var sets = []; + $http.put(deployUrl).success( + function(data) { + def.resolve(data); + alertService.alertMessage("Action Successful: " + svcAction, 1) + // update deploymentID, lastUpdatedStatus + setLastUpdatedStatus(data.lastUpdatedStatus); + setDeploymentStatusURL(data.dcaeDeploymentStatusUrl); + setDeploymentID(data.dcaeDeploymentId); + setStatus(); + enableDisableMenuOptions(); + }).error( + function(data) { + def.resolve(data); + alertService.alertMessage("Action Failure: " + svcAction, 2); + def.reject(svcAction + " not successful"); + }); + return def.promise; + } + this.getModel = function(modelName) { var def = $q.defer(); var sets = []; var svcUrl = "/restservices/clds/v2/loop/" + modelName; @@ -112,7 +75,6 @@ app cl_props = data; def.resolve(data); }).error(function(data) { - def.reject("Open Model not successful"); }); return def.promise; @@ -145,7 +107,6 @@ app propText : propTextIn }; $http.put(svcUrl, svcRequest).success(function(data) { - def.resolve(data); }).error(function(data) { @@ -205,27 +166,18 @@ app return def.promise; }; this.processActionResponse = function(modelName) { - - // populate control name (prefix and uuid here) + // populate control name (prefix and uuid here) var headerText = "Closed Loop Modeler - " + modelName; setStatus(); manageCLImage(modelName); enableDisableMenuOptions(); }; - this.processRefresh = function(pars) { - - var newPars = pars; - if (typeof pars.body !== 'undefined') { - newPars = pars.body; - } - typeID = newPars.typeId; - deploymentId = newPars.deploymentId; + this.processRefresh = function() { setStatus(); enableDisableMenuOptions(); } function setStatus() { - - var status = getStatus(); + var status = getLastUpdatedStatus(); // apply color to status var statusColor = 'white'; if (status.trim() === "DESIGN") { 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 3faf9f63..138d8020 100644 --- a/src/main/resources/META-INF/resources/designer/scripts/DeploymentCtrl.js +++ b/src/main/resources/META-INF/resources/designer/scripts/DeploymentCtrl.js @@ -27,62 +27,40 @@ app '$scope', '$rootScope', '$uibModalInstance', +'$http', +'$q', 'data', 'dialogs', 'cldsModelService', -function($scope, $rootScope, $uibModalInstance, data, dialogs, cldsModelService) { +function($scope, $rootScope, $uibModalInstance, $http, $q, data, dialogs, cldsModelService) { function validate_and_set_deploy_parameters() { - var inputList = document.getElementsByClassName("deployFormId"); - var jsonParameters = "{"; - $.each(inputList, function(key) { - if (jsonParameters !== "{") { - jsonParameters = jsonParameters + ","; + var form = $("#deployForm")[0]; + var obj = {}; + for( var i = 0; i < form.length; ++i ) { + var name = form[i].name; + var value = form[i].value; + if( name ) { + obj[ name ] = value; + } } - jsonParameters = jsonParameters + '"' + inputList[key].id + '":' - + '"' + inputList[key].value + '"' - }); - jsonParameters = jsonParameters + "}"; - try { - // Try to validate the json - set_deploy_parameters(JSON.parse(jsonParameters)); - } catch (e) { - console.error("Couldn't parse deploy parameters json"); - } - } - function set_deploy_parameters(parameters) { - if (!'global' in elementMap) { - elementMap["global"] = []; - } - 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 + + var el = getGlobalProperty(); + el["dcaeDeployParameters"] = obj; + $scope.saveGlobalProperties(JSON.stringify(el)).then(function(pars) { + updateGlobalProperties(el); + }, function(data) { }); - } else { - elementMap["global"][index]["value"] = parameters; - } } + $scope.load_deploy_parameters = function() { - var index = elementMap["global"].findIndex(function(e) { - return (typeof e == "object" && !(e instanceof Array)) - && "deployParameters" == e["name"]; - }); - if (index != -1) { - $('#deployPropertiesDiv').append($('
')); - $.each(elementMap["global"][index].value, function(key) { - var propertyValue = elementMap["global"][index].value[key]; - $('#deployPropertiesDiv').append( - $('')); - $('#deployPropertiesDiv').append( - $( - '' + key + ' ')); + $('#deployForm').append( + $('').val(propertyValue).html(propertyValue)); - $('#deployPropertiesDiv').append($('
')); - }); } } $scope.deploy = function() { @@ -92,4 +70,15 @@ function($scope, $rootScope, $uibModalInstance, data, dialogs, cldsModelService) $scope.close = function() { $uibModalInstance.dismiss(); }; + $scope.saveGlobalProperties = function(form) { + var modelName = getLoopName(); + var def = $q.defer(); + var svcUrl = "/restservices/clds/v2/loop/updateGlobalProperties/" + modelName; + $http.post(svcUrl, form).success(function(data) { + def.resolve(data); + }).error(function(data) { + def.reject("Save Global properties not successful"); + }); + return def.promise; + }; } ]); diff --git a/src/main/resources/META-INF/resources/designer/scripts/OperationalPolicyCtrl.js b/src/main/resources/META-INF/resources/designer/scripts/OperationalPolicyCtrl.js index 65577546..8e0319c1 100644 --- a/src/main/resources/META-INF/resources/designer/scripts/OperationalPolicyCtrl.js +++ b/src/main/resources/META-INF/resources/designer/scripts/OperationalPolicyCtrl.js @@ -54,7 +54,7 @@ function($scope, $rootScope, $uibModalInstance, data, operationalPolicyService, }; $scope.submitForm = function(obj) { - var operationalPolicies = JSON.parse(JSON.stringify(getOperationalPolicies())); + var operationalPolicies = getOperationalPolicies(); if (obj !== null) { operationalPolicies[0]["configurationsJson"] = obj; } diff --git a/src/main/resources/META-INF/resources/designer/scripts/ToscaModelCtrl.js b/src/main/resources/META-INF/resources/designer/scripts/ToscaModelCtrl.js index 1901d95e..2ef866c8 100644 --- a/src/main/resources/META-INF/resources/designer/scripts/ToscaModelCtrl.js +++ b/src/main/resources/META-INF/resources/designer/scripts/ToscaModelCtrl.js @@ -89,7 +89,7 @@ app.controller('ToscaModelCtrl', var policyType = $rootScope.selectedBoxName; var data = $scope.getEditorData(); if(data !== null) { - var msJson = JSON.parse(JSON.stringify(getMsJson(policyType))); + var msJson = getMsJson(policyType); msJson["properties"] = data[0]; toscaModelService.saveMsProperties(msJson).then(function(pars) { updateMsProperties(policyType, msJson); diff --git a/src/main/resources/META-INF/resources/designer/scripts/app.js b/src/main/resources/META-INF/resources/designer/scripts/app.js index b0b34533..1b77bf82 100644 --- a/src/main/resources/META-INF/resources/designer/scripts/app.js +++ b/src/main/resources/META-INF/resources/designer/scripts/app.js @@ -580,9 +580,8 @@ function($scope, $rootScope, $timeout, dialogs) { var svgXml = $("#svgContainer").html(); console.log("refreStatus modelName=" + modelName); cldsModelService.getModel(modelName).then(function(pars) { - console.log("refreStatus: pars=" + pars); - cldsModelService.processRefresh(pars); + cldsModelService.processRefresh(); }, function(data) { }); @@ -629,40 +628,10 @@ function($scope, $rootScope, $timeout, dialogs) { }); }; function cldsToggleDeploy(uiAction) { - - var modelName = selected_model; - var controlNamePrefix = "ClosedLoop-"; - var bpmnText = modelXML; - // serialize model properties - var propText = JSON.stringify(elementMap); - var templateName = selected_template; - var svgXml = $("#svgContainer").html(); console.log("cldsPerformAction: " + uiAction + " modelName=" - + modelName); - console.log("cldsPerformAction: " + uiAction - + " controlNamePrefix=" + controlNamePrefix); - console.log("cldsPerformAction: " + uiAction + " bpmnText=" - + bpmnText); - console.log("cldsPerformAction: " + uiAction + " propText=" - + propText); - console.log("cldsPerformAction: " + uiAction - + " modelEventService=" + modelEventService); - console.log("cldsPerformAction: " + uiAction + " typeID=" + typeID); - console.log("cldsPerformAction: " + uiAction + " deploymentId=" - + deploymentId); - cldsModelService.toggleDeploy(uiAction, modelName, - controlNamePrefix, bpmnText, propText, svgXml, templateName, - typeID, controlNameUuid, modelEventService, deploymentId).then( + + selected_model); + cldsModelService.toggleDeploy(uiAction, selected_model).then( function(pars) { - - var cldsObject = pars.body; - typeID = cldsObject.typeId; - controlNameUuid = cldsObject.controlNameUuid; - selected_template = cldsObject.templateName; - modelEventService = cldsObject.event; - actionStateCd = cldsObject.event.actionStateCd; - deploymentId = cldsObject.deploymentId; - cldsModelService.processActionResponse(modelName, cldsObject); }, function(data) { }); diff --git a/src/main/resources/META-INF/resources/designer/scripts/propertyController.js b/src/main/resources/META-INF/resources/designer/scripts/propertyController.js index f1ab1e19..2b32f4d2 100644 --- a/src/main/resources/META-INF/resources/designer/scripts/propertyController.js +++ b/src/main/resources/META-INF/resources/designer/scripts/propertyController.js @@ -22,7 +22,7 @@ */ function updateMsProperties(type, newMsProperties) { - var newMsProperties = cl_props["microServicePolicies"]; + var newMsProperties = JSON.parse(JSON.stringify(cl_props["microServicePolicies"])); for (p in newMsProperties) { if (newMsProperties[p]["name"] == type) { cl_props["microServicePolicies"][p] = newMsProperties; @@ -43,22 +43,26 @@ function getLoopName() { } function getOperationalPolicyProperty() { - return cl_props["operationalPolicies"]["0"]["configurationsJson"]; + return JSON.parse(JSON.stringify(cl_props["operationalPolicies"]["0"]["configurationsJson"])); } function getOperationalPolicies() { - return cl_props["operationalPolicies"]; + return JSON.parse(JSON.stringify(cl_props["operationalPolicies"])); } function getGlobalProperty() { - return cl_props["globalPropertiesJson"]; + return JSON.parse(JSON.stringify(cl_props["globalPropertiesJson"])); +} + +function getDeploymentProperties() { + return JSON.parse(JSON.stringify(cl_props["globalPropertiesJson"]["dcaeDeployParameters"])); } function getMsJson(type) { var msProperties = cl_props["microServicePolicies"]; for (p in msProperties) { if (msProperties[p]["name"] == type) { - return msProperties[p]; + return JSON.parse(JSON.stringify(msProperties[p])); } } return null; @@ -68,7 +72,7 @@ function getMsProperty(type) { var msProperties = cl_props["microServicePolicies"]; for (p in msProperties) { if (msProperties[p]["name"] == type) { - return msProperties[p]["properties"]; + return JSON.parse(JSON.stringify(msProperties[p]["properties"])); } } return null; @@ -78,21 +82,33 @@ function getMsUI(type) { var msProperties = cl_props["microServicePolicies"]; for (p in msProperties) { if (msProperties[p]["name"] == type) { - return msProperties[p]["jsonRepresentation"]; + return JSON.parse(JSON.stringify(msProperties[p]["jsonRepresentation"])); } } return null; } -function getStatus() { +function getLastUpdatedStatus() { return cl_props["lastComputedState"]; } +function setLastUpdatedStatus(status) { + cl_props["lastComputedState"] = status; +} + function getDeploymentID() { return cl_props["dcaeDeploymentId"]; } +function setDeploymentID(deploymentId) { + cl_props["dcaeDeploymentId"] = deploymentId; +} + function getDeploymentStatusURL() { return cl_props["dcaeDeploymentStatusUrl"]; } -module.exports = { getOperationalPolicyProperty,getGlobalProperty,getMsProperty,getMsUI,getStatus,getDeploymentID,getDeploymentStatusURL }; \ No newline at end of file + +function setDeploymentStatusURL(deploymentStatusURL) { + cl_props["dcaeDeploymentStatusUrl"] = deploymentStatusURL; +} +module.exports = { getOperationalPolicyProperty,getGlobalProperty,getMsProperty,getMsUI,getLastUpdatedStatus,getDeploymentID,getDeploymentStatusURL }; \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/client/DcaeDispatcherServicesTest.java b/src/test/java/org/onap/clamp/clds/client/DcaeDispatcherServicesTest.java index 1b01f544..caab61f1 100644 --- a/src/test/java/org/onap/clamp/clds/client/DcaeDispatcherServicesTest.java +++ b/src/test/java/org/onap/clamp/clds/client/DcaeDispatcherServicesTest.java @@ -36,6 +36,7 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import org.onap.clamp.clds.config.ClampProperties; +import org.onap.clamp.util.HttpConnectionManager; @@ -55,7 +56,7 @@ public class DcaeDispatcherServicesTest { private ClampProperties clampProperties; @Mock - DcaeHttpConnectionManager dcaeHttpConnectionManager; + HttpConnectionManager httpConnectionManager; @InjectMocks DcaeDispatcherServices dcaeDispatcherServices; @@ -84,7 +85,7 @@ public class DcaeDispatcherServicesTest { @Test public void shouldReturnDcaeOperationSataus() throws IOException { //given - Mockito.when(dcaeHttpConnectionManager.doDcaeHttpQuery(DEPLOYMENT_STATUS_URL, "GET", null, null)) + Mockito.when(httpConnectionManager.doGeneralHttpQuery(DEPLOYMENT_STATUS_URL, "GET", null, null, "DCAE")) .thenReturn(STATUS_RESPONSE_PROCESSING); //when String operationStatus = dcaeDispatcherServices.getOperationStatus(DEPLOYMENT_STATUS_URL); @@ -96,24 +97,24 @@ public class DcaeDispatcherServicesTest { @Test public void shouldTryMultipleTimesWhenProcessing() throws IOException, InterruptedException { //given - Mockito.when(dcaeHttpConnectionManager.doDcaeHttpQuery(DEPLOYMENT_STATUS_URL, "GET", - null, null)) + Mockito.when(httpConnectionManager.doGeneralHttpQuery(DEPLOYMENT_STATUS_URL, "GET", + null, null, "DCAE")) .thenReturn(STATUS_RESPONSE_PROCESSING, STATUS_RESPONSE_PROCESSING, STATUS_RESPONSE_ACTIVE); //when String operationStatus = dcaeDispatcherServices.getOperationStatusWithRetry(DEPLOYMENT_STATUS_URL); //then Assertions.assertThat(operationStatus).isEqualTo("succeeded"); - Mockito.verify(dcaeHttpConnectionManager, Mockito.times(3)) - .doDcaeHttpQuery(DEPLOYMENT_STATUS_URL, "GET", null, null); + Mockito.verify(httpConnectionManager, Mockito.times(3)) + .doGeneralHttpQuery(DEPLOYMENT_STATUS_URL, "GET", null, null, "DCAE"); } @Test public void shouldTryOnlyAsManyTimesAsConfigured() throws IOException, InterruptedException { //given - Mockito.when(dcaeHttpConnectionManager - .doDcaeHttpQuery(DEPLOYMENT_STATUS_URL, "GET", null, null)) + Mockito.when(httpConnectionManager + .doGeneralHttpQuery(DEPLOYMENT_STATUS_URL, "GET", null, null, "DCAE")) .thenReturn(STATUS_RESPONSE_PROCESSING, STATUS_RESPONSE_PROCESSING, STATUS_RESPONSE_PROCESSING, STATUS_RESPONSE_PROCESSING, STATUS_RESPONSE_PROCESSING); //when @@ -121,8 +122,8 @@ public class DcaeDispatcherServicesTest { //then Assertions.assertThat(operationStatus).isEqualTo("processing"); - Mockito.verify(dcaeHttpConnectionManager, Mockito.times(3)) - .doDcaeHttpQuery(DEPLOYMENT_STATUS_URL, "GET", null, null); + Mockito.verify(httpConnectionManager, Mockito.times(3)) + .doGeneralHttpQuery(DEPLOYMENT_STATUS_URL, "GET", null, null, "DCAE"); } @@ -134,12 +135,12 @@ public class DcaeDispatcherServicesTest { Mockito.when(clampProperties.getJsonTemplate("dcae.deployment.template")) .thenReturn(new JsonObject()); - Mockito.when(dcaeHttpConnectionManager - .doDcaeHttpQuery(DCAE_URL + Mockito.when(httpConnectionManager + .doGeneralHttpQuery(DCAE_URL + "/dcae-deployments/closedLoop_152367c8-b172-47b3-9e58-c53add75d869_deploymentId", "PUT", "{\"serviceTypeId\":\"e2ba40f7-bf42-41e7-acd7-48fd07586d90\",\"inputs\":{}}", - "application/json")) + "application/json", "DCAE")) .thenReturn(DEPLOY_RESPONSE_STRING); JsonObject blueprintInputJson = new JsonObject(); diff --git a/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java b/src/test/java/org/onap/clamp/clds/it/HttpConnectionManagerItCase.java similarity index 83% rename from src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java rename to src/test/java/org/onap/clamp/clds/it/HttpConnectionManagerItCase.java index 8e03153a..42e9c7f6 100644 --- a/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/HttpConnectionManagerItCase.java @@ -45,7 +45,7 @@ import javax.ws.rs.BadRequestException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.onap.clamp.clds.client.DcaeHttpConnectionManager; +import org.onap.clamp.util.HttpConnectionManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; @@ -59,7 +59,7 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT) @TestPropertySource(locations = "classpath:https/https-test.properties") -public class DcaeHttpConnectionManagerItCase { +public class HttpConnectionManagerItCase { @Value("${server.port}") private String httpsPort; @@ -67,7 +67,7 @@ public class DcaeHttpConnectionManagerItCase { private String httpPort; @Autowired - DcaeHttpConnectionManager dcaeHttpConnectionManager; + HttpConnectionManager httpConnectionManager; private static TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { @@ -109,8 +109,8 @@ public class DcaeHttpConnectionManagerItCase { @Test public void testHttpGet() throws Exception { - String response = dcaeHttpConnectionManager - .doDcaeHttpQuery("http://localhost:" + this.httpPort + "/designer/index.html", "GET", null, null); + String response = httpConnectionManager + .doGeneralHttpQuery("http://localhost:" + this.httpPort + "/designer/index.html", "GET", null, null, "DCAE"); assertNotNull(response); // Should be a redirection so 302, so empty assertTrue(response.isEmpty()); @@ -118,8 +118,8 @@ public class DcaeHttpConnectionManagerItCase { @Test public void testHttpsGet() throws Exception { - String response = dcaeHttpConnectionManager - .doDcaeHttpQuery("https://localhost:" + this.httpsPort + "/designer/index.html", "GET", null, null); + String response = httpConnectionManager + .doGeneralHttpQuery("https://localhost:" + this.httpsPort + "/designer/index.html", "GET", null, null, "DCAE"); assertNotNull(response); // Should contain something assertTrue(!response.isEmpty()); @@ -127,22 +127,22 @@ public class DcaeHttpConnectionManagerItCase { @Test(expected = BadRequestException.class) public void testHttpsGet404() throws IOException { - dcaeHttpConnectionManager.doDcaeHttpQuery("https://localhost:" + this.httpsPort + "/designer/index1.html", - "GET", null, null); + httpConnectionManager.doGeneralHttpQuery("https://localhost:" + this.httpsPort + "/designer/index1.html", + "GET", null, null, "DCAE"); fail("Should have raised an BadRequestException"); } @Test(expected = BadRequestException.class) public void testHttpsPost404() throws IOException { - dcaeHttpConnectionManager.doDcaeHttpQuery("https://localhost:" + this.httpsPort + "/designer/index1.html", - "POST", "", "application/json"); + httpConnectionManager.doGeneralHttpQuery("https://localhost:" + this.httpsPort + "/designer/index1.html", + "POST", "", "application/json", "DCAE"); fail("Should have raised an BadRequestException"); } @Test(expected = BadRequestException.class) public void testHttpException() throws IOException { - dcaeHttpConnectionManager.doDcaeHttpQuery("http://localhost:" + this.httpsPort + "/designer/index.html", "GET", - null, null); + httpConnectionManager.doGeneralHttpQuery("http://localhost:" + this.httpsPort + "/designer/index.html", "GET", + null, null, "DCAE"); fail("Should have raised an BadRequestException"); } } diff --git a/src/test/javascript/propertyController.test.js b/src/test/javascript/propertyController.test.js index 6cb77914..fbbc6bec 100644 --- a/src/test/javascript/propertyController.test.js +++ b/src/test/javascript/propertyController.test.js @@ -31,8 +31,8 @@ describe('Property controller tests', function() { expect(propertyController.getMsUI("test")).toEqual(null); }); - test('getStatus', () => { - expect(propertyController.getStatus()).toEqual('DESIGN'); + test('getLastUpdatedStatus', () => { + expect(propertyController.getLastUpdatedStatus()).toEqual('DESIGN'); }); test('getDeploymentID', () => { -- 2.16.6