Limit vfmodule tenant and region dictation to "create" 86/101786/1
authorIttay Stern <ittay.stern@att.com>
Sun, 16 Feb 2020 13:23:45 +0000 (15:23 +0200)
committerIttay Stern <ittay.stern@att.com>
Sun, 16 Feb 2020 13:28:56 +0000 (15:28 +0200)
Other flows (e.g. Delete) are expected to have literal designation.

Verified in API test "delete1VnfWithVfModulesAndCreate1VnfFromService".

Issue-ID: VID-758

Change-Id: Ib543ff98ecf96e1df0e5741fbdbba2e64e602528
Signed-off-by: Ittay Stern <ittay.stern@att.com>
vid-app-common/src/main/java/org/onap/vid/job/command/VnfCommand.kt
vid-app-common/src/test/java/org/onap/vid/job/command/VnfCommandTest.kt

index b008c13..cada605 100644 (file)
@@ -12,7 +12,6 @@ import org.onap.vid.model.serviceInstantiation.Vnf
 import org.onap.vid.mso.RestMsoImplementation
 import org.onap.vid.properties.Features
 import org.onap.vid.services.AsyncInstantiationBusinessLogic
-import org.onap.vid.utils.isNotActive
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.beans.factory.config.ConfigurableBeanFactory
 import org.springframework.context.annotation.Scope
@@ -77,7 +76,7 @@ class VnfCommand @Autowired constructor(
                     .map { childVfModuleWithVnfRegionAndTenant(it) }
 
     internal fun childVfModuleWithVnfRegionAndTenant(vfModule: VfModule): VfModule {
-        if (featureManager.isNotActive(Features.FLAG_2006_VFMODULE_TAKES_TENANT_AND_REGION_FROM_VNF)) {
+        if (!shouldEntailRegionAndTenantToVfModule(vfModule)) {
             return vfModule
         }
 
@@ -86,6 +85,10 @@ class VnfCommand @Autowired constructor(
         return vfModule.cloneWith(vnfLcpCloudRegionId, vnfTenantId)
     }
 
+    private fun shouldEntailRegionAndTenantToVfModule(vfModule: VfModule) =
+            vfModule.action == Action.Create
+                    && featureManager.isActive(Features.FLAG_2006_VFMODULE_TAKES_TENANT_AND_REGION_FROM_VNF)
+
     private fun filterModuleByNeedToCreateBase(vfModule: VfModule): Boolean {
         return needToCreateBaseModule ==
                 commandUtils.isVfModuleBaseModule(
index 660abe4..9779662 100644 (file)
@@ -37,6 +37,7 @@ import org.onap.vid.services.AsyncInstantiationBusinessLogic
 import org.onap.vid.testUtils.TestUtils
 import org.onap.vid.testUtils.TestUtils.initMockitoMocks
 import org.testng.annotations.BeforeMethod
+import org.testng.annotations.DataProvider
 import org.testng.annotations.Test
 import org.togglz.core.manager.FeatureManager
 import org.mockito.Mockito.`when` as _when
@@ -65,8 +66,22 @@ class VnfCommandTest {
 
     @Test(dataProvider = "trueAndFalse", dataProviderClass = TestUtils::class)
     fun `childVfModuleWithVnfRegionAndTenant -- given vfmodule -- tenant and region are copied from vnf`(featureToggleOn: Boolean) {
+        runChildVfModuleWithVnfRegionAndTenant(featureToggleOn, Action.Create, featureToggleOn)
+    }
+
+    @DataProvider
+    fun allPossibleActions(): Array<Array<out Any?>> {
+        return Action.values().map { arrayOf(it) }.toTypedArray()
+    }
+
+    @Test(dataProvider = "allPossibleActions")
+    fun `childVfModuleWithVnfRegionAndTenant -- given vfmodule in different actions -- only "action_Create" copies tenant and region from vnf`(vfModuleAction: Action) {
+        runChildVfModuleWithVnfRegionAndTenant(true, vfModuleAction, vfModuleAction == Action.Create)
+    }
+
+    private fun runChildVfModuleWithVnfRegionAndTenant(featureToggleOn: Boolean, vfModuleAction: Action, isCopyVnfToVfmoduleExpected: Boolean) {
 
-        val vfModule = FakeResourceCreator.createVfModule(Action.Create)
+        val vfModule = FakeResourceCreator.createVfModule(vfModuleAction)
                         .cloneWith("vfmodule-lcp-cloud-region-id", "vfmodule-tenant-id")
 
         _when(featureManager.isActive(Features.FLAG_2006_VFMODULE_TAKES_TENANT_AND_REGION_FROM_VNF)).thenReturn(featureToggleOn)
@@ -77,7 +92,7 @@ class VnfCommandTest {
 
         vnfCommand.init(jobSharedData, mapOf())
 
-        val expectedSource = if (featureToggleOn) "vnf" else "vfmodule"
+        val expectedSource = if (isCopyVnfToVfmoduleExpected) "vnf" else "vfmodule"
 
         assertThat(vnfCommand.childVfModuleWithVnfRegionAndTenant(vfModule),
                 allOf(