aboutsummaryrefslogtreecommitdiffstats
path: root/vid-webpack-master
diff options
context:
space:
mode:
Diffstat (limited to 'vid-webpack-master')
-rw-r--r--vid-webpack-master/cypress/integration/iFrames/instantiation-templates.e2e.ts106
-rw-r--r--vid-webpack-master/cypress/integration/iFrames/instantiation.templates.modal.e2e.ts48
-rw-r--r--vid-webpack-master/cypress/integration/iFrames/viewEdit.e2e.ts13
-rw-r--r--vid-webpack-master/cypress/integration/iFrames/viewEditUpgradeVfModule.e2e.ts21
-rw-r--r--vid-webpack-master/cypress/support/jsonBuilders/mocks/aai.mock.ts3
-rw-r--r--vid-webpack-master/cypress/support/jsonBuilders/mocks/jsons/upgradeVfModule/upgrade_vfmodule_e2e__service_instance.json2
-rw-r--r--vid-webpack-master/cypress/support/steps/drawingBoard/general.steps.ts3
-rw-r--r--vid-webpack-master/package.json3
-rw-r--r--vid-webpack-master/pom.xml4
-rw-r--r--vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.ts4
-rw-r--r--vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.component.ts4
-rw-r--r--vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/relatedVnfMember/relatedVnfMember.info.model.spec.ts4
-rw-r--r--vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.spec.ts299
-rw-r--r--vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.ts42
-rw-r--r--vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.spec.ts6
-rw-r--r--vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.ts4
-rw-r--r--vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToInstanceTree/objectToInstanceTree.service.spec.ts4
-rw-r--r--vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToModelTree/objectToModelTree.service.spec.ts4
-rw-r--r--vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToTree.service.ts4
-rw-r--r--vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.spec.ts4
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.scss41
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.ts3
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.ts2
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.service.spec.ts8
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service.spec.ts (renamed from vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.spec.ts)8
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service.ts (renamed from vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.ts)3
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popuop.service.ts12
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popup.service.spec.ts41
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service.spec.ts4
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service.spec.ts4
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.html17
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.scss59
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.ts28
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.service.spec.ts17
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.service.ts11
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.row.model.ts2
-rw-r--r--vid-webpack-master/src/app/shared/models/vfModule.ts11
-rw-r--r--vid-webpack-master/src/app/shared/shared.module.ts4
-rw-r--r--vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.actions.ts4
-rw-r--r--vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.reducers.spec.ts2
-rw-r--r--vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.reducers.ts2
-rw-r--r--vid-webpack-master/src/app/shared/utils/constants.ts1
42 files changed, 585 insertions, 281 deletions
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 dbb9bca4d..0075dc240 100644
--- a/vid-webpack-master/cypress/integration/iFrames/instantiation-templates.e2e.ts
+++ b/vid-webpack-master/cypress/integration/iFrames/instantiation-templates.e2e.ts
@@ -1,4 +1,5 @@
-import ObjectLike = Cypress.ObjectLike;
+import * as _ from "lodash";
+import {PropertyPath} from "lodash";
describe('Drawing Board: Instantiation Templates', function () {
@@ -6,7 +7,7 @@ describe('Drawing Board: Instantiation Templates', function () {
beforeEach(() => {
cy.clearSessionStorage();
- cy.setTestApiParamToVNF();
+ cy.setTestApiParamToGR();
cy.initAAIMock();
cy.initGetAAISubDetails();
cy.initVidMock();
@@ -31,13 +32,12 @@ describe('Drawing Board: Instantiation Templates', function () {
assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd();
});
- it('View a template’s details as expected', ()=> {
+ it('Given a stored template - when "edit" vnf and vfmodules are opened - then template’s details are visible as expected and deploy without changes', () => {
loadDrawingBoardWithRecreateMode();
// Then...
- cy.drawingBoardTreeOpenContextMenuByElementDataTestId("node-21ae311e-432f-4c54-b855-446d0b8ded72-vProbe_NC_VNF 0")
- .drawingBoardTreeClickOnContextMenuOptionByName('Edit')
+ editNode("node-21ae311e-432f-4c54-b855-446d0b8ded72-vProbe_NC_VNF 0")
.getElementByDataTestsId("instanceName").should('have.value', 'hvf6arlba007')
.getElementByDataTestsId("productFamily").should('contain', 'Emanuel')
.getElementByDataTestsId("tenant").should('contain', 'DN5242-Nov21-T1')
@@ -47,27 +47,26 @@ describe('Drawing Board: Instantiation Templates', function () {
.checkPlatformValue('xxx1')
.getElementByDataTestsId("cancelButton").click();
- cy.drawingBoardTreeOpenContextMenuByElementDataTestId("node-c5b26cc1-a66f-4b69-aa23-6abc7c647c88-vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0")
- .drawingBoardTreeClickOnContextMenuOptionByName('Edit')
+ editNode("node-c5b26cc1-a66f-4b69-aa23-6abc7c647c88-vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0")
.getElementByDataTestsId("instanceName").should('have.value', 'hvf6arlba007_lba_Base_01')
.getElementByDataTestsId("lcpRegion").should('contain', 'hvf6')
.getElementByDataTestsId("tenant").should('contain', 'DN5242-Nov21-T1')
.getElementByDataTestsId("rollback").should('contain', 'Rollback')
.getElementByDataTestsId("cancelButton").click();
- cy.drawingBoardTreeOpenContextMenuByElementDataTestId("node-c09e4530-8fd8-418f-9483-2f57ce927b05-vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1")
- .drawingBoardTreeClickOnContextMenuOptionByName('Edit')
+ editNode("node-c09e4530-8fd8-418f-9483-2f57ce927b05-vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1")
+ .getElementByDataTestsId("instanceName").should('have.value', 'my_hvf6arlba007_lba_dj_01')
+ .getElementByDataTestsId("volumeGroupName").should('have.value', 'my_special_hvf6arlba007_lba_dj_01_vol')
.getElementByDataTestsId("lcpRegion").should('contain', 'hvf6')
.getElementByDataTestsId("tenant").should('contain', 'DN5242-Nov21-T1')
.getElementByDataTestsId("rollback").should('contain', 'Rollback')
+ .getElementByDataTestsId("sdncPreLoad").should('have.value', 'on')
.getElementByDataTestsId("cancelButton").click();
-
-
assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd();
});
- it(`Edit the service`, function () {
+ it(`Given a stored template - when "edit" service is opened - then template’s details are visible as expected`, function () {
loadDrawingBoardWithRecreateMode();
@@ -80,13 +79,68 @@ describe('Drawing Board: Instantiation Templates', function () {
.getElementByDataTestsId("project").should('contain', 'WATKINS')
.getElementByDataTestsId("rollback").should('contain', 'Rollback');
+ });
+ [
+ {desc: "with changes", modifySomeValues: true},
+ {desc: "without changes", modifySomeValues: false},
+ ].forEach((testCase) => {
+
+ it(`Given a stored template - edit service vnf and vfmodule ${testCase.desc} - deploy request should be ${testCase.desc}`, function () {
+
+ loadDrawingBoardWithRecreateMode();
+
+ //edit service
+ cy.openServiceContextMenu();
+ cy.getElementByDataTestsId("context-menu-header-edit-item").click();
+ if (testCase.modifySomeValues) {
+ cy.clearInput("instanceName");
+ cy.typeToInput("instanceName", "different.instance.name");
+ }
+ cy.getElementByDataTestsId('form-set').click();
+
+ // edit vnf
+ editNode("node-21ae311e-432f-4c54-b855-446d0b8ded72-vProbe_NC_VNF 0");
+ if (testCase.modifySomeValues) {
+ cy.selectPlatformValue('platform');
+ cy.selectDropdownOptionByText("tenant", "CESAR-100-D-spjg61909");
+ }
+ cy.getElementByDataTestsId('form-set').click();
+
+ //edit vf module
+ editNode("node-c5b26cc1-a66f-4b69-aa23-6abc7c647c88-vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0");
+ if (testCase.modifySomeValues) {
+ cy.getElementByDataTestsId('sdncPreLoad').click();
+ }
+ cy.getElementByDataTestsId('form-set').click();
+
+ // Then...
+ let vnfPath = [
+ "vnfs", "vProbe_NC_VNF 0"
+ ];
+ let vfModule_0Path = [
+ ...vnfPath, "vfModules",
+ "vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0",
+ "vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0ahubg",
+ ];
+
+ assertThatBodyFromDeployRequestEqualsToFile(testCase.modifySomeValues ? [
+ {path: ["instanceName"], value: "different.instance.name"},
+ {path: ["existingNames", "vprobe_nc_service_dg_new_si"], value: undefined},
+ {path: ["existingNames", "different.instance.name"], value: ""},
+
+ {path: [...vnfPath, "platformName"], value: "xxx1,platform"},
+ {path: [...vnfPath, "tenantId"], value: "f2f3830e4c984d45bcd00e1a04158a79"},
+
+ {path: [...vfModule_0Path, "sdncPreLoad"], value: true},
+ ] : []);
+ })
-
- });
});
+
});
});
+});
function loadDrawingBoardWithRecreateMode() {
const serviceModelId = '6cfeeb18-c2b0-49df-987a-da47493c8e38';
@@ -112,6 +166,11 @@ function loadDrawingBoardWithRecreateMode() {
cy.wait('@templateTopology');
}
+function editNode(dataTestId: string) {
+ return cy.drawingBoardTreeOpenContextMenuByElementDataTestId(dataTestId)
+ .drawingBoardTreeClickOnContextMenuOptionByName('Edit')
+}
+
function assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd() {
cy.getDrawingBoardDeployBtn().click();
cy.wait('@expectedPostAsyncInstantiation').then(xhr => {
@@ -124,6 +183,25 @@ function assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd() {
});
}
+
+function assertThatBodyFromDeployRequestEqualsToFile(deviationFromExpected: { path: PropertyPath, value: any }[] = []) {
+ cy.getDrawingBoardDeployBtn().click();
+ cy.wait('@expectedPostAsyncInstantiation').then(xhr => {
+
+ cy.readFile('../vid-automation/src/test/resources/asyncInstantiation/templates__instance_from_template__set_without_modify1.json').then((expectedResult) => {
+ setDeviationInExpected(expectedResult, deviationFromExpected);
+ cy.deepCompare(xhr.request.body, expectedResult);
+ });
+
+ });
+}
+
+function setDeviationInExpected(expectedResult: any, deviation: { path: PropertyPath; value: any }[]) {
+ for (const caveat of deviation) {
+ _.set(expectedResult, caveat.path, caveat.value);
+ }
+}
+
//We use this function because the deployService() on drawing-board-header.component class
// changes rollbackOnFailure value from string type to boolean.
function convertRollbackOnFailureValueFromStringToBoolean(expectedResult: any) {
diff --git a/vid-webpack-master/cypress/integration/iFrames/instantiation.templates.modal.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/instantiation.templates.modal.e2e.ts
index 3caa4e81d..b2d3eb578 100644
--- a/vid-webpack-master/cypress/integration/iFrames/instantiation.templates.modal.e2e.ts
+++ b/vid-webpack-master/cypress/integration/iFrames/instantiation.templates.modal.e2e.ts
@@ -39,6 +39,44 @@ describe('Template', () => {
"serviceModelVersion": "1.0",
"createdBulkDate": 1525075968000,
"isRetryEnabled": true
+ },
+ {
+ "id": 7,
+ "created": 1525075968000,
+ "modified": 1525075971000,
+ "action": "INSTANTIATE",
+ "createdId": null,
+ "modifiedId": null,
+ "rowNum": null,
+ "auditUserId": null,
+ "auditTrail": null,
+ "jobId": "13063a83-924e-4500-a3a1-e53d1b58450b",
+ "templateId": "d42ba7c8-9e19-4e34-ae2c-d8af3f24498e",
+ "userId": "17807000",
+ "aLaCarte": false,
+ "msoRequestId": "c0011670-0e1a-4b74-945d-8bf5aede1d9d",
+ "jobStatus": "IN_PROGRESS",
+ "statusModifiedDate": 1525075968000,
+ "hidden": false,
+ "pause": false,
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "owningEntityName": "WayneHolland",
+ "project": "WATKINS",
+ "aicZoneId": "NFT1",
+ "aicZoneName": "NFTJSSSS-NFT1",
+ "tenantId": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "tenantName": "AIN Web Tool-15-D-testalexandria",
+ "regionId": "hvf6",
+ "regionName": null,
+ "serviceType": "TYLER SILVIA",
+ "subscriberName": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "serviceInstanceId": null,
+ "serviceInstanceName": "nWUfl instance name_001",
+ "serviceModelId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceModelName": "action-data",
+ "serviceModelVersion": "1.0",
+ "createdBulkDate": 1525075968000,
+ "isRetryEnabled": false
}
];
@@ -65,6 +103,7 @@ describe('Template', () => {
});
cy.route(Cypress.config('baseUrl') + "/asyncInstantiation**", asyncInstantiation);
+ cy.route(Cypress.config('baseUrl') + "/getuserID", '16807000');
cy.openIframe('/app/ui/#/servicePopup?serviceModelId=2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd&isCreate=true');
@@ -106,9 +145,14 @@ describe('Template', () => {
//check load button is disabled
- cy.getElementByDataTestsId('LoadTemplateButton').should('be.disabled')
+ cy.getElementByDataTestsId('LoadTemplateButton').should('be.disabled');
cy.getElementByDataTestsId('row-5c2cd8e5-27d0-42e3-85a1-85db5eaba459').click();
- cy.getElementByDataTestsId('LoadTemplateButton').should('not.be.disabled')
+ cy.getElementByDataTestsId('LoadTemplateButton').should('not.be.disabled');
+
+ //filter by userId
+ cy.get('.member-table-row').should('have.length', 2);
+ cy.getElementByDataTestsId('filterByUserIdTestId').click();
+ cy.get('.member-table-row').should('have.length', 1);
});
diff --git a/vid-webpack-master/cypress/integration/iFrames/viewEdit.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/viewEdit.e2e.ts
index 40ba258bd..8421cbd69 100644
--- a/vid-webpack-master/cypress/integration/iFrames/viewEdit.e2e.ts
+++ b/vid-webpack-master/cypress/integration/iFrames/viewEdit.e2e.ts
@@ -143,6 +143,7 @@ describe('View Edit Page', function () {
});
cy.initVidMock();
cy.mockLatestVersionForService(commonUuid, serviceInvariantId);
+ cy.initAAIServices();
cy.setReduxState();
cy.permissionVidMock();
cy.login();
@@ -166,6 +167,18 @@ describe('View Edit Page', function () {
});
});
+ it(`when using direct url should select elements in productFamily dropdown `, function () {
+ cy.visit('/serviceModels.htm#/instantiate?subscriberId=e433710f-9217-458d-a79d-1c7aff376d89&subscriberName=SILVIA%20ROBBINS&serviceType=TYLER%20SILVIA&serviceInstanceId=3f93c7cb-2fd0-4557-9514-e189b7b04f9d&aaiModelVersionId=6e59c5de-f052-46fa-aa7e-2fca9d674c44&isPermitted=true');
+ cy.wait('@service-complexService');
+ cy.wait('@aai_getPortMirroringConfigsDate - empty response');
+ cy.wait('@initAAIServices');
+ cy.getElementByDataTestsId('addNetworkButton').click();
+ cy.getElementByDataTestsId('addNetworkOption-MULTI_PROVIDER_PORT_GROUP 0').click();
+ cy.getElementByDataTestsId('productFamily').select('WILKINS');
+ });
+
+
+
it(`Check fabric configuration service with some configuration with diff orchStatus`, function () {
cy.visit('/serviceModels.htm#/instantiate?subscriberId=e433710f-9217-458d-a79d-1c7aff376d89&subscriberName=SILVIA%20ROBBINS&serviceType=TYLER%20SILVIA&serviceInstanceId=c187e9fe-40c3-4862-b73e-84ff056205f61234&aaiModelVersionId=6e59c5de-f052-46fa-aa7e-2fca9d671234&isPermitted=true');
cy.wait('@service-FabricConfig');
diff --git a/vid-webpack-master/cypress/integration/iFrames/viewEditUpgradeVfModule.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/viewEditUpgradeVfModule.e2e.ts
index 9f2499f3c..09734472c 100644
--- a/vid-webpack-master/cypress/integration/iFrames/viewEditUpgradeVfModule.e2e.ts
+++ b/vid-webpack-master/cypress/integration/iFrames/viewEditUpgradeVfModule.e2e.ts
@@ -100,20 +100,20 @@ describe('View Edit Page: Upgrade VFModule', function () {
`servicePlanning/EDIT?serviceModelId=${serviceUuid}&subscriberId=${SUBSCRIBER_ID}&serviceType=${SERVICE_TYPE}&serviceInstanceId=${SERVICE_INSTANCE_ID}`);
});
- it(`Upgrade a VFModule`, function () {
+ it(`Upgrade a VF Module`, function () {
cy.initDrawingBoardUserPermission();
initServicePlanning("EDIT",
'../vid-automation/src/test/resources/viewEdit/ServiceTreeWithMultipleChildren_serviceInstance_withUpdatedLatestVersion.json');
- upgradeTheVFM();
+ upgradeTheVFM('node-522159d5-d6e0-4c2a-aa44-5a542a12a830-vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1', true);
assertVfModuleActionInRedux("None_Upgrade");
undoUpgradeForVFM();
assertVfModuleActionInRedux("None");
- upgradeTheVFM();
+ upgradeTheVFM('node-522159d5-d6e0-4c2a-aa44-5a542a12a830-vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1',true);
cy.getDrawingBoardDeployBtn().click();
cy.wait('@expectedPostAsyncInstantiation').then(xhr => {
const requestBody = Object(xhr.request.body);
const vfModuleRequest = requestBody.vnfs['VNF2_INSTANCE_ID'].vfModules['vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1']['2c1ca484-cbc2-408b-ab86-25a2c15ce280'];
- expect(requestBody.action).to.equal("None_Upgrade");
+ expect(requestBody.action).to.equal("None_Upgrade");
expect(requestBody.vnfs['VNF2_INSTANCE_ID'].action).to.equal("None_Upgrade");
expect(vfModuleRequest.action).to.equal("None_Upgrade");
});
@@ -129,7 +129,7 @@ describe('View Edit Page: Upgrade VFModule', function () {
});
- describe('More UI tests', () => {
+ describe('More UI test', () => {
beforeEach(() => {
cy.clearSessionStorage();
@@ -174,7 +174,7 @@ describe('View Edit Page: Upgrade VFModule', function () {
cy.openIframe(`app/ui/#/servicePlanning/EDIT?serviceModelId=${serviceModelId}&subscriberId=${subscriberId}&serviceType=${serviceType}&serviceInstanceId=${serviceInstanceId}`);
- upgradeTheVFM('node-04b21d26-9780-4956-8329-b22b049329f4-xbitestmodulereplace0..XbiTestModuleReplace..base_ocg..module-0');
+ upgradeTheVFM('node-04b21d26-9780-4956-8329-b22b049329f4-xbitestmodulereplace0..XbiTestModuleReplace..base_ocg..module-0', false);
mockAsyncBulkResponse();
cy.getDrawingBoardDeployBtn().click();
@@ -213,13 +213,18 @@ describe('View Edit Page: Upgrade VFModule', function () {
}).as("expectLatestServiceModelUpgradeVersion");
}
- function upgradeTheVFM(treeNodeId = 'node-522159d5-d6e0-4c2a-aa44-5a542a12a830-vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1') {
+ function upgradeTheVFM(treeNodeId: string, shouldVGCheckboxExist :boolean) {
cy.getElementByDataTestsId(`${treeNodeId}-menu-btn`).click()
.drawingBoardTreeClickOnContextMenuOptionByName("Upgrade");
// The following is needed when enabling FLAG_2002_VFM_UPGRADE_ADDITIONAL_OPTIONS
cy.getElementByDataTestsId('retainAssignments').click();
- cy.getElementByDataTestsId('retainVolumeGroups').click();
+ if (shouldVGCheckboxExist) {
+ cy.getElementByDataTestsId('retainVolumeGroups').click();
+ }
+ else {
+ cy.getElementByDataTestsId('retainVolumeGroups').should('not.exist');
+ }
cy.getElementByDataTestsId('sdncPreLoad').click();
cy.screenshot();
cy.getElementByDataTestsId('form-set').click();
diff --git a/vid-webpack-master/cypress/support/jsonBuilders/mocks/aai.mock.ts b/vid-webpack-master/cypress/support/jsonBuilders/mocks/aai.mock.ts
index 3e6d5e33f..ae60361c2 100644
--- a/vid-webpack-master/cypress/support/jsonBuilders/mocks/aai.mock.ts
+++ b/vid-webpack-master/cypress/support/jsonBuilders/mocks/aai.mock.ts
@@ -8,6 +8,7 @@ declare namespace Cypress {
initActiveNetworks : typeof initActiveNetworks;
initActiveVPNs : typeof initActiveVPNs;
initGetAAISubDetails : typeof initGetAAISubDetails;
+ initAAIServices: typeof initAAIServices;
}
}
@@ -154,5 +155,7 @@ Cypress.Commands.add('initGetAAISubDetails', initGetAAISubDetails);
Cypress.Commands.add('initSearchVNFMemebers', initSearchVNFMemebers);
Cypress.Commands.add('initActiveNetworks', initActiveNetworks);
Cypress.Commands.add('initActiveVPNs', initActiveVPNs);
+Cypress.Commands.add('initAAIServices', initAAIServices);
+
diff --git a/vid-webpack-master/cypress/support/jsonBuilders/mocks/jsons/upgradeVfModule/upgrade_vfmodule_e2e__service_instance.json b/vid-webpack-master/cypress/support/jsonBuilders/mocks/jsons/upgradeVfModule/upgrade_vfmodule_e2e__service_instance.json
index 3e22bfea9..5ac833dca 100644
--- a/vid-webpack-master/cypress/support/jsonBuilders/mocks/jsons/upgradeVfModule/upgrade_vfmodule_e2e__service_instance.json
+++ b/vid-webpack-master/cypress/support/jsonBuilders/mocks/jsons/upgradeVfModule/upgrade_vfmodule_e2e__service_instance.json
@@ -98,4 +98,4 @@
"existingNetworksCounterMap": {},
"existingVnfGroupCounterMap": {},
"existingVRFCounterMap": {}
-} \ No newline at end of file
+}
diff --git a/vid-webpack-master/cypress/support/steps/drawingBoard/general.steps.ts b/vid-webpack-master/cypress/support/steps/drawingBoard/general.steps.ts
index 5444971b7..8d2bb8a24 100644
--- a/vid-webpack-master/cypress/support/steps/drawingBoard/general.steps.ts
+++ b/vid-webpack-master/cypress/support/steps/drawingBoard/general.steps.ts
@@ -26,8 +26,5 @@ function openServiceContextMenu() : Chainable<any> {
return cy.getElementByDataTestsId('openMenuBtn').click({force: true});
}
-
-
-
Cypress.Commands.add('updateServiceShouldNotOverrideChild', updateServiceShouldNotOverrideChild);
Cypress.Commands.add('openServiceContextMenu', openServiceContextMenu);
diff --git a/vid-webpack-master/package.json b/vid-webpack-master/package.json
index f2f913612..ee04de10d 100644
--- a/vid-webpack-master/package.json
+++ b/vid-webpack-master/package.json
@@ -8,6 +8,7 @@
"build": "ng build --no-progress --no-aot --output-hashing all",
"build.prod": "ng build",
"test": "jest",
+ "ci": "npm run test && npm run build",
"test:jest": "jest",
"test:jest:pipeline": "jest --silent --ci --reporters=default --reporters=jest-junit",
"test:jest:watch": "jest --watch",
@@ -92,7 +93,7 @@
"hammerjs": "2.0.8",
"husky": "^1.3.1",
"istanbul-reports": "2.1.1",
- "jest": "24.1.0",
+ "jest": "24.9.0",
"jest-each": "24.0.0",
"jest-junit": "6.3.0",
"jest-sonar-reporter": "2.0.0",
diff --git a/vid-webpack-master/pom.xml b/vid-webpack-master/pom.xml
index 2fe0a6eaf..f84a485eb 100644
--- a/vid-webpack-master/pom.xml
+++ b/vid-webpack-master/pom.xml
@@ -28,7 +28,7 @@
<stagingNexusPath>content/repositories/staging/</stagingNexusPath>
<snapshotNexusPath>content/repositories/snapshots/</snapshotNexusPath>
<releaseNexusPath>content/repositories/releases/</releaseNexusPath>
- <NPM_CMD>build</NPM_CMD>
+ <NPM_CMD>ci</NPM_CMD>
</properties>
@@ -70,6 +70,7 @@
</distributionManagement>
<profiles>
+
<profile>
<id>if-not-webpack</id>
<activation>
@@ -107,6 +108,7 @@
</plugins>
</build>
</profile>
+
<profile>
<id>webpack-npm</id>
<activation>
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.ts
index fb1172945..e277cb28c 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.ts
@@ -10,7 +10,7 @@ import {AaiService} from '../../../shared/services/aaiService/aai.service';
import {ServiceNodeTypes} from '../../../shared/models/ServiceNodeTypes';
import {IframeService} from "../../../shared/utils/iframe.service";
import {DefaultDataGeneratorService} from "../../../shared/services/defaultDataServiceGenerator/default.data.generator.service";
-import {VfModulePopuopService} from "../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
import {NetworkPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/network/network.popup.service";
import {createVFModuleInstance} from "../../../shared/storeUtil/utils/vfModule/vfModule.actions";
import {VnfPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service";
@@ -56,7 +56,7 @@ export class AvailableModelsTreeComponent {
private _drawingBoardTreeService: DrawingBoardTreeService,
private _defaultDataGeneratorService: DefaultDataGeneratorService,
private _vnfGroupControlGenerator: VnfGroupControlGenerator,
- private _vfModulePopuopService: VfModulePopuopService,
+ private _vfModulePopuopService: VfModulePopupService,
private _vnfGroupPopupService: VnfGroupPopupService,
private _vnfPopupService: VnfPopupService,
private _networkPopupService: NetworkPopupService,
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.component.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.component.ts
index f3542573d..4ad1b06cf 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.component.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.component.ts
@@ -11,7 +11,7 @@ import {IframeService} from "../../../shared/utils/iframe.service";
import {DuplicateService} from '../duplicate/duplicate.service';
import {DrawingBoardTreeService, TreeNodeContextMenuModel} from "./drawing-board-tree.service";
import {NetworkPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/network/network.popup.service";
-import {VfModulePopuopService} from "../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
import {VnfPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service";
import {SdcUiServices} from "onap-ui-angular";
import {HighlightPipe} from "../../../shared/pipes/highlight/highlight-filter.pipe";
@@ -63,7 +63,7 @@ export class DrawingBoardTreeComponent implements OnInit, AfterViewInit {
private modalService: SdcUiServices.ModalService,
private _drawingBoardTreeService: DrawingBoardTreeService,
private _networkPopupService: NetworkPopupService,
- private _vfModulePopuopService: VfModulePopuopService,
+ private _vfModulePopuopService: VfModulePopupService,
private _vnfPopupService: VnfPopupService,
private _vnfGroupPopupService: VnfGroupPopupService,
private _errorMsgService: ErrorMsgService,
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/relatedVnfMember/relatedVnfMember.info.model.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/relatedVnfMember/relatedVnfMember.info.model.spec.ts
index a44c21bf0..59ef35abb 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/relatedVnfMember/relatedVnfMember.info.model.spec.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/relatedVnfMember/relatedVnfMember.info.model.spec.ts
@@ -8,7 +8,7 @@ import {NgRedux} from "@angular-redux/store";
import {AppState} from "../../../../../shared/store/reducers";
import {DefaultDataGeneratorService} from "../../../../../shared/services/defaultDataServiceGenerator/default.data.generator.service";
import {DialogService} from "ng2-bootstrap-modal";
-import {VfModulePopuopService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
import {VnfPopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service";
import {DuplicateService} from "../../../duplicate/duplicate.service";
import {IframeService} from "../../../../../shared/utils/iframe.service";
@@ -38,7 +38,7 @@ describe('Related Vnf member Model Info', () => {
MockNgRedux,
DynamicInputsService,
DialogService,
- VfModulePopuopService,
+ VfModulePopupService,
VfModuleUpgradePopupService,
VnfPopupService,
DefaultDataGeneratorService,
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.spec.ts
index 85e57613a..8bdab11e3 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.spec.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.spec.ts
@@ -4,7 +4,7 @@ import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing";
import {VFModuleModelInfo} from "./vfModule.model.info";
import {DynamicInputsService} from "../../dynamicInputs.service";
import {SharedTreeService} from "../../shared.tree.service";
-import {VfModulePopuopService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
import {DialogService} from "ng2-bootstrap-modal";
import {NgRedux} from "@angular-redux/store";
import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service";
@@ -19,6 +19,7 @@ import {FeatureFlagsService} from "../../../../../shared/services/featureFlag/fe
import {VfModuleUpgradePopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popuop.service";
import {instance, mock, when} from "ts-mockito";
import each from "jest-each";
+import {VfModule} from "../../../../../shared/models/vfModule";
class MockAppStore<T> {
getState() {
@@ -30,19 +31,13 @@ class MockAppStore<T> {
}
}
-class MockFeatureFlagsService extends FeatureFlagsService{
- getAllFlags(): { [p: string]: boolean } {
- return {};
- }
-}
-
describe('VFModule Model Info', () => {
let injector;
let _dynamicInputsService : DynamicInputsService;
let _sharedTreeService : SharedTreeService;
let vfModuleModel: VFModuleModelInfo;
let _dialogService : DialogService;
- let _vfModulePopupService : VfModulePopuopService;
+ let _vfModulePopupService : VfModulePopupService;
let _vfModuleUpgradePopupService : VfModuleUpgradePopupService;
let _iframeService : IframeService;
let _componentInfoService : ComponentInfoService;
@@ -56,7 +51,7 @@ describe('VFModule Model Info', () => {
providers: [
DynamicInputsService,
DialogService,
- VfModulePopuopService,
+ VfModulePopupService,
VfModuleUpgradePopupService,
SharedTreeService,
IframeService,
@@ -133,8 +128,16 @@ describe('VFModule Model Info', () => {
});
test('getModel should return Module model', () => {
- let model = vfModuleModel.getModel('2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1',{}, getServiceHierarchy());
+ let model = vfModuleModel.getModel('2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1',null, getServiceHierarchy());
expect(model.uuid).toEqual('25284168-24bb-4698-8cb4-3f509146eca5');
+ expect(model.min).toBe(2);
+ expect(model.max).toBe(3);
+ expect(model.baseModule).toBeFalsy();
+ expect(model.inputs).toEqual(
+ {"vnf_config_template_version": {
+ "type": "string"
+ }});
+ expect(model.volumeGroupAllowed).toBeTruthy();
});
test('showNodeIcons should return false false if reachLimit of max', ()=>{
@@ -413,9 +416,35 @@ describe('VFModule Model Info', () => {
'modelInfo' : {
modelVersionId : 'vfModuleId'
}
+ },
+ 'vnfModuleName_111_1': {
+ 'action': 'Create',
+ 'modelInfo' : {
+ modelVersionId : 'vfModuleId'
+ }
}
}
}
+ },
+ 'vnfName_1' :{
+ 'action': 'Create',
+ 'originalName' : 'vnfName',
+ 'vfModules' : {
+ 'vfModuleName' : {
+ 'vnfModuleName_111': {
+ 'action': 'Create',
+ 'modelInfo' : {
+ modelVersionId : 'vfModuleId'
+ }
+ },
+ 'vnfModuleName_111_1': {
+ 'action': 'Create',
+ 'modelInfo' : {
+ modelVersionId : 'vfModuleId'
+ }
+ }
+ }
+ }
}
}
}
@@ -438,6 +467,95 @@ describe('VFModule Model Info', () => {
}
};
let result = vfModuleModel.getNodeCount(<any>node , serviceId);
+ expect(result).toEqual(2);
+ });
+
+
+ test('getNodeCount should return number of nodes : there is selectedVNF', ()=>{
+ let serviceId : string = 'servicedId';
+ jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
+ global : {},
+ service : {
+ serviceHierarchy : {
+ 'servicedId' : {
+ 'vnfs' : {
+ 'vnfName' : {
+ 'properties' : {
+ 'max_instances' : 1
+ }
+ }
+ },
+ 'vfModules' : {
+ 'vfModuleName' : {
+ 'properties' : {
+ maxCountInstances : 2
+ }
+ }
+ }
+ }
+ },
+ serviceInstance : {
+ 'servicedId' : {
+ 'existingVNFCounterMap' : {
+ 'vnfId' : 1
+ },
+ 'vnfs' : {
+ 'vnfName' :{
+ 'action': 'Create',
+ 'originalName' : 'vnfName',
+ 'vfModules' : {
+ 'vfModuleName' : {
+ 'vnfModuleName_111': {
+ 'action': 'Create',
+ 'modelInfo' : {
+ modelVersionId : 'vfModuleId'
+ }
+ },
+ 'vnfModuleName_111_1': {
+ 'action': 'Create',
+ 'modelInfo' : {
+ modelVersionId : 'vfModuleId'
+ }
+ }
+ }
+ }
+ },
+ 'vnfName_1' :{
+ 'action': 'Create',
+ 'originalName' : 'vnfName',
+ 'vfModules' : {
+ 'vfModuleName' : {
+ 'vnfModuleName_111': {
+ 'action': 'Create',
+ 'modelInfo' : {
+ modelVersionId : 'vfModuleId'
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ });
+ jest.spyOn(_sharedTreeService, 'getSelectedVNF').mockReturnValue('vnfName_1');
+
+ let node = {
+ data : {
+ id : 'vfModuleId',
+ name : 'vfModuleName',
+ 'action': 'Create',
+ },
+ parent : {
+ data : {
+ id : 'vnfId',
+ name : 'vnfName_1',
+ 'action': 'Create',
+ }
+ }
+ };
+ let result = vfModuleModel.getNodeCount(<any>node , serviceId);
expect(result).toEqual(1);
});
@@ -510,7 +628,7 @@ describe('VFModule Model Info', () => {
expect(vfModuleModel.isVFModuleReachedLimit(node, serviceHierarchy, 'servicedId', currentNodeCount)).toEqual(expected);
});
- function getVFModule(){
+ function getVFModule(): Partial<VfModule>{
return {
"uuid":"522159d5-d6e0-4c2a-aa44-5a542a12a830",
"invariantUuid":"98a7c88b-b577-476a-90e4-e25a5871e02b",
@@ -519,13 +637,10 @@ describe('VFModule Model Info', () => {
"name":"VfVgeraldine..vflorence_vlc..module-1",
"version":"2",
"modelCustomizationName":"VfVgeraldine..vflorence_vlc..module-1",
- "properties":{
- "minCountInstances":0,
- "maxCountInstances":null,
- "initialCount":0,
- "vfModuleLabel":"vflorence_vlc",
- "baseModule":false
- },
+ "min":0,
+ "max":null,
+ "initial":0,
+ "baseModule":false,
"inputs":{},
"volumeGroupAllowed":false
};
@@ -1151,7 +1266,7 @@ describe('VFModule Model Info', () => {
"type": "VF",
"modelCustomizationName": "2017-488_PASQUALE-vPE 0",
"vfModules": {
- "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1": {
+ "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1":{
"uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
"invariantUuid": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
"customizationUuid": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
@@ -1160,82 +1275,15 @@ describe('VFModule Model Info', () => {
"version": "6",
"modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
"properties": {
- "minCountInstances": 0,
- "maxCountInstances": null,
+ "minCountInstances": 2,
+ "maxCountInstances": 3,
"initialCount": 0,
"vfModuleLabel": "PASQUALE_vRE_BV",
"baseModule": false
},
"inputs": {
"vnf_config_template_version": {
- "type": "string",
- "description": "VPE Software Version",
- "entry_schema": null,
- "inputProperties": {
- "sourceType": "HEAT",
- "vfModuleLabel": "PASQUALE_vRE_BV",
- "paramName": "vnf_config_template_version"
- },
- "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version",
- "constraints": null,
- "required": true,
- "default": "17.2"
- },
- "bandwidth_units": {
- "type": "string",
- "description": "Units of bandwidth",
- "entry_schema": null,
- "inputProperties": {
- "sourceType": "HEAT",
- "vfModuleLabel": "PASQUALE_vRE_BV",
- "paramName": "bandwidth_units"
- },
- "fromInputName": "pasqualevpe0_bandwidth_units",
- "constraints": null,
- "required": true,
- "default": "Gbps"
- },
- "bandwidth": {
- "type": "string",
- "description": "Requested VPE bandwidth",
- "entry_schema": null,
- "inputProperties": {
- "sourceType": "HEAT",
- "vfModuleLabel": "PASQUALE_vRE_BV",
- "paramName": "bandwidth"
- },
- "fromInputName": "pasqualevpe0_bandwidth",
- "constraints": null,
- "required": true,
- "default": "10"
- },
- "AIC_CLLI": {
- "type": "string",
- "description": "AIC Site CLLI",
- "entry_schema": null,
- "inputProperties": {
- "sourceType": "HEAT",
- "vfModuleLabel": "PASQUALE_vRE_BV",
- "paramName": "AIC_CLLI"
- },
- "fromInputName": "2017488_pasqualevpe0_AIC_CLLI",
- "constraints": null,
- "required": true,
- "default": "ATLMY8GA"
- },
- "vnf_instance_name": {
- "type": "string",
- "description": "The hostname assigned to the vpe.",
- "entry_schema": null,
- "inputProperties": {
- "sourceType": "HEAT",
- "vfModuleLabel": "PASQUALE_vRE_BV",
- "paramName": "vnf_instance_name"
- },
- "fromInputName": "2017488_pasqualevpe0_vnf_instance_name",
- "constraints": null,
- "required": true,
- "default": "mtnj309me6"
+ "type": "string"
}
},
"volumeGroupAllowed": true
@@ -1402,82 +1450,15 @@ describe('VFModule Model Info', () => {
"version": "6",
"modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
"properties": {
- "minCountInstances": 0,
- "maxCountInstances": null,
+ "minCountInstances": 2,
+ "maxCountInstances": 3,
"initialCount": 0,
"vfModuleLabel": "PASQUALE_vRE_BV",
"baseModule": false
},
"inputs": {
"vnf_config_template_version": {
- "type": "string",
- "description": "VPE Software Version",
- "entry_schema": null,
- "inputProperties": {
- "sourceType": "HEAT",
- "vfModuleLabel": "PASQUALE_vRE_BV",
- "paramName": "vnf_config_template_version"
- },
- "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version",
- "constraints": null,
- "required": true,
- "default": "17.2"
- },
- "bandwidth_units": {
- "type": "string",
- "description": "Units of bandwidth",
- "entry_schema": null,
- "inputProperties": {
- "sourceType": "HEAT",
- "vfModuleLabel": "PASQUALE_vRE_BV",
- "paramName": "bandwidth_units"
- },
- "fromInputName": "pasqualevpe0_bandwidth_units",
- "constraints": null,
- "required": true,
- "default": "Gbps"
- },
- "bandwidth": {
- "type": "string",
- "description": "Requested VPE bandwidth",
- "entry_schema": null,
- "inputProperties": {
- "sourceType": "HEAT",
- "vfModuleLabel": "PASQUALE_vRE_BV",
- "paramName": "bandwidth"
- },
- "fromInputName": "pasqualevpe0_bandwidth",
- "constraints": null,
- "required": true,
- "default": "10"
- },
- "AIC_CLLI": {
- "type": "string",
- "description": "AIC Site CLLI",
- "entry_schema": null,
- "inputProperties": {
- "sourceType": "HEAT",
- "vfModuleLabel": "PASQUALE_vRE_BV",
- "paramName": "AIC_CLLI"
- },
- "fromInputName": "2017488_pasqualevpe0_AIC_CLLI",
- "constraints": null,
- "required": true,
- "default": "ATLMY8GA"
- },
- "vnf_instance_name": {
- "type": "string",
- "description": "The hostname assigned to the vpe.",
- "entry_schema": null,
- "inputProperties": {
- "sourceType": "HEAT",
- "vfModuleLabel": "PASQUALE_vRE_BV",
- "paramName": "vnf_instance_name"
- },
- "fromInputName": "2017488_pasqualevpe0_vnf_instance_name",
- "constraints": null,
- "required": true,
- "default": "mtnj309me6"
+ "type": "string"
}
},
"volumeGroupAllowed": true
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.ts
index 1e4a22c45..73f35279f 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.ts
@@ -10,7 +10,7 @@ import {NgRedux} from "@angular-redux/store";
import {ITreeNode} from "angular-tree-component/dist/defs/api";
import {GenericFormPopupComponent, PopupType} from "../../../../../shared/components/genericFormPopup/generic-form-popup.component";
import {DialogService} from "ng2-bootstrap-modal";
-import {VfModulePopuopService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
import {AppState} from "../../../../../shared/store/reducers";
import {MessageBoxData} from "../../../../../shared/components/messageBox/messageBox.data";
import {MessageBoxService} from "../../../../../shared/components/messageBox/messageBox.service";
@@ -28,7 +28,7 @@ export class VFModuleModelInfo implements ILevelNodeInfo {
constructor(private _dynamicInputsService: DynamicInputsService,
private _sharedTreeService: SharedTreeService,
private _dialogService: DialogService,
- private _vfModulePopupService: VfModulePopuopService,
+ private _vfModulePopupService: VfModulePopupService,
private _vfModuleUpgradePopupService: VfModuleUpgradePopupService,
private _iframeService: IframeService,
private _featureFlagsService: FeatureFlagsService,
@@ -67,10 +67,10 @@ export class VFModuleModelInfo implements ILevelNodeInfo {
* @param instance
* @param serviceHierarchy - serviceHierarchy
************************************************************/
- getModel = (vfModuleModelId: string, instance, serviceHierarchy): any => {
+ getModel = (vfModuleModelId: string, instance, serviceHierarchy): Partial<VfModule> => {
if (!_.isNil(serviceHierarchy)) {
if (!_.isNil(serviceHierarchy[this.name]) && !_.isNil(serviceHierarchy[this.name][vfModuleModelId])) {
- return serviceHierarchy[this.name][vfModuleModelId];
+ return new VfModule(serviceHierarchy[this.name][vfModuleModelId], this._featureFlagsService.getAllFlags());
}
}
return {};
@@ -177,12 +177,16 @@ export class VFModuleModelInfo implements ILevelNodeInfo {
* @param serviceModelId - current service id
************************************************************/
getNodeCount(node: ITreeNode, serviceModelId: string): number {
+ const vnfs = this._store.getState().service.serviceInstance[serviceModelId].vnfs;
let count: number = 0;
if (!_.isNil(this._store.getState().service.serviceInstance) && !_.isNil(this._store.getState().service.serviceInstance[serviceModelId])) {
- const vnfs = this._store.getState().service.serviceInstance[serviceModelId].vnfs;
-
- for (let vnfKey in vnfs) {
- count += this.countNumberOfVFModule(vnfs[vnfKey], node);
+ const selectedVNF: string = this._sharedTreeService.getSelectedVNF();
+ if (selectedVNF) {
+ count += this.countNumberOfVFModule(vnfs[selectedVNF], node);
+ }else {
+ for (let vnfKey in vnfs) {
+ count += this.countNumberOfVFModule(vnfs[vnfKey], node);
+ }
}
return count;
}
@@ -206,11 +210,8 @@ export class VFModuleModelInfo implements ILevelNodeInfo {
getCountVFModuleOfSelectedVNF(node: ITreeNode, vnfStoreKey: string, serviceModelId: string): number {
let count: number = 0;
if (!_.isNil(this._store.getState().service.serviceInstance) && !_.isNil(this._store.getState().service.serviceInstance[serviceModelId])) {
- const vnfs = this._store.getState().service.serviceInstance[serviceModelId].vnfs;
-
- for (let vnfKey in vnfs) {
- count += this.countNumberOfVFModule(vnfs[vnfKey], node);
- }
+ const vnf = this._store.getState().service.serviceInstance[serviceModelId].vnfs[vnfStoreKey];
+ count += this.countNumberOfVFModule(vnf, node);
return count;
}
return count;
@@ -238,7 +239,6 @@ export class VFModuleModelInfo implements ILevelNodeInfo {
showVFModuleOnSelectedVNF(node: ITreeNode, selectedVNF: string, serviceModelId: string): AvailableNodeIcons {
-
if (!_.isNil(this._store.getState().service.serviceInstance[serviceModelId].vnfs[selectedVNF]) && node.parent.data.name === this._store.getState().service.serviceInstance[serviceModelId].vnfs[selectedVNF].originalName) {
const existingVFModules = this.getCountVFModuleOfSelectedVNF(node, selectedVNF, serviceModelId);
const reachedLimit = this.isVFModuleReachedLimit(node, this._store.getState().service.serviceHierarchy, serviceModelId, existingVFModules);
@@ -397,9 +397,9 @@ export class VFModuleModelInfo implements ILevelNodeInfo {
vfModule : _.cloneDeep(node)
},
node,
- isUpdateMode: false
+ isUpdateMode: true
});
- }else {
+ } else {
this._sharedTreeService.upgradeBottomUp(node, serviceModelId);
this._store.dispatch(upgradeVFModule(node.data.modelName, node.parent.data.vnfStoreKey, serviceModelId ,node.data.dynamicModelName));
}
@@ -414,12 +414,12 @@ export class VFModuleModelInfo implements ILevelNodeInfo {
return (!_.isNil(instance) && !_.isNil(instance[deepDynamicName])) ? instance[deepDynamicName].position : null;
}
- getInfo(model, instance): ModelInformationItem[] {
- const modelInformation = !_.isEmpty(model) && !_.isEmpty(model.properties) ? [
- ModelInformationItem.createInstance("Base module", model.properties.baseModule),
- ModelInformationItem.createInstance("Min instances", !_.isNull(model.properties.minCountInstances) ? String(model.properties.minCountInstances) : null),
+ getInfo(model:Partial<VfModule>, instance): ModelInformationItem[] {
+ const modelInformation = !_.isEmpty(model) ? [
+ ModelInformationItem.createInstance("Base module", model.baseModule),
+ ModelInformationItem.createInstance("Min instances", !_.isNull(model.min) ? String(model.min) : null),
this._sharedTreeService.createMaximumToInstantiateModelInformationItem(model),
- ModelInformationItem.createInstance("Initial instances count", !_.isNull(model.properties.initialCount) ? String(model.properties.initialCount) : null)
+ ModelInformationItem.createInstance("Initial instances count", !_.isNull(model.initial) ? String(model.initial) : null)
] : [];
const instanceInfo = [];
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.spec.ts
index 3ac6076dc..f700ed419 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.spec.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.spec.ts
@@ -10,7 +10,7 @@ import {NgRedux} from "@angular-redux/store";
import {AppState} from "../../../../../shared/store/reducers";
import {DefaultDataGeneratorService} from "../../../../../shared/services/defaultDataServiceGenerator/default.data.generator.service";
import {DialogService} from "ng2-bootstrap-modal";
-import {VfModulePopuopService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
import {VnfPopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service";
import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service";
import {DuplicateService} from "../../../duplicate/duplicate.service";
@@ -38,7 +38,7 @@ describe('Vnf Model Info', () => {
let _serviceInfoService: ServiceInfoService;
let _defaultDataGeneratorService : DefaultDataGeneratorService;
let _dialogService : DialogService;
- let _vfModulePopupService : VfModulePopuopService;
+ let _vfModulePopupService : VfModulePopupService;
let _vfModuleUpgradePopupService : VfModuleUpgradePopupService;
let _vnfPopupService : VnfPopupService;
let _duplicateService : DuplicateService;
@@ -55,7 +55,7 @@ describe('Vnf Model Info', () => {
MockNgRedux,
DynamicInputsService,
DialogService,
- VfModulePopuopService,
+ VfModulePopupService,
VfModuleUpgradePopupService,
VnfPopupService,
DefaultDataGeneratorService,
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.ts
index a5a85c41a..355b5c597 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.ts
@@ -12,7 +12,7 @@ import {DefaultDataGeneratorService} from "../../../../../shared/services/defaul
import {GenericFormPopupComponent, PopupType} from "../../../../../shared/components/genericFormPopup/generic-form-popup.component";
import {DialogService} from 'ng2-bootstrap-modal';
import {VnfPopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service";
-import {VfModulePopuopService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
import {ITreeNode} from "angular-tree-component/dist/defs/api";
import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service";
import {DuplicateService} from "../../../duplicate/duplicate.service";
@@ -38,7 +38,7 @@ export class VnfModelInfo implements ILevelNodeInfo {
private _defaultDataGeneratorService: DefaultDataGeneratorService,
private _dialogService: DialogService,
private _vnfPopupService: VnfPopupService,
- private _vfModulePopupService: VfModulePopuopService,
+ private _vfModulePopupService: VfModulePopupService,
private _vfModuleUpgradePopupService: VfModuleUpgradePopupService,
private _duplicateService: DuplicateService,
private modalService: SdcUiServices.ModalService,
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 9add349db..c17d9c74c 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
@@ -22,7 +22,7 @@ import {IframeService} from "../../../../shared/utils/iframe.service";
import {BasicPopupService} from "../../../../shared/components/genericFormPopup/genericFormServices/basic.popup.service";
import {NetworkPopupService} from "../../../../shared/components/genericFormPopup/genericFormServices/network/network.popup.service";
import {NetworkControlGenerator} from "../../../../shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator";
-import {VfModulePopuopService} from "../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
import {VfModuleControlGenerator} from "../../../../shared/components/genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
import {VnfGroupPopupService} from "../../../../shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service";
import {VnfGroupControlGenerator} from "../../../../shared/components/genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator";
@@ -73,7 +73,7 @@ describe('Model Tree Generator service', () => {
BasicPopupService,
NetworkPopupService,
NetworkControlGenerator,
- VfModulePopuopService,
+ VfModulePopupService,
VfModuleUpgradePopupService,
VfModuleControlGenerator,
VnfGroupControlGenerator,
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToModelTree/objectToModelTree.service.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToModelTree/objectToModelTree.service.spec.ts
index e5559ee15..8674a619e 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToModelTree/objectToModelTree.service.spec.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToModelTree/objectToModelTree.service.spec.ts
@@ -22,7 +22,7 @@ import {IframeService} from "../../../../shared/utils/iframe.service";
import {BasicPopupService} from "../../../../shared/components/genericFormPopup/genericFormServices/basic.popup.service";
import {NetworkPopupService} from "../../../../shared/components/genericFormPopup/genericFormServices/network/network.popup.service";
import {NetworkControlGenerator} from "../../../../shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator";
-import {VfModulePopuopService} from "../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
import {VfModuleControlGenerator} from "../../../../shared/components/genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
import {FeatureFlagsService} from "../../../../shared/services/featureFlag/feature-flags.service";
import {VnfControlGenerator} from "../../../../shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator";
@@ -98,7 +98,7 @@ describe('Model Tree Generator service', () => {
BasicPopupService,
NetworkPopupService,
NetworkControlGenerator,
- VfModulePopuopService,
+ VfModulePopupService,
VfModuleUpgradePopupService,
VfModuleControlGenerator,
VnfGroupControlGenerator,
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToTree.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToTree.service.ts
index 1e6825130..9b68627e2 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToTree.service.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToTree.service.ts
@@ -11,7 +11,7 @@ import {AppState} from "../../../shared/store/reducers";
import {DialogService} from "ng2-bootstrap-modal";
import {VnfPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service";
import {NetworkPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/network/network.popup.service";
-import {VfModulePopuopService} from "../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
import {VnfGroupingModelInfo} from "./models/vnfGrouping/vnfGrouping.model.info";
import {VnfGroupPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service";
import {DuplicateService} from "../duplicate/duplicate.service";
@@ -35,7 +35,7 @@ export class ObjectToTreeService {
private _dialogService : DialogService,
private _vnfPopupService : VnfPopupService,
private _networkPopupService : NetworkPopupService,
- private _vfModulePopupService : VfModulePopuopService,
+ private _vfModulePopupService : VfModulePopupService,
private _vfModuleUpgradePopupService : VfModuleUpgradePopupService,
private _vnfGroupPopupService : VnfGroupPopupService,
private _duplicateService : DuplicateService,
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 504dc86bd..277ea941e 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
@@ -12,7 +12,7 @@ import {BasicControlGenerator} from "../../../shared/components/genericForm/form
import {AaiService} from "../../../shared/services/aaiService/aai.service";
import {NetworkPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/network/network.popup.service";
import {NetworkControlGenerator} from "../../../shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator";
-import {VfModulePopuopService} from "../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
import {VfModuleControlGenerator} from "../../../shared/components/genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
import {VnfGroupControlGenerator} from "../../../shared/components/genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator";
import {FeatureFlagsService} from "../../../shared/services/featureFlag/feature-flags.service";
@@ -96,7 +96,7 @@ describe('Shared Tree Service', () => {
DynamicInputsService,
NetworkPopupService,
NetworkControlGenerator,
- VfModulePopuopService,
+ VfModulePopupService,
VfModuleUpgradePopupService,
VfModuleControlGenerator,
VnfGroupControlGenerator,
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.scss b/vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.scss
new file mode 100644
index 000000000..005e28cc6
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.scss
@@ -0,0 +1,41 @@
+.details-item input {
+ cursor: pointer;
+ opacity: 0;
+ position: absolute;
+ z-index: 100;
+ width: 24px;
+ height: 22px;
+ margin: 0;
+}
+
+.details-item label {
+ position: relative;
+ cursor: pointer;
+}
+
+.details-item label:before {
+ content:'';
+ -webkit-appearance: none;
+ background-color: transparent;
+ border: 2px solid #0079bf;
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), inset 0px -15px 10px -12px rgba(0, 0, 0, 0.05);
+ padding: 10px;
+ display: inline-block;
+ position: relative;
+ vertical-align: middle;
+ cursor: pointer;
+ margin-right: 5px;
+}
+
+.details-item input:checked + label:after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 2px;
+ left: 9px;
+ width: 6px;
+ height: 14px;
+ border: solid #0079bf;
+ border-width: 0 2px 2px 0;
+ transform: rotate(45deg);
+}
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.ts b/vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.ts
index f9ba48308..215b1fec1 100644
--- a/vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.ts
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.ts
@@ -4,7 +4,8 @@ import {FormGroup} from "@angular/forms";
@Component({
selector: 'checkbox-form-control',
- templateUrl: './checkbox.formControl.component.html'
+ templateUrl: './checkbox.formControl.component.html',
+ styleUrls : ['./checkbox.formControl.component.scss']
})
export class CheckboxFormControlComponent{
@Input() data: FormControlModel;
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.ts b/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.ts
index 26a55e9d2..cf062f0e0 100644
--- a/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.ts
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.ts
@@ -35,7 +35,7 @@ export class MultiselectFormControlComponent implements OnChanges{
this.options = options;
this._multiselectFormControlService.convertSelectedItems(this.data).then((res)=> {
this.selectedItems = res;
- this.form.controls[this.data.controlName].setValue(this.selectedItems);
+ this.data.onChange(this.selectedItems ,this.form);
})
});
}
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.service.spec.ts
index 63c980cd5..514b9bfef 100644
--- a/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.service.spec.ts
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.service.spec.ts
@@ -17,7 +17,7 @@ import {UUIDData} from "./generic-form-popup.component";
import {ITreeNode} from "angular-tree-component/dist/defs/api";
import {NetworkPopupService} from "./genericFormServices/network/network.popup.service";
import {NetworkControlGenerator} from "../genericForm/formControlsServices/networkGenerator/network.control.generator";
-import {VfModulePopuopService} from "./genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "./genericFormServices/vfModule/vfModule.popup.service";
import {VfModuleControlGenerator} from "../genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
import {FeatureFlagsService} from "../../services/featureFlag/feature-flags.service";
import {VfModuleUpgradePopupService} from "./genericFormServices/vfModuleUpgrade/vfModule.upgrade.popuop.service";
@@ -946,7 +946,7 @@ describe('Generic Form popup Service', () => {
let form : FormGroup;
let fb : FormBuilder;
let netwokPopupService : NetworkPopupService;
- let vfModulePopupService : VfModulePopuopService;
+ let vfModulePopupService : VfModulePopupService;
let servicePopupService : ServicePopupService;
let _aaiService : AaiService;
let _activatedRoute : ActivatedRoute;
@@ -967,7 +967,7 @@ describe('Generic Form popup Service', () => {
AaiService,
NetworkPopupService,
NetworkControlGenerator,
- VfModulePopuopService,
+ VfModulePopupService,
VfModuleUpgradePopupService,
VfModuleControlGenerator,
{provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
@@ -981,7 +981,7 @@ describe('Generic Form popup Service', () => {
httpMock = injector.get(HttpTestingController);
fb = injector.get(FormBuilder);
netwokPopupService = injector.get(NetworkPopupService);
- vfModulePopupService = injector.get(VfModulePopuopService);
+ vfModulePopupService = injector.get(VfModulePopupService);
servicePopupService = injector.get(ServicePopupService);
_aaiService = injector.get(AaiService);
_activatedRoute = injector.get(ActivatedRoute);
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service.spec.ts
index 6c487102f..935454752 100644
--- a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.spec.ts
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service.spec.ts
@@ -8,7 +8,7 @@ import {FormBuilder} from "@angular/forms";
import {IframeService} from "../../../../utils/iframe.service";
import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
import {BasicPopupService} from "../basic.popup.service";
-import {VfModulePopuopService} from "./vfModule.popuop.service";
+import {VfModulePopupService} from "./vfModule.popup.service";
import {VfModuleControlGenerator} from "../../../genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
import {SdcUiServices} from "onap-ui-angular";
import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flags.service";
@@ -1972,7 +1972,7 @@ class MockFeatureFlagsService {}
describe('VFModule popup service', () => {
let injector;
- let service: VfModulePopuopService;
+ let service: VfModulePopupService;
let genericFormService: GenericFormService
let defaultDataGeneratorService: DefaultDataGeneratorService;
let fb: FormBuilder;
@@ -1981,7 +1981,7 @@ describe('VFModule popup service', () => {
beforeAll(done => (async () => {
TestBed.configureTestingModule({
providers : [
- VfModulePopuopService,
+ VfModulePopupService,
BasicControlGenerator,
VfModuleControlGenerator,
DefaultDataGeneratorService,
@@ -2000,7 +2000,7 @@ describe('VFModule popup service', () => {
await TestBed.compileComponents();
injector = getTestBed();
- service = injector.get(VfModulePopuopService);
+ service = injector.get(VfModulePopupService);
genericFormService = injector.get(GenericFormService);
defaultDataGeneratorService = injector.get(DefaultDataGeneratorService);
fb = injector.get(FormBuilder);
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service.ts
index 3119cc8f8..6a31bb7ee 100644
--- a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.ts
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service.ts
@@ -34,7 +34,6 @@ export abstract class VfModulePopupServiceBase {
formValues.modelInfo = new ModelInfo(that.model);
formValues.uuid = formValues.modelInfo.uuid;
formValues.isMissingData = false;
- const vnf = that._store.getState().service.serviceInstance[that.uuidData.serviceId].vnfs[that.uuidData.vnfStoreKey];
if (!that.uuidData.vFModuleStoreKey) {
this._store.dispatch(createVFModuleInstance(formValues, that.uuidData.modelName, that.uuidData.serviceId, 0, that.uuidData.vnfStoreKey));
@@ -154,7 +153,7 @@ export abstract class VfModulePopupServiceBase {
}
@Injectable()
-export class VfModulePopuopService extends VfModulePopupServiceBase implements GenericPopupInterface {
+export class VfModulePopupService extends VfModulePopupServiceBase implements GenericPopupInterface {
constructor(_basicControlGenerator: BasicControlGenerator,
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popuop.service.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popuop.service.ts
index bbfe8705e..667e79678 100644
--- a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popuop.service.ts
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popuop.service.ts
@@ -1,7 +1,7 @@
import {Injectable} from "@angular/core";
import {ITreeNode} from "angular-tree-component/dist/defs/api";
import {FormGroup} from "@angular/forms";
-import {VfModulePopupServiceBase} from "../vfModule/vfModule.popuop.service";
+import {VfModulePopupServiceBase} from "../vfModule/vfModule.popup.service";
import {upgradeVFModule} from "../../../../storeUtil/utils/vfModule/vfModule.actions";
import {SharedTreeService} from "../../../../../drawingBoard/service-planning/objectsToTree/shared.tree.service";
import {NgRedux} from "@angular-redux/store";
@@ -16,11 +16,12 @@ import {FormControlModel} from "../../../../models/formControlModels/formControl
import {CheckboxFormControl} from "../../../../models/formControlModels/checkboxFormControl.model";
import {FormControlType} from "../../../../models/formControlModels/formControlTypes.enum";
import {mergeObjectByPathAction} from "../../../../storeUtil/utils/general/general.actions";
+import * as _ from "lodash";
+import {VfModuleInstance} from "../../../../models/vfModuleInstance";
export enum UpgradeFormControlNames {
RETAIN_VOLUME_GROUPS = 'retainVolumeGroups',
RETAIN_ASSIGNMENTS = 'retainAssignments',
- SDN_C_PRE_LOAD = 'sdncPreLoad',
}
@Injectable()
@@ -43,11 +44,12 @@ export class VfModuleUpgradePopupService extends VfModulePopupServiceBase {
getControls(serviceId: string, vnfStoreKey: string, vfModuleStoreKey: string, isUpdateMode: boolean): FormControlModel[] {
let result: FormControlModel[] =[
this.getRetainAssignmentsControl(),
- this.getRetainVolumeGroupsControl(),
this._basicControlGenerator.getSDNCControl(null)
];
-
- const vfModuleInstance = this._vfModuleControlGenerator.getVfModuleInstance(serviceId, vnfStoreKey, this.uuidData, isUpdateMode);
+ const vfModuleInstance :VfModuleInstance = this._vfModuleControlGenerator.getVfModuleInstance(serviceId, vnfStoreKey, this.uuidData, isUpdateMode);
+ if(this._store.getState().service.serviceHierarchy[serviceId].vfModules[this.uuidData['modelName']].volumeGroupAllowed){
+ result.push(this.getRetainVolumeGroupsControl());
+ }
result = this._basicControlGenerator.concatSupplementaryFile(result, vfModuleInstance);
return result;
};
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popup.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popup.service.spec.ts
index 7c1cc084a..4003b4dcc 100644
--- a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popup.service.spec.ts
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popup.service.spec.ts
@@ -1,6 +1,10 @@
import {LogService} from "../../../../utils/log/log.service";
import {NgRedux} from "@angular-redux/store";
-import {BasicControlGenerator, SDN_C_PRE_LOAD, SUPPLEMENTARY_FILE} from "../../../genericForm/formControlsServices/basic.control.generator";
+import {
+ BasicControlGenerator,
+ SDN_C_PRE_LOAD,
+ SUPPLEMENTARY_FILE
+} from "../../../genericForm/formControlsServices/basic.control.generator";
import {AaiService} from "../../../../services/aaiService/aai.service";
import {HttpClient} from "@angular/common/http";
import {GenericFormService} from "../../../genericForm/generic-form.service";
@@ -20,6 +24,7 @@ import {GeneralActions} from "../../../../storeUtil/utils/general/general.action
import {VfModuleActions} from "../../../../storeUtil/utils/vfModule/vfModule.actions";
import {ServiceActions} from "../../../../storeUtil/utils/service/service.actions";
import {FormControlModel} from "../../../../models/formControlModels/formControl.model";
+import * as _ from "lodash";
class MockModalService<T> {}
@@ -29,6 +34,15 @@ class MockReduxStore<T> {
getState() {
return {
service: {
+ serviceHierarchy: {
+ serviceId: {
+ vfModules: {
+ vfModuleName: {
+ volumeGroupAllowed: true
+ }
+ }
+ }
+ },
serviceInstance : {
serviceId : {
vnfs : {
@@ -40,7 +54,6 @@ class MockReduxStore<T> {
}}}}}}}}
};
}
-
dispatch() {}
}
@@ -101,19 +114,31 @@ describe('VFModule popup service', () => {
});
}
- function getControlByNameAndCheckValue(controlName: string, expectedValue: any) {
+ function getControlByNameAndCheckValue(controlName: string, expectedValue: any, shouldControllerExist: boolean) {
const controls = service.getControls('serviceId', 'vnfStoreKey', 'vfModuleId', true);
const control = findControlByName(controls, controlName);
- expect(control).toBeDefined();
- expect(control.value).toEqual(expectedValue);
+ if(shouldControllerExist){
+ expect(control).toBeDefined();
+ expect(control.value).toEqual(expectedValue);
+ }
+ else{
+ expect(control).toBeUndefined();
+ }
}
test('get controls should return retainAssignments control with true value', ()=> {
- getControlByNameAndCheckValue(UpgradeFormControlNames.RETAIN_ASSIGNMENTS, true);
+ getControlByNameAndCheckValue(UpgradeFormControlNames.RETAIN_ASSIGNMENTS, true, true);
});
test('get controls should return retainVolumeGroup control with true value', ()=> {
- getControlByNameAndCheckValue(UpgradeFormControlNames.RETAIN_VOLUME_GROUPS, true);
+ getControlByNameAndCheckValue(UpgradeFormControlNames.RETAIN_VOLUME_GROUPS, true, true);
+ });
+
+ test('get controls should NOT return retainVolumeGroup control with true value', ()=> {
+ let stateCopy =_.cloneDeep(store.getState());
+ stateCopy.service.serviceHierarchy['serviceId'].vfModules['vfModuleName'].volumeGroupAllowed = false;
+ jest.spyOn(store, 'getState').mockReturnValue(stateCopy);
+ getControlByNameAndCheckValue(UpgradeFormControlNames.RETAIN_VOLUME_GROUPS, null, false);
});
test('get controls should contain SUPPLEMENTARY_FILE controller', ()=> {
@@ -196,6 +221,6 @@ describe('VFModule popup service', () => {
test( 'get controls should return usePreload with false value', () => {
- getControlByNameAndCheckValue(SDN_C_PRE_LOAD, false);
+ getControlByNameAndCheckValue(SDN_C_PRE_LOAD, false, true);
});
});
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service.spec.ts
index 2f1904468..60f0f361e 100644
--- a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service.spec.ts
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service.spec.ts
@@ -1,7 +1,7 @@
import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
import {NgRedux} from "@angular-redux/store";
import {IframeService} from "../../../../utils/iframe.service";
-import {VfModulePopuopService} from "../vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "../vfModule/vfModule.popup.service";
import {FormBuilder} from "@angular/forms";
import {GenericFormService} from "../../../genericForm/generic-form.service";
import {BasicPopupService} from "../basic.popup.service";
@@ -2258,7 +2258,7 @@ describe('vnf new popup service', () => {
AaiService,
LogService,
BasicPopupService,
- VfModulePopuopService,
+ VfModulePopupService,
VfModuleUpgradePopupService,
BasicControlGenerator,
VnfControlGenerator,
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service.spec.ts
index 3a81e5b2b..8ee48e675 100644
--- a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service.spec.ts
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service.spec.ts
@@ -1,7 +1,7 @@
import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
import {NgRedux} from "@angular-redux/store";
import {IframeService} from "../../../../utils/iframe.service";
-import {VfModulePopuopService} from "../vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "../vfModule/vfModule.popup.service";
import {FormBuilder} from "@angular/forms";
import {GenericFormService} from "../../../genericForm/generic-form.service";
import {BasicPopupService} from "../basic.popup.service";
@@ -2255,7 +2255,7 @@ describe('vnf group new popup service', () => {
AaiService,
LogService,
BasicPopupService,
- VfModulePopuopService,
+ VfModulePopupService,
VfModuleUpgradePopupService,
BasicControlGenerator,
VnfGroupControlGenerator,
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.html b/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.html
index fe08bf086..07fc7ab22 100644
--- a/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.html
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.html
@@ -24,6 +24,17 @@
</div>
<div class="col-md-6">
<div class="col-md-6">
+ <div class="details-item" style="text-align: center;">
+ <input type="checkbox"
+ #filterByUserIdCheckbox
+ id="filterByUserIdCheckbox"
+ [attr.data-tests-id]="'filterByUserIdTestId'"
+ [checked]="filterByUserId"
+ (change)="filterByUserIdChanged(filterByUserIdCheckbox.checked)"
+ data-toggle="toggle">
+ <label class="checkbox-label"
+ for="'filterByUserIdTestId'">Show only mine</label>
+ </div>
</div>
<div class="col-md-6">
<input
@@ -33,8 +44,8 @@
</div>
</div>
</div>
- <div class="row" style="margin-left: 0;margin-right: 0;padding: 20px;">
- <table id="member-table" class="table table-bordered" style="table-layout: fixed">
+ <div class="row table-container">
+ <table id="member-table" class="table table-bordered table-responsive" style="table-layout: fixed">
<thead class="thead-dark">
<tr>
<th class="header-title" id="header-userId">User ID</th>
@@ -49,7 +60,7 @@
</thead>
<tbody>
<tr class="member-table-row"
- *ngFor="let item of filterTableData | searchFilter: filterText ;"
+ *ngFor="let item of filterTableData | searchFilter: filterText;"
(click)="selectedInstantiation = item"
[ngClass]="{'selected' : selectedInstantiation && selectedInstantiation.jobId === item.jobId}"
[attr.data-tests-id]="'row-' + item.jobId">
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.scss b/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.scss
index 267d2cee0..d62caf5de 100644
--- a/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.scss
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.scss
@@ -6,6 +6,7 @@ $grid-border: 1px #d2d2d2 solid;
thead {
background: #F8F8F8;
}
+
.left-panel {
background: #f2f2f2;
border-right: $grid-border;
@@ -161,18 +162,28 @@ $grid-border: 1px #d2d2d2 solid;
.description-section {
padding: 20px;
- font-size: 20px;
+ font-size: 13px;
}
.filter-input {
float: right;
- width: 50%;
}
.details-item {
text-align: right;
}
+ .table-container {
+ overflow: auto;
+ width: 97%;
+ margin: auto;
+ max-height: calc(100% - 122px);
+ }
+
+
+ table {
+ font-size: 12px;
+ }
td.loadTemplateButton {
text-align: center;
@@ -193,4 +204,48 @@ $grid-border: 1px #d2d2d2 solid;
.member-table-row.selected {
background: #8080808f !important;
}
+
+
+ .details-item input {
+ cursor: pointer;
+ opacity: 0;
+ position: absolute;
+ z-index: 100;
+ width: 24px;
+ height: 22px;
+ margin: 0;
+ }
+
+ .details-item label {
+ position: relative;
+ cursor: pointer;
+ }
+
+ .details-item label:before {
+ content:'';
+ -webkit-appearance: none;
+ background-color: transparent;
+ border: 2px solid #0079bf;
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), inset 0px -15px 10px -12px rgba(0, 0, 0, 0.05);
+ padding: 10px;
+ display: inline-block;
+ position: relative;
+ vertical-align: middle;
+ cursor: pointer;
+ margin-right: 5px;
+ }
+
+ .details-item input:checked + label:after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 2px;
+ left: 9px;
+ width: 6px;
+ height: 14px;
+ border: solid #0079bf;
+ border-width: 0 2px 2px 0;
+ transform: rotate(45deg);
+ }
+
}
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.ts
index 7b16b6677..b37d7f9a2 100644
--- a/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.ts
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.component.ts
@@ -7,7 +7,11 @@ import {InstantiationTemplatesModalService} from "./instantiation.templates.moda
import {InstantiationTemplatesRowModel} from "./instantiation.templates.row.model";
import {DrawingBoardModes} from "../../../../drawingBoard/service-planning/drawing-board.modes";
import {InstantiationStatusComponentService} from "../../../../instantiationStatus/instantiationStatus.component.service";
-
+import {AaiService} from "../../../services/aaiService/aai.service";
+import {NgRedux} from "@angular-redux/store";
+import {AppState} from "../../../store/reducers";
+import * as _ from 'lodash';
+import {forkJoin} from "rxjs";
@Component({
selector: 'template-modal',
templateUrl: 'instantiation.templates.modal.component.html',
@@ -21,12 +25,15 @@ export class InstantiationTemplatesModalComponent extends DialogComponent<string
originalTableData: InstantiationTemplatesRowModel[] = [];
filterTableData : InstantiationTemplatesRowModel[] = [];
filterText: string;
+ filterByUserId: boolean = false;
constructor(dialogService: DialogService,
private _iframeService: IframeService,
private _serviceInfoService: ServiceInfoService,
private _templateModalComponentService: InstantiationTemplatesModalService,
private _instantiationStatusComponentService: InstantiationStatusComponentService,
+ private _aaiService: AaiService,
+ private _store : NgRedux<AppState>,
private _route: ActivatedRoute) {
super(dialogService);
this.templateModalComponentService = _templateModalComponentService;
@@ -37,7 +44,11 @@ export class InstantiationTemplatesModalComponent extends DialogComponent<string
this._route
.queryParams
.subscribe(params => {
- this._serviceInfoService.getServicesJobInfo(true, params['serviceModelId']).subscribe((jobs) => {
+
+ const getServiceJobInfoRoute = this._serviceInfoService.getServicesJobInfo(true, params['serviceModelId']);
+ const getUserIdRoute = this._aaiService.getUserId();
+
+ forkJoin([getServiceJobInfoRoute, getUserIdRoute]).subscribe(([jobs]) => {
this.originalTableData = this._templateModalComponentService.convertResponseToUI(jobs);
this.filterTableData = this.originalTableData;
});
@@ -46,16 +57,17 @@ export class InstantiationTemplatesModalComponent extends DialogComponent<string
loadTemplate = () => {
this._instantiationStatusComponentService.navigateToNewViewEdit(this.selectedInstantiation, DrawingBoardModes.RECREATE)
-
};
+ filterByUserIdChanged = (value : boolean) : void => {
+ this.filterByUserId = value;
+ const userId: string = this._store.getState().service['userId'];
+ if(!_.isNil(userId)){
+ this.filterTableData = this.filterByUserId ? this._templateModalComponentService.filterByUserId(userId, this.originalTableData) : this.originalTableData;
+ }
+ };
closeModal(): void {
- this._iframeService.removeClassCloseModal('content');
this.dialogService.removeDialog(this);
- setTimeout(() => {
- window.parent.postMessage("closeIframe", "*");
- }, 15);
-
}
}
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.service.spec.ts
index 1ff0f61e2..2f044112b 100644
--- a/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.service.spec.ts
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.service.spec.ts
@@ -130,4 +130,21 @@ describe('instantiation templates modal service', () => {
expect(result.instanceName).toEqual('<Automatically generated>');
});
+ test('filterByUserId should filter table data by userId: not empty list', () => {
+ const jobs : InstantiationTemplatesRowModel[] = [
+ new InstantiationTemplatesRowModel({userId : 'userId_1'}),
+ new InstantiationTemplatesRowModel({userId : 'userId'}),
+ new InstantiationTemplatesRowModel({userId : 'userId'}),
+ new InstantiationTemplatesRowModel({userId : 'userId_1'})
+ ];
+ let result: InstantiationTemplatesRowModel[] = service.filterByUserId('userId', jobs);
+ expect(result).toHaveLength(2);
+ });
+
+ test('filterByUserId should filter table data by userId: empty list should return empty list', () => {
+ const jobs : InstantiationTemplatesRowModel[] = [];
+ let result: InstantiationTemplatesRowModel[] = service.filterByUserId('userId', jobs);
+ expect(result).toHaveLength(0);
+ });
+
});
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.service.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.service.ts
index 8377ccf42..36691fda5 100644
--- a/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.service.ts
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.modal.service.ts
@@ -1,5 +1,6 @@
import {Injectable} from "@angular/core";
import {InstantiationTemplatesRowModel} from "./instantiation.templates.row.model";
+import * as _ from 'lodash';
@Injectable()
export class InstantiationTemplatesModalService {
@@ -14,4 +15,14 @@ export class InstantiationTemplatesModalService {
return tableRows;
};
+
+ filterByUserId = (userId: string, originalTableData: InstantiationTemplatesRowModel[]): InstantiationTemplatesRowModel[] => {
+ if (!_.isNil(originalTableData)) {
+ return originalTableData.filter((item: InstantiationTemplatesRowModel) => {
+ return item.userId === userId;
+ });
+ }
+ return [];
+ };
+
}
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.row.model.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.row.model.ts
index e68c34b85..673709462 100644
--- a/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.row.model.ts
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/instantiationTemplatesModal/instantiation.templates.row.model.ts
@@ -14,7 +14,7 @@ export class InstantiationTemplatesRowModel extends InstantiationBase{
constructor(data) {
super(data);
- this.userId = !_.isNil(data.created) ? data.userId : null;
+ this.userId = !_.isNil(data.userId) ? data.userId : null;
this.createDate = !_.isNil(data.created) ? moment(data.created).format("YYYY-MM-DD HH:mm:ss") : null;
this.instanceName = this.getInstanceName(data.serviceInstanceName);
this.instantiationStatus = !_.isNil(data.jobStatus) ? data.jobStatus : null;
diff --git a/vid-webpack-master/src/app/shared/models/vfModule.ts b/vid-webpack-master/src/app/shared/models/vfModule.ts
index 8f92ba428..a942a0d86 100644
--- a/vid-webpack-master/src/app/shared/models/vfModule.ts
+++ b/vid-webpack-master/src/app/shared/models/vfModule.ts
@@ -6,23 +6,26 @@ export interface Properties{
initialCount: number;
maxCountInstances: number;
minCountInstances: number;
+ baseModule: boolean;
}
export interface VFModuleResponseInterface extends NodeModelResponseInterface {
customizationUuid: string;
modelCustomizationName: string;
volumeGroupAllowed : boolean;
- properties: Properties
+ properties: Properties;
+ inputs: any;
}
export class VfModule extends NodeModel {
- vgName:string;
rollbackOnFailure:boolean;
initial:number;
customizationUuid: string;
modelCustomizationName: string;
volumeGroupAllowed : boolean;
+ baseModule : boolean;
+ inputs: any;
constructor(vf?: VFModuleResponseInterface, flags?: { [key: string]: boolean }) {
super(vf);
@@ -30,12 +33,14 @@ export class VfModule extends NodeModel {
this.customizationUuid = vf.customizationUuid;
this.modelCustomizationName = vf.modelCustomizationName;
this.volumeGroupAllowed = vf.volumeGroupAllowed || false;
+ this.inputs = vf.inputs;
}
if (vf && vf.properties) {
this.min = vf.properties.minCountInstances;
this.max = Utils.getMaxVfModule(vf.properties, flags);
this.initial = vf.properties.initialCount;
- this.rollbackOnFailure = true
+ this.rollbackOnFailure = true;
+ this.baseModule = vf.properties.baseModule;
}
}
}
diff --git a/vid-webpack-master/src/app/shared/shared.module.ts b/vid-webpack-master/src/app/shared/shared.module.ts
index 273dff472..0f7c92060 100644
--- a/vid-webpack-master/src/app/shared/shared.module.ts
+++ b/vid-webpack-master/src/app/shared/shared.module.ts
@@ -41,7 +41,7 @@ import {VnfControlGenerator} from "./components/genericForm/formControlsServices
import {NetworkPopupService} from "./components/genericFormPopup/genericFormServices/network/network.popup.service";
import {NetworkControlGenerator} from "./components/genericForm/formControlsServices/networkGenerator/network.control.generator";
import {BasicPopupService} from "./components/genericFormPopup/genericFormServices/basic.popup.service";
-import {VfModulePopuopService} from "./components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModulePopupService} from "./components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
import {VfModuleUpgradePopupService} from "./components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popuop.service";
import {VfModuleControlGenerator} from "./components/genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
import {OrderByPipe} from "./pipes/order/orderBy.pipe";
@@ -193,7 +193,7 @@ import {InstantiationTemplatesService} from "./services/templateService/instanti
BasicControlGenerator,
CustomValidators,
NetworkPopupService,
- VfModulePopuopService,
+ VfModulePopupService,
VfModuleUpgradePopupService,
NetworkControlGenerator,
VnfGroupControlGenerator,
diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.actions.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.actions.ts
index 70c10c429..1b80452cb 100644
--- a/vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.actions.ts
+++ b/vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.actions.ts
@@ -10,7 +10,7 @@ export enum VfModuleActions {
UPGRADE_VFMODULE = "UPGRADE_VFMODULE",
UNDO_UPGRADE_VFMODULE_ACTION = "UNDO_UPGRADE_VFMODULE_ACTION",
UPDATE_VFMODULE_FEILD = "UPDATE_VFMODULE_FEILD",
- DELETE_VFMODULE_FEILD = "DELETE_VFMODULE_FEILD",
+ DELETE_VFMODULE_FIELD = "DELETE_VFMODULE_FEILD",
}
@@ -163,7 +163,7 @@ export const updateVFModuleField: ActionCreator<UpdateVFModuleField> = (modelNam
});
export const deleteVFModuleField: ActionCreator<DeleteVFModuleField> = (modelName, vnfStoreKey, serviceId, dynamicModelName, deleteFieldName) => ({
- type: VfModuleActions.DELETE_VFMODULE_FEILD,
+ type: VfModuleActions.DELETE_VFMODULE_FIELD,
dynamicModelName,
modelName,
vnfStoreKey,
diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.reducers.spec.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.reducers.spec.ts
index 7b890b715..9b3a287a6 100644
--- a/vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.reducers.spec.ts
+++ b/vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.reducers.spec.ts
@@ -172,7 +172,7 @@ describe('vfModuleReducer', () => {
};
let newState = vfModuleReducer(<any>oldState,
<DeleteVFModuleField>{
- type: VfModuleActions.DELETE_VFMODULE_FEILD,
+ type: VfModuleActions.DELETE_VFMODULE_FIELD,
dynamicModelName: 'dynamicModelName1',
vnfStoreKey: 'vnfStoreKey',
serviceId: 'serviceModelId',
diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.reducers.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.reducers.ts
index 1bb2b15fd..2e91f8771 100644
--- a/vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.reducers.ts
+++ b/vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.reducers.ts
@@ -155,7 +155,7 @@ export function vfModuleReducer(state: ServiceState , action: Action) : ServiceS
return clonedState;
}
- case VfModuleActions.DELETE_VFMODULE_FEILD : {
+ case VfModuleActions.DELETE_VFMODULE_FIELD : {
let clonedState = _.cloneDeep(state);
let deleteAction = <DeleteVFModuleField> action;
diff --git a/vid-webpack-master/src/app/shared/utils/constants.ts b/vid-webpack-master/src/app/shared/utils/constants.ts
index f793e05db..6bf5ff1f4 100644
--- a/vid-webpack-master/src/app/shared/utils/constants.ts
+++ b/vid-webpack-master/src/app/shared/utils/constants.ts
@@ -39,6 +39,7 @@ export module Constants {
public static AAI_GET_ACTIVE_NETWORKS_PATH = '../../aai_get_active_networks/';
public static AAI_GET_VPNS_PATH = '../../aai_get_vpn_list/';
public static AAI_GET_SERVICE_GROUP_MEMBERS_PATH = '../../aai_search_group_members/';
+ public static AAI_GET_USER_ID_PATH = '../../getuserID';
public static AAI_GET_VERSION_BY_INVARIANT_ID = 'aai_get_version_by_invariant_id/';
public static SEARCH_SERVICE_INSTANCES = 'search_service_instances';
public static AAI_GET_VNF_BY_CUSTOMERID_AND_SERVICETYPE = 'get_vnf_data_by_globalid_and_service_type/';