From fa2918d945c6fad84055caca8912d2efe242ed6f Mon Sep 17 00:00:00 2001 From: Ittay Stern Date: Sun, 16 Feb 2020 15:23:45 +0200 Subject: [PATCH] Limit vfmodule tenant and region dictation to "create" 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 --- .../main/java/org/onap/vid/job/command/VnfCommand.kt | 7 +++++-- .../java/org/onap/vid/job/command/VnfCommandTest.kt | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/vid-app-common/src/main/java/org/onap/vid/job/command/VnfCommand.kt b/vid-app-common/src/main/java/org/onap/vid/job/command/VnfCommand.kt index b008c1306..cada6055d 100644 --- a/vid-app-common/src/main/java/org/onap/vid/job/command/VnfCommand.kt +++ b/vid-app-common/src/main/java/org/onap/vid/job/command/VnfCommand.kt @@ -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( diff --git a/vid-app-common/src/test/java/org/onap/vid/job/command/VnfCommandTest.kt b/vid-app-common/src/test/java/org/onap/vid/job/command/VnfCommandTest.kt index 660abe4d2..977966271 100644 --- a/vid-app-common/src/test/java/org/onap/vid/job/command/VnfCommandTest.kt +++ b/vid-app-common/src/test/java/org/onap/vid/job/command/VnfCommandTest.kt @@ -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> { + 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( -- 2.16.6