From 30eb0655f49fd3565d737b91146baf9ce4e02f9d Mon Sep 17 00:00:00 2001 From: marcinrzepeckiwroc Date: Mon, 5 Oct 2020 14:17:30 +0200 Subject: Relax VNF Change Management filters for VNFs Issue-ID: VID-837 Signed-off-by: marcinrzepeckiwroc Change-Id: I1b1a501897d013a9f2b54423100aa8de924e5a9d --- .../new-change-management.controller.js | 33 +++++--- .../new-change-management.controller.test.js | 96 +++++++++++++++++++++- 2 files changed, 118 insertions(+), 11 deletions(-) diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js index 08791b2c4..3ebadda8d 100644 --- a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js +++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js @@ -3,6 +3,7 @@ * VID * ================================================================================ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2020 Nokia Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -602,11 +603,9 @@ vm.vnfNames = []; vm.changeManagement.vnfNames = []; - var instances = vm.changeManagement.serviceType["service-instances"]["service-instance"]; - // var promiseArrOfGetVnfs = preparePromiseArrOfGetVnfs(instances); - vm.vnfs = []; vm.vfModules = []; + vm.genericVnfs = []; let nfRole = null; let cloudRegion = null; @@ -616,7 +615,7 @@ cloudRegion = vm.changeManagement.cloudRegion ? vm.changeManagement.cloudRegion : null; } - AaiService.getVnfsByCustomerIdAndServiceType( + return AaiService.getVnfsByCustomerIdAndServiceType( vm.changeManagement.subscriberId, vm.changeManagement.serviceType["service-type"], nfRole, @@ -629,11 +628,7 @@ if (vnfsData[i]) { const nodeType = vnfsData[i]['node-type']; if (nodeType === "generic-vnf") { - if (_.find(vnfsData[i]['related-to'], function (node) { - return node['node-type'] === 'vserver'; - }) !== undefined) { - vm.vnfs.push(vnfsData[i]); - } + vm.genericVnfs.push(vnfsData[i]); } else if (nodeType === "service-instance") { vm.serviceInstances.push(vnfsData[i]); } else if (nodeType === "vf-module") { @@ -642,6 +637,24 @@ } } + vm.genericVnfs.forEach(function (vnf) { + if (vnf['related-to'].find(function (node) {return node['node-type'] === 'vf-module';}) !== undefined) { + let vfModuleRel = vnf['related-to'].find(function (node) { + return node['node-type'] === 'vf-module' + }) + for (var i = 0; i < vm.vfModules.length; i++) { + const vfModule = vm.vfModules[i]; + if (vfModule['id'] === vfModuleRel['id']){ + if (vfModule['related-to'].find(function (node) {return node['node-type'] === 'vserver';}) !== undefined) { + vm.vnfs.push(vnf); + } + } + } + } else if (vnf['related-to'].find(function (node) {return node['node-type'] === 'vserver';}) !== undefined) { + vm.vnfs.push(vnf); + } + }); + vm.vnfs = _.flattenDeep( _.remove(vm.vnfs, function (vnf) { var nfRole = vnf.properties['nf-role']; @@ -1024,4 +1037,4 @@ init(); } -})(); \ No newline at end of file +})(); diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.test.js b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.test.js index e8cba4aa8..224289f45 100644 --- a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.test.js +++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.test.js @@ -3,6 +3,7 @@ * VID * ================================================================================ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2020 Nokia Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,6 +34,7 @@ describe('Testing workFlows from SO', () => { beforeEach(inject(function (_$controller_) { $notNeeded = jestMock.fn(); + let lodash = require('lodash') // mock ChangeManagementService $changeManagementService = jestMock.fn(); @@ -59,7 +61,7 @@ describe('Testing workFlows from SO', () => { changeManagementService: $changeManagementService, Upload: $notNeeded, $log: $notNeeded, - _: $notNeeded, + _: lodash, COMPONENT: $flags, VIDCONFIGURATION: $notNeeded, DataService: $notNeeded, @@ -421,4 +423,96 @@ describe('Testing workFlows from SO', () => { }]); }); }); + + test('Verify that vm.searchVNFs return only generic-vnfs with relation to vserver', () => { + // given + $controller.changeManagement.serviceType = []; + let getVnfsByCustomerIdAndServiceType = Promise.resolve({"data": + { "results" : [ + { "id": "1", + "node-type": "generic-vnf", + "properties": { + "nf-role": "vLB" + }, + "related-to": [ + { "id": "11", + "node-type": "vf-module" + }, + { "id": "12", + "node-type": "tenant" + } + ] + }, + { "id": "2", + "node-type": "generic-vnf", + "properties": { + "nf-role": "vLB" + }, + "related-to": [ + { "id": "21", + "node-type": "tenant" + } + ] + }, + { "id": "3", + "node-type": "generic-vnf", + "properties": { + "nf-role": "vLB" + }, + "related-to": [ + { "id": "31", + "node-type": "vf-module" + }, + { "id": "32", + "node-type": "tenant" + }, + { "id": "33", + "node-type": "vserver" + } + ] + }, + { "id": "11", + "node-type": "vf-module", + "related-to": [ + { "id": "111", + "node-type": "vserver" + } + ] + }, + { "id": "31", + "node-type": "vf-module", + "related-to": [ + { "id": "311", + "node-type": "vserver" + } + ] + } + ] + } + }); + let expectedVnfs = [ + { + "id": "1", + "node-type": "generic-vnf", + "properties": {"nf-role": "vLB"}, + "related-to": [ + {"id": "11", "node-type": "vf-module"}, + {"id": "12", "node-type": "tenant"}]}, + { + "id": "3", + "node-type": "generic-vnf", + "properties": {"nf-role": "vLB"}, + "related-to": [ + {"id": "31", "node-type": "vf-module"}, + {"id": "32", "node-type": "tenant"}, + {"id": "33", "node-type": "vserver"} + ]}]; + $aaiService.getVnfsByCustomerIdAndServiceType = () => getVnfsByCustomerIdAndServiceType; + + // when + $controller.searchVNFs().then(() => { + expect($controller.vnfs).toHaveLength(2); + expect($controller.vnfs).toEqual(expectedVnfs); + }); + }); }); -- cgit 1.2.3-korg