Add blueprint resource definition enrichment.
authorMuthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
Fri, 14 Dec 2018 21:41:37 +0000 (16:41 -0500)
committerMuthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
Fri, 14 Dec 2018 21:41:37 +0000 (16:41 -0500)
Change-Id: I01234093028ffdc8bf1688e41baba20fae7da5ce
Issue-ID: CCSDK-747
Signed-off-by: Muthuramalingam, Brinda Santh(bs2796) <bs2796@att.com>
components/core/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/core/utils/BluePrintMetadataUtils.kt
components/resource-dict/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/resource/dict/ResourceDictionaryConstants.kt
components/resource-dict/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/resource/dict/utils/ResourceDictionaryUtils.kt

index 0092b70..9dbe15e 100644 (file)
@@ -64,20 +64,24 @@ object BluePrintMetadataUtils {
     }\r
 \r
     @JvmStatic\r
-    fun getBluePrintContext(blueprintBasePath: String): BluePrintContext {\r
+    fun getBluePrintRuntime(id: String, blueprintBasePath: String): BluePrintRuntimeService<MutableMap<String, JsonNode>> {\r
 \r
-        val toscaMetaData: ToscaMetaData = toscaMetaData(blueprintBasePath)\r
+        val bluePrintContext: BluePrintContext = getBluePrintContext(blueprintBasePath)\r
 \r
-        log.info("Processing blueprint base path ($blueprintBasePath) and entry definition file (${toscaMetaData.entityDefinitions})")\r
+        val context: MutableMap<String, JsonNode> = hashMapOf()\r
+        context[BluePrintConstants.PROPERTY_BLUEPRINT_BASE_PATH] = blueprintBasePath.asJsonPrimitive()\r
+        context[BluePrintConstants.PROPERTY_BLUEPRINT_PROCESS_ID] = id.asJsonPrimitive()\r
 \r
-        return readBlueprintFile(toscaMetaData.entityDefinitions, blueprintBasePath)\r
+        val bluePrintRuntimeService = DefaultBluePrintRuntimeService(id, bluePrintContext)\r
+        bluePrintRuntimeService.setExecutionContext(context)\r
+\r
+        return bluePrintRuntimeService\r
     }\r
 \r
     @JvmStatic\r
-    fun getBluePrintRuntime(id: String, blueprintBasePath: String): BluePrintRuntimeService<MutableMap<String, JsonNode>> {\r
-\r
-        val bluePrintContext: BluePrintContext = getBluePrintContext(blueprintBasePath)\r
+    fun getBaseEnhancementBluePrintRuntime(id: String, blueprintBasePath: String): BluePrintRuntimeService<MutableMap<String, JsonNode>> {\r
 \r
+        val bluePrintContext: BluePrintContext = getBaseEnhancementBluePrintContext(blueprintBasePath)\r
         val context: MutableMap<String, JsonNode> = hashMapOf()\r
         context[BluePrintConstants.PROPERTY_BLUEPRINT_BASE_PATH] = blueprintBasePath.asJsonPrimitive()\r
         context[BluePrintConstants.PROPERTY_BLUEPRINT_PROCESS_ID] = id.asJsonPrimitive()\r
@@ -96,6 +100,31 @@ object BluePrintMetadataUtils {
         return bluePrintRuntimeService\r
     }\r
 \r
+    @JvmStatic\r
+    fun getBluePrintContext(blueprintBasePath: String): BluePrintContext {\r
+\r
+        val toscaMetaData: ToscaMetaData = toscaMetaData(blueprintBasePath)\r
+\r
+        log.info("Processing blueprint base path ($blueprintBasePath) and entry definition file (${toscaMetaData.entityDefinitions})")\r
+\r
+        return readBlueprintFile(toscaMetaData.entityDefinitions, blueprintBasePath)\r
+    }\r
+\r
+    fun getBaseEnhancementBluePrintContext(blueprintBasePath: String): BluePrintContext {\r
+        val toscaMetaData: ToscaMetaData = toscaMetaData(blueprintBasePath)\r
+        // Clean Type files\r
+        BluePrintFileUtils.deleteBluePrintTypes(blueprintBasePath)\r
+        val rootFilePath: String = blueprintBasePath.plus(File.separator).plus(toscaMetaData.entityDefinitions)\r
+        val rootServiceTemplate = ServiceTemplateUtils.getServiceTemplate(rootFilePath)\r
+\r
+        // Clean the Import Definitions\r
+        rootServiceTemplate.imports?.clear()\r
+\r
+        val blueprintContext = BluePrintContext(rootServiceTemplate)\r
+        blueprintContext.rootPath = blueprintBasePath\r
+        return blueprintContext\r
+    }\r
+\r
     @JvmStatic\r
     fun readBlueprintFile(entityDefinitions: String, basePath: String): BluePrintContext {\r
         val rootFilePath: String = basePath.plus(File.separator).plus(entityDefinitions)\r
index aa6a9fb..a39139e 100644 (file)
@@ -31,4 +31,6 @@ object ResourceDictionaryConstants {
     const val PROPERTY_INPUT_KEY_MAPPING = "input-key-mapping"
     const val PROPERTY_OUTPUT_KEY_MAPPING = "output-key-mapping"
     const val PROPERTY_KEY_DEPENDENCIES = "key-dependencies"
+
+    const val PATH_RESOURCE_DEFINITION_TYPE = "resource_definition_types"
 }
\ No newline at end of file
index a3456cd..1aeda0b 100644 (file)
 package org.onap.ccsdk.apps.controllerblueprints.resource.dict.utils
 
 import com.att.eelf.configuration.EELFLogger
+import com.att.eelf.configuration.EELFManager
 import com.fasterxml.jackson.databind.JsonNode
 import com.fasterxml.jackson.databind.node.NullNode
 import org.apache.commons.collections.MapUtils
 import org.apache.commons.lang3.StringUtils
 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintProcessorException
 import org.onap.ccsdk.apps.controllerblueprints.core.data.NodeTemplate
+import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintFileUtils
+import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils
 import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment
 import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceDefinition
 import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceDictionaryConstants
-import com.att.eelf.configuration.EELFManager
+import java.io.File
 
 
 object ResourceDictionaryUtils {
@@ -49,7 +53,7 @@ object ResourceDictionaryUtils {
                     resourceAssignment.dictionarySource = ResourceDictionaryConstants.SOURCE_INPUT
                 }
                 log.info("auto map resourceAssignment : {}", resourceAssignment)
-            }else {
+            } else {
                 resourceAssignment.dictionarySource = ResourceDictionaryConstants.SOURCE_INPUT
             }
         }
@@ -75,4 +79,16 @@ object ResourceDictionaryUtils {
             context[path] = valueNode
         }
     }
+
+    fun getResourceAssignmentFromFile(filePath: String): List<ResourceAssignment> {
+        return JacksonUtils.getListFromFile(filePath, ResourceAssignment::class.java)
+                ?: throw BluePrintProcessorException("couldn't get ResourceAssignment definitions for the file($filePath)")
+    }
+
+    fun writeResourceDefinitionTypes(basePath: String, resourceDefinitionMap: Map<String, ResourceDefinition>) {
+        val typePath = basePath.plus(File.separator).plus(BluePrintConstants.TOSCA_DEFINITIONS_DIR)
+                .plus(File.separator).plus("${ResourceDictionaryConstants.PATH_RESOURCE_DEFINITION_TYPE}.json")
+        val resourceDefinitionContent = JacksonUtils.getJson(resourceDefinitionMap.toSortedMap(), true)
+        BluePrintFileUtils.writeDefinitionFile(typePath, resourceDefinitionContent)
+    }
 }
\ No newline at end of file