Merge "allow LOB multi-selection for vnf -fix test"
diff --git a/features.properties.md b/features.properties.md
index dedb0e3..f6075a2 100644
--- a/features.properties.md
+++ b/features.properties.md
@@ -100,6 +100,7 @@
new UI in view/edit mode.
* FLAG_1902_RETRY_JOB
+
Support retry of failed job. Once async job has failed, the user is able to retry execute the job again.
* FLAG_1810_CR_LET_SELECTING_COLLECTOR_TYPE_UNCONDITIONALLY
@@ -137,100 +138,138 @@
2) Service types fetching on Service Instance creation popup from the "Browse SDC models" page.
* FLAG_1908_TRANSPORT_SERVICE_NEW_INSTANTIATION_UI
+
Enable opening transport service (service with type:TRANSPORT) in new instantiation UI.
* FLAG_1908_INFRASTRUCTURE_VPN
+
Enable opening VRF service (service with type:BONDING, role: INFRASTRUCTURE-VPN) in new instantiation UI.
* FLAG_1908_RESUME_MACRO_SERVICE
+
Enable resume macro service from new view edit page, if :
* Service model has a Macro deployment
* Service Instance is in Assigned / Inventoried Ocrh. Status
* Service instance Service Type != Transport (PNFs)
* FLAG_1908_VNF_FABRIC_CONFIGURATION_NEW_INSTANTIATION_UI
+
Enable open the "new" Angular 2 instantiation pages for service with service-role = "VNF"
* FLAG_FLASH_MORE_ACTIONS_BUTTON_IN_OLD_VIEW_EDIT
+
Adds a button in legacy View/Edit screen that reopens the service in the _new_ View/Edit screen.
This button is not displayed when no "Edit" permissions.
* FLAG_FLASH_REPLACE_VF_MODULE
+
Enable Replace VF module for upgrade flows, requested by the Flash team.
When upgrading a VF module VID will invoke the MSO POST VF-module/replace request
* FLAG_1908_MACRO_NOT_TRANSPORT_NEW_VIEW_EDIT
+
Enable New UI on View Edit for Macro, NON TRANSPORT services
* FLAG_FLASH_CLOUD_REGION_AND_NF_ROLE_OPTIONAL_SEARCH
+
Add cloud-region and nf-role as an optional search criteria fields when fetching VNF details.
* FLAG_1911_INSTANTIATION_ORDER_IN_ASYNC_ALACARTE
+
Let the user set the order of resource instantiation while using drawing board (new view edit)
for a-la-carte instantiation.
* FLAG_SHOW_ORCHESTRATION_TYPE
+
enables showing/hiding (true/false) column with orchestration type in Service Model browser.
The types are fetched from aai.
* FLAG_2002_ANY_ALACARTE_BESIDES_EXCLUDED_NEW_INSTANTIATION_UI
+
Any a-la-carte new service deployment will be open in modern UI, besides excluded services : Port mirroring, VLAN Tagging
* FLAG_2002_VFM_UPGRADE_ADDITIONAL_OPTIONS
+
When flag is true the new popup will be opened with additional options to perform on VFM.
-* FLAG_2002_IDENTIFY_INVARIANT_MACRO_UUID_BY_BACKEND,
+* FLAG_2002_IDENTIFY_INVARIANT_MACRO_UUID_BY_BACKEND
+
When flag is true, VID use macro_services_by_invariant_uuid.json file to identify if csar without instantiation type is macro service.
Otherwise, MACRO_SERVICES list in vidConfiguration.js is used to identify if it's a macro service (in ng1 code)
* FLAG_2002_VNF_PLATFORM_MULTI_SELECT
+
When flag is true the platform will appear as a multi select field, if false the platform will be dropdown list.
* FLAG_2004_INSTANTIATION_STATUS_FILTER
+
When flag is true the user can filter rows in instantiation status by using text input
* FLAG_2004_CREATE_ANOTHER_INSTANCE_FROM_TEMPLATE
+
When flag is true, the user see in instantiation status page, an option to recreate another instance.
This option is enabled only for instantiate jobs.
If the user clicks on this option, the previous instantiation is opened in drawing board,
and the user can create another one from this template.
* FLAG_2004_INSTANTIATION_TEMPLATES_POPUP
+
Enables a designated Templates selection modal, accessible when creating a new instance through "Browse SDC".
* FLAG_2006_VFM_SDNC_PRELOAD_FILES
+
Enables upload files when SDNC preload checkbox is checked
* FLAG_2002_UNLIMITED_MAX
+
when flag is true and max_instances is not declare than user can add unlimited VND, NETWORK, VFMODULE,
User can duplicate up to 10 record in single time.
If the flag is false and max_instances is not declare the max will be 1 else max_instances value.
* FLAG_MORE_AUDIT_INFO_LINK_ON_AUDIT_INFO
+
On the "audit info" modal (available on Instantiation Status page), shows a link navigating to
the read-only RETRY page with more audit info.
* FLAG_2006_USER_PERMISSIONS_BY_OWNING_ENTITY
+
When flag is true the user will be provided with edit permissions by owning entity id even the user have no permission by Subscriber,
when the flag is false the user provided with edit permission by Subscriber.
* FLAG_2006_LIMIT_OWNING_ENTITY_SELECTION_BY_ROLES
+
While service instantiation, when flag is enabled, a user will not be able to choose Owning Entity which she has no
matching role for. Relevant roles can be provided by using FLAG_2006_USER_PERMISSIONS_BY_OWNING_ENTITY.
* FLAG_2006_VFMODULE_TAKES_TENANT_AND_REGION_FROM_VNF
+
When flag is true new VF Modules on Alacarte service will inherit LCP-Region and Tenant from parent VNF.
When off, user is requested to specify LCP-Region and Tenant for each VF Module.
* FLAG_2006_NETWORK_PLATFORM_MULTI_SELECT
- When flag is true the platform will appear as a multi select field, if false the platform will be dropdown list.
+
+ When flag is true the platform will appear as a multi select field, if false the platform will be limited to a single value.
* FLAG_2006_NETWORK_LOB_MULTI_SELECT
- When flag is true the LOB will appear as a multi select field, if false the platform will be dropdown list.
-
-
+
+ When flag is true the LOB will appear as a multi select field, if false the Line Of Business will be limited to a single value.
+ * FLAG_2006_VNF_LOB_MULTI_SELECT
+ When flag is true the LOB will appear as a multi select field, if false the Line Of Business will be limited to a single value.
* FLAG_EXP_USE_FORMAT_PARAMETER_FOR_CM_DASHBOARD
- When flag is true VID will use the format=simpleNoTaskInfo parameter in addition to the filter parameter when fetching orchestration requests for the change-management dashboard.
- When OFF, VID will use only the filter parameter
\ No newline at end of file
+
+ When flag is true VID will use the format=simpleNoTaskInfo parameter in addition to the filter parameter when fetching
+ orchestration requests for the change-management dashboard. When OFF, VID will use only the filter parameter
+
+
+* FLAG_GUILIN_CONFIG_PORTAL_APP_PASSWORD
+
+ Support setting fn_app.app_password in database to a value provided by the environment variable VID_PORTAL_APP_PASSWORD.
+ VID will persist the given value, replacing any previous value.
+
+ When toggled off, the only way to configure VID's value is by manually setting a value in the DB.
+ See https://jira.onap.org/browse/VID-801
+
+
+
\ No newline at end of file
diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java b/vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java
index cfb8480..ab02875 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java
@@ -28,7 +28,11 @@
import java.io.File;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import javax.annotation.PostConstruct;
import javax.servlet.ServletContext;
+import org.apache.commons.lang3.StringUtils;
+import org.onap.portalsdk.core.domain.App;
+import org.onap.portalsdk.core.service.DataAccessService;
import org.onap.portalsdk.core.util.SystemProperties;
import org.onap.vid.aai.AaiClient;
import org.onap.vid.aai.AaiClientInterface;
@@ -54,6 +58,7 @@
import org.onap.vid.client.SyncRestClient;
import org.onap.vid.logging.VidLoggingInterceptor;
import org.onap.vid.properties.AsdcClientConfiguration;
+import org.onap.vid.properties.Features;
import org.onap.vid.properties.VidProperties;
import org.onap.vid.scheduler.SchedulerService;
import org.onap.vid.scheduler.SchedulerServiceImpl;
@@ -66,6 +71,7 @@
import org.onap.vid.utils.JoshworksJacksonObjectMapper;
import org.onap.vid.utils.Logging;
import org.onap.vid.utils.SystemPropertiesWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -83,11 +89,30 @@
@Configuration
public class WebConfig implements WebMvcConfigurer {
- /**
- * Gets the object mapper.
- *
- * @return the object mapper
- */
+ @Autowired DataAccessService dataAccessService;
+ @Autowired FeatureManager featureManager;
+ String portalAppPassword = System.getenv(VidProperties.PORTAL_APP_PASSWORD_ENVIRONMENT_VARIABLE_NAME);
+
+ @PostConstruct
+ public void persistPortalAppPassword() {
+ if (featureManager.isActive(Features.FLAG_GUILIN_CONFIG_PORTAL_APP_PASSWORD)) {
+ if (StringUtils.isEmpty(portalAppPassword)) {
+ return;
+ }
+
+ // Read self app object (i.e. where id=1) from database as AppServiceImpl.getDefaultApp() does
+ App defaultApp = (App) dataAccessService.getDomainObject(App.class, 1L, null);
+
+ if (defaultApp == null || StringUtils.equals(defaultApp.getAppPassword(), portalAppPassword)) {
+ return;
+ }
+
+ defaultApp.setAppPassword(portalAppPassword);
+ dataAccessService.saveDomainObject(defaultApp, null);
+ }
+ }
+
+
@Bean
public com.fasterxml.jackson.databind.ObjectMapper getObjectMapper() {
return new com.fasterxml.jackson.databind.ObjectMapper().registerModule(new KotlinModule());
diff --git a/vid-app-common/src/main/java/org/onap/vid/properties/Features.java b/vid-app-common/src/main/java/org/onap/vid/properties/Features.java
index 35f18aa..91f787c 100644
--- a/vid-app-common/src/main/java/org/onap/vid/properties/Features.java
+++ b/vid-app-common/src/main/java/org/onap/vid/properties/Features.java
@@ -92,6 +92,9 @@
FLAG_2006_NETWORK_PLATFORM_MULTI_SELECT,
FLAG_EXP_USE_FORMAT_PARAMETER_FOR_CM_DASHBOARD,
FLAG_2006_NETWORK_LOB_MULTI_SELECT,
+ FLAG_2006_VNF_LOB_MULTI_SELECT,
+
+ FLAG_GUILIN_CONFIG_PORTAL_APP_PASSWORD,
;
diff --git a/vid-app-common/src/main/java/org/onap/vid/properties/VidProperties.java b/vid-app-common/src/main/java/org/onap/vid/properties/VidProperties.java
index 3975024..ab2d1ec 100644
--- a/vid-app-common/src/main/java/org/onap/vid/properties/VidProperties.java
+++ b/vid-app-common/src/main/java/org/onap/vid/properties/VidProperties.java
@@ -21,9 +21,9 @@
package org.onap.vid.properties;
import org.apache.commons.lang3.StringUtils;
-import org.onap.vid.model.ModelConstants;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.vid.model.ModelConstants;
/**
* The Class VidProperties.
*/
@@ -36,6 +36,7 @@
public static final String MSO_MAX_OPENED_INSTANTIATION_REQUESTS="mso.maxOpenedInstantiationRequests";
public static final String MSO_ASYNC_POLLING_INTERVAL_SECONDS="mso.asyncPollingIntervalSeconds";
public static final String PROBE_SDC_MODEL_UUID="probe.sdc.model.uuid";
+ public static final String PORTAL_APP_PASSWORD_ENVIRONMENT_VARIABLE_NAME="VID_PORTAL_APP_PASSWORD";
/** The Constant VID_TRUSTSTORE_FILENAME. */
public static final String VID_TRUSTSTORE_FILENAME = "vid.truststore.filename";
diff --git a/vid-app-common/src/main/webapp/WEB-INF/conf/guilin.features.properties b/vid-app-common/src/main/webapp/WEB-INF/conf/guilin.features.properties
index f86dd97..e842256 100644
--- a/vid-app-common/src/main/webapp/WEB-INF/conf/guilin.features.properties
+++ b/vid-app-common/src/main/webapp/WEB-INF/conf/guilin.features.properties
@@ -40,3 +40,5 @@
FLAG_2004_INSTANTIATION_STATUS_FILTER=true
FLAG_2006_VFMODULE_TAKES_TENANT_AND_REGION_FROM_VNF=true
+FLAG_GUILIN_CONFIG_PORTAL_APP_PASSWORD = true
+
diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/WebConfigTest.java b/vid-app-common/src/test/java/org/onap/vid/controller/WebConfigTest.java
new file mode 100644
index 0000000..82b7682
--- /dev/null
+++ b/vid-app-common/src/test/java/org/onap/vid/controller/WebConfigTest.java
@@ -0,0 +1,93 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 - 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.vid.controller;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.mockito.Mockito.when;
+import static org.onap.vid.testUtils.TestUtils.setStringsInStringFields;
+
+import javax.inject.Inject;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.onap.portalsdk.core.domain.App;
+import org.onap.portalsdk.core.service.DataAccessService;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.vid.config.DataSourceConfig;
+import org.onap.vid.properties.Features;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+import org.togglz.core.manager.FeatureManager;
+
+@ContextConfiguration(classes = {DataSourceConfig.class, SystemProperties.class})
+public class WebConfigTest extends AbstractTestNGSpringContextTests {
+
+ @Inject private DataAccessService dataAccessService;
+ @Mock FeatureManager featureManager;
+ @InjectMocks WebConfig webConfig;
+
+ @BeforeMethod
+ public void initMocks() {
+ MockitoAnnotations.initMocks(this);
+ webConfig.dataAccessService = dataAccessService;
+
+ // set default app values
+ App defaultApp = setStringsInStringFields(new App());
+ defaultApp.setId(1L);
+ dataAccessService.saveDomainObject(defaultApp, null);
+
+ // enable feature
+ when(featureManager.isActive(Features.FLAG_GUILIN_CONFIG_PORTAL_APP_PASSWORD)).thenReturn(true);
+ }
+
+ @Test
+ public void persistPortalAppPassword_givenFlagAndValue_thenValueIsPersisted() {
+ assertThat(setAndGetPortalAppPassword("fresh password"),
+ equalTo("fresh password"));
+ }
+
+ @Test
+ public void persistPortalAppPassword_givenEmptyValue_thenDbValueUnchanged() {
+ assertThat(setAndGetPortalAppPassword(""),
+ equalTo("appPassword"));
+ }
+
+ @Test
+ public void persistPortalAppPassword_givenNullValue_thenDbValueUnchanged() {
+ assertThat(setAndGetPortalAppPassword(null),
+ equalTo("appPassword"));
+ }
+
+ public String setAndGetPortalAppPassword(String password) {
+ webConfig.portalAppPassword = password;
+
+ webConfig.persistPortalAppPassword();
+ return appDomainPasswordFromDB();
+ }
+
+ private String appDomainPasswordFromDB() {
+ return ((App) dataAccessService.getDomainObject(App.class, 1L, null))
+ .getAppPassword();
+ }
+}
\ No newline at end of file
diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVnfALaCarteCypress2.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVnfALaCarteCypress2.java
index 98883ab..e052117 100644
--- a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVnfALaCarteCypress2.java
+++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOCreateVnfALaCarteCypress2.java
@@ -32,7 +32,7 @@
"\"source\":\"VID\"," +
"\"suppressRollback\":false," +
"\"requestorId\":\"us16807000\"}," +
- "\"lineOfBusiness\":{\"lineOfBusinessName\":\"zzz1\"}," +
+ "\"lineOfBusiness\":{\"lineOfBusinessName\":\"zzz1,ONAP\"}," +
"\"cloudConfiguration\":" +
"{\"lcpCloudRegionId\":\"" + getLcpCloudRegionId() + "\"," +
addCloudOwnerIfNeeded() +
diff --git a/vid-automation/src/main/java/vid/automation/test/infra/Features.java b/vid-automation/src/main/java/vid/automation/test/infra/Features.java
index 8d9765c..5e83062 100644
--- a/vid-automation/src/main/java/vid/automation/test/infra/Features.java
+++ b/vid-automation/src/main/java/vid/automation/test/infra/Features.java
@@ -64,7 +64,7 @@
FLAG_2006_NETWORK_PLATFORM_MULTI_SELECT,
FLAG_EXP_USE_FORMAT_PARAMETER_FOR_CM_DASHBOARD,
FLAG_2006_NETWORK_LOB_MULTI_SELECT,
-
+ FLAG_2006_VNF_LOB_MULTI_SELECT,
;
public boolean isActive() {
diff --git a/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte-no-testapi.json b/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte-no-testapi.json
index 1c22fb8..9d4e7ba 100644
--- a/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte-no-testapi.json
+++ b/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte-no-testapi.json
@@ -102,7 +102,7 @@
"legacyRegion": "just another region",
"tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
"platformName": "xxx1,platform",
- "lineOfBusiness": "zzz1",
+ "lineOfBusiness": "zzz1,ONAP",
"instanceParams": [
{}
],
diff --git a/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte.json b/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte.json
index 7924340..a820459 100644
--- a/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte.json
+++ b/vid-automation/src/test/resources/a-la-carte/redux-a-la-carte.json
@@ -99,7 +99,7 @@
"legacyRegion": "just another region",
"tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
"platformName": "xxx1,platform",
- "lineOfBusiness": "zzz1",
+ "lineOfBusiness": "zzz1,ONAP",
"instanceParams": [
{}
],
diff --git a/vid-webpack-master/cypress/integration/iFrames/ala-carte.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/ala-carte.e2e.ts
index 8f5341c..4ececb0 100644
--- a/vid-webpack-master/cypress/integration/iFrames/ala-carte.e2e.ts
+++ b/vid-webpack-master/cypress/integration/iFrames/ala-carte.e2e.ts
@@ -92,6 +92,7 @@
it(`VNF a-la-carte`, () => {
cy.readFile('cypress/support/jsonBuilders/mocks/jsons/flags.cypress.json').then((res) => {
res['FLAG_2002_VNF_PLATFORM_MULTI_SELECT'] = true;
+ res['FLAG_2006_VNF_LOB_MULTI_SELECT'] = true;
cy.server()
.route({
method: 'GET',
@@ -134,7 +135,7 @@
cy.selectDropdownOptionByText('lcpRegion', 'AAIAIC25');
cy.typeToInput("lcpRegionText", "just another region");
cy.selectDropdownOptionByText('tenant', 'USP-SIP-IC-24335-T-01');
- cy.selectDropdownOptionByText('lineOfBusiness', 'zzz1');
+ cy.selectLobValue('zzz1');
cy.selectPlatformValue(`xxx1`);
@@ -145,6 +146,7 @@
cy.getElementByDataTestsId(vnfMenuBtnDataTestId).click({force: true}).then(() => {
cy.getElementByDataTestsId('context-menu-edit').click({force: true});
cy.selectPlatformValue(`platform`);
+ cy.selectLobValue('ONAP');
cy.getElementByDataTestsId('form-set').click({force: true}).then(() => {
cy.getReduxState().then((state) => {
@@ -236,7 +238,7 @@
cy.selectDropdownOptionByText('productFamily', 'Emanuel');
cy.selectDropdownOptionByText('lcpRegion', 'hvf6');
cy.selectDropdownOptionByText('tenant', 'AIN Web Tool-15-D-STTest2');
- cy.selectDropdownOptionByText('lineOfBusiness', 'zzz1');
+ cy.selectLobValue('zzz1');
cy.selectPlatformValue(`xxx1`);
cy.getElementByDataTestsId('form-set').click({force: true}).then(() => {
const vnfName = '2017-488_PASQUALE-vPE 0';
diff --git a/vid-webpack-master/cypress/integration/iFrames/drawingBoard.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/drawingBoard.e2e.ts
index ab1e164..63df833 100644
--- a/vid-webpack-master/cypress/integration/iFrames/drawingBoard.e2e.ts
+++ b/vid-webpack-master/cypress/integration/iFrames/drawingBoard.e2e.ts
@@ -376,7 +376,7 @@
cy.selectDropdownOptionByText('productFamily', 'ERICA');
cy.selectDropdownOptionByText('lcpRegion', 'hvf6');
cy.selectDropdownOptionByText('tenant', 'AIN Web Tool-15-D-testalexandria');
- cy.selectDropdownOptionByText('lineOfBusiness', 'ONAP');
+ cy.selectLobValue('ONAP');
cy.selectPlatformValue(`platform`);
cy.genericFormSubmitForm();
@@ -397,7 +397,7 @@
cy.selectDropdownOptionByText('productFamily', 'ERICA');
cy.selectDropdownOptionByText('lcpRegion', 'hvf6');
cy.selectDropdownOptionByText('tenant', 'AIN Web Tool-15-D-testalexandria');
- cy.selectDropdownOptionByText('lineOfBusiness', 'ONAP')
+ cy.selectLobValue('ONAP')
cy.selectPlatformValue(`platform`);
cy.genericFormSubmitForm();
@@ -636,7 +636,9 @@
"FLAG_SERVICE_MODEL_CACHE": true,
"FLAG_1906_COMPONENT_INFO" : false,
"FLAG_2002_VNF_PLATFORM_MULTI_SELECT" : false,
- "FLAG_2002_UNLIMITED_MAX" : true
+ "FLAG_2002_UNLIMITED_MAX" : true,
+ "FLAG_2006_VNF_LOB_MULTI_SELECT" : false,
+
},
"type": "[FLAGS] Update"
},
@@ -7368,7 +7370,10 @@
function editSecondVnf(vnfNode: string) {
cy.drawingBoardTreeOpenContextMenuByElementDataTestId(vnfNode, 1)
.drawingBoardTreeClickOnContextMenuOptionByName('Edit');
- cy.selectDropdownOptionByText('lineOfBusiness', 'ONAP');
+ //uncheck lob value
+ cy.selectLobValue('zzz1');
+ // select a new lob value
+ cy.selectLobValue('ONAP');
cy.genericFormSubmitForm();
}
diff --git a/vid-webpack-master/cypress/integration/iFrames/instantiation-templates.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/instantiation-templates.e2e.ts
index 8a68a13..ef907f2 100644
--- a/vid-webpack-master/cypress/integration/iFrames/instantiation-templates.e2e.ts
+++ b/vid-webpack-master/cypress/integration/iFrames/instantiation-templates.e2e.ts
@@ -97,8 +97,8 @@
.getElementByDataTestsId("productFamily").should('contain', 'Emanuel')
.getElementByDataTestsId("tenant").should('contain', 'DN5242-Nov21-T1')
.getElementByDataTestsId("lcpRegion").should('contain', 'hvf6')
- .getElementByDataTestsId("lineOfBusiness").should('contain', 'zzz1')
.getElementByDataTestsId("rollback").should('contain', 'Rollback')
+ cy.checkLobValue('zzz1')
cy.checkPlatformValue(`xxx1`)
.getElementByDataTestsId("cancelButton").click();
diff --git a/vid-webpack-master/cypress/integration/iFrames/viewEditUpgradeVfModule.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/viewEditUpgradeVfModule.e2e.ts
index 6fb6675..027901f 100644
--- a/vid-webpack-master/cypress/integration/iFrames/viewEditUpgradeVfModule.e2e.ts
+++ b/vid-webpack-master/cypress/integration/iFrames/viewEditUpgradeVfModule.e2e.ts
@@ -235,7 +235,7 @@
});
- it(`Upgrade a VFModule: upgrade vfmodule when upgraded already service, vnf and borther vfmodule e2e`, function () {
+ it(`Upgrade a VFModule: upgrade vfmodule when upgraded already service, vnf and brother vfmodule e2e`, function () {
const serviceType = 'Emanuel';
const subscriberId = 'a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb';
diff --git a/vid-webpack-master/cypress/integration/iFrames/viewOnlyDrawingBoard.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/viewOnlyDrawingBoard.e2e.ts
index 1d94454..efe9d54 100644
--- a/vid-webpack-master/cypress/integration/iFrames/viewOnlyDrawingBoard.e2e.ts
+++ b/vid-webpack-master/cypress/integration/iFrames/viewOnlyDrawingBoard.e2e.ts
@@ -96,6 +96,13 @@
});
cy.readFile('../vid-automation/src/test/resources/aaiGetInstanceTopology/getServiceInstanceTopologyResult.json').then((res) => {
+ res.vnfs['2017-488_PASQUALE-vPE 0']
+ .vfModules['2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0']['2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0uvfot']
+ .modelInfo.modelVersion = '2';
+ res.vnfs['2017-488_PASQUALE-vPE 0']
+ .vfModules['2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1']['2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1fshmc']
+ .modelInfo.modelVersion = null;
+
jsonBuilderAndMock.basicJson(
res,
Cypress.config('baseUrl') + "/aai_get_service_instance_topology/e433710f-9217-458d-a79d-1c7aff376d89/TYLER SILVIA/f8791436-8d55-4fde-b4d5-72dd2cf13cfb",
@@ -127,6 +134,14 @@
cy.getElementByDataTestsId('node-f8360508-3f17-4414-a2ed-6bc71161e8db-2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0').find("[data-tests-id='status-property-orchStatus']").eq(0).should('have.text', 'Active');
cy.getElementByDataTestsId('node-f8360508-3f17-4414-a2ed-6bc71161e8db-2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0').find("[data-tests-id='status-property-inMaint']").eq(0).should('have.text', '');
+ checkVfModuleModelVersion('node-69e09f68-8b63-4cc9-b9ff-860960b5db09-2017-488_PASQUALE-vPE 0',
+ 'node-f8360508-3f17-4414-a2ed-6bc71161e8db-2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0',
+ '2');
+
+ checkVfModuleModelVersion('node-69e09f68-8b63-4cc9-b9ff-860960b5db09-2017-488_PASQUALE-vPE 0',
+ 'node-25284168-24bb-4698-8cb4-3f509146eca5-2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1',
+ '');
+
cy.getElementByDataTestsId("serviceInstance").should('have.text', 'Service instance:');
cy.getElementByDataTestsId("serviceName").should('have.text', 'mCaNkinstancename');
cy.getElementByDataTestsId("orchStatusLabel").should('have.text', 'Orch Status:');
@@ -326,6 +341,11 @@
});
+ function checkVfModuleModelVersion(vnfNodeDataTestId: string, vfModuleDataTestId: string, vfModuleModelVersion: string){
+ cy.getElementByDataTestsId(vnfNodeDataTestId)
+ .getElementByDataTestsId(vfModuleDataTestId)
+ .find("[data-tests-id='status-property-modelVersion']").eq(0).should('have.text', vfModuleModelVersion);
+ }
function testComponentInfoForVNF(){
const labelsAndValuesForModel = [
['Model version', '2.0'],
diff --git a/vid-webpack-master/cypress/integration/iFrames/vnf.popup.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/vnf.popup.e2e.ts
index 3b56ac0..b05bbe5 100644
--- a/vid-webpack-master/cypress/integration/iFrames/vnf.popup.e2e.ts
+++ b/vid-webpack-master/cypress/integration/iFrames/vnf.popup.e2e.ts
@@ -80,7 +80,7 @@
cy.selectDropdownOptionByText('productFamily', 'Emanuel');
cy.selectDropdownOptionByText('lcpRegion', 'hvf6');
cy.selectDropdownOptionByText('tenant', 'AIN Web Tool-15-D-STTest2');
- cy.selectDropdownOptionByText('lineOfBusiness', 'zzz1');
+ cy.selectLobValue('zzz1');
cy.selectPlatformValue(`xxx1`);
})
diff --git a/vid-webpack-master/cypress/support/steps/fill.vnf.popup.step.ts b/vid-webpack-master/cypress/support/steps/fill.vnf.popup.step.ts
index 7c82cf8..60453f0 100644
--- a/vid-webpack-master/cypress/support/steps/fill.vnf.popup.step.ts
+++ b/vid-webpack-master/cypress/support/steps/fill.vnf.popup.step.ts
@@ -11,7 +11,7 @@
cy.selectDropdownOptionByText('productFamily', 'Emanuel');
cy.selectDropdownOptionByText('lcpRegion', 'hvf6');
cy.selectDropdownOptionByText('tenant', 'AIN Web Tool-15-D-STTest2');
- cy.selectDropdownOptionByText('lineOfBusiness', 'zzz1');
+ cy.selectLobValue('zzz1');
cy.selectPlatformValue(`xxx1`);
return cy.getElementByDataTestsId('form-set').click({force : true}).then((done)=>{
return done;
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToInstanceTree/objectToInstanceTree.service.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToInstanceTree/objectToInstanceTree.service.spec.ts
index a81c860..f8a738a 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToInstanceTree/objectToInstanceTree.service.spec.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToInstanceTree/objectToInstanceTree.service.spec.ts
@@ -2616,10 +2616,10 @@
"children": [],
"statusMessage": "Failed Vnf Message",
"statusProperties": [Object({
- key: 'Prov Status:',
+ key: 'Prov Status: ',
value: 'prov',
testId: 'provStatus'
- }), Object({ key: 'Orch Status:', value: 'Active', testId: 'orchStatus' }), Object({
+ }), Object({ key: 'Orch Status: ', value: 'Active', testId: 'orchStatus' }), Object({
key: 'In-maintenance',
value: '',
testId: 'inMaint'
@@ -2641,10 +2641,10 @@
"vnfStoreKey": "2017-488_PASQUALE-vPE 0",
"typeName": "VNF",
"statusProperties": [Object({
- key: 'Prov Status:',
+ key: 'Prov Status: ',
value: undefined,
testId: 'provStatus'
- }), Object({ key: 'Orch Status:', value: undefined, testId: 'orchStatus' })],
+ }), Object({ key: 'Orch Status: ', value: undefined, testId: 'orchStatus' })],
"children": [{
"parentType": 'VNF',
"action": 'None',
@@ -2674,10 +2674,15 @@
"dynamicModelName": "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0zssmp",
"typeName": "M",
"statusProperties": [Object({
- key: 'Prov Status:',
+ key: 'Prov Status: ',
value: undefined,
testId: 'provStatus'
- }), Object({ key: 'Orch Status:', value: undefined, testId: 'orchStatus' })],
+ }), Object({ key: 'Orch Status: ', value: undefined, testId: 'orchStatus' }),
+ Object({
+ key: 'Model Version: ',
+ value: '5',
+ testId: 'modelVersion'
+ })],
}]
}]
}
@@ -2698,10 +2703,10 @@
"vnfStoreKey": "2017-488_PASQUALE-vPE 0",
"typeName": "VNF",
"statusProperties": [Object({
- key: 'Prov Status:',
+ key: 'Prov Status: ',
value: undefined,
testId: 'provStatus'
- }), Object({ key: 'Orch Status:', value: undefined, testId: 'orchStatus' })],
+ }), Object({ key: 'Orch Status: ', value: undefined, testId: 'orchStatus' })],
"children": [
{
"action": 'None',
@@ -2788,10 +2793,10 @@
"networkStoreKey": "ExtVL 0",
"typeName": "N",
"statusProperties": [Object({
- key: 'Prov Status:',
+ key: 'Prov Status: ',
value: undefined,
testId: 'provStatus'
- }), Object({ key: 'Orch Status:', value: undefined, testId: 'orchStatus' })],
+ }), Object({ key: 'Orch Status: ', value: undefined, testId: 'orchStatus' })],
},
{
"parentType": '',
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.spec.ts
index fcef504..60f59de 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.spec.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.spec.ts
@@ -312,23 +312,55 @@
});
test('statusProperties should be prop on node according to node properties', () => {
- let node = service.addingStatusProperty({orchStatus: 'completed', provStatus: 'inProgress', inMaint: false});
+
+ let node = service.addingStatusProperty({orchStatus: 'completed', provStatus: 'inProgress', type: 'VFmodule', instanceModelInfo:{modelVersion: '1'}, inMaint: false});
expect(node.statusProperties).toBeDefined();
expect(node.statusProperties).toEqual([Object({
- key: 'Prov Status:',
+ key: 'Prov Status: ',
value: 'inProgress',
testId: 'provStatus'
- }), Object({key: 'Orch Status:', value: 'completed', testId: 'orchStatus'})]);
- node = service.addingStatusProperty({orchStatus: 'completed', provStatus: 'inProgress', inMaint: true});
+ }), Object({
+ key: 'Orch Status: ',
+ value: 'completed',
+ testId: 'orchStatus'
+ }),
+ Object({
+ key: 'Model Version: ',
+ value: '1',
+ testId: 'modelVersion'
+ })]);
+ node = service.addingStatusProperty({orchStatus: 'completed', provStatus: 'inProgress',type: 'VFmodule', instanceModelInfo:{}, inMaint: true});
expect(node.statusProperties).toEqual([Object({
- key: 'Prov Status:',
+ key: 'Prov Status: ',
value: 'inProgress',
testId: 'provStatus'
- }), Object({key: 'Orch Status:', value: 'completed', testId: 'orchStatus'}), Object({
+ }), Object({
+ key: 'Orch Status: ',
+ value: 'completed',
+ testId: 'orchStatus'
+ }), Object({
+ key: 'Model Version: ',
+ value: undefined,
+ testId: 'modelVersion'
+ }), Object({
key: 'In-maintenance',
value: '',
testId: 'inMaint'
- })]);
+ })
+]);
+ });
+ each([
+ ['version 2', '2', '2'],
+ ['undefined', null, undefined]
+ ]).
+ test('getNodeModelVersion should return %s', (description, nodeVersion, expectedVersion) => {
+ let node = <any>{
+ instanceModelInfo:{
+ modelVersion: nodeVersion
+ }
+ };
+ let actualVersion = service.getNodeModelVersion(node);
+ expect(actualVersion).toEqual(expectedVersion);
});
each([
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts
index 1e85127..249f9ec 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts
@@ -120,14 +120,24 @@
addingStatusProperty(node) {
node['statusProperties'] = [];
- node['statusProperties'].push({key: 'Prov Status:', value: node.provStatus, testId: 'provStatus'});
- node['statusProperties'].push({key: 'Orch Status:', value: node.orchStatus, testId: 'orchStatus'});
+ node['statusProperties'].push({key: 'Prov Status: ', value: node.provStatus, testId: 'provStatus'});
+ node['statusProperties'].push({key: 'Orch Status: ', value: node.orchStatus, testId: 'orchStatus'});
+ if(node.type === 'VFmodule') {
+ node['statusProperties'].push({key: 'Model Version: ', value: this.getNodeModelVersion(node), testId: 'modelVersion'});
+ }
if (node.inMaint) {
node['statusProperties'].push({key: 'In-maintenance', value: '', testId: 'inMaint'});
}
return node;
}
+ getNodeModelVersion(node): string | undefined {
+ if(!_.isNil(node.instanceModelInfo) && !_.isNil(node.instanceModelInfo.modelVersion)){
+ return node.instanceModelInfo.modelVersion;
+ }
+ return undefined;
+ }
+
/**********************************************
* should delete or remove child instance's
"new" -> should remove
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator.ts
index fe6a258..08d689d 100644
--- a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator.ts
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator.ts
@@ -64,7 +64,7 @@
result.push(this._sharedControllersService.getLegacyRegion(networkInstance));
result.push(this._sharedControllersService.getTenantControl(serviceId, networkInstance));
result.push(this._sharedControllersService.getPlatformMultiselectControl(networkInstance, result, flags['FLAG_2006_NETWORK_PLATFORM_MULTI_SELECT']));
- result.push(this._sharedControllersService.getMultiSelectLineOfBusinessControl(networkInstance, flags['FLAG_2006_NETWORK_LOB_MULTI_SELECT']));
+ result.push(this._sharedControllersService.getLobMultiselectControl(networkInstance, flags['FLAG_2006_NETWORK_LOB_MULTI_SELECT']));
}
return result;
@@ -89,7 +89,7 @@
result.push(this._sharedControllersService.getLegacyRegion(networkInstance));
result.push(this._sharedControllersService.getTenantControl(serviceId, networkInstance));
result.push(this._sharedControllersService.getPlatformMultiselectControl(networkInstance, result, flags['FLAG_2006_NETWORK_PLATFORM_MULTI_SELECT']));
- result.push(this._sharedControllersService.getMultiSelectLineOfBusinessControl(networkInstance, flags['FLAG_2006_NETWORK_LOB_MULTI_SELECT']));
+ result.push(this._sharedControllersService.getLobMultiselectControl(networkInstance, flags['FLAG_2006_NETWORK_LOB_MULTI_SELECT']));
result.push(this._sharedControllersService.getRollbackOnFailureControl(networkInstance));
}
return result;
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/sharedControlles/shared.controllers.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/sharedControlles/shared.controllers.service.spec.ts
index b141a1e..6ee3186 100644
--- a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/sharedControlles/shared.controllers.service.spec.ts
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/sharedControlles/shared.controllers.service.spec.ts
@@ -9,6 +9,7 @@
import {DropdownFormControl} from "../../../../models/formControlModels/dropdownFormControl.model";
import {FormControlModel, ValidatorOptions} from "../../../../models/formControlModels/formControl.model";
import {ControlGeneratorUtil} from "../control.generator.util.service";
+import {MultiselectFormControl} from "../../../../models/formControlModels/multiselectFormControl.model";
import each from "jest-each";
@@ -38,20 +39,15 @@
})().then(done).catch(done.fail));
-
-
-
-
test('getLineOfBusinessControl', ()=> {
- const lineOfBusinessControl :DropdownFormControl = service.getLineOfBusinessControl();
- expect(lineOfBusinessControl.name).toEqual('lineOfBusiness');
+ const lineOfBusinessControl :MultiselectFormControl = service.getLobMultiselectControl(undefined, true);
expect(lineOfBusinessControl.controlName).toEqual('lineOfBusiness');
expect(lineOfBusinessControl.displayName).toEqual('Line of business');
- expect(lineOfBusinessControl.dataTestId).toEqual('lineOfBusiness');
+ expect(lineOfBusinessControl.dataTestId).toEqual('multi-lineOfBusiness');
expect(lineOfBusinessControl.placeHolder).toEqual('Select Line Of Business');
expect(lineOfBusinessControl.onInitSelectedField).toEqual(['lineOfBusinessList']);
expect(lineOfBusinessControl.onInit).toBeDefined();
- expect(lineOfBusinessControl.value).toBeNull();
+ expect(lineOfBusinessControl.value).toBe("");
expect(lineOfBusinessControl.validations.find((validation)=> validation.validatorName === ValidatorOptions.required)).toBeDefined();
expect(lineOfBusinessControl.isDisabled).toBeFalsy();
});
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/sharedControlles/shared.controllers.service.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/sharedControlles/shared.controllers.service.ts
index d589efa..b10ed9a 100644
--- a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/sharedControlles/shared.controllers.service.ts
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/sharedControlles/shared.controllers.service.ts
@@ -25,27 +25,6 @@
private _aaiService : AaiService,
private _basicControlGenerator : ControlGeneratorUtil){}
-
- getLineOfBusinessControl = (instance?: any): DropdownFormControl => {
- return new DropdownFormControl({
- type: FormControlType.DROPDOWN,
- controlName: 'lineOfBusiness',
- displayName: 'Line of business',
- dataTestId: 'lineOfBusiness',
- placeHolder: 'Select Line Of Business',
- isDisabled: false,
- name: "lineOfBusiness",
- value: instance ? instance.lineOfBusiness : null,
- validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
- onInitSelectedField: ['lineOfBusinessList'],
- onInit: this._basicControlGenerator.getSubscribeInitResult.bind(null, this._aaiService.getCategoryParameters)
- })
- };
-
- getMultiSelectLineOfBusinessControl = (instance: any, isMultiSelected: boolean): MultiselectFormControl => {
- return this.getLobMultiselectControl(instance, isMultiSelected);
- };
-
getTenantControl = (serviceId: string, instance?: any): DropdownFormControl => {
const service = this._store.getState().service.serviceInstance[serviceId];
const globalCustomerId: string = service.globalSubscriberId;
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator.ts
index 488df9a..b1f72a5 100644
--- a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator.ts
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator.ts
@@ -45,13 +45,16 @@
const flags = this.store.getState().global.flags;
if (!_.isNil(vnfModel)) {
+ const isPlatformMultiSelected = flags['FLAG_2002_VNF_PLATFORM_MULTI_SELECT'];
+ const isLobMultiSelected = flags['FLAG_2006_VNF_LOB_MULTI_SELECT'];
+
result.push(this.getInstanceName(vnfInstance, serviceId, vnfName, vnfModel.isEcompGeneratedNaming));
result.push(this._sharedControllersService.getProductFamilyControl(vnfInstance, result, true));
result.push(this._sharedControllersService.getLcpRegionControl(serviceId, vnfInstance, result));
result.push(this._sharedControllersService.getLegacyRegion(vnfInstance));
result.push(this._sharedControllersService.getTenantControl(serviceId, vnfInstance));
- result.push(this._sharedControllersService.getPlatformMultiselectControl(vnfInstance, result, flags['FLAG_2002_VNF_PLATFORM_MULTI_SELECT']));
- result.push(this._sharedControllersService.getLineOfBusinessControl(vnfInstance));
+ result.push(this._sharedControllersService.getPlatformMultiselectControl(vnfInstance, result, isPlatformMultiSelected));
+ result.push(this._sharedControllersService.getLobMultiselectControl(vnfInstance, isLobMultiSelected));
}
return result;
}
@@ -66,16 +69,18 @@
let result: FormControlModel[] = [];
const vnfInstance = this._basicControlGenerator.retrieveInstanceIfUpdateMode(this.store,this.getVnfInstance(serviceId, vnfStoreKey));
const vnfModel = new VNFModel(this.store.getState().service.serviceHierarchy[serviceId].vnfs[vnfName]);
+ const flags = this.store.getState().global.flags;
if (!_.isNil(vnfModel)) {
- const flags = this.store.getState().global.flags;
+ const isPlatformMultiSelected = flags['FLAG_2002_VNF_PLATFORM_MULTI_SELECT'];
+ const isLobMultiSelected = flags['FLAG_2006_VNF_LOB_MULTI_SELECT'];
result.push(this.getInstanceName(vnfInstance, serviceId, vnfName, vnfModel.isEcompGeneratedNaming));
result.push(this._sharedControllersService.getProductFamilyControl(vnfInstance, result, true));
result.push(this._sharedControllersService.getLcpRegionControl(serviceId, vnfInstance, result));
result.push(this._sharedControllersService.getLegacyRegion(vnfInstance));
result.push(this._sharedControllersService.getTenantControl(serviceId, vnfInstance));
- result.push(this._sharedControllersService.getPlatformMultiselectControl(vnfInstance, result, flags['FLAG_2002_VNF_PLATFORM_MULTI_SELECT']));
- result.push(this._sharedControllersService.getLineOfBusinessControl(vnfInstance));
+ result.push(this._sharedControllersService.getPlatformMultiselectControl(vnfInstance, result, isPlatformMultiSelected));
+ result.push(this._sharedControllersService.getLobMultiselectControl(vnfInstance,isLobMultiSelected));
result.push(this._sharedControllersService.getRollbackOnFailureControl(vnfInstance));
}
return result;
diff --git a/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts b/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts
index 5842662..78a2b1e 100644
--- a/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts
+++ b/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts
@@ -20,6 +20,8 @@
FLAG_2004_INSTANTIATION_TEMPLATES_POPUP = 'FLAG_2004_INSTANTIATION_TEMPLATES_POPUP',
FLAG_2006_USER_PERMISSIONS_BY_OWNING_ENTITY= 'FLAG_2006_USER_PERMISSIONS_BY_OWNING_ENTITY',
FLAG_2006_VFMODULE_TAKES_TENANT_AND_REGION_FROM_VNF = 'FLAG_2006_VFMODULE_TAKES_TENANT_AND_REGION_FROM_VNF',
+ FLAG_2006_VNF_LOB_MULTI_SELECT= 'FLAG_2006_VNF_LOB_MULTI_SELECT',
+
}
@Injectable()