2  * Copyright © 2017-2018 AT&T Intellectual Property.
 
   4  * Licensed under the Apache License, Version 2.0 (the "License");
 
   5  * you may not use this file except in compliance with the License.
 
   6  * You may obtain a copy of the License at
 
   8  *     http://www.apache.org/licenses/LICENSE-2.0
 
  10  * Unless required by applicable law or agreed to in writing, software
 
  11  * distributed under the License is distributed on an "AS IS" BASIS,
 
  12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  13  * See the License for the specific language governing permissions and
 
  14  * limitations under the License.
 
  17 package org.onap.ccsdk.apps.blueprintsprocessor.functions.resource.resolution.processor
 
  19 import org.onap.ccsdk.apps.blueprintsprocessor.functions.resource.resolution.CapabilityResourceSource
 
  20 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintProcessorException
 
  21 import org.onap.ccsdk.apps.controllerblueprints.resource.dict.ResourceAssignment
 
  22 import org.onap.ccsdk.apps.controllerblueprints.resource.dict.utils.ResourceAssignmentUtils
 
  23 import org.springframework.beans.factory.annotation.Autowired
 
  24 import org.springframework.context.ApplicationContext
 
  25 import org.springframework.stereotype.Service
 
  27 @Service("resource-assignment-processor-capability")
 
  28 open class CapabilityResourceAssignmentProcessor : ResourceAssignmentProcessor() {
 
  31         const val CAPABILITY_TYPE_KOTLIN_COMPONENT = "KOTLIN-COMPONENT"
 
  32         const val CAPABILITY_TYPE_JAVA_COMPONENT = "JAVA-COMPONENT"
 
  33         const val CAPABILITY_TYPE_JYTHON_COMPONENT = "JYTHON-COMPONENT"
 
  37     private lateinit var applicationContext: ApplicationContext
 
  39     override fun getName(): String {
 
  40         return "resource-assignment-processor-capability"
 
  43     override fun process(executionRequest: ResourceAssignment) {
 
  45         val resourceDefinition = resourceDictionaries[executionRequest.dictionaryName]
 
  46                 ?: throw BluePrintProcessorException("couldn't get resource definition for ${executionRequest.dictionaryName}")
 
  48         val resourceSource = resourceDefinition.sources[executionRequest.dictionarySource]
 
  49                 ?: throw BluePrintProcessorException("couldn't get resource definition ${executionRequest.dictionaryName} source(${executionRequest.dictionarySource})")
 
  51         checkNotNull(resourceSource.properties) { "failed to get ${executionRequest.dictionarySource} properties" }
 
  53         val capabilityResourceSourceProperty = ResourceAssignmentUtils.transformResourceSource(resourceSource.properties!!, CapabilityResourceSource::class.java)
 
  55         val instanceType = capabilityResourceSourceProperty.type
 
  56         val instanceName = capabilityResourceSourceProperty.instanceName
 
  59         var componentResourceAssignmentProcessor: ResourceAssignmentProcessor? = null
 
  62             CAPABILITY_TYPE_KOTLIN_COMPONENT ->{
 
  63                 TODO("NO implementation")
 
  65             CAPABILITY_TYPE_JAVA_COMPONENT -> {
 
  66                 // Initialize Capability Resource Assignment Processor
 
  67                 componentResourceAssignmentProcessor = applicationContext.getBean(instanceName, ResourceAssignmentProcessor::class.java)
 
  69             CAPABILITY_TYPE_JYTHON_COMPONENT -> {
 
  70                 TODO(" No implementation")
 
  74         checkNotNull(componentResourceAssignmentProcessor) { "failed to get capability resource assignment processor($instanceName)" }
 
  76         // Assign Current Blueprint runtime and ResourceDictionaries
 
  77         componentResourceAssignmentProcessor.bluePrintRuntimeService = bluePrintRuntimeService
 
  78         componentResourceAssignmentProcessor.resourceDictionaries = resourceDictionaries
 
  80         // Invoke componentResourceAssignmentProcessor
 
  81         componentResourceAssignmentProcessor.apply(executionRequest)
 
  84     override fun recover(runtimeException: RuntimeException, executionRequest: ResourceAssignment) {