X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fclamp%2Fclds%2Fclient%2Freq%2FSdcReq.java;h=c5e26f30a40ec5761a2e53b47adff6dfcdd0a3fd;hb=bc25b72025a7b92c2b1bb7a3f0cfcd9ddedba001;hp=45f17164af583a46d4ef68dfdd06fc4fe642b6b8;hpb=5e9feb2a8e360b82dc2b6e4145e0fd847d2924ce;p=clamp.git diff --git a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java index 45f17164..c5e26f30 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java +++ b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java @@ -5,16 +5,16 @@ * 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. + * 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 + * + * 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============================================ * =================================================================== @@ -23,6 +23,8 @@ package org.onap.clamp.clds.client.req; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; @@ -31,37 +33,50 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.dataformat.yaml.snakeyaml.Yaml; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Base64; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.apache.commons.codec.digest.DigestUtils; +import org.camunda.bpm.engine.delegate.DelegateExecution; import org.onap.clamp.clds.client.SdcCatalogServices; -import org.onap.clamp.clds.model.CldsAsdcResource; -import org.onap.clamp.clds.model.CldsAsdcServiceDetail; +import org.onap.clamp.clds.model.CldsSdcResource; +import org.onap.clamp.clds.model.CldsSdcServiceDetail; import org.onap.clamp.clds.model.prop.Global; import org.onap.clamp.clds.model.prop.ModelProperties; -import org.onap.clamp.clds.model.prop.StringMatch; import org.onap.clamp.clds.model.prop.Tca; import org.onap.clamp.clds.model.refprop.RefProp; -import org.apache.commons.codec.digest.DigestUtils; -import org.camunda.bpm.engine.delegate.DelegateExecution; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.*; -import java.util.Map.Entry; -import java.util.logging.Logger; /** - * Construct a Asdc request given CLDS objects. + * Construct a Sdc request given CLDS objects. */ public class SdcReq { - // currently uses the java.util.logging.Logger like the Camunda engine - private static final Logger logger = Logger.getLogger(SdcReq.class.getName()); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcReq.class); + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); /** + * Format the Blueprint from a Yaml + * * @param refProp + * The RefProp instance containing the Clds config * @param prop - * @return + * The ModelProperties describing the clds model + * @param docText + * The Yaml file that must be converted + * + * @return A String containing the BluePrint * @throws JsonParseException + * In case of issues * @throws JsonMappingException + * In case of issues * @throws IOException + * In case of issues */ public static String formatBlueprint(RefProp refProp, ModelProperties prop, String docText) throws JsonParseException, JsonMappingException, IOException { @@ -72,21 +87,8 @@ public class SdcReq { String yamlvalue = getYamlvalue(docText); String updatedBlueprint = ""; - StringMatch stringMatch = prop.getStringMatch(); - Tca tca = prop.getTca(); - if (stringMatch.isFound()) { - prop.setCurrentModelElementId(stringMatch.getId()); - ObjectMapper objectMapper = new ObjectMapper(); - ObjectNode serviceConfigurations = objectMapper.createObjectNode(); - - StringMatchPolicyReq.appendServiceConfigurations(refProp, service, serviceConfigurations, stringMatch); - logger.info("Value of serviceConfigurations:" + serviceConfigurations); - ObjectNode servConfNode = (ObjectNode) serviceConfigurations.get("serviceConfigurations"); - - // get updated blueprint by attaching service Conf from - // globalProperties - updatedBlueprint = getUpdatedBlueprintWithServiceConf(refProp, prop, yamlvalue, servConfNode); - } else if (tca.isFound()) { + Tca tca = prop.getType(Tca.class); + if (tca.isFound()) { prop.setCurrentModelElementId(tca.getId()); ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service); ObjectNode content = rootNode.with("content"); @@ -104,49 +106,6 @@ public class SdcReq { return updatedBlueprint; } - private static String getUpdatedBlueprintWithServiceConf(RefProp refProp, ModelProperties prop, String yamlValue, - ObjectNode serviceConf) throws IOException { - Yaml yaml = new Yaml(); - - // Serialiaze Yaml file - Map loadedYaml = (Map) yaml.load(yamlValue); - // Get node templates information from Yaml - Map nodeTemplates = (Map) loadedYaml.get("node_templates"); - logger.info("value of NodeTemplates:" + nodeTemplates); - - // Get StringMatch Object information from node templates of Yaml - Map smObject = (Map) nodeTemplates.get("SM"); - logger.info("value of StringMatch:" + smObject); - - // Get Properties Object information from stringmatch of Yaml - Map propsObject = (Map) smObject.get("properties"); - logger.info("value of PropsObject:" + propsObject); - - String deploymentJsonObject = propsObject.get("deployment_JSON"); - logger.info("value of deploymentJson:" + deploymentJsonObject); - - ObjectMapper mapper = new ObjectMapper(); - ObjectNode deployJsonNode = (ObjectNode) mapper.readTree(deploymentJsonObject); - ObjectNode configurationObjectNode = (ObjectNode) deployJsonNode.get("configuration"); - - // "policyName":"example_model06.ClosedLoop_FRWL_SIG_0538e6f2_8c1b_4656_9999_3501b3c59ad7_StringMatch_", - String policyNamePrefix = refProp.getStringValue("policy.ms.policyNamePrefix"); - String policyName = prop.getCurrentPolicyScopeAndFullPolicyName(policyNamePrefix); - configurationObjectNode.put("policyName", policyName); - - // "closedLoopControlName":"ClosedLoop-FRWL-SIG-0538e6f2-8c1b-4656-9999-3501b3c59ad7", - configurationObjectNode.put("closedLoopControlName", prop.getControlName()); - configurationObjectNode.set("serviceConfigurations", serviceConf); - propsObject.put("deployment_JSON", deployJsonNode.toString()); - String blueprint = yaml.dump(loadedYaml); - logger.info("value of updated Yaml File:" + blueprint); - - blueprint = yaml.dump(loadedYaml); - logger.info("value of updated Yaml File:" + blueprint); - - return blueprint; - } - private static String getUpdatedBlueprintWithConfiguration(RefProp refProp, ModelProperties prop, String yamlValue, ObjectNode serviceConf) throws JsonProcessingException, IOException { String blueprint = ""; @@ -154,15 +113,15 @@ public class SdcReq { // Serialiaze Yaml file Map loadedYaml = (Map) yaml.load(yamlValue); // Get node templates information from Yaml - Map nodeTemplates = (Map) loadedYaml.get("node_templates"); + Map nodeTemplates = loadedYaml.get("node_templates"); logger.info("value of NodeTemplates:" + nodeTemplates); // Get Tca Object information from node templates of Yaml - Map tcaObject = (Map) nodeTemplates.get("MTCA"); + Map tcaObject = nodeTemplates.get("MTCA"); logger.info("value of Tca:" + tcaObject); // Get Properties Object information from tca of Yaml - Map propsObject = (Map) tcaObject.get("properties"); + Map propsObject = tcaObject.get("properties"); logger.info("value of PropsObject:" + propsObject); - String deploymentJsonObject = (String) propsObject.get("deployment_JSON"); + String deploymentJsonObject = propsObject.get("deployment_JSON"); logger.info("value of deploymentJson:" + deploymentJsonObject); ObjectMapper mapper = new ObjectMapper(); @@ -182,7 +141,7 @@ public class SdcReq { return blueprint; } - public static String formatAsdcLocationsReq(ModelProperties prop, String artifactName) { + public static String formatSdcLocationsReq(ModelProperties prop, String artifactName) { ObjectMapper objectMapper = new ObjectMapper(); Global global = prop.getGlobal(); List locationsList = global.getLocation(); @@ -198,7 +157,7 @@ public class SdcReq { return locationJsonFormat; } - public static String formatAsdcReq(String payloadData, String artifactName, String artifactLabel, + public static String formatSdcReq(String payloadData, String artifactName, String artifactLabel, String artifactType) throws IOException { logger.info("artifact=" + payloadData); String base64Artifact = base64Encode(payloadData); @@ -208,13 +167,13 @@ public class SdcReq { + "} \n"; } - public static String getAsdcReqUrl(ModelProperties prop, String url) { + public static String getSdcReqUrl(ModelProperties prop, String url) { Global globalProps = prop.getGlobal(); String serviceUUID = ""; String resourceInstanceName = ""; if (globalProps != null) { List resourceVf = globalProps.getResourceVf(); - if (resourceVf != null && resourceVf.size() > 0) { + if (resourceVf != null && !resourceVf.isEmpty()) { resourceInstanceName = resourceVf.get(0); } if (globalProps.getService() != null) { @@ -232,45 +191,49 @@ public class SdcReq { * @param baseUrl * @param sdcCatalogServices * @return - * @throws Exception */ - public static List getAsdcReqUrlsList(ModelProperties prop, String baseUrl, - SdcCatalogServices sdcCatalogServices, DelegateExecution execution) throws Exception { + public static List getSdcReqUrlsList(ModelProperties prop, String baseUrl, + SdcCatalogServices sdcCatalogServices, DelegateExecution execution) { // TODO : refact and regroup with very similar code List urlList = new ArrayList<>(); + Global globalProps = prop.getGlobal(); if (globalProps != null) { if (globalProps.getService() != null) { String serviceInvariantUUID = globalProps.getService(); execution.setVariable("serviceInvariantUUID", serviceInvariantUUID); List resourceVfList = globalProps.getResourceVf(); - String serviceUUID = sdcCatalogServices.getServiceUUIDFromServiceInvariantID(serviceInvariantUUID); - String asdcServicesInformation = sdcCatalogServices.getAsdcServicesInformation(serviceUUID); - CldsAsdcServiceDetail cldsAsdcServiceDetail = sdcCatalogServices.getCldsAsdcServiceDetailFromJson(asdcServicesInformation); - if (cldsAsdcServiceDetail != null && resourceVfList != null) { - List cldsAsdcResourcesList = cldsAsdcServiceDetail.getResources(); - if (cldsAsdcResourcesList != null && cldsAsdcResourcesList.size() > 0) { - for (CldsAsdcResource cldsAsdcResource : cldsAsdcResourcesList) { - if (cldsAsdcResource != null && cldsAsdcResource.getResoucreType() != null - && cldsAsdcResource.getResoucreType().equalsIgnoreCase("VF")) { - if (resourceVfList.contains(cldsAsdcResource.getResourceInvariantUUID())) { - String normalizedResourceInstanceName = normalizeResourceInstanceName(cldsAsdcResource.getResourceInstanceName()); - String svcUrl = baseUrl + "/" + serviceUUID + "/resourceInstances/" + normalizedResourceInstanceName + "/artifacts"; - urlList.add(svcUrl); - } + String serviceUUID = sdcCatalogServices.getServiceUuidFromServiceInvariantId(serviceInvariantUUID); + String sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(serviceUUID); + CldsSdcServiceDetail cldsSdcServiceDetail = sdcCatalogServices + .getCldsSdcServiceDetailFromJson(sdcServicesInformation); + if (cldsSdcServiceDetail != null && resourceVfList != null) { + List cldsSdcResourcesList = cldsSdcServiceDetail.getResources(); + if (cldsSdcResourcesList != null && !cldsSdcResourcesList.isEmpty()) { + for (CldsSdcResource CldsSdcResource : cldsSdcResourcesList) { + if (CldsSdcResource != null && CldsSdcResource.getResoucreType() != null + && CldsSdcResource.getResoucreType().equalsIgnoreCase("VF") + && resourceVfList.contains(CldsSdcResource.getResourceInvariantUUID())) { + String normalizedResourceInstanceName = normalizeResourceInstanceName( + CldsSdcResource.getResourceInstanceName()); + String svcUrl = baseUrl + "/" + serviceUUID + "/resourceInstances/" + + normalizedResourceInstanceName + "/artifacts"; + urlList.add(svcUrl); + } } } } } } + return urlList; } /** * "Normalize" the resource instance name: - Remove spaces, underscores, - * dashes, and periods. - make lower case This is required by ASDC when - * using the resource instance name to upload an artifact. + * dashes, and periods. - make lower case This is required by SDC when using + * the resource instance name to upload an artifact. * * @param inText * @return @@ -323,19 +286,26 @@ public class SdcReq { } /** - * Return ASDC id and pw as a HTTP Basic Auth string (for example: Basic + * Return SDC id and pw as a HTTP Basic Auth string (for example: Basic * dGVzdDoxMjM0NTY=). * * @return */ - public static String getAsdcBasicAuth(RefProp refProp) { - String asdcId = refProp.getStringValue("asdc.serviceUsername"); - String asdcPw = refProp.getStringValue("asdc.servicePassword"); - String idPw = base64Encode(asdcId + ":" + asdcPw); + public static String getSdcBasicAuth(RefProp refProp) { + String sdcId = refProp.getStringValue("sdc.serviceUsername"); + String sdcPw = refProp.getStringValue("sdc.servicePassword"); + String idPw = base64Encode(sdcId + ":" + sdcPw); return "Basic " + idPw; } - private static String getYamlvalue(String docText) throws IOException { + /** + * Method to get yaml/template properties value from json + * + * @param docText + * @return + * @throws IOException + */ + public static String getYamlvalue(String docText) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); String yamlFileValue = ""; ObjectNode root = objectMapper.readValue(docText, ObjectNode.class);