From: Singal, Kapil (ks220y) Date: Fri, 11 Jan 2019 18:58:38 +0000 (-0500) Subject: Resource Resolution Service : 2 X-Git-Tag: 0.4.2~162^2~79^2 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=87aaaec0caa9975ee429a81a8f56058e78029fb0;p=ccsdk%2Fcds.git Resource Resolution Service : 2 Changes for Primary-DB Resource Resolution Processor Service Change-Id: Iaf6ad6277d36787d87881819ae530de1d7038a2e Issue-ID: CCSDK-942 Signed-off-by: Singal, Kapil (ks220y) --- diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/CapabilityResourceAssignmentProcessor.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/CapabilityResourceAssignmentProcessor.kt index f1de8f7d3..a6c8a3f9c 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/CapabilityResourceAssignmentProcessor.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/CapabilityResourceAssignmentProcessor.kt @@ -17,9 +17,9 @@ package org.onap.ccsdk.apps.blueprintsprocessor.functions.resource.resolution.processor import org.onap.ccsdk.apps.blueprintsprocessor.functions.resource.resolution.CapabilityResourceSource -import org.onap.ccsdk.apps.blueprintsprocessor.functions.resource.resolution.utils.ResourceResolutionUtils import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintProcessorException import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment +import org.onap.ccsdk.apps.controllerblueprints.resource.dict.utils.ResourceAssignmentUtils import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.ApplicationContext import org.springframework.stereotype.Service @@ -49,7 +49,7 @@ open class CapabilityResourceAssignmentProcessor : ResourceAssignmentProcessor() checkNotNull(resourceSource.properties) { "failed to get ${executionRequest.dictionarySource} properties" } - val capabilityResourceSourceProperty = ResourceResolutionUtils.transformResourceSource(resourceSource.properties!!, CapabilityResourceSource::class.java) + val capabilityResourceSourceProperty = ResourceAssignmentUtils.transformResourceSource(resourceSource.properties!!, CapabilityResourceSource::class.java) val instanceType = capabilityResourceSourceProperty.type val instanceName = capabilityResourceSourceProperty.instanceName diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/InputResourceAssignmentProcessor.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/InputResourceAssignmentProcessor.kt index ccf3aee1f..bd9c188ac 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/InputResourceAssignmentProcessor.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/InputResourceAssignmentProcessor.kt @@ -17,11 +17,11 @@ package org.onap.ccsdk.apps.blueprintsprocessor.functions.resource.resolution.processor -import org.onap.ccsdk.apps.blueprintsprocessor.functions.resource.resolution.utils.ResourceResolutionUtils import org.onap.ccsdk.apps.controllerblueprints.core.* import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment import org.springframework.stereotype.Service import com.fasterxml.jackson.databind.node.NullNode +import org.onap.ccsdk.apps.controllerblueprints.resource.dict.utils.ResourceAssignmentUtils /** * InputResourceAssignmentProcessor @@ -41,13 +41,13 @@ open class InputResourceAssignmentProcessor : ResourceAssignmentProcessor() { val value = bluePrintRuntimeService!!.getInputValue(executionRequest.name) // if value is null don't call setResourceDataValue to populate the value if (value != null && value !is NullNode) { - ResourceResolutionUtils.setResourceDataValue(executionRequest, value) + ResourceAssignmentUtils.setResourceDataValue(executionRequest, value) } } // Check the value has populated for mandatory case - ResourceResolutionUtils.assertTemplateKeyValueNotNull(executionRequest) + ResourceAssignmentUtils.assertTemplateKeyValueNotNull(executionRequest) } catch (e: Exception) { - ResourceResolutionUtils.setFailedResourceDataValue(executionRequest, e.message) + ResourceAssignmentUtils.setFailedResourceDataValue(executionRequest, e.message) throw BluePrintProcessorException("Failed in template key ($executionRequest) assignments with : (${e.message})", e) } } diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/DataBaseResourceAssignmentProcessor.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/PrimaryDataResourceAssignmentProcessor.kt similarity index 82% rename from ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/DataBaseResourceAssignmentProcessor.kt rename to ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/PrimaryDataResourceAssignmentProcessor.kt index da77c2739..ec98d09e8 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/DataBaseResourceAssignmentProcessor.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/processor/PrimaryDataResourceAssignmentProcessor.kt @@ -21,15 +21,15 @@ import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment import org.springframework.stereotype.Service /** - * DataBaseResourceAssignmentProcessor + * PrimaryDataResourceAssignmentProcessor * * @author Brinda Santh */ -@Service("resource-assignment-processor-db") -open class DataBaseResourceAssignmentProcessor : ResourceAssignmentProcessor(){ +@Service("resource-assignment-processor-primary-db") +open class PrimaryDataResourceAssignmentProcessor : ResourceAssignmentProcessor(){ override fun getName(): String { - return "resource-assignment-processor-db" + return "resource-assignment-processor-primary-db" } override fun process(executionRequest: ResourceAssignment) { diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/utils/ResourceResolutionUtils.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/utils/ResourceResolutionUtils.kt deleted file mode 100644 index 7c590883f..000000000 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/main/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/utils/ResourceResolutionUtils.kt +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright © 2017-2018 AT&T Intellectual Property. - * - * 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. - */ - -package org.onap.ccsdk.apps.blueprintsprocessor.functions.resource.resolution.utils - -import java.util.Date -import org.apache.commons.lang3.StringUtils -import com.att.eelf.configuration.EELFLogger -import com.att.eelf.configuration.EELFManager -import com.fasterxml.jackson.databind.JsonNode -import com.fasterxml.jackson.databind.ObjectMapper -import com.fasterxml.jackson.databind.node.NullNode -import com.fasterxml.jackson.databind.node.ObjectNode -import org.onap.ccsdk.apps.controllerblueprints.core.* -import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils -import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment - -class ResourceResolutionUtils { - companion object { - - private val logger: EELFLogger = EELFManager.getInstance().getLogger(ResourceResolutionUtils::class.toString()) - - @Synchronized - @Throws(BluePrintProcessorException::class) - fun setResourceDataValue(resourceAssignment: ResourceAssignment, value: Any?) { - - val resourceProp = checkNotNull(resourceAssignment.property) { "Failed in setting resource value for resource mapping $resourceAssignment" } - checkNotEmptyNThrow(resourceAssignment.name, "Failed in setting resource value for resource mapping $resourceAssignment") - - if (checkNotEmpty(resourceAssignment.dictionaryName)) { - resourceAssignment.dictionaryName = resourceAssignment.name - logger.warn("Missing dictionary key, setting with template key (${resourceAssignment.name}) as dictionary key (${resourceAssignment.dictionaryName})") - } - - try { - if (checkNotEmpty(resourceProp.type)) { - val convertedValue = convertResourceValue(resourceProp.type, value) - logger.info("Setting Resource Value ($convertedValue) for Resource Name (${resourceAssignment.dictionaryName}) of type (${resourceProp.type})") - resourceProp.value = convertedValue - resourceAssignment.updatedDate = Date() - resourceAssignment.updatedBy = BluePrintConstants.USER_SYSTEM - resourceAssignment.status = BluePrintConstants.STATUS_SUCCESS - } - } catch (e: Exception) { - throw BluePrintProcessorException("Failed in setting value for template key (%s) and " + - "dictionary key (${resourceAssignment.name}) of type (${resourceProp.type}) with error message (${e.message})", e) - } - } - - private fun convertResourceValue(type: String, value: Any?): JsonNode? { - var convertedValue: JsonNode? - - if (value == null || value is NullNode) { - logger.info("Returning {} value from convertResourceValue", value) - return null - } else if (BluePrintTypes.validPrimitiveTypes().contains(type) && value is String) { - convertedValue = JacksonUtils.convertPrimitiveResourceValue(type, value) - } else { - // Case where Resource is non-primitive type - if (value is String) { - convertedValue = JacksonUtils.jsonNode(value) - } else { - convertedValue = JacksonUtils.getJsonNode(value) - } - } - return convertedValue - } - - @Synchronized - fun setFailedResourceDataValue(resourceAssignment: ResourceAssignment, message: String?) { - if (checkNotEmpty(resourceAssignment.name)) { - resourceAssignment.updatedDate = Date() - resourceAssignment.updatedBy = BluePrintConstants.USER_SYSTEM - resourceAssignment.status = BluePrintConstants.STATUS_FAILURE - resourceAssignment.message = message - } - } - - @Synchronized - @Throws(BluePrintProcessorException::class) - fun assertTemplateKeyValueNotNull(resourceAssignment: ResourceAssignment) { - val resourceProp = checkNotNull(resourceAssignment.property) { "Failed to populate mandatory resource resource mapping $resourceAssignment" } - if (resourceProp.required != null && resourceProp.required!! && (resourceProp.value == null || resourceProp.value !is NullNode)) { - logger.error("failed to populate mandatory resource mapping ($resourceAssignment)") - throw BluePrintProcessorException("failed to populate mandatory resource mapping ($resourceAssignment)") - } - } - - @Synchronized - @Throws(BluePrintProcessorException::class) - fun generateResourceDataForAssignments(assignments: List): String { - var result = "{}" - try { - val mapper = ObjectMapper() - val root = mapper.readTree(result) - - assignments.forEach { - if (checkNotEmpty(it.name) && it.property != null) { - - val type = it.property?.type - val value = it.property?.value - logger.info("Generating Resource name ({}), type ({}), value ({})", it.name, type, - value) - if (value == null) { - (root as ObjectNode).set(it.name, null) - } else if (value is JsonNode) { - (root as ObjectNode).put(it.name, value as JsonNode) - } else if (BluePrintConstants.DATA_TYPE_STRING.equals(type, ignoreCase = true)) { - (root as ObjectNode).put(it.name, value as String) - } else if (BluePrintConstants.DATA_TYPE_BOOLEAN.equals(type, ignoreCase = true)) { - (root as ObjectNode).put(it.name, value as Boolean) - } else if (BluePrintConstants.DATA_TYPE_INTEGER.equals(type, ignoreCase = true)) { - (root as ObjectNode).put(it.name, value as Int) - } else if (BluePrintConstants.DATA_TYPE_FLOAT.equals(type, ignoreCase = true)) { - (root as ObjectNode).put(it.name, value as Float) - } else if (BluePrintConstants.DATA_TYPE_TIMESTAMP.equals(type, ignoreCase = true)) { - (root as ObjectNode).put(it.name, value as String) - } else { - val jsonNode = JacksonUtils.getJsonNode(value) - if (jsonNode != null) { - (root as ObjectNode).put(it.name, jsonNode) - } else { - (root as ObjectNode).set(it.name, null) - } - } - } - } - result = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(root) - logger.info("Generated Resource Param Data ({})", result) - } catch (e: Exception) { - throw BluePrintProcessorException("kapil is failing with $e.message", e) - } - - return result - } - - fun transformResourceSource(properties: MutableMap, classType: Class): T { - val content = JacksonUtils.getJson(properties) - return JacksonUtils.readValue(content, classType) - ?: throw BluePrintProcessorException("failed to transform content($content) to type($classType)") - } - - } -} \ No newline at end of file diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentTest.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentTest.kt index ef8496053..8adde8639 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentTest.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/ResourceResolutionComponentTest.kt @@ -34,7 +34,7 @@ import org.springframework.test.context.junit4.SpringRunner @RunWith(SpringRunner::class) @ContextConfiguration(classes = [ResourceResolutionComponent::class, ResourceResolutionService::class, InputResourceAssignmentProcessor::class, DefaultResourceAssignmentProcessor::class, - DataBaseResourceAssignmentProcessor::class, SimpleRestResourceAssignmentProcessor::class, + PrimaryDataResourceAssignmentProcessor::class, SimpleRestResourceAssignmentProcessor::class, CapabilityResourceAssignmentProcessor::class]) class ResourceResolutionComponentTest { diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt index 46ccb9745..6c6867532 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/kotlin/org/onap/ccsdk/apps/blueprintsprocessor/functions/resource/resolution/ResourceResolutionServiceTest.kt @@ -39,7 +39,7 @@ import kotlin.test.assertTrue @RunWith(SpringRunner::class) @ContextConfiguration(classes = [ResourceResolutionService::class, InputResourceAssignmentProcessor::class, DefaultResourceAssignmentProcessor::class, - DataBaseResourceAssignmentProcessor::class, SimpleRestResourceAssignmentProcessor::class, + PrimaryDataResourceAssignmentProcessor::class, SimpleRestResourceAssignmentProcessor::class, CapabilityResourceAssignmentProcessor::class]) class ResourceResolutionServiceTest { @@ -53,7 +53,7 @@ class ResourceResolutionServiceTest { fun testRegisteredSource() { val sources = resourceResolutionService.registeredResourceSources() assertNotNull(sources, "failed to get registered sources") - assertTrue(sources.containsAll(arrayListOf("input", "default", "db", "mdsal")), "failed to get registered sources") + assertTrue(sources.containsAll(arrayListOf("input", "default", "primary-db", "mdsal")), "failed to get registered sources") } @Test diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/dt-location.json b/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/dt-location.json similarity index 100% rename from ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/dt-location.json rename to ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/dt-location.json diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/db-array.json b/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/primary-db-array.json similarity index 88% rename from ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/db-array.json rename to ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/primary-db-array.json index 679b92db4..7082a4341 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/db-array.json +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/primary-db-array.json @@ -4,7 +4,7 @@ "data-type": "list", "entry-schema": "dt-location", "source": { - "db": { + "primary-db": { "query": "SELECT db-country, db-state FROM DEVICE_PROFILE WHERE profile_name = :profile_name", "input-key-mapping": { "profile_name": "profile_name" @@ -16,7 +16,7 @@ } }, "candidate-dependency": { - "db": { + "primary-db": { "names": [ "profile_name" ] diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/db-complex.json b/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/primary-db-complex.json similarity index 91% rename from ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/db-complex.json rename to ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/primary-db-complex.json index 32d04b690..53e2a11c3 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/db-complex.json +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/primary-db-complex.json @@ -3,7 +3,7 @@ "name": "location", "data-type": "dt-location", "source": { - "db": { + "primary-db": { "query": "SELECT db-country, db-state FROM DEVICE_PROFILE WHERE profile_name = :profile_name", "input-key-mapping": { "profile_name": "profile_name" diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/db-simple.json b/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/primary-db-simple.json similarity index 90% rename from ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/db-simple.json rename to ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/primary-db-simple.json index 841404f22..fad088877 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/db-simple.json +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/primary-db-simple.json @@ -3,7 +3,7 @@ "name": "country", "data-type": "string", "source": { - "db": { + "primary-db": { "query": "SELECT country FROM DEVICE_PROFILE WHERE profile_name = :profile_name", "input-key-mapping": { "profile_name": "profile_name" diff --git a/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/resource-assignments-simple.json b/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/resource-assignments-simple.json similarity index 85% rename from ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/resource-assignments-simple.json rename to ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/resource-assignments-simple.json index ddcf32eed..bb392d7be 100644 --- a/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/db/resource-assignments-simple.json +++ b/ms/blueprintsprocessor/functions/resource-resolution/src/test/resources/mapping/primary-db/resource-assignments-simple.json @@ -6,7 +6,7 @@ "type": "string" }, "dictionary-name": "country", - "dictionary-source": "db", + "dictionary-source": "primary-db", "dependencies": ["state"] }, {