diff options
author | Ittay Stern <ittay.stern@att.com> | 2019-07-07 19:23:03 +0300 |
---|---|---|
committer | Ittay Stern <ittay.stern@att.com> | 2019-07-08 16:13:43 +0300 |
commit | f792671ae247a931f34d902e9276202b5016ef9a (patch) | |
tree | 6104971e8074c9a3d720836276ff18619719ec02 /vid-webpack-master/src/app/drawingBoard | |
parent | fc62274e8d15964d63c62bf0e2f4abc040252ee9 (diff) |
Merge from ecomp 718fd196 - Modern UI
Issue-ID: VID-378
Change-Id: I2736b98426e324ec3aa233b034229ba84d99839f
Signed-off-by: Ittay Stern <ittay.stern@att.com>
Diffstat (limited to 'vid-webpack-master/src/app/drawingBoard')
62 files changed, 6893 insertions, 1779 deletions
diff --git a/vid-webpack-master/src/app/drawingBoard/drawingBoard.module.ts b/vid-webpack-master/src/app/drawingBoard/drawingBoard.module.ts index 6a3574f23..67b54059e 100644 --- a/vid-webpack-master/src/app/drawingBoard/drawingBoard.module.ts +++ b/vid-webpack-master/src/app/drawingBoard/drawingBoard.module.ts @@ -34,6 +34,8 @@ import {SdcUiServices} from "onap-ui-angular/dist"; import {CreateDynamicComponentService} from "onap-ui-angular/dist/utils/create-dynamic-component.service"; import {ComponentInfoComponent} from './service-planning/component-info/component-info.component'; import {ComponentInfoService} from "./service-planning/component-info/component-info.service"; +import {NetworkStepService} from "./service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.service"; +import {VpnStepService} from "./service-planning/objectsToTree/models/vrf/vrfModal/vpnStep/vpn.step.service"; @NgModule({ @@ -66,7 +68,9 @@ import {ComponentInfoService} from "./service-planning/component-info/component- SdcUiServices.LoaderService, CreateDynamicComponentService, ComponentInfoService, - DragAndDropService], + DragAndDropService, + NetworkStepService, + VpnStepService], declarations: [ AvailableModelsTreeComponent, HighlightPipe, diff --git a/vid-webpack-master/src/app/drawingBoard/objectsToTree/objectToModelTree/modelTreeNode.model.ts b/vid-webpack-master/src/app/drawingBoard/objectsToTree/objectToModelTree/modelTreeNode.model.ts new file mode 100644 index 000000000..36dd3ac47 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/objectsToTree/objectToModelTree/modelTreeNode.model.ts @@ -0,0 +1,30 @@ +import {ITreeNode} from "angular-tree-component/dist/defs/api"; +import {ModelInformationItem} from "../../../shared/components/model-information/model-information.component"; +import {ComponentInfoType} from "../../service-planning/component-info/component-info-model"; + +export interface IModelTreeNodeModel { + id?: string; + modelCustomizationId? : string; + modelVersionId?: string; + modelUniqueId? : string; + name?: string; + tooltip?: string; + type?: string; + count?: number; + max?: number; + children?: any[]; + disabled?: boolean; + dynamicInputs?: any; + isEcompGeneratedNaming?: boolean; + typeName? : string; + componentInfoType?: ComponentInfoType; + + + onAddClick?(node, serviceId); + getNodeCount?(node, serviceId); + getMenuAction?(node, serviceId); + showNodeIcons?(node, serviceId); + getModel?(modelId: string, instance: any, serviceHierarchy) + getInfo?(model, instance): ModelInformationItem[]; + +} diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.html b/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.html index 91acca0d1..7864808fc 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.html +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.html @@ -34,7 +34,7 @@ [name]="'maximum'"> </svg-icon> </span> - <span class="icon-plus" *ngIf="node?.data?.showNodeIcons(node, serviceModelId)?.addIcon"> + <span class="icon-plus" *ngIf="_store.getState().service.serviceInstance[serviceModelId].action !== 'Delete' && node?.data?.showNodeIcons(node, serviceModelId)?.addIcon"> <span tooltip="Add" [attr.data-tests-id]="'node-'+node.data.name+'-add-btn'" (click)="onClickAdd(node, serviceModelId)"> <i class="fa fa-plus-circle" aria-hidden="true"></i> </span> diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.scss b/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.scss index 90c2cd878..62e9be73a 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.scss +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.component.scss @@ -168,7 +168,7 @@ available-models-tree { .node-content-wrapper.node-content-wrapper-focused { tree-node-content { > div { - background: #009FDB; + background: #009FDB !important; color: white; } } @@ -178,7 +178,7 @@ available-models-tree { > div { background: #F2F2F2; &.tree-node-focused:not(.tree-node-disabled) { - background: #009FDB; + background: #009FDB !important; color: white; } span.actions { @@ -206,6 +206,8 @@ available-models-tree { border-color: #1EB9F3; } .node-content-wrapper-focused{ + background: #009FDB !important; + border-color: #1EB9F3; box-shadow: none; tree-node-content { @@ -395,6 +397,7 @@ available-models-tree { .node-content-wrapper.node-content-wrapper-focused{ border-color:#1EB9F3 ; + background: #009FDB !important; tree-node-content > div{ .vf-type,.model-info,.model-info .property-name { color: white; @@ -410,7 +413,9 @@ available-models-tree { } - + available-models-tree .node-content-wrapper.node-content-wrapper-focused { + background: #009FDB !important; + } .vf-type { width: 40px; height: 45px; 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 31d7b03b8..145ee19da 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 @@ -25,6 +25,9 @@ import {VnfGroupControlGenerator} from "../../../shared/components/genericForm/f import {HighlightPipe} from "../../../shared/pipes/highlight/highlight-filter.pipe"; import * as _ from 'lodash'; import {DrawingBoardTreeComponent} from "../drawing-board-tree/drawing-board-tree.component"; +import {ComponentInfoModel} from "../component-info/component-info-model"; +import {ComponentInfoService} from "../component-info/component-info.service"; +import {FeatureFlagsService, Features} from "../../../shared/services/featureFlag/feature-flags.service"; @Component({ @@ -72,6 +75,7 @@ export class AvailableModelsTreeComponent { value => { this.serviceHierarchy = value; this.nodes = this._objectToModelTreeService.convertServiceHierarchyModelToTreeNodes(this.serviceHierarchy); + this.shouldOpenVRFModal(this.nodes); }, error => { console.log('error is ', error) @@ -102,6 +106,13 @@ export class AvailableModelsTreeComponent { }; + shouldOpenVRFModal(nodes) :void { + const node = this._availableModelsTreeService.shouldOpenVRFModal(nodes, this.serviceModelId, this.store.getState().service); + if(!_.isNil(node)){ + this.onClickAdd(node, this.serviceModelId); + } + } + getNodeName(node : ITreeNode, filter : string) { return this._highlightPipe.transform(node.data.name ,filter ? filter : ''); } @@ -119,6 +130,13 @@ export class AvailableModelsTreeComponent { node.expand(); this._sharedTreeService.setSelectedVNF(null); this.highlightInstances.emit(node.data.modelUniqueId); + if (FeatureFlagsService.getFlagState(Features.FLAG_1906_COMPONENT_INFO, this.store)) { + const serviceHierarchy = this._store.getState().service.serviceHierarchy[this.serviceModelId]; + const model = node.data.getModel(node.data.name, node.data, serviceHierarchy); + const modelInfoItems = node.data.getInfo(model, null); + const componentInfoModel :ComponentInfoModel = this._sharedTreeService.addGeneralInfoItems(modelInfoItems, node.data.componentInfoType, model, null); + ComponentInfoService.triggerComponentInfoChange.next(componentInfoModel); + } } @@ -127,7 +145,7 @@ export class AvailableModelsTreeComponent { this.isNewObject = isNewObject; let data = node.data; let dynamicInputs = data.dynamicInputs; - let isAlaCarte: boolean = this.serviceHierarchy.service.instantiationType == "A-La-Carte"; + let isAlaCarte: boolean = this.serviceHierarchy.service.vidNotions.instantiationType == 'ALaCarte'; let isEcompGeneratedNaming: boolean = data.isEcompGeneratedNaming; let type: string = data.type; if (!this.store.getState().global.flags['FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD'] || node.data.type === ServiceNodeTypes.VF || @@ -150,7 +168,8 @@ export class AvailableModelsTreeComponent { let existVnf = this._store.getState().service.serviceInstance[this.serviceModelId].vnfs; if(!_.isNil(existVnf)){ for(let vnfKey in existVnf){ - if(existVnf[vnfKey]['modelInfo'].modelUniqueId === node.parent.data.id){ + const modelUniqueId = existVnf[vnfKey]['modelInfo'].modelCustomizationId || existVnf[vnfKey]['modelInfo'].modelInvariantId; + if(modelUniqueId === node.parent.data.id){ this.store.dispatch(createVFModuleInstance(vfModule, node.data.name, this.serviceModelId, null, vnfKey)); DrawingBoardTreeComponent.triggerreCalculateIsDirty.next(this.serviceModelId); } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.service.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.service.spec.ts index cf9d04aae..4abc20324 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.service.spec.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.service.spec.ts @@ -1,9 +1,6 @@ -import {TestBed, getTestBed} from '@angular/core/testing'; -import { - HttpClientTestingModule, - HttpTestingController -} from '@angular/common/http/testing'; -import {AvailableModelsTreeService, AvailableNodeIcons} from './available-models-tree.service'; +import {getTestBed, TestBed} from '@angular/core/testing'; +import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing'; +import {AvailableModelsTreeService} from './available-models-tree.service'; import {ServiceNodeTypes} from "../../../shared/models/ServiceNodeTypes"; import {DefaultDataGeneratorService} from "../../../shared/services/defaultDataServiceGenerator/default.data.generator.service"; import {MessageBoxService} from "../../../shared/components/messageBox/messageBox.service"; @@ -63,9 +60,9 @@ describe('Available Models Tree Service', () => { // add vfModule with dynamicInputs without defaultValues should return true result = service.shouldOpenDialog(ServiceNodeTypes.VFmodule, [{ - id: '2017488_adiodvpe0_vnf_config_template_version', + id: '2017488_pasqualevpe0_vnf_config_template_version', type: 'string', - name: '2017488_adiodvpe0_vnf_config_template_version', + name: '2017488_pasqualevpe0_vnf_config_template_version', isRequired: true, description: 'VPE Software Version' }], true); @@ -73,9 +70,9 @@ describe('Available Models Tree Service', () => { // add vfModule with dynamicInputs with defaultValues should return false result = service.shouldOpenDialog(ServiceNodeTypes.VFmodule, [{ - id: '2017488_adiodvpe0_vnf_config_template_version', + id: '2017488_pasqualevpe0_vnf_config_template_version', type: 'string', - name: '2017488_adiodvpe0_vnf_config_template_version', + name: '2017488_pasqualevpe0_vnf_config_template_version', value: '17.2', isRequired: true, description: 'VPE Software Version' @@ -84,6 +81,160 @@ describe('Available Models Tree Service', () => { }); }); + + test('shouldOpenVRFModal', () => { + const nodes = [{ + "id": "dd024d73-9bd1-425d-9db5-476338d53433", + "modelCustomizationId": "dd024d73-9bd1-425d-9db5-476338d53433", + "modelVersionId": "9cac02be-2489-4374-888d-2863b4511a59", + "modelUniqueId": "dd024d73-9bd1-425d-9db5-476338d53433", + "name": "VRF Entry Configuration 0", + "tooltip": "VRF", + "type": "VRF", + "count": 0, + "max": 1, + "children": [], + "disabled": false, + "dynamicInputs": [], + "isEcompGeneratedNaming": false, + "typeName": "VRF", + "componentInfoType": "VRF", + "getModel" : ()=>{ + return { + min : 1 + } + } + }]; + + + const serviceStore = { + "serviceInstance": { + "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc": { + "action": "Create", + "isDirty": false, + "vnfs": {}, + "vrfs": { + "VRF Entry Configuration": { + "action": "Create", + "uuid": "9cac02be-2489-4374-888d-2863b4511a59", + "inputs": {}, + "type": "Configuration", + "trackById": "s0z58emiprq", + "modelInfo": { + "modelInvariantId": "b67a289b-1688-496d-86e8-1583c828be0a", + "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09", + "modelName": "VRF Entry Configuration", + "modelVersion": "5.0", + "modelCustomizationId": "dd024d73-9bd1-425d-9db5-476338d53433", + "modelUniqueId": "dd024d73-9bd1-425d-9db5-476338d53433", + "modelCustomizationName": "VRF Entry Configuration", + "uuid": "9cac02be-2489-4374-888d-2863b4511a59" + }, + "vpns": { + "VRF Entry Configuration vpns 1": { + "action": "Create", + "instanceId": "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7", + "instanceName": "LPPVPN", + "platformName": "AVPN", + "instanceType": "SERVICE-INFRASTRUCTURE", + "region": "USA,EMEA", + "customerId": "VPN1271", + "modelInfo": { + "modelCustomizationId": null, + "modelInvariantId": null, + "modelVersionId": null + }, + "routeTargets": null, + "isSelected": true + } + }, + "networks": { + "VRF Entry Configuration networks 1": { + "action ": "Create", + "instanceName": "AUK51a_oam_calea_net_0", + "instanceType": "SR-IOV-PROVIDER2-0", + "role": "role-1", + "orchStatus": "Active", + "physicalName": "sriovnet0", + "instanceId": "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7", + "serviceName": "LPPVPN", + "serv§iceUUID": "VPN1271", + "tenantName": "ecomp_ispt", + "lcpCloudRegionId": "USA,EMEA", + "modelInfo": { + "modelCustomizationId": "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7", + "modelInvariantId": "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7", + "modelVersionId": "7010093-df36-4dcb-8428-c3d02bf3f88d", + "modelType": "vpn" + } + } + } + } + }, + "instanceParams": [], + "validationCounter": 0, + "existingNames": {}, + "existingVNFCounterMap": {}, + "existingVRFCounterMap": {}, + "existingVnfGroupCounterMap": {}, + "existingNetworksCounterMap": {}, + "optionalGroupMembersMap": {}, + "networks": {}, + "vnfGroups": {}, + "bulkSize": 1, + "service": { + "vidNotions": { + "instantiationUI": "serviceWithVRF", + "modelCategory": "other", + "viewEditUI": "serviceWithVRF", + "instantiationType": "ALaCarte" + }, + "uuid": "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", + "invariantUuid": "7ee41ce4-4827-44b0-a48e-2707a59905d2", + "name": "VRF Service for Test", + "version": "1.0", + "toscaModelURL": null, + "category": "Network L4+", + "serviceType": "INFRASTRUCTURE", + "serviceRole": "Configuration", + "description": "xxx", + "serviceEcompNaming": "true", + "instantiationType": "A-La-Carte", + "inputs": {} + }, + "collectionResources": {}, + "configurations": {}, + "fabricConfigurations": {}, + "serviceProxies": {}, + "vfModules": {}, + "volumeGroups": {}, + "pnfs": {}, + "isALaCarte": true, + "testApi": "VNF_API", + "vidNotions": { + "instantiationUI": "serviceWithVVRF", + "modelCategory": "other", + "viewEditUI": "serviceWithVRF", + "instantiationType": "ALaCarte" + } + } + } + }; + + const serviceModelId :string = '4117a0b6-e234-467d-b5b9-fe2f68c8b0fc'; + + let result: boolean = service.shouldOpenVRFModal(nodes, serviceModelId, serviceStore); + expect(result).not.toBeNull(); + + serviceStore.serviceInstance[serviceModelId].existingVRFCounterMap = { + "dd024d73-9bd1-425d-9db5-476338d53433" : 1 + }; + + result = service.shouldOpenVRFModal(nodes, serviceModelId, serviceStore); + expect(result).toBeNull(); + + }); + function getServiceServiceHierarchy() { return JSON.parse(JSON.stringify( { @@ -103,11 +254,11 @@ describe('Available Models Tree Service', () => { 'inputs': {} }, 'vnfs': { - 'VF_vMee 0': { + 'VF_vGeraldine 0': { 'uuid': 'd6557200-ecf2-4641-8094-5393ae3aae60', 'invariantUuid': '4160458e-f648-4b30-a176-43881ffffe9e', - 'description': 'VSP_vMee', - 'name': 'VF_vMee', + 'description': 'VSP_vGeraldine', + 'name': 'VF_vGeraldine', 'version': '2.0', 'customizationUuid': '91415b44-753d-494c-926a-456a9172bbb9', 'inputs': {}, @@ -277,54 +428,54 @@ describe('Available Models Tree Service', () => { 'sctp-b-egress-dst_end_port': '65535.0' }, 'type': 'VF', - 'modelCustomizationName': 'VF_vMee 0', + 'modelCustomizationName': 'VF_vGeraldine 0', 'vfModules': { - 'vf_vmee0..VfVmee..vmme_vlc..module-1': { + 'vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1': { 'uuid': '522159d5-d6e0-4c2a-aa44-5a542a12a830', 'invariantUuid': '98a7c88b-b577-476a-90e4-e25a5871e02b', 'customizationUuid': '55b1be94-671a-403e-a26c-667e9c47d091', 'description': null, - 'name': 'VfVmee..vmme_vlc..module-1', + 'name': 'VfVgeraldine..vflorence_vlc..module-1', 'version': '2', - 'modelCustomizationName': 'VfVmee..vmme_vlc..module-1', + 'modelCustomizationName': 'VfVgeraldine..vflorence_vlc..module-1', 'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0}, 'commands': {}, 'volumeGroupAllowed': false }, - 'vf_vmee0..VfVmee..vmme_gpb..module-2': { + 'vf_vgeraldine0..VfVgeraldine..vflorence_gpb..module-2': { 'uuid': '41708296-e443-4c71-953f-d9a010f059e1', 'invariantUuid': '1cca90b8-3490-495e-87da-3f3e4c57d5b9', 'customizationUuid': '6add59e0-7fe1-4bc4-af48-f8812422ae7c', 'description': null, - 'name': 'VfVmee..vmme_gpb..module-2', + 'name': 'VfVgeraldine..vflorence_gpb..module-2', 'version': '2', - 'modelCustomizationName': 'VfVmee..vmme_gpb..module-2', + 'modelCustomizationName': 'VfVgeraldine..vflorence_gpb..module-2', 'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0}, 'commands': {}, 'volumeGroupAllowed': false }, - 'vf_vmee0..VfVmee..base_vmme..module-0': { + 'vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0': { 'uuid': 'a27f5cfc-7f12-4f99-af08-0af9c3885c87', 'invariantUuid': 'a6f9e51a-2b35-416a-ae15-15e58d61f36d', 'customizationUuid': 'f8c040f1-7e51-4a11-aca8-acf256cfd861', 'description': null, - 'name': 'VfVmee..base_vmme..module-0', + 'name': 'VfVgeraldine..base_vflorence..module-0', 'version': '2', - 'modelCustomizationName': 'VfVmee..base_vmme..module-0', + 'modelCustomizationName': 'VfVgeraldine..base_vflorence..module-0', 'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1}, 'commands': {}, 'volumeGroupAllowed': true } }, 'volumeGroups': { - 'vf_vmee0..VfVmee..base_vmme..module-0': { + 'vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0': { 'uuid': 'a27f5cfc-7f12-4f99-af08-0af9c3885c87', 'invariantUuid': 'a6f9e51a-2b35-416a-ae15-15e58d61f36d', 'customizationUuid': 'f8c040f1-7e51-4a11-aca8-acf256cfd861', 'description': null, - 'name': 'VfVmee..base_vmme..module-0', + 'name': 'VfVgeraldine..base_vflorence..module-0', 'version': '2', - 'modelCustomizationName': 'VfVmee..base_vmme..module-0', + 'modelCustomizationName': 'VfVgeraldine..base_vflorence..module-0', 'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1} } } @@ -370,52 +521,52 @@ describe('Available Models Tree Service', () => { }, 'serviceProxies': {}, 'vfModules': { - 'vf_vmee0..VfVmee..vmme_vlc..module-1': { + 'vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1': { 'uuid': '522159d5-d6e0-4c2a-aa44-5a542a12a830', 'invariantUuid': '98a7c88b-b577-476a-90e4-e25a5871e02b', 'customizationUuid': '55b1be94-671a-403e-a26c-667e9c47d091', 'description': null, - 'name': 'VfVmee..vmme_vlc..module-1', + 'name': 'VfVgeraldine..vflorence_vlc..module-1', 'version': '2', - 'modelCustomizationName': 'VfVmee..vmme_vlc..module-1', + 'modelCustomizationName': 'VfVgeraldine..vflorence_vlc..module-1', 'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0}, 'commands': {}, 'volumeGroupAllowed': false }, - 'vf_vmee0..VfVmee..vmme_gpb..module-2': { + 'vf_vgeraldine0..VfVgeraldine..vflorence_gpb..module-2': { 'uuid': '41708296-e443-4c71-953f-d9a010f059e1', 'invariantUuid': '1cca90b8-3490-495e-87da-3f3e4c57d5b9', 'customizationUuid': '6add59e0-7fe1-4bc4-af48-f8812422ae7c', 'description': null, - 'name': 'VfVmee..vmme_gpb..module-2', + 'name': 'VfVgeraldine..vflorence_gpb..module-2', 'version': '2', - 'modelCustomizationName': 'VfVmee..vmme_gpb..module-2', + 'modelCustomizationName': 'VfVgeraldine..vflorence_gpb..module-2', 'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0}, 'commands': {}, 'volumeGroupAllowed': false }, - 'vf_vmee0..VfVmee..base_vmme..module-0': { + 'vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0': { 'uuid': 'a27f5cfc-7f12-4f99-af08-0af9c3885c87', 'invariantUuid': 'a6f9e51a-2b35-416a-ae15-15e58d61f36d', 'customizationUuid': 'f8c040f1-7e51-4a11-aca8-acf256cfd861', 'description': null, - 'name': 'VfVmee..base_vmme..module-0', + 'name': 'VfVgeraldine..base_vflorence..module-0', 'version': '2', - 'modelCustomizationName': 'VfVmee..base_vmme..module-0', + 'modelCustomizationName': 'VfVgeraldine..base_vflorence..module-0', 'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1}, 'commands': {}, 'volumeGroupAllowed': true } }, 'volumeGroups': { - 'vf_vmee0..VfVmee..base_vmme..module-0': { + 'vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0': { 'uuid': 'a27f5cfc-7f12-4f99-af08-0af9c3885c87', 'invariantUuid': 'a6f9e51a-2b35-416a-ae15-15e58d61f36d', 'customizationUuid': 'f8c040f1-7e51-4a11-aca8-acf256cfd861', 'description': null, - 'name': 'VfVmee..base_vmme..module-0', + 'name': 'VfVgeraldine..base_vflorence..module-0', 'version': '2', - 'modelCustomizationName': 'VfVmee..base_vmme..module-0', + 'modelCustomizationName': 'VfVgeraldine..base_vflorence..module-0', 'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1} } }, diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.service.ts index dc72f8f12..39a3c5070 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.service.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/available-models-tree/available-models-tree.service.ts @@ -7,6 +7,8 @@ import {MessageBoxService} from "../../../shared/components/messageBox/messageBo import * as _ from "lodash"; import { SdcUiCommon} from "onap-ui-angular"; import {SharedTreeService} from "../objectsToTree/shared.tree.service"; +import {VrfModel} from "../../../shared/models/vrfModel"; +import {clearAllGenericModalhelper} from "../../../shared/storeUtil/utils/global/global.actions"; export class AvailableNodeIcons { addIcon: boolean; @@ -16,6 +18,7 @@ export class AvailableNodeIcons { this.addIcon = addIcon; this.vIcon = vIcon; } + } @Injectable() @@ -73,4 +76,20 @@ export class AvailableModelsTreeService { MessageBoxService.openModal.next(messageBoxData); } + shouldOpenVRFModal(nodes, serviceModelId: string , service) { + for(const node of nodes){ + if(node.type === 'VRF' && service.serviceInstance[serviceModelId].existingVRFCounterMap && !service.serviceInstance[serviceModelId].existingVRFCounterMap[node.modelUniqueId]){ + const vrfModel : VrfModel = node.getModel(node.name, node, service.serviceInstance[serviceModelId]); + const vrfCounter : number = service.serviceInstance[serviceModelId].existingVRFCounterMap[node.modelUniqueId]; + console.log('vrfCounter', vrfCounter); + if(vrfModel.min > 0 && (_.isNil(vrfCounter) || vrfCounter === 0)){ + node.data = node; + this.store.dispatch(clearAllGenericModalhelper()); + return node; + } + } + } + return null; + } + } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info-model.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info-model.ts index 4c5bf6747..d06dfbe9a 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info-model.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info-model.ts @@ -7,11 +7,11 @@ export class ComponentInfoModel { title: string; - constructor(type: ComponentInfoType, modelInfoItems: ModelInformationItem[], additionalInfoItems: ModelInformationItem[], isInstance:boolean=true) { + constructor(type: ComponentInfoType, modelInfoItems: ModelInformationItem[], additionalInfoItems: ModelInformationItem[], isInstance:boolean = true) { this.type = type; this.modelInfoItems = modelInfoItems; this.additionalInfoItems = additionalInfoItems; - this.title=this.type+(isInstance ? " Instance" : ""); + this.title = this.type + (isInstance ? " Instance" : ""); } } @@ -22,5 +22,11 @@ export enum ComponentInfoType { NETWORK = "Network", VFMODULE = "VFModule", VNFGROUP = "Group", - VNFMEMBER = "VNF" + VNFMEMBER = "VNF", + CONFIGURATION = "Configuration", + COLLECTION_RESOURCE = "Collection Resource", + VRF = "VRF", + PNF = "PNF", + VPN = "VPN", + NCF = "Network Collection Function" } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.component.scss b/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.component.scss index 2d7735678..62e53ed0d 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.component.scss +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.component.scss @@ -26,7 +26,6 @@ font-family: OpenSans-Regular; font-size: 12px; color: #5A5A5A; - text-transform: capitalize; } .model-item-value { @@ -34,6 +33,7 @@ font-size: 14px; color: #191919; line-height: 16px; + word-break: break-word; } } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.component.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.component.ts index c69ab52e1..d9fa98555 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.component.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.component.ts @@ -7,8 +7,8 @@ import {ActivatedRoute} from "@angular/router"; @Component({ selector: 'component-info', templateUrl: './component-info.component.html', - styleUrls: ['./component-info.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush + styleUrls: ['./component-info.component.scss']//, + // changeDetection: ChangeDetectionStrategy.OnPush }) export class ComponentInfoComponent implements OnInit { componentInfoModel: ComponentInfoModel = null; diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.service.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.service.spec.ts index 8b0da409b..6671e2e18 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.service.spec.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.service.spec.ts @@ -7,6 +7,7 @@ import {HttpClient, HttpHandler} from '@angular/common/http'; import {FeatureFlagsService} from '../../../shared/services/featureFlag/feature-flags.service'; import {ModelInformationItem} from "../../../shared/components/model-information/model-information.component"; import {ComponentInfoModel, ComponentInfoType} from "./component-info-model"; +import {SharedTreeService} from "../objectsToTree/shared.tree.service"; class MockAppStore<T> { getState() { @@ -58,6 +59,7 @@ beforeAll(done => (async () => { HttpHandler, FeatureFlagsService, ComponentInfoService, + SharedTreeService, {provide: NgRedux, useClass: MockAppStore}, MockNgRedux] }); @@ -77,12 +79,12 @@ describe('Service Info Data', () => { let actualServiceInfo = service.getInfoForService('1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd'); let expectedServiceInfo = [ ModelInformationItem.createInstance('Type', 'pnf'), - ModelInformationItem.createInstance('Model Version', '1.0'), - ModelInformationItem.createInstance('Model Customization ID', ''), + ModelInformationItem.createInstance('Model version', '1.0'), + ModelInformationItem.createInstance('Model customization ID', ''), ModelInformationItem.createInstance('Instance ID', '2f7130e8-27d6-4c01-8988-60ca67e8dae4'), - ModelInformationItem.createInstance('Subscriber Name', 'SILVIA ROBBINS'), - ModelInformationItem.createInstance('Service Type', 'TYLER SILVIA'), - ModelInformationItem.createInstance('Service Role', 'Testing'), + ModelInformationItem.createInstance('Subscriber name', 'SILVIA ROBBINS'), + ModelInformationItem.createInstance('Service type', 'TYLER SILVIA'), + ModelInformationItem.createInstance('Service role', 'Testing'), ]; expect(actualServiceInfo).toEqual(new ComponentInfoModel(ComponentInfoType.SERVICE, expectedServiceInfo, [])); diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.service.ts index 9318b3aa7..32610d993 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.service.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/component-info/component-info.service.ts @@ -6,36 +6,27 @@ import {Subject} from "rxjs"; import {ComponentInfoModel, ComponentInfoType} from "./component-info-model"; import {ModelInformationItem} from "../../../shared/components/model-information/model-information.component"; import * as _ from 'lodash'; +import {SharedTreeService} from "../objectsToTree/shared.tree.service"; @Injectable() export class ComponentInfoService { static triggerComponentInfoChange: Subject<ComponentInfoModel> = new Subject<ComponentInfoModel>(); - constructor( private _store: NgRedux<AppState>, private _aaiService : AaiService){ } + constructor( private _store: NgRedux<AppState>, private _aaiService : AaiService, private _sharedTreeService : SharedTreeService){ } getInfoForService(serviceModelId):ComponentInfoModel { if(_.isNil(this._store.getState().service.serviceHierarchy[serviceModelId])) return null; - let serviceHierarchy = this._store.getState().service.serviceHierarchy[serviceModelId].service; + const serviceHierarchy = this._store.getState().service.serviceHierarchy[serviceModelId].service; const serviceInstance = this._store.getState().service.serviceInstance[serviceModelId]; const modelInfoItems: ModelInformationItem[] = [ - ModelInformationItem.createInstance("Subscriber Name",this._aaiService.extractSubscriberNameBySubscriberId(serviceInstance.globalSubscriberId)), - ModelInformationItem.createInstance("Service Type",serviceInstance.subscriptionServiceType), - ModelInformationItem.createInstance("Service Role",serviceHierarchy.serviceRole), + ModelInformationItem.createInstance("Type", serviceHierarchy.serviceType), + ModelInformationItem.createInstance("Model version", serviceHierarchy.version ), + ModelInformationItem.createInstance("Model customization ID", serviceHierarchy.customizationUuid ), + ModelInformationItem.createInstance("Instance ID", serviceInstance.instanceId), + ModelInformationItem.createInstance("Subscriber name",this._aaiService.extractSubscriberNameBySubscriberId(serviceInstance.globalSubscriberId)), + ModelInformationItem.createInstance("Service type",serviceInstance.subscriptionServiceType), + ModelInformationItem.createInstance("Service role",serviceHierarchy.serviceRole), ]; - serviceHierarchy.type = serviceHierarchy.serviceType; - return this.addGeneralInfoItems(modelInfoItems, ComponentInfoType.SERVICE, serviceHierarchy, serviceInstance ); - } - - addGeneralInfoItems(modelInfoSpecificItems: ModelInformationItem[], type: ComponentInfoType, model, instance) { - let modelInfoItems: ModelInformationItem[] = [ - ModelInformationItem.createInstance("Type", (model && model.type) ? model.type : ((instance && instance.modelInfo) ? instance.modelInfo.modelType : null)), - ModelInformationItem.createInstance("Model Version", model ? model.version : null), - ModelInformationItem.createInstance("Model Customization ID", model ? model.customizationUuid : null), - ModelInformationItem.createInstance("Instance ID", instance ? instance.instanceId : null), - ModelInformationItem.createInstance("In Maintenance", instance? instance.inMaint : null), - ]; - modelInfoItems = modelInfoItems.concat(modelInfoSpecificItems); - const modelInfoItemsWithoutEmpty = _.filter(modelInfoItems, function(item){ return !item.values.every(_.isNil)}); - return new ComponentInfoModel(type, modelInfoItemsWithoutEmpty, []); + return this._sharedTreeService.getComponentInfoModelByModelInformationItems(modelInfoItems, ComponentInfoType.SERVICE, serviceInstance ); } } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.html b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.html index f02ed6293..46807607d 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.html +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.html @@ -10,7 +10,7 @@ </svg-icon> </span> - <div class="header-col middleDetails" style="padding-top: 5px;padding-left: 13px;line-height: 100%;" *ngIf="isServiceFailed"> + <div class="header-col middleDetails" style="padding-top: 7px;padding-left: 13px;line-height: 100%;" *ngIf="isServiceFailed"> <custom-popover class="failed-popover-wrap" [value]= "serviceStatusMessage" [placement]="'bottom'" [popoverType]="'error'"> <span [attr.data-tests-id]="'service-failed-msg'" class="failed-msg labelPosition" >Failed</span> </custom-popover> @@ -22,7 +22,9 @@ <div class="header-col middleDetails notShowOnCreateMode" style="padding-top: 0px;padding-left: 13px;line-height: 100%;"> <span [attr.data-tests-id]="'orchStatusLabel'" class="service-instance-label labelPosition">Orch Status:</span> - <span [attr.data-tests-id]="'orchStatusValue'" class="orch-status-value">{{serviceOrchStatus}}</span> + <span [attr.data-tests-id]="'orchStatusValue'" + [ngClass]="{'tag-status-value' :serviceOrchStatus?.toLowerCase()!= 'active'}" + class="orch-status-value">{{serviceOrchStatus}}</span> </div> <div class="quantity-container header-col middleDetails" style="padding-top: 0px;padding-left: 13px;line-height: 100%;" @@ -38,6 +40,8 @@ <div class="right-header"> + <span class="action-status-type-header delete" [attr.data-tests-id]="'delete-status-type-header'" *ngIf="isDeleted === true">Delete</span> + <span class="action-status-type-header resume" [attr.data-tests-id]="'resume-status-type-header'" *ngIf="isResume === true">Resume</span> <span class="menu-container notShowOnViewMode notShowOnRetryMode"> <span [attr.data-tests-id]="'openMenuBtn'" class="icon-browse" (click)="onContextMenu($event)"></span> <context-menu> @@ -46,7 +50,7 @@ <span class="icon-edit"></span>Edit</div> </ng-template> <ng-template *ngIf="mode === 'EDIT'" contextMenuItem - (execute)="isDeleted=!isDeleted; drawingBoardHeaderService.deleteService(serviceModelId,isDeleted)"> + (execute)="onDeleteUndoDeleteClick()"> <div [attr.data-tests-id]="'context-menu-header-delete-item'"><span class="icon-trash"></span>{{isDeleted ? 'Undo delete': 'Delete'}}</div> </ng-template> <ng-template *ngIf="mode !== 'CREATE'" contextMenuItem @@ -60,6 +64,10 @@ </svg-icon></div> <div style="padding-left: 12px;">Show Audit Info</div> </ng-template> + <ng-template *ngIf="drawingBoardHeaderService?.showResumeService(serviceModelId)" contextMenuItem + (execute)="onResumeUndoResumeClick()"> + <div [attr.data-tests-id]="'context-menu-header-resume-item'"><span class="icon-trash"></span>{{isResume ? 'Undo resume': 'Resume'}}</div> + </ng-template> </context-menu> </span> <button [disabled]="drawingBoardHeaderService?.deployShouldBeDisabled(serviceModelId, mode)" diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.scss b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.scss index 1242f9429..353c1151f 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.scss +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.scss @@ -85,6 +85,13 @@ font-family: OpenSans-Regular; font-size: 14px; color: #191919; + &.tag-status-value { + background: #009fdb; + color: white; + border-radius: 2px; + text-align: center; + padding: 5px; + } } .scale-value { font-family: OpenSans-Regular; @@ -111,9 +118,25 @@ height: 45px; } } + .right-header { display: flex; align-items: center; + .action-status-type-header { + background: transparent; + font-family: OpenSans-SemiBold; + font-size: 12px; + border-radius: 50px; + border: 1px solid gray; + padding: 5px 20px; + margin-right: 10px; + &.delete { + color: red; + } + &.resume { + color: #009fdb; + } + } .quantity-container { .quantity-label { padding-left: 10px; diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.ts index 6e4391572..51f90534b 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.ts @@ -39,6 +39,7 @@ export class DrawingBoardHeader { mode : DrawingBoardModes = DrawingBoardModes.CREATE; serviceOrchStatus: string; isDeleted: boolean = false; + isResume: boolean = false; store : NgRedux<AppState>; drawingBoardPermissions : DrawingBoardPermissions; drawingBoardHeaderService : DrawingBoardHeaderService; @@ -122,7 +123,7 @@ export class DrawingBoardHeader { type: PopupType.SERVICE, uuidData: <any>{ type : PopupType.SERVICE, - isMacro : this.store.getState().service.serviceHierarchy[this.serviceModelId].service.instantiationType === 'Macro', + isMacro : this.store.getState().service.serviceHierarchy[this.serviceModelId].service.vidNotions.instantiationType === 'Macro', serviceId: this.serviceModelId, popupService: this._servicePopupService }, @@ -130,6 +131,32 @@ export class DrawingBoardHeader { }); } + onDeleteUndoDeleteClick(){ + this.cancelResume(this.serviceModelId); + this.isDeleted = !this.isDeleted; + this._drawingBoardHeaderService.deleteService(this.serviceModelId, this.isDeleted) + } + + onResumeUndoResumeClick(){ + this.cancelDelete(this.serviceModelId); + this.isResume = !this.isResume; + this._drawingBoardHeaderService.toggleResumeService(this.serviceModelId, this.isResume); + } + + cancelDelete(serviceModelId: string) { + if (this.isDeleted) { + this.isDeleted = false; + this._drawingBoardHeaderService.deleteService(serviceModelId,this.isDeleted); + } + } + + cancelResume(serviceModelId: string) { + if (this.isResume) { + this.isResume = false; + this._drawingBoardHeaderService.toggleResumeService(serviceModelId,this.isResume); + } + } + extractOwningEntityNameAccordingtoId(id:String): string { let owningEntityName; _.forEach(this.store.getState().service.categoryParameters.owningEntityList,(owningEntity: OwningEntity) => { diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.service.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.service.spec.ts index bcf6753b9..76fc28a9e 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.service.spec.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.service.spec.ts @@ -85,7 +85,7 @@ describe('Generate path to old View/Edit ', () => { }); test('deployShouldBeDisabled with validationCounter greater then 0',()=>{ - jest.spyOn(store, 'getState').mockReturnValue({ + jest.spyOn(store, 'getState').mockReturnValue(<any>{ service: { serviceInstance : { 'serviceInstanceId' : { @@ -94,12 +94,12 @@ describe('Generate path to old View/Edit ', () => { } } }); - let result = service.deployShouldBeDisabled("serviceInstanceId"); + let result = service.deployShouldBeDisabled("serviceInstanceId", DrawingBoardModes.RETRY_EDIT); expect(result).toBeTruthy(); }); test('deployShouldBeDisabled with validationCounter is 0 and not dirty',()=>{ - jest.spyOn(store, 'getState').mockReturnValue({ + jest.spyOn(store, 'getState').mockReturnValue(<any>{ service: { serviceInstance : { 'serviceInstanceId' : { @@ -109,12 +109,12 @@ describe('Generate path to old View/Edit ', () => { } } }); - let result = service.deployShouldBeDisabled("serviceInstanceId"); + let result = service.deployShouldBeDisabled("serviceInstanceId", DrawingBoardModes.RETRY_EDIT); expect(result).toBeFalsy(); }); test('deployShouldBeDisabled with validationCounter is 0 and dirty',()=>{ - jest.spyOn(store, 'getState').mockReturnValue({ + jest.spyOn(store, 'getState').mockReturnValue(<any>{ service: { serviceInstance : { 'serviceInstanceId' : { @@ -125,12 +125,12 @@ describe('Generate path to old View/Edit ', () => { } } }); - let result = service.deployShouldBeDisabled("serviceInstanceId"); + let result = service.deployShouldBeDisabled("serviceInstanceId", DrawingBoardModes.RETRY_EDIT); expect(result).not.toBeTruthy(); }); test('deployShouldBeDisabled with validationCounter is 0 and not and action is None and dirty',()=>{ - jest.spyOn(store, 'getState').mockReturnValue({ + jest.spyOn(store, 'getState').mockReturnValue(<any>{ service: { serviceInstance : { 'serviceInstanceId' : { @@ -141,7 +141,7 @@ describe('Generate path to old View/Edit ', () => { } } }); - let result = service.deployShouldBeDisabled("serviceInstanceId"); + let result = service.deployShouldBeDisabled("serviceInstanceId", DrawingBoardModes.RETRY_EDIT); expect(result).not.toBeTruthy(); }); @@ -157,8 +157,8 @@ describe('Generate path to old View/Edit ', () => { expect(result).toEqual('REDEPLOY'); }); test('getButtonText',()=>{ - expect(service.getButtonText("VIEW")).toEqual('EDIT'); - expect(service.getButtonText("RETRY")).toEqual('REDEPLOY'); + expect(service.getButtonText(DrawingBoardModes.VIEW)).toEqual('EDIT'); + expect(service.getButtonText(DrawingBoardModes.RETRY)).toEqual('REDEPLOY'); }); const showEditServiceDataProvider = [ @@ -169,7 +169,7 @@ describe('Generate path to old View/Edit ', () => { ['None action EDIT mode',DrawingBoardModes.EDIT, ServiceInstanceActions.None, false], ['None action RETRY_EDIT mode', DrawingBoardModes.RETRY_EDIT, ServiceInstanceActions.None, false]]; each(showEditServiceDataProvider).test('showEditService service with %s', (description, mode, action, enabled) => { - jest.spyOn(store, 'getState').mockReturnValue({ + jest.spyOn(store, 'getState').mockReturnValue(<any>{ service: { serviceInstance : { 'serviceInstanceId' : { @@ -181,4 +181,49 @@ describe('Generate path to old View/Edit ', () => { expect(service.showEditService(mode, 'serviceInstanceId')).toBe(enabled); }); + + const showResumeServiceDataProvider = [ + ['all conditions of resume- should show resume',true, 'MACRO', 'VPE', 'AssiGNed', true], + ['flag is disabled- should not show resume ',false, 'MACRO', 'VPE', 'AssiGNed', false], + ['transport service (PNF)- should not show resume', true, 'Macro', 'transport', 'Assigned', false], + ['instantiationType is a-la-carte- should not show resume', true, 'ALaCarte', 'VPE', 'Assigned', false], + ['orchestration Status is not assigned- should not show resume', true, 'Macro', 'VPE', 'Created', false], + ['orchestration Status is Inventoried - should show resume', true, 'Macro', 'VPE', 'iNventOriEd', true] + ]; + + each(showResumeServiceDataProvider).test('showResumeService when %s', (description, flagResumeMacroService,instantiationType, subscriptionServiceType, orchStatus, shouldShowResumeService) => { + jest.spyOn(store, 'getState').mockReturnValue(<any>{ + global: { + flags:{ + 'FLAG_1908_RESUME_MACRO_SERVICE': flagResumeMacroService + } + }, + service: { + serviceInstance : { + 'serviceModelId' : { + 'vidNotions': { + 'instantiationType': instantiationType + }, + 'subscriptionServiceType':subscriptionServiceType, + 'orchStatus': orchStatus + } + } + } + }); + expect(service.showResumeService('serviceModelId')).toBe(shouldShowResumeService); + + }); + + + const toggleResumeServiceDataProvider = [ + [ServiceInstanceActions.None, true], + [ServiceInstanceActions.Resume, false] + ]; + + each(toggleResumeServiceDataProvider).test('toggleResumeService - should call %s for resume/ undo Resume',(serviceAction, isResume)=>{ + jest.spyOn(store, 'dispatch'); + service.toggleResumeService("serviceInstanceId", isResume); + expect(store.dispatch).toHaveBeenCalledWith(addServiceAction("serviceInstanceId", serviceAction)); + }); + }); diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.service.ts index 946c5cab5..7df2f3a3f 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.service.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.service.ts @@ -11,6 +11,7 @@ import * as _ from 'lodash'; import {ErrorMsgService} from "../../../shared/components/error-msg/error-msg.service"; import {DrawingBoardModes} from "../drawing-board.modes"; import {ServiceInstance} from "../../../shared/models/serviceInstance"; +import {FeatureFlagsService, Features} from "../../../shared/services/featureFlag/feature-flags.service"; @Injectable() export class DrawingBoardHeaderService{ @@ -38,7 +39,13 @@ export class DrawingBoardHeaderService{ showAuditInfo(serviceModelId) : void { let instance: ServiceInstance = this.store.getState().service.serviceInstance[serviceModelId]; let model = new ServiceModel(this.store.getState().service.serviceHierarchy[serviceModelId]); - AuditInfoModalComponent.openInstanceAuditInfoModal.next({instanceId : serviceModelId , type : 'SERVICE', model : model , instance : instance, trackById: instance.trackById}); + AuditInfoModalComponent.openInstanceAuditInfoModal.next({instanceId : serviceModelId , type : 'SERVICE', model : model , instance : instance}); + } + + toggleResumeService(serviceModelId, isResume: boolean) : void { + const action: ServiceInstanceActions = isResume ? ServiceInstanceActions.Resume : ServiceInstanceActions.None; + this.store.dispatch(addServiceAction(serviceModelId, action)); + } @@ -49,7 +56,7 @@ export class DrawingBoardHeaderService{ const serviceInstance = this.store.getState().service.serviceInstance[serviceInstanceId]; if(!_.isNil(serviceInstance)){ const validationCounter = serviceInstance.validationCounter; - if (!_.isNil(this.errorMsgService.errorMsgObject)&& mode !== DrawingBoardModes.RETRY_EDIT) return true; + if (!_.isNil(this.errorMsgService.errorMsgObject) && mode !== DrawingBoardModes.RETRY_EDIT) return true; if(validationCounter > 0) return true; if(serviceInstance.action !== ServiceInstanceActions.None) return false; if(mode === DrawingBoardModes.RETRY_EDIT) return false; @@ -83,4 +90,18 @@ export class DrawingBoardHeaderService{ return mode === DrawingBoardModes.CREATE || ((mode === DrawingBoardModes.RETRY_EDIT || mode === DrawingBoardModes.EDIT)&& !_.isNil(serviceInstance) && !_.isNil(serviceInstance[serviceModelId])&& serviceInstance[serviceModelId].action === ServiceInstanceActions.Create); } + + showResumeService(serviceModelId: string): boolean { + const serviceInstance: ServiceInstance = !_.isNil(this.store.getState().service.serviceInstance)? this.store.getState().service.serviceInstance[serviceModelId] : null; + if (serviceInstance) + { + return FeatureFlagsService.getFlagState(Features.FLAG_1908_RESUME_MACRO_SERVICE, this.store) && + serviceInstance.vidNotions.instantiationType.toLowerCase() === "macro" && + serviceInstance.subscriptionServiceType.toLowerCase() !== "transport" && + serviceInstance.orchStatus && + (serviceInstance.orchStatus.toLowerCase() === "assigned" || + serviceInstance.orchStatus.toLowerCase() === "inventoried"); + } + return false; + } } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/dragAndDrop/dragAndDrop.service.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/dragAndDrop/dragAndDrop.service.spec.ts index 1221cef5f..8b7f1a4f5 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/dragAndDrop/dragAndDrop.service.spec.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/dragAndDrop/dragAndDrop.service.spec.ts @@ -83,11 +83,11 @@ describe('Drag and drop service', () => { "action": "Create", "inMaint": false, "name": "yoav2_001", - "modelName": "VF_vMee 0", + "modelName": "VF_vGeraldine 0", "type": "VF", "isEcompGeneratedNaming": true, - "networkStoreKey": "VF_vMee 0:0001", - "vnfStoreKey": "VF_vMee 0:0001", + "networkStoreKey": "VF_vGeraldine 0:0001", + "vnfStoreKey": "VF_vGeraldine 0:0001", "typeName": "VNF", "menuActions": {"edit": {}, "showAuditInfo": {}, "duplicate": {}, "remove": {}, "delete": {}, "undoDelete": {}}, "isFailed": false, @@ -106,11 +106,11 @@ describe('Drag and drop service', () => { "id": 6654971919519, "action": "Create", "name": "VFModule1", - "modelName": "vf_vmee0..VfVmee..base_vmme..module-0", + "modelName": "vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0", "type": "VFmodule", "isEcompGeneratedNaming": true, "dynamicInputs": [], - "dynamicModelName": "vf_vmee0..VfVmee..base_vmme..module-0bykqx", + "dynamicModelName": "vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0bykqx", "typeName": "M", "menuActions": {"edit": {}, "showAuditInfo": {}, "remove": {}, "delete": {}, "undoDelete": {}}, "isFailed": false, @@ -130,11 +130,11 @@ describe('Drag and drop service', () => { "id": 987761655742, "action": "Create", "name": "VNFModule3", - "modelName": "vf_vmee0..VfVmee..vmme_gpb..module-2", + "modelName": "vf_vgeraldine0..VfVgeraldine..vflorence_gpb..module-2", "type": "VFmodule", "isEcompGeneratedNaming": true, "dynamicInputs": [], - "dynamicModelName": "vf_vmee0..VfVmee..vmme_gpb..module-2fjrrc", + "dynamicModelName": "vf_vgeraldine0..VfVgeraldine..vflorence_gpb..module-2fjrrc", "typeName": "M", "menuActions": {"edit": {}, "showAuditInfo": {}, "remove": {}, "delete": {}, "undoDelete": {}}, "isFailed": false, @@ -154,11 +154,11 @@ describe('Drag and drop service', () => { "id": 873798901625, "action": "Create", "name": "VFModule2", - "modelName": "vf_vmee0..VfVmee..vmme_vlc..module-1", + "modelName": "vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1", "type": "VFmodule", "isEcompGeneratedNaming": true, "dynamicInputs": [], - "dynamicModelName": "vf_vmee0..VfVmee..vmme_vlc..module-1djjni", + "dynamicModelName": "vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1djjni", "typeName": "M", "menuActions": {"edit": {}, "showAuditInfo": {}, "remove": {}, "delete": {}, "undoDelete": {}}, "isFailed": false, @@ -181,11 +181,11 @@ describe('Drag and drop service', () => { "action": "Create", "inMaint": false, "name": "yoav2", - "modelName": "VF_vMee 0", + "modelName": "VF_vGeraldine 0", "type": "VF", "isEcompGeneratedNaming": true, - "networkStoreKey": "VF_vMee 0", - "vnfStoreKey": "VF_vMee 0", + "networkStoreKey": "VF_vGeraldine 0", + "vnfStoreKey": "VF_vGeraldine 0", "typeName": "VNF", "menuActions": {"edit": {}, "showAuditInfo": {}, "duplicate": {}, "remove": {}, "delete": {}, "undoDelete": {}}, "isFailed": false, 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 d0715982c..6be5036b2 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 @@ -1,4 +1,4 @@ -import {AfterViewInit, Component, EventEmitter, OnInit, Output, ViewChild,} from '@angular/core'; +import {AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild,} from '@angular/core'; import {ContextMenuComponent, ContextMenuService} from 'ngx-contextmenu'; import {Constants} from '../../../shared/utils/constants'; import {IDType, ITreeNode} from "angular-tree-component/dist/defs/api"; @@ -24,7 +24,10 @@ import * as _ from 'lodash'; import {ErrorMsgService} from "../../../shared/components/error-msg/error-msg.service"; import {DragAndDropService} from "./dragAndDrop/dragAndDrop.service"; import {FeatureFlagsService, Features} from "../../../shared/services/featureFlag/feature-flags.service"; -import {PopoverPlacement} from "../../../shared/components/popover/popover.component"; +import {ComponentInfoService} from "../component-info/component-info.service"; +import {ComponentInfoModel} from "../component-info/component-info-model"; +import {ObjectToModelTreeService} from "../objectsToTree/objectToModelTree/objectToModelTree.service"; +import {DrawingBoardModes} from "../drawing-board.modes"; @Component({ selector: 'drawing-board-tree', @@ -37,10 +40,14 @@ export class DrawingBoardTreeComponent implements OnInit, AfterViewInit { _store: NgRedux<AppState>; duplicateService: DuplicateService; drawingBoardTreeService: DrawingBoardTreeService; + objectToModelTreeService : ObjectToModelTreeService; + objectToInstanceTreeService : ObjectToInstanceTreeService; errorMsgService: ErrorMsgService; isFilterEnabled: boolean = false; filterValue: string = ''; contextMenuOptions: TreeNodeContextMenuModel[]; + + @Input() pageMode : DrawingBoardModes; static triggerDeleteActionService: Subject<string> = new Subject<string>(); static triggerUndoDeleteActionService: Subject<string> = new Subject<string>(); static triggerreCalculateIsDirty: Subject<string> = new Subject<string>(); @@ -62,13 +69,16 @@ export class DrawingBoardTreeComponent implements OnInit, AfterViewInit { private _highlightPipe: HighlightPipe, private _objectToInstanceTreeService: ObjectToInstanceTreeService, private _sharedTreeService: SharedTreeService, - private _dragAndDropService : DragAndDropService) { + private _dragAndDropService : DragAndDropService, + private _objectToModelTreeService : ObjectToModelTreeService, + private _componentInfoService: ComponentInfoService) { this.errorMsgService = _errorMsgService; this.duplicateService = _duplicateService; this.drawingBoardTreeService = _drawingBoardTreeService; this.contextMenuOptions = _drawingBoardTreeService.generateContextMenuOptions(); - + this.objectToModelTreeService = _objectToModelTreeService; + this.objectToInstanceTreeService = _objectToInstanceTreeService; DrawingBoardTreeComponent.triggerDeleteActionService.subscribe((serviceModelId) => { this._sharedTreeService.shouldShowDeleteInstanceWithChildrenModal(this.nodes, serviceModelId, (node, serviceModelId)=>{ this.drawingBoardTreeService.deleteActionService(this.nodes, serviceModelId); @@ -102,6 +112,10 @@ export class DrawingBoardTreeComponent implements OnInit, AfterViewInit { this.filterValue = updateData.filterValue; } + isLinkedInstance = (node) : boolean => { + return !_.isNil(node) && node.parentType === "VRF" || node.parentType === "VnfGroup"; + }; + @Output() highlightNode: EventEmitter<number> = new EventEmitter<number>(); @@ -138,7 +152,7 @@ export class DrawingBoardTreeComponent implements OnInit, AfterViewInit { updateTree() { const serviceInstance = this.store.getState().service.serviceInstance[this.serviceModelId]; - this.nodes = this._objectToInstanceTreeService.convertServiceInstanceToTreeData(serviceInstance, this.store.getState().service.serviceHierarchy[this.serviceModelId]); + this.nodes = this._objectToInstanceTreeService.convertServiceInstanceToTreeData(serviceInstance, this.store.getState().service.serviceHierarchy[this.serviceModelId]).filter((item) => item !== null); console.log('right nodes', this.nodes); } @@ -194,7 +208,11 @@ export class DrawingBoardTreeComponent implements OnInit, AfterViewInit { this._sharedTreeService.setSelectedVNF(node); this.highlightNode.emit(node.data.modelUniqueId); if (FeatureFlagsService.getFlagState(Features.FLAG_1906_COMPONENT_INFO, this.store)) { - node.data.onSelectedNode(node); + const serviceHierarchy = this._store.getState().service.serviceHierarchy[this.serviceModelId]; + const model = node.data.getModel(node.data.modelName, node.data, serviceHierarchy); + const modelInfoItems = node.data.getInfo(model, node.data); + const componentInfoModel: ComponentInfoModel = this._sharedTreeService.addGeneralInfoItems(modelInfoItems, node.data.componentInfoType, model, node.data); + ComponentInfoService.triggerComponentInfoChange.next(componentInfoModel); } } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.html b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.html index 8af909ffc..e1d88a696 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.html +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.html @@ -1,33 +1,54 @@ <error-msg></error-msg> <div class="drawing-board-tree" style="height: calc(100vh - 55px);"> <div *ngIf="nodes?.length == 0" style="text-align: center; margin-top: 50px;"> - <no-content-message-and-icon class="span-over" + + <no-content-message-and-icon *ngIf="objectToModelTreeService.numberOfPlusButton != 0" class="span-over" data-title="Please add objects (VNFs, network, modules etc.)" title2="from the left tree to design the service instance" subtitle="Once done, click Deploy to start instantiation" iconPath="./assets/img/UPLOAD.svg" iconClass="upload-icon-service-planing"></no-content-message-and-icon> + + <no-content-message-and-icon *ngIf="objectToModelTreeService.numberOfPlusButton == 0" class="span-over" + data-title="No objects to add in this service instance." + title2="" + subtitle="Click Deploy to start instantiation" + iconPath="./assets/img/UPLOAD.svg" + iconClass="upload-icon-service-planing"></no-content-message-and-icon> </div> <div class="tree-header" *ngIf="nodes?.length > 0"> <div class="title-tree">Instance:</div> <search-component (updateNodes)="updateNodes($event)" - [nodes]="nodes" [tree]="tree" - [inputTestId]="'search-right-tree'" - *ngIf="drawingBoardTreeService.isViewEditFlagTrue()"></search-component> + [nodes]="nodes" [tree]="tree" + [inputTestId]="'search-right-tree'" + *ngIf="drawingBoardTreeService.isViewEditFlagTrue()"></search-component> </div> <tree-root [attr.data-tests-id]="'drawing-board-tree'" #tree [nodes]="nodes" [options]="options" id="drawing-board-tree"> - <ng-template #treeNodeTemplate let-node let-index="index" > - <div [attr.id]="getNodeId(node)" [attr.data-tests-id]="'node-'+node.data.modelId +'-' +node.data.modelName" (click)="selectNode(node)" > - <custom-popover class="failed-popover-wrap" *ngIf= "node?.data?.isFailed" [value]= "node?.data?.statusMessage" [placement]="'left'" [popoverType]="'error'"> - <div class="failed-msg" [attr.data-tests-id]="'failed-error-message'" *ngIf= "node?.data?.isFailed">Failed</div> - </custom-popover> - <div class="instance-type" style="position: relative;"> - <div *ngIf="node?.data?.action == 'Create'" class="notShowOnViewMode notShowOnCreateMode newIcon"></div> - <div><span title="{{node.data.type}}" [attr.data-tests-id]="'node-type-indicator'">{{node?.data?.typeName}}</span></div> + <ng-template #treeNodeTemplate let-node let-index="index"> + <div class="main-row" [attr.id]="getNodeId(node)" [attr.data-tests-id]="'node-'+node.data.modelId +'-' +node.data.modelName" + (click)="selectNode(node)" + [ngClass]="{'isLinked' : isLinkedInstance(node?.data)}"> + <custom-popover class="failed-popover-wrap" *ngIf="node?.data?.isFailed" [value]="node?.data?.statusMessage" + [placement]="'left'" [popoverType]="'error'"> + <div class="failed-msg" [attr.data-tests-id]="'failed-error-message'" *ngIf="node?.data?.isFailed">Failed + </div> + </custom-popover> + <div class="instance-type" style="position: relative;border: 1px solid #D2D2CD;"> + <div *ngIf="node?.data?.action == 'Create'" class="notShowOnViewMode notShowOnCreateMode newIcon"></div> + <div><span title="{{node.data.type}}" + [attr.data-tests-id]="'node-type-indicator'">{{node?.data?.typeName}}</span></div> + <div *ngIf="isLinkedInstance(node?.data)"> + <svg-icon + [ngClass]="'link'" + class="icon-link" + [size]="'small'" + [name]="'link'"> + </svg-icon> </div> - <div class="model-info"> + </div> + <div class="model-info" [ngClass]="{'rightBorder' : pageMode === 'VIEW'}"> <span class="header-info"> <span class="property-name"> <span class="auto-name" @@ -37,15 +58,16 @@ ></span> </span> </span> - <tree-node-header-properties - *ngIf="(node?.data?.action !== 'Create' || node?.data?.parentType === 'VnfGroup') && !node?.data?.isFailed" - [properties]="node.data.statusProperties"></tree-node-header-properties> - </div> - <div class="scaling invalid" *ngIf="node?.data?.errors?.scalingError" [attr.data-tests-id]="'scaling-policy'"> - <span>Limit</span><span>{{node?.data?.limitMembers}}</span> - </div> - <div class="model-actions notShowOnViewMode"> + <tree-node-header-properties + *ngIf="(node?.data?.action !== 'Create' || node?.data?.parentType === 'VnfGroup') && !node?.data?.isFailed" + [properties]="node.data.statusProperties"></tree-node-header-properties> + </div> + <div class="scaling invalid" *ngIf="node?.data?.errors?.scalingError" [attr.data-tests-id]="'scaling-policy'"> + <span>Limit</span><span>{{node?.data?.limitMembers}}</span> + </div> + <div class="model-actions notShowOnViewMode "> <span class="icon-browse" + [ngClass]="{'isLinked' : isLinkedInstance(node?.data)}" [attr.data-tests-id]="'node-'+node.data.modelId +'-' +node.data.modelName+'-menu-btn'" (click)="onContextMenu($event, node)"> <context-menu> @@ -66,12 +88,12 @@ </ng-template> </context-menu> </span> - <span - *ngIf="drawingBoardTreeService.isVNFMissingData(node, serviceModelId)" - tooltip="{{ missingDataTooltip }}" - tooltipPlacement="left" - [attr.data-tests-id]="'node-'+node.data.modelId +'-' +node.data.modelName+'-alert-icon'" - class="icon-alert" > + <span + *ngIf="drawingBoardTreeService.isVNFMissingData(node, serviceModelId)" + tooltip="{{ missingDataTooltip }}" + tooltipPlacement="left" + [attr.data-tests-id]="'node-'+node.data.modelId +'-' +node.data.modelName+'-alert-icon'" + class="icon-alert"> <svg-icon [mode]="'warning'" [testId]="'icon-alert'" @@ -79,16 +101,17 @@ [name]="'alert-triangle-o'"> </svg-icon> </span> + <span *ngIf="drawingBoardTreeService.isVFModuleMissingData(node, serviceModelId)" class="icon-alert" + tooltip="{{ missingDataTooltip }}" tooltipPlacement="left" + [attr.data-tests-id]="'node-'+node.data.modelId +'-' +node.data.modelName+'-alert-icon'"></span> + </div> - <!--<span *ngIf="drawingBoardTreeService.isVNFMissingData(node, serviceModelId)" class="icon-alert"--> - <!--tooltip="{{ missingDataTooltip }}" tooltipPlacement="left"--> - <!--[attr.data-tests-id]="'node-'+node.data.modelId +'-' +node.data.modelName+'-alert-icon'"></span>--> - <span *ngIf="drawingBoardTreeService.isVFModuleMissingData(node, serviceModelId)" class="icon-alert" - tooltip="{{ missingDataTooltip }}" tooltipPlacement="left" - [attr.data-tests-id]="'node-'+node.data.modelId +'-' +node.data.modelName+'-alert-icon'"></span> - </div> - </div > - </ng-template> + <div class="action-status"> + <span class="action-status-type delete" [attr.data-tests-id]="'delete-status-type'" [ngStyle]="{ 'opacity': node.data.action.split('_').pop() !== 'Delete' ? '0' : '1'}">Delete</span> + </div> + + </div> + </ng-template> </tree-root> </div> diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.scss b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.scss index be9f9f2d4..e08e69e2e 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.scss +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.scss @@ -36,6 +36,11 @@ } } + +.icon-browse.isLinked { + display: none !important; +} + #RETRY_EDIT drawing-board-tree tree-node-collection > div, #RETRY drawing-board-tree tree-node-collection > div { margin-top: 0px; @@ -98,11 +103,54 @@ drawing-board-tree { @include highlight-toggle-children; .node-content-wrapper-focused, .node-content-wrapper-active { + background: transparent !important; + .main-row { + //background-color: #E6F6FB; + //color: #009FDB; + //border-right: none !important; + //border: #009FDB 1px solid; + } + .instance-type { + background-color: #E6F6FB; + color: #009FDB; + border-right: none !important; + border: #009FDB 1px solid !important; + } + + .isLinked { + .model-info { + border-top: 1px #009FDB dashed !important; + border-bottom: 1px #009FDB dashed !important; + } + .model-info.rightBorder { + border-right: 1px #009FDB dashed !important ; + } + } + .model-info { + background-color: #E6F6FB; + color: #009FDB; + border-right: none !important; + border: #009FDB 1px solid; + } + + .model-info.rightBorder { + border-right: #009FDB 1px solid !important; + } + + .model-actions { + background-color: #E6F6FB; + color: #009FDB; + color: #009FDB; + border-left: none !important; + border: #009FDB 1px solid; + } + @include highlight-toggle-children; - @include highlight(#E6F6FB, #009FDB); .property-name,.instance-type { color: #009FDB !important; position: relative; + background-color: #E6F6FB; + color: #009FDB !important; } .status-properties { .status-property-value,.status-property-name { @@ -119,7 +167,7 @@ drawing-board-tree { } & .tree-node-expanded { > tree-node-wrapper .node-wrapper { - box-shadow: 0 0px 2px rgba(90,90,90,0.24); + } } @@ -136,7 +184,7 @@ drawing-board-tree { } .tree-node.tree-node-expanded > tree-node-wrapper{ - box-shadow: 0 2px 2px 0 rgba(0,0,0,.1); + position: relative; z-index: 1; display: block; @@ -146,7 +194,11 @@ drawing-board-tree { height: 45px; &:hover { .node-content-wrapper:not(.node-content-wrapper-focused) { - background: #F2F2F2; + .instance-type , + .model-info , + .model-actions { + background: #F2F2F2; + } .icon-browse:before { color: #5A5A5A; } @@ -164,11 +216,12 @@ drawing-board-tree { display: block; height: 100%; span.toggle-children { + height: 43px; display: flex; width: 45px; + margin-top: 1px; padding: 0; top: 0; - height: inherit; background-image: none; background-color: white; border: 1px solid #D2D2D2; @@ -196,18 +249,44 @@ drawing-board-tree { width:45px; } } + .node-content-wrapper-active, + .node-content-wrapper.node-content-wrapper-active:hover, + .node-content-wrapper-active.node-content-wrapper-focused { + background: white !important; + } + .node-content-wrapper-active.node-content-wrapper-focused { + background: white !important; + } .node-content-wrapper { + padding: 0; background: none; box-shadow: none; border-radius: 0; - border: 1px solid #D2D2D2; + border: 1px solid white; height: 100%; flex: 1; .resourceGroup { border: 1px dashed #D2D2D2 !important; } + + .isLinked { + .instance-type { + border-style: dashed !important; + } + + .model-info { + border: 1px #D2D2CD dashed !important; + border-right: none !important; + } + + .model-actions { + border-style: dashed !important; + border-left-style: none !important; + } + } + tree-node-content { > div { height: 100%; @@ -217,14 +296,18 @@ drawing-board-tree { .instance-type { width: 40px; height: 100%; - padding-top: 16px; text-transform: uppercase; - text-align: center; border-right: 1px solid #D2D2D2; word-break: break-all; color: #959595; font-size: 13px; font-family: OpenSans-SemiBold; + display: flex; + text-align: center; + flex-direction: column; + align-items: center; + justify-content: center; + .newIcon { background: #45B16D; position: absolute; @@ -247,9 +330,42 @@ drawing-board-tree { display: block; } } + .node-content-wrapper-active { + .action-status { + background-color: white !important; + } + } + .action-status { + padding-left: 10px; + background-color: white !important; + line-height: 42px; + width: 95px; + min-width: 95px; + .action-status-type.delete { + background: transparent; + font-family: OpenSans-SemiBold; + font-size: 12px; + color: red; + border-radius: 50px; + border: 1px solid gray; + padding: 5px 20px; + } + } + + .model-info.rightBorder { + border-right: 1px solid #D2D2CD !important; + } .model-info { + border: 1px solid #D2D2CD; + line-height: normal; padding-left: 16px; width: 100%; + height: 100%; + flex-direction: column; + display: flex; + justify-content: center; + border-right: none; + .property-name { font-family: OpenSans-SemiBold; font-size: 13px; @@ -285,9 +401,17 @@ drawing-board-tree { margin-right: 3px; } } + .model-actions { + :hover { + background: transparent !important; + } display: flex; align-items: center; + border: 1px solid #D2D2CD; + line-height: normal; + height: 100%; + border-left: none; .icon-browse { padding: 0; width: 30px; @@ -298,11 +422,11 @@ drawing-board-tree { display: none; } &:hover:before { - color: #009FDB; + //color: #009FDB; } &:focus:before, &:active:before { - color: #009FDB; + //color: #009FDB; } } @@ -319,7 +443,7 @@ drawing-board-tree { .tree-children { padding-left: 45px; .model-info span:first-child { - flex: 1.1 !important; + //flex: 1.1 !important; } } } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.spec.ts index 1b913cfe9..b804342c6 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.spec.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.spec.ts @@ -7,39 +7,39 @@ import {NgRedux} from "@angular-redux/store"; import {DrawingBoardTreeService, TreeNodeContextMenuModel} from "./drawing-board-tree.service"; import {ITreeNode} from "angular-tree-component/dist/defs/api"; - class MockAppStore<T>{ - getState() { +class MockAppStore<T> { + getState() { return { - service : { - serviceInstance : { - "serviceInstanceId" : { - vnfs : { - "vnfStoreKey" : { - isMissingData : true, - vfModules : { - "vfModulesName" : { - "vfModulesName" : { - isMissingData : true - } - } - } - }, - - "vnfStoreKey1" : { - isMissingData : false, - vfModules : { - "vfModulesName" : { - "vfModulesName" : { - isMissingData : false - } - } - } - } - } - } - } - } - } + service: { + serviceInstance: { + "serviceInstanceId": { + vnfs: { + "vnfStoreKey": { + isMissingData: true, + vfModules: { + "vfModulesName": { + "vfModulesName": { + isMissingData: true + } + } + } + }, + + "vnfStoreKey1": { + isMissingData: false, + vfModules: { + "vfModulesName": { + "vfModulesName": { + isMissingData: false + } + } + } + } + } + } + } + } + } } } @@ -65,82 +65,81 @@ describe('Drawing board tree Service', () => { })().then(done).catch(done.fail)); - - test('generateContextMenuOptions should return list of optional context menu', () => { - const options : TreeNodeContextMenuModel[] = service.generateContextMenuOptions(); - const expected : TreeNodeContextMenuModel[] = [ + const options: TreeNodeContextMenuModel[] = service.generateContextMenuOptions(); + const expected: TreeNodeContextMenuModel[] = [ new TreeNodeContextMenuModel('edit', 'context-menu-edit', 'Edit', 'edit-file-o'), new TreeNodeContextMenuModel('duplicate', 'context-menu-duplicate', 'Duplicate', 'copy-o'), new TreeNodeContextMenuModel('showAuditInfo', 'context-menu-showAuditInfo', 'Show audit info', 'eye-o'), new TreeNodeContextMenuModel('addGroupMember', 'context-menu-addGroupMember', 'Add group members', 'plus'), new TreeNodeContextMenuModel('delete', 'context-menu-delete', 'Delete', 'trash-o'), new TreeNodeContextMenuModel('remove', 'context-menu-remove', 'Remove', 'trash-o'), - new TreeNodeContextMenuModel('undoDelete', 'context-menu-undoDelete', 'Undo Delete', 'undo-delete') + new TreeNodeContextMenuModel('undoDelete', 'context-menu-undoDelete', 'Undo Delete', 'undo-delete'), + new TreeNodeContextMenuModel('changeAssociations', 'context-menu-changeAssociations', 'Change Associations', 'edit-file-o') ]; - expect(options.length).toEqual(7); + expect(options.length).toEqual(8); expect(options).toEqual(expected); }); test('isVNFMissingData should return true if vnf isMissingData = true', () => { - let node : ITreeNode = <any>{ - data : { - type : 'VF', - vnfStoreKey : "vnfStoreKey" + let node: ITreeNode = <any>{ + data: { + type: 'VF', + vnfStoreKey: "vnfStoreKey" } }; - let result : boolean = service.isVNFMissingData(node, "serviceInstanceId"); + let result: boolean = service.isVNFMissingData(node, "serviceInstanceId"); expect(result).toBeTruthy(); }); test('isVNFMissingData should return false if vnf has isMissingData = false', () => { - let node : ITreeNode = <any>{ - data : { - type : 'VFModule', - modelName : "vfModulesName", - dynamicModelName : "vfModulesName", - parent : { - vnfStoreKey : "vnfStoreKey1", - type : 'VF' + let node: ITreeNode = <any>{ + data: { + type: 'VFModule', + modelName: "vfModulesName", + dynamicModelName: "vfModulesName", + parent: { + vnfStoreKey: "vnfStoreKey1", + type: 'VF' } } }; - let result : boolean = service.isVNFMissingData(node, "serviceInstanceId"); + let result: boolean = service.isVNFMissingData(node, "serviceInstanceId"); expect(result).toBeFalsy(); }); test('isVFModuleMissingData should return true if vnfModule has isMissingData = true', () => { - let node : ITreeNode = <any>{ - data : { - type : 'VFModule', - modelName : "vfModulesName", - dynamicModelName : "vfModulesName", - parent : { - vnfStoreKey : "vnfStoreKey", - type : 'VF' + let node: ITreeNode = <any>{ + data: { + type: 'VFModule', + modelName: "vfModulesName", + dynamicModelName: "vfModulesName", + parent: { + vnfStoreKey: "vnfStoreKey", + type: 'VF' } } }; - let result : boolean = service.isVFModuleMissingData(node, "serviceInstanceId"); + let result: boolean = service.isVFModuleMissingData(node, "serviceInstanceId"); expect(result).toBeFalsy(); }); test('isVFModuleMissingData should return false if vnfModule has isMissingData = false', () => { - let node : ITreeNode = <any>{ - data : { - type : 'VFModule', - modelName : "vfModulesName", - dynamicModelName : "vfModulesName", - parent : { - vnfStoreKey : "vnfStoreKey1", - type : 'VF' + let node: ITreeNode = <any>{ + data: { + type: 'VFModule', + modelName: "vfModulesName", + dynamicModelName: "vfModulesName", + parent: { + vnfStoreKey: "vnfStoreKey1", + type: 'VF' } } }; - let result : boolean = service.isVFModuleMissingData(node, "serviceInstanceId"); + let result: boolean = service.isVFModuleMissingData(node, "serviceInstanceId"); expect(result).toBeFalsy(); }); diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.ts index 17f761c41..acf622463 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.ts @@ -42,7 +42,8 @@ export class DrawingBoardTreeService { new TreeNodeContextMenuModel('addGroupMember', 'context-menu-addGroupMember', 'Add group members', 'plus'), new TreeNodeContextMenuModel('delete', 'context-menu-delete', 'Delete', 'trash-o'), new TreeNodeContextMenuModel('remove', 'context-menu-remove', 'Remove', 'trash-o'), - new TreeNodeContextMenuModel('undoDelete', 'context-menu-undoDelete', 'Undo Delete', 'undo-delete') + new TreeNodeContextMenuModel('undoDelete', 'context-menu-undoDelete', 'Undo Delete', 'undo-delete'), + new TreeNodeContextMenuModel('changeAssociations', 'context-menu-changeAssociations', 'Change Associations', 'edit-file-o') ]; } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/duplicate/duplicate.service.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/duplicate/duplicate.service.spec.ts index 81251cb1a..3483885b5 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/duplicate/duplicate.service.spec.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/duplicate/duplicate.service.spec.ts @@ -1,8 +1,8 @@ -import { DuplicateService } from './duplicate.service'; -import { LogService } from '../../../shared/utils/log/log.service'; -import { NgRedux } from '@angular-redux/store'; +import {DuplicateService} from './duplicate.service'; +import {LogService} from '../../../shared/utils/log/log.service'; +import {NgRedux} from '@angular-redux/store'; import {ITreeNode} from "angular-tree-component/dist/defs/api"; -import { SdcUiServices} from "onap-ui-angular"; +import {SdcUiServices} from "onap-ui-angular"; import {IModalConfig} from "onap-ui-angular/dist/components/common"; import {AppState} from "../../../shared/store/reducers"; import {getTestBed, TestBed} from "@angular/core/testing"; @@ -121,7 +121,6 @@ describe('Drawing board tree service', () => { }); test('canDuplicate VNF should return true', () => { - sessionStorage.setItem('reduxState' , JSON.stringify({global : { flags : {FLAG_DUPLICATE_VNF : true}}})); let node : ITreeNode = <any> {data : {type : 'VF'}}; let result = service.canDuplicate(node); @@ -129,7 +128,6 @@ describe('Drawing board tree service', () => { }); test('canDuplicate Network should return true', () => { - sessionStorage.setItem('reduxState' , JSON.stringify({global : { flags : {FLAG_DUPLICATE_VNF : true}}})); let node : ITreeNode = <any> {data : {type : 'VL'}}; let result = service.canDuplicate(node); @@ -137,7 +135,6 @@ describe('Drawing board tree service', () => { }); test('canDuplicate VFModule should return false', () => { - sessionStorage.setItem('reduxState' , JSON.stringify({global : { flags : {FLAG_DUPLICATE_VNF : true}}})); let node : ITreeNode = <any> {data : {type : 'VFModule'}}; let result = service.canDuplicate(node); @@ -154,14 +151,14 @@ describe('Drawing board tree service', () => { test('Duplicate multi vnfs should save multi vnfs in redux', () => { service.existingNames = { - "2017488_adiodvpe": "", + "2017488_pasqualevpe": "", "rrr": "", "ttt": "" }; let newVnfs = service.cloneVnf(<any>{ "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2mtlfi": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2mtlfi": { "instanceName": "rrr", "volumeGroupName": "ttt" } @@ -169,17 +166,17 @@ describe('Drawing board tree service', () => { }, "originalName": null, "trackById": "pfs1f0len3", - "instanceName": "2017488_ADIODvPE" - }, "2017-488_ADIOD-vPE 0"); + "instanceName": "2017488_PASQUALEvPE" + }, "2017-488_PASQUALE-vPE 0"); - expect(newVnfs.instanceName).toBe("2017488_ADIODvPE_001"); - expect(newVnfs.vfModules['2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2']['2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2mtlfi'].instanceName).toBe("rrr_001"); - expect(newVnfs.vfModules['2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2']['2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2mtlfi'].volumeGroupName).toBe("ttt_001"); + expect(newVnfs.instanceName).toBe("2017488_PASQUALEvPE_001"); + expect(newVnfs.vfModules['2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2']['2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2mtlfi'].instanceName).toBe("rrr_001"); + expect(newVnfs.vfModules['2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2']['2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2mtlfi'].volumeGroupName).toBe("ttt_001"); newVnfs = service.cloneVnf(<any>{ "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2mtlfi": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2mtlfi": { "instanceName": "rrr", "volumeGroupName": "ttt" } @@ -187,17 +184,17 @@ describe('Drawing board tree service', () => { }, "originalName": null, "trackById": "pfs1f0len3", - "instanceName": "2017488_ADIODvPE" - }, "2017-488_ADIOD-vPE 0"); + "instanceName": "2017488_PASQUALEvPE" + }, "2017-488_PASQUALE-vPE 0"); - expect(newVnfs.instanceName).toBe("2017488_ADIODvPE_002"); - expect(newVnfs.vfModules['2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2']['2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2mtlfi'].instanceName).toBe("rrr_002"); - expect(newVnfs.vfModules['2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2']['2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2mtlfi'].volumeGroupName).toBe("ttt_002"); + expect(newVnfs.instanceName).toBe("2017488_PASQUALEvPE_002"); + expect(newVnfs.vfModules['2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2']['2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2mtlfi'].instanceName).toBe("rrr_002"); + expect(newVnfs.vfModules['2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2']['2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2mtlfi'].volumeGroupName).toBe("ttt_002"); }); test('ensure name is unique - send new name - shouldn\'t change name', () => { service.existingNames = { - "2017488_adiodvpe": "", + "2017488_pasqualevpe": "", "uniqueinstancename": "" }; const name = "uniqueInstanceName-1"; @@ -207,7 +204,7 @@ describe('Drawing board tree service', () => { test('ensure name is unique send existing name should change name', () => { service.existingNames = { - "2017488_adiodvpe": "", + "2017488_pasqualevpe": "", "uniqueinstancename-1": "" }; const name = "uniqueInstanceName-1"; @@ -217,7 +214,7 @@ describe('Drawing board tree service', () => { test('isAlreadyExist - send new name should return false', () => { service.existingNames = { - "2017488_adiodvpe": "", + "2017488_pasqualevpe": "", "uniqueinstancename": "" }; const name = "uniqueinstancename-1"; @@ -227,7 +224,7 @@ describe('Drawing board tree service', () => { test('isAlreadyExist - send existing name should return true', () => { service.existingNames = { - "2017488_adiodvpe": "", + "2017488_pasqualevpe": "", "uniqueinstancename-1": "" }; const name = "uniqueinstancename-1"; @@ -237,7 +234,7 @@ describe('Drawing board tree service', () => { test('isAlreadyExist - send existing name case insensitive should return true', () => { service.existingNames = { - "2017488_adiodvpe": "", + "2017488_pasqualevpe": "", "uniqueinstancename-1": "" }; const name = "uniqueInstanceName-1"; @@ -256,7 +253,7 @@ describe('Drawing board tree service', () => { }); test('generateVNFUniqueName should return the next free number', () => { - const vnfName: string = "VF_vMee 0"; + const vnfName: string = "VF_vGeraldine 0"; let result: string = service.generateUniqueStoreKey( "6e59c5de-f052-46fa-aa7e-2fca9d674c44", vnfName, @@ -380,7 +377,7 @@ describe('Drawing board tree service', () => { }); function getExistingVNFs(){ - return {"VF_vMee 0":{"rollbackOnFailure":"true","vfModules":{"vf_vmee0..VfVmee..vmme_vlc..module-1":{"vf_vmee0..VfVmee..vmme_vlc..module-1dgbxq":{"modelInfo":{"modelInvariantId":"98a7c88b-b577-476a-90e4-e25a5871e02b","modelVersionId":"522159d5-d6e0-4c2a-aa44-5a542a12a830","modelName":"VfVmee..vmme_vlc..module-1","modelVersion":"2","modelCustomizationId":"55b1be94-671a-403e-a26c-667e9c47d091","modelCustomizationName":"VfVmee..vmme_vlc..module-1"},"instanceParams":[{}]}}},"productFamilyId":"17cc1042-527b-11e6-beb8-9e71128cae77","lcpCloudRegionId":"hvf6","tenantId":"bae71557c5bb4d5aac6743a4e5f1d054","lineOfBusiness":"ONAP","platformName":"platform","modelInfo":{"modelInvariantId":"4160458e-f648-4b30-a176-43881ffffe9e","modelVersionId":"d6557200-ecf2-4641-8094-5393ae3aae60","modelName":"VF_vMee","modelVersion":"2.0","modelCustomizationId":"91415b44-753d-494c-926a-456a9172bbb9","modelCustomizationName":"VF_vMee 0"}},"VF_vMee 0:0001":{"rollbackOnFailure":"true","vfModules":{"vf_vmee0..VfVmee..vmme_vlc..module-1":{"vf_vmee0..VfVmee..vmme_vlc..module-1dgbxq":{"modelInfo":{"modelInvariantId":"98a7c88b-b577-476a-90e4-e25a5871e02b","modelVersionId":"522159d5-d6e0-4c2a-aa44-5a542a12a830","modelName":"VfVmee..vmme_vlc..module-1","modelVersion":"2","modelCustomizationId":"55b1be94-671a-403e-a26c-667e9c47d091","modelCustomizationName":"VfVmee..vmme_vlc..module-1"},"instanceParams":[{}]}}},"productFamilyId":"17cc1042-527b-11e6-beb8-9e71128cae77","lcpCloudRegionId":"hvf6","tenantId":"bae71557c5bb4d5aac6743a4e5f1d054","lineOfBusiness":"ONAP","platformName":"platform","modelInfo":{"modelInvariantId":"4160458e-f648-4b30-a176-43881ffffe9e","modelVersionId":"d6557200-ecf2-4641-8094-5393ae3aae60","modelName":"VF_vMee","modelVersion":"2.0","modelCustomizationId":"91415b44-753d-494c-926a-456a9172bbb9","modelCustomizationName":"VF_vMee 0"},"originalName":"VF_vMee 0"},"VF_vMee 0:0002":{"rollbackOnFailure":"true","vfModules":{"vf_vmee0..VfVmee..vmme_vlc..module-1":{"vf_vmee0..VfVmee..vmme_vlc..module-1dgbxq":{"modelInfo":{"modelInvariantId":"98a7c88b-b577-476a-90e4-e25a5871e02b","modelVersionId":"522159d5-d6e0-4c2a-aa44-5a542a12a830","modelName":"VfVmee..vmme_vlc..module-1","modelVersion":"2","modelCustomizationId":"55b1be94-671a-403e-a26c-667e9c47d091","modelCustomizationName":"VfVmee..vmme_vlc..module-1"},"instanceParams":[{}]}}},"productFamilyId":"17cc1042-527b-11e6-beb8-9e71128cae77","lcpCloudRegionId":"hvf6","tenantId":"bae71557c5bb4d5aac6743a4e5f1d054","lineOfBusiness":"ONAP","platformName":"platform","modelInfo":{"modelInvariantId":"4160458e-f648-4b30-a176-43881ffffe9e","modelVersionId":"d6557200-ecf2-4641-8094-5393ae3aae60","modelName":"VF_vMee","modelVersion":"2.0","modelCustomizationId":"91415b44-753d-494c-926a-456a9172bbb9","modelCustomizationName":"VF_vMee 0"},"originalName":"VF_vMee 0"}} + return {"VF_vGeraldine 0":{"rollbackOnFailure":"true","vfModules":{"vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1":{"vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1dgbxq":{"modelInfo":{"modelInvariantId":"98a7c88b-b577-476a-90e4-e25a5871e02b","modelVersionId":"522159d5-d6e0-4c2a-aa44-5a542a12a830","modelName":"VfVgeraldine..vflorence_vlc..module-1","modelVersion":"2","modelCustomizationId":"55b1be94-671a-403e-a26c-667e9c47d091","modelCustomizationName":"VfVgeraldine..vflorence_vlc..module-1"},"instanceParams":[{}]}}},"productFamilyId":"17cc1042-527b-11e6-beb8-9e71128cae77","lcpCloudRegionId":"hvf6","tenantId":"bae71557c5bb4d5aac6743a4e5f1d054","lineOfBusiness":"ONAP","platformName":"platform","modelInfo":{"modelInvariantId":"4160458e-f648-4b30-a176-43881ffffe9e","modelVersionId":"d6557200-ecf2-4641-8094-5393ae3aae60","modelName":"VF_vGeraldine","modelVersion":"2.0","modelCustomizationId":"91415b44-753d-494c-926a-456a9172bbb9","modelCustomizationName":"VF_vGeraldine 0"}},"VF_vGeraldine 0:0001":{"rollbackOnFailure":"true","vfModules":{"vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1":{"vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1dgbxq":{"modelInfo":{"modelInvariantId":"98a7c88b-b577-476a-90e4-e25a5871e02b","modelVersionId":"522159d5-d6e0-4c2a-aa44-5a542a12a830","modelName":"VfVgeraldine..vflorence_vlc..module-1","modelVersion":"2","modelCustomizationId":"55b1be94-671a-403e-a26c-667e9c47d091","modelCustomizationName":"VfVgeraldine..vflorence_vlc..module-1"},"instanceParams":[{}]}}},"productFamilyId":"17cc1042-527b-11e6-beb8-9e71128cae77","lcpCloudRegionId":"hvf6","tenantId":"bae71557c5bb4d5aac6743a4e5f1d054","lineOfBusiness":"ONAP","platformName":"platform","modelInfo":{"modelInvariantId":"4160458e-f648-4b30-a176-43881ffffe9e","modelVersionId":"d6557200-ecf2-4641-8094-5393ae3aae60","modelName":"VF_vGeraldine","modelVersion":"2.0","modelCustomizationId":"91415b44-753d-494c-926a-456a9172bbb9","modelCustomizationName":"VF_vGeraldine 0"},"originalName":"VF_vGeraldine 0"},"VF_vGeraldine 0:0002":{"rollbackOnFailure":"true","vfModules":{"vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1":{"vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1dgbxq":{"modelInfo":{"modelInvariantId":"98a7c88b-b577-476a-90e4-e25a5871e02b","modelVersionId":"522159d5-d6e0-4c2a-aa44-5a542a12a830","modelName":"VfVgeraldine..vflorence_vlc..module-1","modelVersion":"2","modelCustomizationId":"55b1be94-671a-403e-a26c-667e9c47d091","modelCustomizationName":"VfVgeraldine..vflorence_vlc..module-1"},"instanceParams":[{}]}}},"productFamilyId":"17cc1042-527b-11e6-beb8-9e71128cae77","lcpCloudRegionId":"hvf6","tenantId":"bae71557c5bb4d5aac6743a4e5f1d054","lineOfBusiness":"ONAP","platformName":"platform","modelInfo":{"modelInvariantId":"4160458e-f648-4b30-a176-43881ffffe9e","modelVersionId":"d6557200-ecf2-4641-8094-5393ae3aae60","modelName":"VF_vGeraldine","modelVersion":"2.0","modelCustomizationId":"91415b44-753d-494c-926a-456a9172bbb9","modelCustomizationName":"VF_vGeraldine 0"},"originalName":"VF_vGeraldine 0"}} } function getStoreState(){ diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/duplicate/duplicate.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/duplicate/duplicate.service.ts index e695edf86..5fb5f0b15 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/duplicate/duplicate.service.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/duplicate/duplicate.service.ts @@ -1,15 +1,14 @@ -import { Injectable } from '@angular/core'; -import { ITreeNode } from 'angular-tree-component/dist/defs/api'; -import { AppState } from '../../../shared/store/reducers'; -import { LogService } from '../../../shared/utils/log/log.service'; -import { NgRedux } from '@angular-redux/store'; +import {Injectable} from '@angular/core'; +import {ITreeNode} from 'angular-tree-component/dist/defs/api'; +import {AppState} from '../../../shared/store/reducers'; +import {LogService} from '../../../shared/utils/log/log.service'; +import {NgRedux} from '@angular-redux/store'; import {VnfInstance} from "../../../shared/models/vnfInstance"; import {VfModuleMap} from "../../../shared/models/vfModulesMap"; import * as _ from "lodash"; import {DefaultDataGeneratorService} from "../../../shared/services/defaultDataServiceGenerator/default.data.generator.service"; import {TypeNodeInformation} from "../typeNodeInformation.model"; -import { SdcUiServices} from "onap-ui-angular"; -import { SdcUiCommon} from "onap-ui-angular"; +import {SdcUiCommon, SdcUiServices} from "onap-ui-angular"; import {changeInstanceCounter, duplicateBulkInstances} from "../../../shared/storeUtil/utils/general/general.actions"; import {IModalConfig} from "onap-ui-angular/dist/modals/models/modal-config"; @@ -39,7 +38,7 @@ export class DuplicateService { canDuplicate(node: ITreeNode): boolean { let reduxState = <AppState>JSON.parse(sessionStorage.getItem('reduxState')); - return reduxState.global.flags['FLAG_DUPLICATE_VNF'] && (node.data.type === 'VF' || node.data.type === 'VL'); + return node.data.type === 'VF' || node.data.type === 'VL'; } isEnabled(node: ITreeNode, store: NgRedux<AppState>, serviceId : string): boolean { diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/basic.model.info.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/basic.model.info.ts index 51b6cfacb..5ae64376a 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/basic.model.info.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/basic.model.info.ts @@ -1,5 +1,7 @@ import {ITreeNode} from "angular-tree-component/dist/defs/api"; import {AvailableNodeIcons} from "../../available-models-tree/available-models-tree.service"; +import {ComponentInfoModel, ComponentInfoType} from "../../component-info/component-info-model"; +import {ModelInformationItem} from "../../../../shared/components/model-information/model-information.component"; export interface ILevelNodeInfo { /** Name of the key inside the serviceHierarchy object **/ @@ -9,14 +11,13 @@ export interface ILevelNodeInfo { type: string; /** Child name inside the of the serviceHierarchy object (if exist) **/ - childName?: string; - - /** Child type the of object (if exist) **/ - childType?: string; + childNames?: string[]; /** model type name **/ typeName?: string; + componentInfoType? :ComponentInfoType; + /** is instance failed **/ isFailed?: boolean; @@ -86,7 +87,7 @@ export interface ILevelNodeInfo { /************************************ * return child model option object ***********************************/ - getNextLevelObject(): any; + getNextLevelObject(type?:string): any; /*********************************************************** * open popup @@ -116,6 +117,10 @@ export interface ILevelNodeInfo { ************************************************************/ getMenuAction(node: ITreeNode, serviceModelId: string): { [methodName: string]: { method: Function, visible: Function, enable: Function } }; - - onSelectedNode(node : ITreeNode): void + /******************************************************************************************* + * should generate array of node information + * @param model - node model + * @param node - current ITrees node + *****************************************************************************************/ + getInfo?(model, instance): ModelInformationItem[]; } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/collectionResource/collectionResource.model.info.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/collectionResource/collectionResource.model.info.spec.ts new file mode 100644 index 000000000..f8ce819f7 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/collectionResource/collectionResource.model.info.spec.ts @@ -0,0 +1,1207 @@ +import {HttpClientTestingModule} from "@angular/common/http/testing"; +import {getTestBed, TestBed} from "@angular/core/testing"; +import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing"; +import {DynamicInputsService} from "../../dynamicInputs.service"; +import {SharedTreeService} from "../../shared.tree.service"; +import {NgRedux} from "@angular-redux/store"; +import {AppState} from "../../../../../shared/store/reducers"; +import {DuplicateService} from "../../../duplicate/duplicate.service"; +import {IframeService} from "../../../../../shared/utils/iframe.service"; +import {ComponentInfoService} from "../../../component-info/component-info.service"; +import {AaiService} from "../../../../../shared/services/aaiService/aai.service"; +import {HttpClient, HttpHandler} from "@angular/common/http"; +import {FeatureFlagsService} from "../../../../../shared/services/featureFlag/feature-flags.service"; +import {CollectionResourceModelInfo} from "./collectionResource.model.info"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; +import {CollectionResourceModel} from "../../../../../shared/models/collectionResourceModel"; +import {NcfModelInfo} from "../ncf/ncf.model.info"; + +describe('Collection Resource Model Info', () => { + let injector; + let _componentInfoService : ComponentInfoService; + + let _store : NgRedux<AppState>; + let collectionResourceModel: CollectionResourceModelInfo; + let _sharedTreeService : SharedTreeService; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule, NgReduxTestingModule], + providers: [ + MockNgRedux, + DynamicInputsService, + SharedTreeService, + DuplicateService, + AaiService, + HttpClient, + HttpHandler, + FeatureFlagsService, + ComponentInfoService, + IframeService] + }).compileComponents(); + + injector = getTestBed(); + _store = injector.get(NgRedux); + _componentInfoService = injector.get(ComponentInfoService); + + collectionResourceModel = new CollectionResourceModelInfo(_store, _sharedTreeService); + + + }); + + test('collection resource should be defined', () => { + expect(collectionResourceModel).toBeDefined(); + }); + + test('collectionResourceModel should defined extra details', () => { + expect(collectionResourceModel.name).toEqual('collectionResources'); + expect(collectionResourceModel.type).toEqual('collection Resource'); + expect(collectionResourceModel.childNames).toEqual(['ncfs']); + expect(collectionResourceModel.componentInfoType).toEqual(ComponentInfoType.COLLECTION_RESOURCE); + }); + + test('isEcompGeneratedNaming should return false', () => { + let isEcompGeneratedNaming: boolean = collectionResourceModel.isEcompGeneratedNaming(<any>{}); + expect(isEcompGeneratedNaming).toBeFalsy(); + }); + + + test('getTooltip should return "Collection Resource"', () => { + let tooltip: string = collectionResourceModel.getTooltip(); + expect(tooltip).toEqual('Collection Resource'); + }); + + test('getType should return "collectionResources"', () => { + let tooltip: string = collectionResourceModel.getType(); + expect(tooltip).toEqual('collectionResource'); + }); + + test('getNextLevelObject should return ncfs', () => { + let nextLevel: NcfModelInfo = collectionResourceModel.getNextLevelObject(); + expect(nextLevel.type).toEqual('NCF'); + }); + + test('getModel should return collectionResource model', () => { + let model: CollectionResourceModel = collectionResourceModel.getModel('CR_sanity 0', <any>{ + originalName : 'CR_sanity 0' + }, getServiceHierarchy()); + expect(model.type).toEqual('CR'); + }); + + test('cr getMenuAction: delete', ()=>{ + let node = {}; + let serviceModelId = 'serviceModelId'; + let result = collectionResourceModel.getMenuAction(<any>node, serviceModelId); + spyOn(result['delete'], 'method'); + expect(result['delete']).toBeDefined(); + expect(result['delete'].visible()).toBeFalsy(); + expect(result['delete'].enable()).toBeFalsy(); + result['delete']['method'](node, serviceModelId); + expect(result['delete']['method']).toHaveBeenCalledWith(node, serviceModelId); + }); + + function getServiceHierarchy(){ + return { + "service": { + "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450", + "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0", + "name": "action-data", + "version": "1.0", + "toscaModelURL": null, + "category": "", + "serviceType": "", + "serviceRole": "", + "description": "", + "serviceEcompNaming": "false", + "instantiationType": "Macro", + "inputs": { + "2017488_pasqualevpe0_ASN": { + "type": "string", + "description": "AV/PE", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "AV_vPE" + } + }, + "vidNotions": { + "instantiationUI": "legacy", + "modelCategory": "other" + } + }, + "collectionResources": { + "CR_sanity 0": { + "uuid": "3467f91f-1a2a-4013-a5ed-8ad99d4e06ad", + "invariantUuid": "d0060da6-82b8-4ca0-9758-5eb2b111b926", + "description": "CR_sanity", + "name": "CR_sanity", + "version": "1.0", + "customizationUuid": "7160c618-9314-4c09-8717-b77f3d29d946", + "inputs": {}, + "commands": {}, + "properties": { + "cr_sanity..Fixed..0_quantity": "10", + "cr_sanity..NetworkCollection..0_network_collection_function": "ABCD", + "ecomp_generated_naming": "false", + "cr_sanity..NetworkCollection..0_network_collection_description": "ABCD" + }, + "type": "CR", + "category": "Network L2-3", + "subcategory": "Infrastructure", + "resourceVendor": "ATT", + "resourceVendorRelease": "2018.06", + "resourceVendorModelNumber": "", + "customizationUUID": "7160c618-9314-4c09-8717-b77f3d29d946", + "networksCollection": { + "cr_sanity..NetworkCollection..0": { + "uuid": "445d7fa8-3e59-4606-bd76-30ba5fc677d3", + "invariantUuid": "9dc623b8-0ae8-47ad-a791-a21b8d8e94a8", + "name": "cr_sanity..NetworkCollection..0", + "version": "1", + "networkCollectionProperties": { + "networkCollectionFunction": "ABCD", + "networkCollectionDescription": "ABCD" + } + } + } + } + }, + "vnfs": { + "2017-388_PASQUALE-vPE 1": { + "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413", + "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", + "version": "1.0", + "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a", + "inputs": { + "vnf_config_template_version": { + "type": "string", + "description": "VPE Software Version", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "17.2" + }, + "bandwidth_units": { + "type": "string", + "description": "Units of bandwidth", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "Gbps" + }, + "bandwidth": { + "type": "string", + "description": "Requested VPE bandwidth", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "10" + }, + "AIC_CLLI": { + "type": "string", + "description": "AIC Site CLLI", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "ATLMY8GA" + }, + "ASN": { + "type": "string", + "description": "AV/PE", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "AV_vPE" + }, + "vnf_instance_name": { + "type": "string", + "description": "The hostname assigned to the vpe.", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "mtnj309me6" + } + }, + "commands": { + "vnf_config_template_version": { + "displayName": "vnf_config_template_version", + "command": "get_input", + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" + }, + "bandwidth_units": { + "displayName": "bandwidth_units", + "command": "get_input", + "inputName": "pasqualevpe0_bandwidth_units" + }, + "bandwidth": { + "displayName": "bandwidth", + "command": "get_input", + "inputName": "pasqualevpe0_bandwidth" + }, + "AIC_CLLI": { + "displayName": "AIC_CLLI", + "command": "get_input", + "inputName": "2017488_pasqualevpe0_AIC_CLLI" + }, + "ASN": { + "displayName": "ASN", + "command": "get_input", + "inputName": "2017488_pasqualevpe0_ASN" + }, + "vnf_instance_name": { + "displayName": "vnf_instance_name", + "command": "get_input", + "inputName": "2017488_pasqualevpe0_vnf_instance_name" + } + }, + "properties": { + "vmxvre_retype": "RE-VMX", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", + "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", + "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", + "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", + "int_ctl_net_name": "VMX-INTXI", + "vmx_int_ctl_prefix": "10.0.0.10", + "sriov43_net_id": "da349ca1-6de9-4548-be88-2d88e99bfef5", + "sriov42_net_id": "760669ba-013d-4d9b-b0e7-4151fe2e6279", + "sriov41_net_id": "25ad52d5-c165-40f8-b3b0-ddfc2373280a", + "nf_type": "vPE", + "vmxvpfe_int_ctl_ip_1": "10.0.0.10", + "is_AVPN_service": "false", + "vmx_RSG_name": "vREXI-affinity", + "vmx_int_ctl_forwarding": "l2", + "vmxvre_oam_ip_0": "10.0.0.10", + "vmxvpfe_sriov44_0_port_mac": "00:11:22:EF:AC:DF", + "vmxvpfe_sriov41_0_port_vlanstrip": "false", + "vmxvpfe_sriov42_0_port_vlanfilter": "4001", + "vmxvpfe_sriov44_0_port_unknownunicastallow": "true", + "vmxvre_image_name_0": "VRE-ENGINE_17.2-S2.1.qcow2", + "vmxvre_instance": "0", + "vmxvpfe_sriov43_0_port_mac": "00:11:22:EF:AC:DF", + "vmxvre_flavor_name": "ns.c1r16d32.v5", + "vmxvpfe_volume_size_0": "40.0", + "vmxvpfe_sriov43_0_port_vlanfilter": "4001", + "nf_naming": "{ecomp_generated_naming=false}", + "nf_naming_code": "Navneet", + "vmxvre_name_0": "vREXI", + "vmxvpfe_sriov42_0_port_vlanstrip": "false", + "vmxvpfe_volume_name_0": "vPFEXI_FBVolume", + "vmx_RSG_id": "bd89a33c-13c3-4a04-8fde-1a57eb123141", + "vmxvpfe_image_name_0": "VPE_ROUTING-ENGINE_17.2R1-S2.1.qcow2", + "vmxvpfe_sriov43_0_port_unknownunicastallow": "true", + "vmxvpfe_sriov44_0_port_unknownmulticastallow": "true", + "vmxvre_console": "vidconsole", + "vmxvpfe_sriov44_0_port_vlanfilter": "4001", + "vmxvpfe_sriov42_0_port_mac": "00:11:22:EF:AC:DF", + "vmxvpfe_volume_id_0": "47cede15-da2f-4397-a101-aa683220aff3", + "vmxvpfe_sriov42_0_port_unknownmulticastallow": "true", + "vmxvpfe_sriov44_0_port_vlanstrip": "false", + "vf_module_id": "123", + "nf_function": "JAI", + "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", + "vmxvre_int_ctl_ip_0": "10.0.0.10", + "ecomp_generated_naming": "false", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", + "vnf_name": "mtnj309me6vre", + "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", + "vmxvre_volume_type_1": "HITACHI", + "vmxvpfe_sriov44_0_port_broadcastallow": "true", + "vmxvre_volume_type_0": "HITACHI", + "vmxvpfe_volume_type_0": "HITACHI", + "vmxvpfe_sriov43_0_port_broadcastallow": "true", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", + "vnf_id": "123", + "vmxvre_oam_prefix": "24", + "availability_zone_0": "mtpocfo-kvm-az01", + "ASN": "get_input:2017488_pasqualevpe0_ASN", + "vmxvre_chassis_i2cid": "161", + "vmxvpfe_name_0": "vPFEXI", + "bandwidth": "get_input:pasqualevpe0_bandwidth", + "availability_zone_max_count": "1", + "vmxvre_volume_size_0": "45.0", + "vmxvre_volume_size_1": "50.0", + "vmxvpfe_sriov42_0_port_broadcastallow": "true", + "vmxvre_oam_gateway": "10.0.0.10", + "vmxvre_volume_name_1": "vREXI_FAVolume", + "vmxvre_ore_present": "0", + "vmxvre_volume_name_0": "vREXI_FBVolume", + "vmxvre_type": "0", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", + "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", + "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", + "vmx_int_ctl_len": "24", + "vmxvpfe_sriov43_0_port_vlanstrip": "false", + "vmxvpfe_sriov41_0_port_broadcastallow": "true", + "vmxvre_volume_id_1": "6e86797e-03cd-4fdc-ba72-2957119c746d", + "vmxvpfe_sriov41_0_port_vlanfilter": "4001", + "nf_role": "Testing", + "vmxvre_volume_id_0": "f4eacb79-f687-4e9d-b760-21847c8bb15a", + "vmxvpfe_sriov42_0_port_unknownunicastallow": "true", + "vmxvpfe_flavor_name": "ns.c20r16d25.v5" + }, + "type": "VF", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", + "vfModules": {}, + "volumeGroups": {}, + "vfcInstanceGroups": {} + }, + "2017-388_PASQUALE-vPE 0": { + "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168", + "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", + "version": "4.0", + "customizationUuid": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", + "inputs": { + "vnf_config_template_version": { + "type": "string", + "description": "VPE Software Version", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "17.2" + }, + "bandwidth_units": { + "type": "string", + "description": "Units of bandwidth", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "Gbps" + }, + "bandwidth": { + "type": "string", + "description": "Requested VPE bandwidth", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "10" + }, + "AIC_CLLI": { + "type": "string", + "description": "AIC Site CLLI", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "ATLMY8GA" + }, + "ASN": { + "type": "string", + "description": "AV/PE", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "AV_vPE" + }, + "vnf_instance_name": { + "type": "string", + "description": "The hostname assigned to the vpe.", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "mtnj309me6" + } + }, + "commands": { + "vnf_config_template_version": { + "displayName": "vnf_config_template_version", + "command": "get_input", + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" + }, + "bandwidth_units": { + "displayName": "bandwidth_units", + "command": "get_input", + "inputName": "pasqualevpe0_bandwidth_units" + }, + "bandwidth": { + "displayName": "bandwidth", + "command": "get_input", + "inputName": "pasqualevpe0_bandwidth" + }, + "AIC_CLLI": { + "displayName": "AIC_CLLI", + "command": "get_input", + "inputName": "2017488_pasqualevpe0_AIC_CLLI" + }, + "ASN": { + "displayName": "ASN", + "command": "get_input", + "inputName": "2017488_pasqualevpe0_ASN" + }, + "vnf_instance_name": { + "displayName": "vnf_instance_name", + "command": "get_input", + "inputName": "2017488_pasqualevpe0_vnf_instance_name" + } + }, + "properties": { + "vmxvre_retype": "RE-VMX", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", + "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", + "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", + "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", + "int_ctl_net_name": "VMX-INTXI", + "vmx_int_ctl_prefix": "10.0.0.10", + "sriov43_net_id": "da349ca1-6de9-4548-be88-2d88e99bfef5", + "sriov42_net_id": "760669ba-013d-4d9b-b0e7-4151fe2e6279", + "sriov41_net_id": "25ad52d5-c165-40f8-b3b0-ddfc2373280a", + "nf_type": "vPE", + "vmxvpfe_int_ctl_ip_1": "10.0.0.10", + "is_AVPN_service": "false", + "vmx_RSG_name": "vREXI-affinity", + "vmx_int_ctl_forwarding": "l2", + "vmxvre_oam_ip_0": "10.0.0.10", + "vmxvpfe_sriov44_0_port_mac": "00:11:22:EF:AC:DF", + "vmxvpfe_sriov41_0_port_vlanstrip": "false", + "vmxvpfe_sriov42_0_port_vlanfilter": "4001", + "vmxvpfe_sriov44_0_port_unknownunicastallow": "true", + "vmxvre_image_name_0": "VRE-ENGINE_17.2-S2.1.qcow2", + "vmxvre_instance": "0", + "vmxvpfe_sriov43_0_port_mac": "00:11:22:EF:AC:DF", + "vmxvre_flavor_name": "ns.c1r16d32.v5", + "vmxvpfe_volume_size_0": "40.0", + "vmxvpfe_sriov43_0_port_vlanfilter": "4001", + "nf_naming": "{ecomp_generated_naming=false}", + "nf_naming_code": "Navneet", + "vmxvre_name_0": "vREXI", + "vmxvpfe_sriov42_0_port_vlanstrip": "false", + "vmxvpfe_volume_name_0": "vPFEXI_FBVolume", + "vmx_RSG_id": "bd89a33c-13c3-4a04-8fde-1a57eb123141", + "vmxvpfe_image_name_0": "VPE_ROUTING-ENGINE_17.2R1-S2.1.qcow2", + "vmxvpfe_sriov43_0_port_unknownunicastallow": "true", + "vmxvpfe_sriov44_0_port_unknownmulticastallow": "true", + "vmxvre_console": "vidconsole", + "vmxvpfe_sriov44_0_port_vlanfilter": "4001", + "vmxvpfe_sriov42_0_port_mac": "00:11:22:EF:AC:DF", + "vmxvpfe_volume_id_0": "47cede15-da2f-4397-a101-aa683220aff3", + "vmxvpfe_sriov42_0_port_unknownmulticastallow": "true", + "min_instances": "1", + "vmxvpfe_sriov44_0_port_vlanstrip": "false", + "vf_module_id": "123", + "nf_function": "JAI", + "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", + "vmxvre_int_ctl_ip_0": "10.0.0.10", + "ecomp_generated_naming": "false", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", + "vnf_name": "mtnj309me6vre", + "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", + "vmxvre_volume_type_1": "HITACHI", + "vmxvpfe_sriov44_0_port_broadcastallow": "true", + "vmxvre_volume_type_0": "HITACHI", + "vmxvpfe_volume_type_0": "HITACHI", + "vmxvpfe_sriov43_0_port_broadcastallow": "true", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", + "vnf_id": "123", + "vmxvre_oam_prefix": "24", + "availability_zone_0": "mtpocfo-kvm-az01", + "ASN": "get_input:2017488_pasqualevpe0_ASN", + "vmxvre_chassis_i2cid": "161", + "vmxvpfe_name_0": "vPFEXI", + "bandwidth": "get_input:pasqualevpe0_bandwidth", + "availability_zone_max_count": "1", + "vmxvre_volume_size_0": "45.0", + "vmxvre_volume_size_1": "50.0", + "vmxvpfe_sriov42_0_port_broadcastallow": "true", + "vmxvre_oam_gateway": "10.0.0.10", + "vmxvre_volume_name_1": "vREXI_FAVolume", + "vmxvre_ore_present": "0", + "vmxvre_volume_name_0": "vREXI_FBVolume", + "vmxvre_type": "0", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", + "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", + "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", + "vmx_int_ctl_len": "24", + "vmxvpfe_sriov43_0_port_vlanstrip": "false", + "vmxvpfe_sriov41_0_port_broadcastallow": "true", + "vmxvre_volume_id_1": "6e86797e-03cd-4fdc-ba72-2957119c746d", + "vmxvpfe_sriov41_0_port_vlanfilter": "4001", + "nf_role": "Testing", + "vmxvre_volume_id_0": "f4eacb79-f687-4e9d-b760-21847c8bb15a", + "vmxvpfe_sriov42_0_port_unknownunicastallow": "true", + "vmxvpfe_flavor_name": "ns.c20r16d25.v5" + }, + "type": "VF", + "modelCustomizationName": "2017-388_PASQUALE-vPE 0", + "vfModules": {}, + "volumeGroups": {}, + "vfcInstanceGroups": {} + }, + "2017-488_PASQUALE-vPE 0": { + "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", + "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-488_PASQUALE-vPE", + "version": "5.0", + "customizationUuid": "1da7b585-5e61-4993-b95e-8e6606c81e45", + "inputs": { + "vnf_config_template_version": { + "type": "string", + "description": "VPE Software Version", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "17.2" + }, + "bandwidth_units": { + "type": "string", + "description": "Units of bandwidth", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "Gbps" + }, + "bandwidth": { + "type": "string", + "description": "Requested VPE bandwidth", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "10" + }, + "AIC_CLLI": { + "type": "string", + "description": "AIC Site CLLI", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "ATLMY8GA" + }, + "ASN": { + "type": "string", + "description": "AV/PE", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "AV_vPE" + }, + "vnf_instance_name": { + "type": "string", + "description": "The hostname assigned to the vpe.", + "entry_schema": null, + "inputProperties": null, + "constraints": [], + "required": true, + "default": "mtnj309me6" + } + }, + "commands": { + "vnf_config_template_version": { + "displayName": "vnf_config_template_version", + "command": "get_input", + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" + }, + "bandwidth_units": { + "displayName": "bandwidth_units", + "command": "get_input", + "inputName": "pasqualevpe0_bandwidth_units" + }, + "bandwidth": { + "displayName": "bandwidth", + "command": "get_input", + "inputName": "pasqualevpe0_bandwidth" + }, + "AIC_CLLI": { + "displayName": "AIC_CLLI", + "command": "get_input", + "inputName": "2017488_pasqualevpe0_AIC_CLLI" + }, + "ASN": { + "displayName": "ASN", + "command": "get_input", + "inputName": "2017488_pasqualevpe0_ASN" + }, + "vnf_instance_name": { + "displayName": "vnf_instance_name", + "command": "get_input", + "inputName": "2017488_pasqualevpe0_vnf_instance_name" + } + }, + "properties": { + "vmxvre_retype": "RE-VMX", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", + "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", + "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", + "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", + "int_ctl_net_name": "VMX-INTXI", + "vmx_int_ctl_prefix": "10.0.0.10", + "sriov43_net_id": "da349ca1-6de9-4548-be88-2d88e99bfef5", + "sriov42_net_id": "760669ba-013d-4d9b-b0e7-4151fe2e6279", + "sriov41_net_id": "25ad52d5-c165-40f8-b3b0-ddfc2373280a", + "nf_type": "vPE", + "vmxvpfe_int_ctl_ip_1": "10.0.0.10", + "is_AVPN_service": "false", + "vmx_RSG_name": "vREXI-affinity", + "vmx_int_ctl_forwarding": "l2", + "vmxvre_oam_ip_0": "10.0.0.10", + "vmxvpfe_sriov44_0_port_mac": "00:11:22:EF:AC:DF", + "vmxvpfe_sriov41_0_port_vlanstrip": "false", + "vmxvpfe_sriov42_0_port_vlanfilter": "4001", + "vmxvpfe_sriov44_0_port_unknownunicastallow": "true", + "vmxvre_image_name_0": "VRE-ENGINE_17.2-S2.1.qcow2", + "vmxvre_instance": "0", + "vmxvpfe_sriov43_0_port_mac": "00:11:22:EF:AC:DF", + "vmxvre_flavor_name": "ns.c1r16d32.v5", + "vmxvpfe_volume_size_0": "40.0", + "vmxvpfe_sriov43_0_port_vlanfilter": "4001", + "nf_naming": "{ecomp_generated_naming=false}", + "nf_naming_code": "Navneet", + "vmxvre_name_0": "vREXI", + "vmxvpfe_sriov42_0_port_vlanstrip": "false", + "vmxvpfe_volume_name_0": "vPFEXI_FBVolume", + "max_instances": "3", + "vmx_RSG_id": "bd89a33c-13c3-4a04-8fde-1a57eb123141", + "vmxvpfe_image_name_0": "VPE_ROUTING-ENGINE_17.2R1-S2.1.qcow2", + "vmxvpfe_sriov43_0_port_unknownunicastallow": "true", + "vmxvpfe_sriov44_0_port_unknownmulticastallow": "true", + "vmxvre_console": "vidconsole", + "vmxvpfe_sriov44_0_port_vlanfilter": "4001", + "vmxvpfe_sriov42_0_port_mac": "00:11:22:EF:AC:DF", + "vmxvpfe_volume_id_0": "47cede15-da2f-4397-a101-aa683220aff3", + "vmxvpfe_sriov42_0_port_unknownmulticastallow": "true", + "min_instances": "1", + "vmxvpfe_sriov44_0_port_vlanstrip": "false", + "vf_module_id": "123", + "nf_function": "JAI", + "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", + "vmxvre_int_ctl_ip_0": "10.0.0.10", + "ecomp_generated_naming": "false", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", + "vnf_name": "mtnj309me6vre", + "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", + "vmxvre_volume_type_1": "HITACHI", + "vmxvpfe_sriov44_0_port_broadcastallow": "true", + "vmxvre_volume_type_0": "HITACHI", + "vmxvpfe_volume_type_0": "HITACHI", + "vmxvpfe_sriov43_0_port_broadcastallow": "true", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", + "vnf_id": "123", + "vmxvre_oam_prefix": "24", + "availability_zone_0": "mtpocfo-kvm-az01", + "ASN": "get_input:2017488_pasqualevpe0_ASN", + "vmxvre_chassis_i2cid": "161", + "vmxvpfe_name_0": "vPFEXI", + "bandwidth": "get_input:pasqualevpe0_bandwidth", + "availability_zone_max_count": "1", + "vmxvre_volume_size_0": "45.0", + "vmxvre_volume_size_1": "50.0", + "vmxvpfe_sriov42_0_port_broadcastallow": "true", + "vmxvre_oam_gateway": "10.0.0.10", + "vmxvre_volume_name_1": "vREXI_FAVolume", + "vmxvre_ore_present": "0", + "vmxvre_volume_name_0": "vREXI_FBVolume", + "vmxvre_type": "0", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", + "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", + "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", + "vmx_int_ctl_len": "24", + "vmxvpfe_sriov43_0_port_vlanstrip": "false", + "vmxvpfe_sriov41_0_port_broadcastallow": "true", + "vmxvre_volume_id_1": "6e86797e-03cd-4fdc-ba72-2957119c746d", + "vmxvpfe_sriov41_0_port_vlanfilter": "4001", + "nf_role": "Testing", + "vmxvre_volume_id_0": "f4eacb79-f687-4e9d-b760-21847c8bb15a", + "vmxvpfe_sriov42_0_port_unknownunicastallow": "true", + "vmxvpfe_flavor_name": "ns.c20r16d25.v5" + }, + "type": "VF", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", + "vfModules": { + "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", + "description": null, + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", + "version": "6", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", + "properties": { + "minCountInstances": 0, + "maxCountInstances": null, + "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" + } + }, + "volumeGroupAllowed": true + }, + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { + "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", + "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", + "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", + "description": null, + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", + "version": "5", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", + "properties": { + "minCountInstances": 1, + "maxCountInstances": 1, + "initialCount": 1, + "vfModuleLabel": "PASQUALE_base_vPE_BV", + "baseModule": true + }, + "inputs": {}, + "volumeGroupAllowed": false + }, + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { + "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", + "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", + "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", + "description": null, + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", + "version": "6", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", + "properties": { + "minCountInstances": 0, + "maxCountInstances": null, + "initialCount": 0, + "vfModuleLabel": "PASQUALE_vPFE_BV", + "baseModule": false + }, + "inputs": {}, + "volumeGroupAllowed": true + } + }, + "volumeGroups": { + "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", + "description": null, + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", + "version": "6", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", + "properties": { + "minCountInstances": 0, + "maxCountInstances": null, + "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" + } + } + }, + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { + "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", + "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", + "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", + "description": null, + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", + "version": "6", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", + "properties": { + "minCountInstances": 0, + "maxCountInstances": null, + "initialCount": 0, + "vfModuleLabel": "PASQUALE_vPFE_BV", + "baseModule": false + }, + "inputs": {} + } + }, + "vfcInstanceGroups": {} + } + }, + "networks": {}, + "configurations": {}, + "fabricConfigurations": {}, + "serviceProxies": {}, + "vfModules": { + "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", + "description": null, + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", + "version": "6", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", + "properties": { + "minCountInstances": 0, + "maxCountInstances": null, + "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" + } + }, + "volumeGroupAllowed": true + }, + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { + "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", + "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", + "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", + "description": null, + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", + "version": "5", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", + "properties": { + "minCountInstances": 1, + "maxCountInstances": 1, + "initialCount": 1, + "vfModuleLabel": "PASQUALE_base_vPE_BV", + "baseModule": true + }, + "inputs": {}, + "volumeGroupAllowed": false + }, + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { + "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", + "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", + "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", + "description": null, + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", + "version": "6", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", + "properties": { + "minCountInstances": 0, + "maxCountInstances": null, + "initialCount": 0, + "vfModuleLabel": "PASQUALE_vPFE_BV", + "baseModule": false + }, + "inputs": {}, + "volumeGroupAllowed": true + } + }, + "volumeGroups": { + "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", + "description": null, + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", + "version": "6", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", + "properties": { + "minCountInstances": 0, + "maxCountInstances": null, + "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" + } + } + }, + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { + "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", + "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", + "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", + "description": null, + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", + "version": "6", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", + "properties": { + "minCountInstances": 0, + "maxCountInstances": null, + "initialCount": 0, + "vfModuleLabel": "PASQUALE_vPFE_BV", + "baseModule": false + }, + "inputs": {} + } + }, + "pnfs": {} + } + } + +}); diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/collectionResource/collectionResource.model.info.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/collectionResource/collectionResource.model.info.ts new file mode 100644 index 000000000..564e04bc2 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/collectionResource/collectionResource.model.info.ts @@ -0,0 +1,102 @@ +import {ILevelNodeInfo} from "../basic.model.info"; +import {ITreeNode} from "angular-tree-component/dist/defs/api"; +import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; +import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; +import {CollectionResourceTreeNode} from "../../../../../shared/models/collectionResourceTreeNode"; +import {CollectionResourceInstance} from "../../../../../shared/models/collectionResourceInstance"; +import {CollectionResourceModel} from "../../../../../shared/models/collectionResourceModel"; +import * as _ from 'lodash'; +import {NcfModelInfo} from "../ncf/ncf.model.info"; + +import {NgRedux} from "@angular-redux/store"; +import {AppState} from "../../../../../shared/store/reducers"; +import {deleteActionCrInstance, undoDeleteActionCrInstance} from "../../../../../shared/storeUtil/utils/cr/cr.actions"; +import {SharedTreeService} from "../../shared.tree.service"; + +export class CollectionResourceModelInfo implements ILevelNodeInfo{ + constructor(private _store: NgRedux<AppState>,private _sharedTreeService: SharedTreeService){ + } + name: string = 'collectionResources'; + type : string = 'collection Resource'; + typeName : string = 'CR'; + childNames: string[] = ['ncfs']; + componentInfoType = ComponentInfoType.COLLECTION_RESOURCE; + + + isEcompGeneratedNaming(currentModel): boolean {return false; } + + updateDynamicInputsDataFromModel = (currentModel): any => []; + + getModel = (collectionResourceModelId: string, instance: CollectionResourceInstance, serviceHierarchy): CollectionResourceModel => { + const originalModelName = instance.originalName ? instance.originalName : collectionResourceModelId; + return new CollectionResourceModel(serviceHierarchy[this.name][originalModelName]); + }; + + + createInstanceTreeNode = (instance: CollectionResourceInstance, model: CollectionResourceModel, parentModel, storeKey: string): CollectionResourceTreeNode => { + let node = new CollectionResourceTreeNode(instance, model, storeKey); + node.missingData = this.hasMissingData(instance, node, model.isEcompGeneratedNaming); + node.typeName = this.typeName; + node.menuActions = this.getMenuAction(<any>node, model.uuid); + node.isFailed = _.isNil(instance.isFailed) ? false : instance.isFailed; + node.statusMessage = !_.isNil(instance.statusMessage) ? instance.statusMessage : ""; + return node; + }; + + getNextLevelObject = (): any => { + return new NcfModelInfo(this._store); + } + + getTooltip = (): string => 'Collection Resource'; + + getType = (): string => 'collectionResource'; + + hasMissingData(instance, dynamicInputs: any, isEcompGeneratedNaming: boolean): boolean {return false; } + + onClickAdd(node, serviceModelId: string): void { } + + getNodeCount(node: ITreeNode, serviceModelId: string): number {return 0;} + + showNodeIcons(node: ITreeNode, serviceModelId: string): AvailableNodeIcons { return null;} + + getMenuAction(node: ITreeNode, serviceModelId: string): { [methodName: string]: { method: Function, visible: Function, enable: Function } } { + return <any>{ + delete: { + method: (node, serviceModelId) => { + if ((!_.isNil(node.data.children) && node.data.children.length === 0) || _.isNil(node.data.children)) { + this._store.dispatch(deleteActionCrInstance(node.data.collectionResourceStoreKey, serviceModelId)); + } + else { + this._sharedTreeService.removeDeleteAllChild(node, serviceModelId, (node, serviceModelId) => { + this._store.dispatch(deleteActionCrInstance(node.data.collectionResourceStoreKey, serviceModelId)); + }) + }}, + visible: (node) => false, + enable: (node) => false + }, + undoDelete: { + method: (node, serviceModelId) => { + if ((!_.isNil(node.data.children) && node.data.children.length === 0) || _.isNil(node.data.children)) { + this._store.dispatch(undoDeleteActionCrInstance(node.data.collectionResourceStoreKey, serviceModelId)); + } + else { + this._sharedTreeService.undoDeleteAllChild(node, serviceModelId, (node, serviceModelId) => { + this._store.dispatch(undoDeleteActionCrInstance(node.data.collectionResourceStoreKey, serviceModelId)); + }) + } + + }, + visible: (node) => (node) => false, + enable: (node) => (node) => false + } + + }; + } + + updatePosition(that , node, instanceId): void {} + + getNodePosition(instance): number { return 0; } + + getInfo(model, instance): ModelInformationItem[] {return [];} +} diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/configuration/configuration.model.info.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/configuration/configuration.model.info.spec.ts index d99ec3bc6..6b67de6aa 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/configuration/configuration.model.info.spec.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/configuration/configuration.model.info.spec.ts @@ -50,7 +50,7 @@ describe('Vnf Model Info', () => { test('getModel should return Configuration model', () => { let configurationModelInfo: ConfigurationModelInfo = new ConfigurationModelInfo(_dynamicInputsService, _sharedTreeService); - let model = configurationModelInfo.getModel('2017-388_ADIOD-vPE 1__configuration', getServiceHierarchy()); + let model = configurationModelInfo.getModel('2017-388_PASQUALE-vPE 1__configuration', getServiceHierarchy()); expect(model.uuid).toEqual('0903e1c0-8e03-4936-b5c2-260653b96413'); }); @@ -70,7 +70,7 @@ describe('Vnf Model Info', () => { "serviceEcompNaming": "false", "instantiationType": "Macro", "inputs": { - "2017488_adiodvpe0_ASN": { + "2017488_pasqualevpe0_ASN": { "type": "string", "description": "AV/PE", "entry_schema": null, @@ -86,11 +86,11 @@ describe('Vnf Model Info', () => { } }, "vnfs": { - "2017-388_ADIOD-vPE 1": { + "2017-388_PASQUALE-vPE 1": { "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413", "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "1.0", "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a", "inputs": { @@ -153,37 +153,37 @@ describe('Vnf Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -228,7 +228,7 @@ describe('Vnf Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -236,14 +236,14 @@ describe('Vnf Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -253,7 +253,7 @@ describe('Vnf Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -267,16 +267,16 @@ describe('Vnf Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-388_ADIOD-vPE 0": { + "2017-388_PASQUALE-vPE 0": { "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "4.0", "customizationUuid": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", "inputs": { @@ -339,37 +339,37 @@ describe('Vnf Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -415,7 +415,7 @@ describe('Vnf Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -423,14 +423,14 @@ describe('Vnf Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -440,7 +440,7 @@ describe('Vnf Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -454,16 +454,16 @@ describe('Vnf Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 0", + "modelCustomizationName": "2017-388_PASQUALE-vPE 0", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-488_ADIOD-vPE 0": { + "2017-488_PASQUALE-vPE 0": { "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-488_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-488_PASQUALE-vPE", "version": "5.0", "customizationUuid": "1da7b585-5e61-4993-b95e-8e6606c81e45", "inputs": { @@ -526,37 +526,37 @@ describe('Vnf Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -603,7 +603,7 @@ describe('Vnf Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -611,14 +611,14 @@ describe('Vnf Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -628,7 +628,7 @@ describe('Vnf Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -642,21 +642,21 @@ describe('Vnf Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-488_ADIOD-vPE 0", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -666,10 +666,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -680,10 +680,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -694,10 +694,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -708,10 +708,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -722,10 +722,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" @@ -733,37 +733,37 @@ describe('Vnf Model Info', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -771,19 +771,19 @@ describe('Vnf Model Info', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -793,10 +793,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -807,10 +807,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -821,10 +821,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -835,10 +835,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -849,29 +849,29 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" } } }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} @@ -881,11 +881,11 @@ describe('Vnf Model Info', () => { } }, "networks": { - "2017-388_ADIOD-vPE 1": { + "2017-388_PASQUALE-vPE 1": { "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413", "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "1.0", "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a", "inputs": { @@ -948,37 +948,37 @@ describe('Vnf Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -1023,7 +1023,7 @@ describe('Vnf Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -1031,14 +1031,14 @@ describe('Vnf Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -1048,7 +1048,7 @@ describe('Vnf Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -1062,19 +1062,19 @@ describe('Vnf Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} } }, - "collectionResource": {}, + "collectionResources": {}, "configurations": { - "2017-388_ADIOD-vPE 1__configuration": { + "2017-388_PASQUALE-vPE 1__configuration": { "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413", "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "1.0", "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a", "inputs": { @@ -1137,37 +1137,37 @@ describe('Vnf Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -1212,7 +1212,7 @@ describe('Vnf Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -1220,14 +1220,14 @@ describe('Vnf Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -1237,7 +1237,7 @@ describe('Vnf Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -1251,7 +1251,7 @@ describe('Vnf Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} @@ -1261,19 +1261,19 @@ describe('Vnf Model Info', () => { "fabricConfigurations": {}, "serviceProxies": {}, "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1283,10 +1283,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1297,10 +1297,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1311,10 +1311,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1325,10 +1325,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1339,10 +1339,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" @@ -1350,37 +1350,37 @@ describe('Vnf Model Info', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -1388,19 +1388,19 @@ describe('Vnf Model Info', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1410,10 +1410,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1424,10 +1424,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1438,10 +1438,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1452,10 +1452,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1466,29 +1466,29 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" } } }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/configuration/configuration.model.info.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/configuration/configuration.model.info.ts index dd85ea110..0d1a9aade 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/configuration/configuration.model.info.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/configuration/configuration.model.info.ts @@ -4,6 +4,8 @@ import * as _ from 'lodash'; import {SharedTreeService} from "../../shared.tree.service"; import {ITreeNode} from "angular-tree-component/dist/defs/api"; import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; +import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; export class ConfigurationModelInfo implements ILevelNodeInfo{ constructor(private _dynamicInputsService : DynamicInputsService, @@ -11,6 +13,7 @@ export class ConfigurationModelInfo implements ILevelNodeInfo{ name: string = 'configurations'; type : string = 'Configuration'; typeName : string = 'C'; + componentInfoType = ComponentInfoType.CONFIGURATION; isEcompGeneratedNaming = () : boolean => true; @@ -38,8 +41,7 @@ export class ConfigurationModelInfo implements ILevelNodeInfo{ createInstanceTreeNode(instance: any, model: any, storeKey: string): any {return null;} - childName: string; - childType: string; + childNames: string[]; /*********************************************************** * return if instance has missing data @@ -84,4 +86,8 @@ export class ConfigurationModelInfo implements ILevelNodeInfo{ onSelectedNode(node: ITreeNode): void { } + getInfo(model, instance): ModelInformationItem[] { + return []; + } + } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/ncf/ncf.model.info.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/ncf/ncf.model.info.spec.ts new file mode 100644 index 000000000..6c8382808 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/ncf/ncf.model.info.spec.ts @@ -0,0 +1,112 @@ +import {ComponentInfoType} from "../../../component-info/component-info-model"; +import {NcfModelInfo} from "./ncf.model.info"; +import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; +import {NcfTreeNode} from "../../../../../shared/models/ncfTreeNode"; + +describe('NCF Model Info', () => { + + let ncfModel: NcfModelInfo; + + beforeEach(() => { + ncfModel = new NcfModelInfo(null); + }); + + test('ncfModel should be defined', () => { + expect(ncfModel).toBeDefined(); + }); + + test('ncfModel should defined extra details', () => { + expect(ncfModel.name).toEqual('ncfs'); + expect(ncfModel.type).toEqual('NCF'); + expect(ncfModel.childNames).toBeUndefined; + expect(ncfModel.componentInfoType).toEqual(ComponentInfoType.NCF); + }); + + test('createInstanceTreeNode shall create the right ncfTreeNode', () => { + const instance = { + action: "None", + instanceName: "NcmVlanSvcYm161f_77_vTSBC Customer Landing Network Collection", + instanceId: "6b3536cf-3a12-457f-abb5-fa2203e0d923", + instanceType: "L3-NETWORK", + inMaint: false, + uuid: "dd182d7d-6949-4b90-b3cc-5befe400742e", + originalName: "ncm_vlan_ym161f..NetworkCollection..0", + trackById: "6b3536cf-3a12-457f-abb5-fa2203e0d923", + instanceGroupRole: "SUB_INTERFACE", + instanceGroupFunction: "vTSBC Customer Landing Network Collection", + numberOfNetworks: 1 + }; + + const parentModel = { + networksCollection: { + "ncm_vlan_ym161f..NetworkCollection..0": { + uuid: "dd182d7d-6949-4b90-b3cc-5befe400742e", + invariantUuid: "868b109c-9481-4a18-891b-af974db7705a", + name: "ncm_vlan_ym161f..NetworkCollection..0", + version: "1", + networkCollectionProperties: { + networkCollectionFunction: "vTSBC Customer Landing Network Collection", + networkCollectionDescription: "vTSBC Customer Landing Network Collection Desc" + } + } + } + }; + + const expected = { + action: "None", + id: "6b3536cf-3a12-457f-abb5-fa2203e0d923", + inMaint: false, + instanceGroupFunction: "vTSBC Customer Landing Network Collection", + instanceGroupRole: "SUB_INTERFACE", + instanceId: "6b3536cf-3a12-457f-abb5-fa2203e0d923", + instanceName: "NcmVlanSvcYm161f_77_vTSBC Customer Landing Network Collection", + instanceType: "L3-NETWORK", + missingData: false, + modelVersion: "1", + name: "NcmVlanSvcYm161f_77_vTSBC Customer Landing Network Collection", + numberOfNetworks: 1, + storeKey: "6b3536cf-3a12-457f-abb5-fa2203e0d923", + typeName: "NCF" + }; + + const ncfTreeNode: NcfTreeNode = ncfModel.createInstanceTreeNode(instance, {}, parentModel, "6b3536cf-3a12-457f-abb5-fa2203e0d923"); + expect(ncfTreeNode).toMatchObject(expected); + }); + + test('get modelInformation shall return Model version, role, Collection function, Number of networks', () => { + const ncf = { + trackById: "6b3536cf-3a12-457f-abb5-fa2203e0d923", + instanceGroupRole: "SUB_INTERFACE", + instanceGroupFunction: "vTSBC Customer Landing Network Collection", + numberOfNetworks: 1, + modelVersion: "35" + }; + + const actualModelInformationItems = ncfModel.getInfo(null, ncf); + const expected = [ + ModelInformationItem.createInstance('Model version', '35'), + ModelInformationItem.createInstance('Role', 'SUB_INTERFACE'), + ModelInformationItem.createInstance('Collection function', 'vTSBC Customer Landing Network Collection'), + ModelInformationItem.createInstance('Number of networks', 1), + ]; + + expect(actualModelInformationItems).toEqual(expected); + }); + + test('get modelInformation shall return empty array when ncf instance is null', () => { + expect(ncfModel.getInfo(null, null)).toEqual([]); + }); + + test('ncf getMenuAction: delete', ()=>{ + let node = {}; + let serviceModelId = 'serviceModelId'; + let result = ncfModel.getMenuAction(<any>node, serviceModelId); + spyOn(result['delete'], 'method'); + expect(result['delete']).toBeDefined(); + expect(result['delete'].visible()).toBeFalsy(); + expect(result['delete'].enable()).toBeFalsy(); + result['delete']['method'](node, serviceModelId); + expect(result['delete']['method']).toHaveBeenCalledWith(node, serviceModelId); + }); + +}); diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/ncf/ncf.model.info.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/ncf/ncf.model.info.ts new file mode 100644 index 000000000..4db41c0d1 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/ncf/ncf.model.info.ts @@ -0,0 +1,121 @@ +import {ILevelNodeInfo} from "../basic.model.info"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; +import {ITreeNode} from "angular-tree-component/dist/defs/api"; +import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service"; +import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; +import {Level1Model} from "../../../../../shared/models/nodeModel"; +import {NcfTreeNode} from "../../../../../shared/models/ncfTreeNode"; +import {Level1Instance} from "../../../../../shared/models/level1Instance"; +import {NgRedux} from "@angular-redux/store"; +import {AppState} from "../../../../../shared/store/reducers"; +import { + deleteActionNcfInstance, + undoDeleteActionNcfInstance +} from "../../../../../shared/storeUtil/utils/ncf/ncf.actions"; +import * as _ from 'lodash'; +import {NcfModelInterface} from "../../../../../shared/models/ncfModel"; + +export class NcfModelInfo implements ILevelNodeInfo { + constructor(private _store: NgRedux<AppState>){ + } + + name: string = 'ncfs'; + type: string = 'NCF'; + typeName: string = 'NCF'; + + childNames: string[] = []; + componentInfoType = ComponentInfoType.NCF; + + isEcompGeneratedNaming(currentModel): boolean { + return false; + } + + updateDynamicInputsDataFromModel = (currentModel): any => []; + + getModel = (modelId: string, instance: any, serviceHierarchy): any => { + return new Level1Model(); + }; + + + createInstanceTreeNode = (instance: Level1Instance, model: Level1Model, parentModel, storeKey: string): NcfTreeNode => { + let modelVersion: string = null; + if (parentModel.networksCollection && instance.originalName) { + const ncfRealModel: NcfModelInterface = parentModel.networksCollection[instance.originalName]; + if (ncfRealModel) { + modelVersion = ncfRealModel.version; + } + } + + let node = new NcfTreeNode(instance, model, storeKey, modelVersion); + node.menuActions = this.getMenuAction(<any>node, model.uuid); + node.typeName = this.typeName; + return node; + }; + + + getNextLevelObject = (): any => { + return null; + }; + + getTooltip = (): string => 'NCF'; + + getType = (): string => 'NCF'; + + hasMissingData(instance, dynamicInputs: any, isEcompGeneratedNaming: boolean): boolean { + return false; + } + + onClickAdd(node, serviceModelId: string): void { + + } + + getNodeCount(node: ITreeNode, serviceModelId: string): number { + return 0; + } + + showNodeIcons(node: ITreeNode, serviceModelId: string): AvailableNodeIcons { + return null; + } + + getMenuAction(node: ITreeNode, serviceModelId: string): { [methodName: string]: { method: Function, visible: Function, enable: Function } } { + return <any>{ + delete: { + method: (node, serviceModelId) => { + this._store.dispatch(deleteActionNcfInstance(node.data.parent.collectionResourceStoreKey, node.data.storeKey, serviceModelId)); + }, + visible: (node) => false, + enable: (node) => false + }, + undoDelete: { + method: (node, serviceModelId) => { + this._store.dispatch(undoDeleteActionNcfInstance(node.data.parent.collectionResourceStoreKey, node.data.storeKey, serviceModelId)); + }, + visible: (node) => false, + enable: (node) => false + } + + }; + } + + updatePosition(that, node, instanceId): void { + } + + getNodePosition(instance): number { + return 0; + } + + getInfo(model, instance: NcfTreeNode): ModelInformationItem[] { + + if (_.isNil(instance)) { + return []; + } + + return [ + ModelInformationItem.createInstance("Model version", instance.modelVersion), + ModelInformationItem.createInstance('Role', instance.instanceGroupRole), + ModelInformationItem.createInstance('Collection function', instance.instanceGroupFunction), + ModelInformationItem.createInstance('Number of networks', instance.numberOfNetworks), + ]; + } +} + diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/network/network.model.info.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/network/network.model.info.spec.ts index 206adb6d1..10c13661f 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/network/network.model.info.spec.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/network/network.model.info.spec.ts @@ -1,4 +1,4 @@ -import {HttpClientTestingModule, HttpTestingController} from "@angular/common/http/testing"; +import {HttpClientTestingModule} from "@angular/common/http/testing"; import {getTestBed, TestBed} from "@angular/core/testing"; import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing"; import {NetworkModelInfo} from "./network.model.info"; @@ -11,6 +11,8 @@ import {AvailableNodeIcons} from "../../../available-models-tree/available-model import {DrawingBoardModes} from "../../../drawing-board.modes"; import {IframeService} from "../../../../../shared/utils/iframe.service"; import {DuplicateService} from "../../../duplicate/duplicate.service"; +import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; + class MockAppStore<T> { getState() { return { @@ -131,7 +133,7 @@ describe('Network Model Info', () => { }); test('getModel should return Network model', () => { - let model = networkModel.getModel('2017-388_ADIOD-vPE 1_1', <any>{}, getServiceHierarchy()); + let model = networkModel.getModel('2017-388_PASQUALE-vPE 1_1', <any>{}, getServiceHierarchy()); expect(model.type).toEqual('VL'); }); @@ -295,6 +297,80 @@ describe('Network Model Info', () => { expect(result['showAuditInfo']['method']).toHaveBeenCalledWith(node, serviceModelId); }); + test('Info for network should be correct', () => { + const model = getNetworkModel(); + const instance = getNetworkInstance(); + let actualNetworkInfo = networkModel.getInfo(model,instance); + let expectedNetworkInfo = [ + ModelInformationItem.createInstance('Network role', "network role 1, network role 2"), + ModelInformationItem.createInstance("Route target id", null), + ModelInformationItem.createInstance("Route target role", null) + ]; + expect(actualNetworkInfo).toEqual(expectedNetworkInfo); + }); + + function getNetworkModel(){ + return { + "customizationUuid":"94fdd893-4a36-4d70-b16a-ec29c54c184f", + "name":"ExtVL", + "version":"37.0", + "description":"ECOMP generic virtual link (network) base type for all other service-level and global networks", + "uuid":"ddc3f20c-08b5-40fd-af72-c6d14636b986", + "invariantUuid":"379f816b-a7aa-422f-be30-17114ff50b7c", + "max":1, + "min":0, + "isEcompGeneratedNaming":false, + "type":"VL", + "modelCustomizationName":"ExtVL 0", + "roles":["network role 1"," network role 2"], + "properties":{ + "network_role":"network role 1, network role 2", + "network_assignments": + "{is_external_network=false, ipv4_subnet_default_assignment={min_subnets_count=1}, ecomp_generated_network_assignment=false, ipv6_subnet_default_assignment={min_subnets_count=1}}", + "exVL_naming":"{ecomp_generated_naming=true}","network_flows":"{is_network_policy=false, is_bound_to_vpn=false}", + "network_homing":"{ecomp_selected_instance_node_target=false}" + } + }; + + } + + function getNetworkInstance() { + return { + "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f", + "modelId": "ddc3f20c-08b5-40fd-af72-c6d14636b986", + "modelUniqueId": "94fdd893-4a36-4d70-b16a-ec29c54c184f", + "missingData": true, + "id": "NETWORK4_INSTANCE_ID", + "action": "None", + "orchStatus": "Created", + "provStatus": "preprov", + "inMaint": false, + "instanceId": "NETWORK4_INSTANCE_ID", + "instanceType": "CONTRAIL30_HIMELGUARD", + "instanceName": "NETWORK4_INSTANCE_NAME", + "name": "NETWORK4_INSTANCE_NAME", + "modelName": "ExtVL 0", + "type": "VL", + "isEcompGeneratedNaming": false, + "networkStoreKey": "NETWORK4_INSTANCE_ID", + "typeName": "N", + "menuActions": {"edit": {}, "showAuditInfo": {}, "duplicate": {}, "remove": {}, "delete": {}, "undoDelete": {}}, + "isFailed": false, + "statusMessage": "", + "statusProperties": [{"key": "Prov Status:", "value": "preprov", "testId": "provStatus"}, { + "key": "Orch Status:", + "value": "Created", + "testId": "orchStatus" + }], + "trackById": "1wvr73xl999", + "parentType": "", + "componentInfoType": "Network", + "errors": {} + }; + } + + + function getServiceHierarchy(){ return { @@ -311,7 +387,7 @@ describe('Network Model Info', () => { "serviceEcompNaming": "false", "instantiationType": "Macro", "inputs": { - "2017488_adiodvpe0_ASN": { + "2017488_pasqualevpe0_ASN": { "type": "string", "description": "AV/PE", "entry_schema": null, @@ -327,11 +403,11 @@ describe('Network Model Info', () => { } }, "vnfs": { - "2017-388_ADIOD-vPE 1": { + "2017-388_PASQUALE-vPE 1": { "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413", "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "1.0", "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a", "inputs": { @@ -394,37 +470,37 @@ describe('Network Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -469,7 +545,7 @@ describe('Network Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -477,14 +553,14 @@ describe('Network Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -494,7 +570,7 @@ describe('Network Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -508,16 +584,16 @@ describe('Network Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-388_ADIOD-vPE 0": { + "2017-388_PASQUALE-vPE 0": { "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "4.0", "customizationUuid": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", "inputs": { @@ -580,37 +656,37 @@ describe('Network Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -656,7 +732,7 @@ describe('Network Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -664,14 +740,14 @@ describe('Network Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -681,7 +757,7 @@ describe('Network Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -695,16 +771,16 @@ describe('Network Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 0", + "modelCustomizationName": "2017-388_PASQUALE-vPE 0", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-488_ADIOD-vPE 0": { + "2017-488_PASQUALE-vPE 0": { "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-488_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-488_PASQUALE-vPE", "version": "5.0", "customizationUuid": "1da7b585-5e61-4993-b95e-8e6606c81e45", "inputs": { @@ -767,37 +843,37 @@ describe('Network Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -844,7 +920,7 @@ describe('Network Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -852,14 +928,14 @@ describe('Network Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -869,7 +945,7 @@ describe('Network Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -883,21 +959,21 @@ describe('Network Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-488_ADIOD-vPE 0", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -907,10 +983,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -921,10 +997,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -935,10 +1011,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -949,10 +1025,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -963,10 +1039,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" @@ -974,37 +1050,37 @@ describe('Network Model Info', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -1012,19 +1088,19 @@ describe('Network Model Info', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1034,10 +1110,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1048,10 +1124,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1062,10 +1138,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1076,10 +1152,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1090,29 +1166,29 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" } } }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} @@ -1122,11 +1198,11 @@ describe('Network Model Info', () => { } }, "networks": { - "2017-388_ADIOD-vPE 1_1": { + "2017-388_PASQUALE-vPE 1_1": { "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413", "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "1.0", "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a", "inputs": { @@ -1189,37 +1265,37 @@ describe('Network Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -1264,7 +1340,7 @@ describe('Network Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -1272,14 +1348,14 @@ describe('Network Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -1289,7 +1365,7 @@ describe('Network Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -1303,30 +1379,30 @@ describe('Network Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VL", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} } }, - "collectionResource": {}, + "collectionResources": {}, "configurations": {}, "fabricConfigurations": {}, "serviceProxies": {}, "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1336,10 +1412,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1350,10 +1426,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1364,10 +1440,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1378,10 +1454,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1392,10 +1468,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" @@ -1403,37 +1479,37 @@ describe('Network Model Info', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -1441,19 +1517,19 @@ describe('Network Model Info', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1463,10 +1539,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1477,10 +1553,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1491,10 +1567,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1505,10 +1581,10 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1519,29 +1595,29 @@ describe('Network Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" } } }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/network/network.model.info.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/network/network.model.info.ts index 3d99750ae..3ed40cd5f 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/network/network.model.info.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/network/network.model.info.ts @@ -28,6 +28,8 @@ import { updateNetworkPosition } from "../../../../../shared/storeUtil/utils/network/network.actions"; import {IModalConfig} from "onap-ui-angular/dist/modals/models/modal-config"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; +import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; export class NetworkModelInfo implements ILevelNodeInfo { constructor(private _dynamicInputsService: DynamicInputsService, @@ -43,6 +45,8 @@ export class NetworkModelInfo implements ILevelNodeInfo { name: string = 'networks'; type: string = 'Network'; typeName: string = 'N'; + childNames: string[]; + componentInfoType = ComponentInfoType.NETWORK; /*********************************************************** * return model dynamic inputs @@ -83,7 +87,7 @@ export class NetworkModelInfo implements ILevelNodeInfo { node.typeName = this.typeName; node.menuActions = this.getMenuAction(<any>node, model.uuid); node.isFailed = _.isNil(instance.isFailed) ? false : instance.isFailed; - node.statusMessage = !_.isNil(instance.statusMessage) ? instance.statusMessage: ""; + node.statusMessage = !_.isNil(instance.statusMessage) ? instance.statusMessage : ""; node = this._sharedTreeService.addingStatusProperty(node); return node; }; @@ -141,7 +145,7 @@ export class NetworkModelInfo implements ILevelNodeInfo { map = this._store.getState().service.serviceInstance[serviceModelId].existingNetworksCounterMap || 0; if (!_.isNil(map)) { let count = map[node.data.modelUniqueId] || 0; - count -= this._sharedTreeService.getExistingInstancesWithDeleteMode(node, serviceModelId , 'networks'); + count -= this._sharedTreeService.getExistingInstancesWithDeleteMode(node, serviceModelId, 'networks'); return count; } } @@ -157,7 +161,7 @@ export class NetworkModelInfo implements ILevelNodeInfo { let counter: number = !_.isNil(this._store.getState().service.serviceInstance[serviceModelId]) ? (this._store.getState().service.serviceInstance[serviceModelId].existingNetworksCounterMap[node.data.modelUniqueId] || 0) : 0; - counter -= this._sharedTreeService.getExistingInstancesWithDeleteMode(node, serviceModelId , 'networks'); + counter -= this._sharedTreeService.getExistingInstancesWithDeleteMode(node, serviceModelId, 'networks'); const properties = this._store.getState().service.serviceHierarchy[serviceModelId].networks[node.data.name].properties; const maxInstances: number = !_.isNil(properties) ? (properties.max_instances || 1) : 1; @@ -167,7 +171,7 @@ export class NetworkModelInfo implements ILevelNodeInfo { return new AvailableNodeIcons(showAddIcon, isReachedLimit) } - getMenuAction(node: ITreeNode, serviceModelId: string): { [methodName: string]: { method: Function, visible: Function, enable: Function }} { + getMenuAction(node: ITreeNode, serviceModelId: string): { [methodName: string]: { method: Function, visible: Function, enable: Function } } { const mode = this._store.getState().global.drawingBoardStatus; return { edit: { @@ -186,64 +190,63 @@ export class NetworkModelInfo implements ILevelNodeInfo { isUpdateMode: true }); }, - visible: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node), - enable: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node) + visible: (node) => node.data.parentType !== 'VRF' && this._sharedTreeService.shouldShowRemoveAndEdit(node), + enable: (node) => node.data.parentType !== 'VRF' && this._sharedTreeService.shouldShowRemoveAndEdit(node) }, showAuditInfo: { method: (node, serviceModelId) => { let instance = this._store.getState().service.serviceInstance[serviceModelId].networks[node.data.networkStoreKey]; this._sharedTreeService.openAuditInfoModal(node, serviceModelId, instance, 'NETWORK', this); }, - visible: (node) => this._sharedTreeService.shouldShowAuditInfo(node), - enable: (node) => this._sharedTreeService.shouldShowAuditInfo(node) + visible: (node) => node.data.parentType !== 'VRF' && this._sharedTreeService.shouldShowAuditInfo(node), + enable: (node) => node.data.parentType !== 'VRF' && this._sharedTreeService.shouldShowAuditInfo(node) }, duplicate: { method: (node, serviceModelId) => { - if (this._store.getState().global.flags['FLAG_DUPLICATE_VNF']) { - const storeKey = node.data.networkStoreKey; - let modalConfig: IModalConfig = this._duplicateService.openDuplicateModal(serviceModelId, node.data.modelUniqueId, node.data.modelName, storeKey, 1, this._store, node); - this.modalService.openCustomModal(modalConfig, DuplicateVnfComponent); - } + const storeKey = node.data.networkStoreKey; + let modalConfig: IModalConfig = this._duplicateService.openDuplicateModal(serviceModelId, node.data.modelUniqueId, node.data.modelName, storeKey, 1, this._store, node); + this.modalService.openCustomModal(modalConfig, DuplicateVnfComponent); }, - visible: (node) => this._sharedTreeService.shouldShowDuplicate(node) && !_.isNil(node.data) && !_.isNil(node.data.action) && node.data.action === ServiceInstanceActions.Create && this._duplicateService.canDuplicate(node), - enable: (node, serviceModelId) => this._duplicateService.isEnabled(node, this._store, serviceModelId) + visible: (node) => node.data.parentType !== 'VRF' && this._sharedTreeService.shouldShowDuplicate(node) && !_.isNil(node.data) && !_.isNil(node.data.action) && node.data.action === ServiceInstanceActions.Create && this._duplicateService.canDuplicate(node), + enable: (node, serviceModelId) => node.data.parentType !== 'VRF' && this._duplicateService.isEnabled(node, this._store, serviceModelId) }, remove: { method: (node, serviceModelId) => { let storeKey: string = node.data.networkStoreKey; this._store.dispatch(removeInstance(node.data.networkStoreKey, serviceModelId, storeKey, node)); - this._store.dispatch(changeInstanceCounter(node.data.modelUniqueId , serviceModelId, -1, node)); + this._store.dispatch(changeInstanceCounter(node.data.modelUniqueId, serviceModelId, -1, node)); this._sharedTreeService.selectedVNF = null; }, - visible: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node), - enable: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node), + visible: (node) => node.data.parentType !== 'VRF' && this._sharedTreeService.shouldShowRemoveAndEdit(node), + enable: (node) => node.data.parentType !== 'VRF' && this._sharedTreeService.shouldShowRemoveAndEdit(node), }, - delete : { - method : (node, serviceModelId) => { + delete: { + method: (node, serviceModelId) => { if ((!_.isNil(node.data.children) && node.data.children.length === 0) || _.isNil(node.data.children)) { this._store.dispatch(deleteActionNetworkInstance(node.data.networkStoreKey, serviceModelId)); - }else { - this._sharedTreeService.removeDeleteAllChild(node, serviceModelId, (node, serviceModelId)=>{ + } else { + this._sharedTreeService.removeDeleteAllChild(node, serviceModelId, (node, serviceModelId) => { this._store.dispatch(deleteActionNetworkInstance(node.data.networkStoreKey, serviceModelId)); }); } }, - visible: (node) => this._sharedTreeService.shouldShowDelete(node), - enable: (node) => this._sharedTreeService.shouldShowDelete(node) + visible: (node) => node.data.parentType !== 'VRF' && this._sharedTreeService.shouldShowDelete(node), + enable: (node) => node.data.parentType !== 'VRF' && this._sharedTreeService.shouldShowDelete(node) }, - undoDelete : { - method : (node, serviceModelId) => { + undoDelete: { + method: (node, serviceModelId) => { if ((!_.isNil(node.data.children) && node.data.children.length === 0) || _.isNil(node.data.children)) { this._store.dispatch(undoDeleteActionNetworkInstance(node.data.networkStoreKey, serviceModelId)); - }else { - this._sharedTreeService.undoDeleteAllChild(node, serviceModelId, (node, serviceModelId)=>{ + } else { + this._sharedTreeService.undoDeleteAllChild(node, serviceModelId, (node, serviceModelId) => { this._store.dispatch(undoDeleteActionNetworkInstance(node.data.networkStoreKey, serviceModelId)); }); } }, - visible: (node) => this._sharedTreeService.shouldShowUndoDelete(node), - enable: (node, serviceModelId) => this._sharedTreeService.shouldShowUndoDelete(node) && !this._sharedTreeService.isServiceOnDeleteMode(serviceModelId) + visible: (node) => node.data.parentType !== 'VRF' && this._sharedTreeService.shouldShowUndoDelete(node), + enable: (node, serviceModelId) => node.data.parentType !== 'VRF' && this._sharedTreeService.shouldShowUndoDelete(node) && !this._sharedTreeService.isServiceOnDeleteMode(serviceModelId) } + }; } @@ -251,7 +254,7 @@ export class NetworkModelInfo implements ILevelNodeInfo { * should update node position inside the tree * @param node - current ITrees node ************************************************************/ - updatePosition(that , node, instanceId): void { + updatePosition(that, node, instanceId): void { that.store.dispatch(updateNetworkPosition(node)); } @@ -259,6 +262,16 @@ export class NetworkModelInfo implements ILevelNodeInfo { return !_.isNil(instance) ? instance.position : null; } - onSelectedNode(node: ITreeNode): void { + getInfo(model, instance): ModelInformationItem[] { + const modelInformation = !_.isEmpty(model) && !_.isEmpty(model.properties) ? [ + ModelInformationItem.createInstance("Network role", model.properties.network_role)] : []; + ModelInformationItem.createInstance("Min instances", !_.isNull(model.min) ? String(model.min) : null), + ModelInformationItem.createInstance("Max instances", !_.isNull(model.max) ? String(model.max) : null) + const instanceInfo = !_.isEmpty(instance) ? [ + ModelInformationItem.createInstance("Route target id", instance.routeTargetId ? instance.routeTargetId : null), + ModelInformationItem.createInstance("Route target role", instance.routeTargetRole ? instance.routeTargetRole : null)] : + []; + const result = [modelInformation, instanceInfo]; + return _.uniq(_.flatten(result)); } } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.spec.ts new file mode 100644 index 000000000..ca041e045 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.spec.ts @@ -0,0 +1,134 @@ +import {ComponentInfoService} from "../../../component-info/component-info.service"; +import {AppState} from "../../../../../shared/store/reducers"; +import {NgRedux} from "@angular-redux/store"; +import {PnfModelInfo} from "./pnf.model.info"; +import {getTestBed, TestBed} from "@angular/core/testing"; +import {DynamicInputsService} from "../../dynamicInputs.service"; +import {SharedTreeService} from "../../shared.tree.service"; +import {DuplicateService} from "../../../duplicate/duplicate.service"; +import {AaiService} from "../../../../../shared/services/aaiService/aai.service"; +import {FeatureFlagsService} from "../../../../../shared/services/featureFlag/feature-flags.service"; +import {IframeService} from "../../../../../shared/utils/iframe.service"; +import {HttpClientTestingModule} from "@angular/common/http/testing"; +import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing"; +import {HttpClient, HttpHandler} from "@angular/common/http"; +import {CollectionResourceModel} from "../../../../../shared/models/collectionResourceModel"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; + + +describe('PNF model info', () => { + let injector; + let _componentInfoService: ComponentInfoService; + let _store: NgRedux<AppState>; + let pnfModel: PnfModelInfo = new PnfModelInfo(); + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule, NgReduxTestingModule], + providers: [ + MockNgRedux, + DynamicInputsService, + SharedTreeService, + DuplicateService, + AaiService, + HttpClient, + HttpHandler, + FeatureFlagsService, + ComponentInfoService, + IframeService] + }).compileComponents(); + + injector = getTestBed(); + _store = injector.get(NgRedux); + _componentInfoService = injector.get(ComponentInfoService); + }); + + test('pnf model should be defined', () => { + expect(pnfModel).toBeDefined(); + }); + + test('pnf model should defined extra details', () => { + expect(pnfModel.name).toEqual('pnfs'); + expect(pnfModel.type).toEqual('PNF'); + expect(pnfModel.typeName).toEqual('PNF'); + expect(pnfModel.componentInfoType).toEqual(ComponentInfoType.PNF); + }); + + test('getTooltip should return "PNF"', () => { + let tooltip: string = pnfModel.getTooltip(); + expect(tooltip).toEqual('PNF'); + }); + + test('getType should return "pnf"', () => { + let tooltip: string = pnfModel.getType(); + expect(tooltip).toEqual('pnf'); + }); + + test('getNextLevelObject should be null', () => { + let nextLevel: any = pnfModel.getNextLevelObject(); + expect(nextLevel).toBeNull(); + }); + + test('isEcompGeneratedNaming should return false', () => { + let isEcompGeneratedNaming: boolean = pnfModel.isEcompGeneratedNaming(<any>{}); + expect(isEcompGeneratedNaming).toBeFalsy(); + }); + + test('getModel should return pnf model', () => { + let model: CollectionResourceModel = pnfModel.getModel('PNF1', <any>{ + originalName : 'PNF1' + }, getServiceHierarchy()); + expect(model.type).toEqual('PNF'); + }); + + function getServiceHierarchy(){ + return { + "service": { + "uuid": "12550cd7-7708-4f53-a09e-41d3d6327ebc", + "invariantUuid": "561faa57-7bbb-40ec-a81c-c0d4133e98d4", + "name": "AIM Transport SVC_ym161f", + "version": "1.0", + "toscaModelURL": null, + "category": "Network L1-3", + "serviceType": "TRANSPORT", + "serviceRole": "AIM", + "description": "AIM Transport service", + "serviceEcompNaming": "true", + "instantiationType": "Macro", + "inputs": {}, + "vidNotions": { + "instantiationUI": "legacy", + "modelCategory": "other", + "viewEditUI": "legacy" + } + }, + "vnfs": {}, + "networks": {}, + "collectionResources": {}, + "configurations": {}, + "fabricConfigurations": {}, + "serviceProxies": {}, + "vfModules": {}, + "volumeGroups": {}, + "pnfs": { + "PNF1": { + "uuid": "1c831fa9-28a6-4778-8c1d-80b9e769f2ed", + "invariantUuid": "74e13a12-dac9-4fba-b102-cd242d9e7f02", + "description": "AIM Transport service", + "name": "AIM PNF Model", + "version": "1.0", + "customizationUuid": "dce78da7-c842-47a1-aba2-2de1cd03ab7a", + "inputs": {}, + "commands": {}, + "properties": { + "nf_function": "SDNGW", + "nf_role": "pD2IPE", + "ecomp_generated_naming": "false", + "nf_type": "ROUTER" + }, + "type": "PNF" + } + }, + "vnfGroups": {} + } + } +}) diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.ts new file mode 100644 index 000000000..dc01b87ef --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.ts @@ -0,0 +1,70 @@ +import {ILevelNodeInfo} from "../basic.model.info"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; +import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; +import {ITreeNode} from "angular-tree-component/dist/defs/api"; +import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service"; +import {PnfInstance} from "app/shared/models/pnfInstance"; +import {PNFModel} from "../../../../../shared/models/pnfModel"; +import {PnfTreeNode} from "../../../../../shared/models/pnfTreeNode"; + + +export class PnfModelInfo implements ILevelNodeInfo{ + + constructor(){} + + name: string = 'pnfs'; + type: string ='PNF'; + typeName: string = 'PNF'; + childNames: string[]; + componentInfoType = ComponentInfoType.PNF; + + createInstanceTreeNode = (instance: PnfInstance, model: PNFModel, parentModel: any, storeKey: string): PnfTreeNode => null; + + getInfo(model, instance): ModelInformationItem[] { + return []; + } + + getMenuAction(node: ITreeNode, serviceModelId: string): { [methodName: string]: { method: Function; visible: Function; enable: Function } } { + return {}; + } + + getModel = (pnfModelId: string, instance: PnfInstance, serviceHierarchy): PNFModel => { + const originalModelName = instance.originalName ? instance.originalName : pnfModelId; + return new PNFModel(serviceHierarchy[this.name][originalModelName]); + }; + + getNextLevelObject(): any { return null; } + + getNodeCount(node: ITreeNode, serviceModelId: string): number { + return 0; + } + + getNodePosition(instance): number {return 0; } + + getTooltip = (): string => 'PNF'; + + + getType = (): string => 'pnf'; + + + hasMissingData(instance, dynamicInputs: any, isEcompGeneratedNaming: boolean): boolean { + return false; + } + + isEcompGeneratedNaming(currentModel): boolean { + return false; + } + + onClickAdd(node: ITreeNode, serviceModelId: string): void { + } + + showNodeIcons(node: ITreeNode, serviceModelId: string): AvailableNodeIcons { + return null; + } + + updateDynamicInputsDataFromModel = (currentModel): any => []; + + updatePosition(that, node, instanceId): void { + } + +} 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 dcf25f579..840f31dcf 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 @@ -107,15 +107,15 @@ describe('Related Vnf member Model Info', () => { }); test('getModel should return VNF model', () => { - let model: VNFModel = relatedVnfMemeber.getModel('2017-388_ADIOD-vPE 1', <any>{ - originalName : '2017-388_ADIOD-vPE 1' + let model: VNFModel = relatedVnfMemeber.getModel('2017-388_PASQUALE-vPE 1', <any>{ + originalName : '2017-388_PASQUALE-vPE 1' }, getServiceHierarchy()); expect(model.type).toEqual('VF'); }); test('getMenuAction: delete', ()=>{ - let node = {"modelId":"d6557200-ecf2-4641-8094-5393ae3aae60","missingData":true,"action":"None","inMaint":true,"name":"jlfBwIks283yKlCD8","modelName":"VF_vMee 0","type":"VF","isEcompGeneratedNaming":true,"networkStoreKey":"VF_vMee 0:004","vnfStoreKey":"VF_vMee 0:004","typeName":"VNF"}; + let node = {"modelId":"d6557200-ecf2-4641-8094-5393ae3aae60","missingData":true,"action":"None","inMaint":true,"name":"jlfBwIks283yKlCD8","modelName":"VF_vGeraldine 0","type":"VF","isEcompGeneratedNaming":true,"networkStoreKey":"VF_vGeraldine 0:004","vnfStoreKey":"VF_vGeraldine 0:004","typeName":"VNF"}; let serviceModelId = "d6557200-ecf2-4641-8094-5393ae3aae60"; let result = relatedVnfMemeber.getMenuAction(<any>node, serviceModelId); spyOn(result['delete'], 'method'); @@ -128,7 +128,7 @@ describe('Related Vnf member Model Info', () => { test('getMenuAction: undoDelete', ()=>{ - let node = {"modelId":"d6557200-ecf2-4641-8094-5393ae3aae60","missingData":true,"action":"None","inMaint":true,"name":"jlfBwIks283yKlCD8","modelName":"VF_vMee 0","type":"VF","isEcompGeneratedNaming":true,"networkStoreKey":"VF_vMee 0:004","vnfStoreKey":"VF_vMee 0:004","typeName":"VNF"}; + let node = {"modelId":"d6557200-ecf2-4641-8094-5393ae3aae60","missingData":true,"action":"None","inMaint":true,"name":"jlfBwIks283yKlCD8","modelName":"VF_vGeraldine 0","type":"VF","isEcompGeneratedNaming":true,"networkStoreKey":"VF_vGeraldine 0:004","vnfStoreKey":"VF_vGeraldine 0:004","typeName":"VNF"}; let serviceModelId = "d6557200-ecf2-4641-8094-5393ae3aae60"; let result = relatedVnfMemeber.getMenuAction(<any>node, serviceModelId); spyOn(result['undoDelete'], 'method'); @@ -156,7 +156,7 @@ describe('Related Vnf member Model Info', () => { "serviceEcompNaming": "false", "instantiationType": "Macro", "inputs": { - "2017488_adiodvpe0_ASN": { + "2017488_pasqualevpe0_ASN": { "type": "string", "description": "AV/PE", "entry_schema": null, @@ -172,11 +172,11 @@ describe('Related Vnf member Model Info', () => { } }, "vnfs": { - "2017-388_ADIOD-vPE 1": { + "2017-388_PASQUALE-vPE 1": { "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413", "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "1.0", "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a", "inputs": { @@ -239,37 +239,37 @@ describe('Related Vnf member Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -314,7 +314,7 @@ describe('Related Vnf member Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -322,14 +322,14 @@ describe('Related Vnf member Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -339,7 +339,7 @@ describe('Related Vnf member Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -353,16 +353,16 @@ describe('Related Vnf member Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-388_ADIOD-vPE 0": { + "2017-388_PASQUALE-vPE 0": { "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "4.0", "customizationUuid": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", "inputs": { @@ -425,37 +425,37 @@ describe('Related Vnf member Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -501,7 +501,7 @@ describe('Related Vnf member Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -509,14 +509,14 @@ describe('Related Vnf member Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -526,7 +526,7 @@ describe('Related Vnf member Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -540,16 +540,16 @@ describe('Related Vnf member Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 0", + "modelCustomizationName": "2017-388_PASQUALE-vPE 0", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-488_ADIOD-vPE 0": { + "2017-488_PASQUALE-vPE 0": { "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-488_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-488_PASQUALE-vPE", "version": "5.0", "customizationUuid": "1da7b585-5e61-4993-b95e-8e6606c81e45", "inputs": { @@ -612,37 +612,37 @@ describe('Related Vnf member Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -689,7 +689,7 @@ describe('Related Vnf member Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -697,14 +697,14 @@ describe('Related Vnf member Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -714,7 +714,7 @@ describe('Related Vnf member Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -728,21 +728,21 @@ describe('Related Vnf member Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-488_ADIOD-vPE 0", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -752,10 +752,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -766,10 +766,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -780,10 +780,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -794,10 +794,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -808,10 +808,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" @@ -819,37 +819,37 @@ describe('Related Vnf member Model Info', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -857,19 +857,19 @@ describe('Related Vnf member Model Info', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -879,10 +879,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -893,10 +893,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -907,10 +907,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -921,10 +921,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -935,29 +935,29 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" } } }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} @@ -967,24 +967,24 @@ describe('Related Vnf member Model Info', () => { } }, "networks": {}, - "collectionResource": {}, + "collectionResources": {}, "configurations": {}, "fabricConfigurations": {}, "serviceProxies": {}, "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -994,10 +994,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1008,10 +1008,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1022,10 +1022,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1036,10 +1036,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1050,10 +1050,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" @@ -1061,37 +1061,37 @@ describe('Related Vnf member Model Info', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -1099,19 +1099,19 @@ describe('Related Vnf member Model Info', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1121,10 +1121,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1135,10 +1135,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1149,10 +1149,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1163,10 +1163,10 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1177,29 +1177,29 @@ describe('Related Vnf member Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" } } }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/relatedVnfMember/relatedVnfMember.info.model.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/relatedVnfMember/relatedVnfMember.info.model.ts index b1eb10937..c8807e87d 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/relatedVnfMember/relatedVnfMember.info.model.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/relatedVnfMember/relatedVnfMember.info.model.ts @@ -15,6 +15,8 @@ import {VnfInstance} from "../../../../../shared/models/vnfInstance"; import {VNFModel} from "../../../../../shared/models/vnfModel"; import {VnfTreeNode} from "../../../../../shared/models/vnfTreeNode"; import {InputType} from "../../../../../shared/models/inputTypes"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; +import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; export class RelatedVnfMemberInfoModel implements ILevelNodeInfo { constructor(private _sharedTreeService: SharedTreeService, @@ -25,6 +27,7 @@ export class RelatedVnfMemberInfoModel implements ILevelNodeInfo { name: string = 'vnfs'; type: string = 'relatedVnfMember'; typeName: string = 'VNF'; + componentInfoType = ComponentInfoType.VNFMEMBER; /*********************************************************** * return if user should provide instance name or not. @@ -153,6 +156,8 @@ export class RelatedVnfMemberInfoModel implements ILevelNodeInfo { return null; } - onSelectedNode(node: ITreeNode): void { + getInfo(model, instance): ModelInformationItem[] { + return []; } + } 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 dc7452516..b596d0b48 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 @@ -1,5 +1,4 @@ - -import {HttpClientTestingModule, HttpTestingController} from "@angular/common/http/testing"; +import {HttpClientTestingModule} from "@angular/common/http/testing"; import {getTestBed, TestBed} from "@angular/core/testing"; import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing"; import {VFModuleModelInfo} from "./vfModule.model.info"; @@ -8,17 +7,16 @@ import {SharedTreeService} from "../../shared.tree.service"; import {VfModulePopuopService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service"; import {DialogService} from "ng2-bootstrap-modal"; import {NgRedux} from "@angular-redux/store"; -import {AppState} from "../../../../../shared/store/reducers"; import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service"; import {MessageBoxService} from "../../../../../shared/components/messageBox/messageBox.service"; import {DrawingBoardModes} from "../../../drawing-board.modes"; import {IframeService} from "../../../../../shared/utils/iframe.service"; import {ComponentInfoService} from "../../../component-info/component-info.service"; import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; -import {ComponentInfoModel, ComponentInfoType} from "../../../component-info/component-info-model"; import {AaiService} from "../../../../../shared/services/aaiService/aai.service"; import {HttpClient, HttpHandler} from "@angular/common/http"; import {FeatureFlagsService} from "../../../../../shared/services/featureFlag/feature-flags.service"; + class MockAppStore<T> { getState() { return { @@ -120,7 +118,7 @@ describe('VFModule Model Info', () => { }); test('getModel should return Module model', () => { - let model = vfModuleModel.getModel('2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1',{}, getServiceHierarchy()); + let model = vfModuleModel.getModel('2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1',{}, getServiceHierarchy()); expect(model.uuid).toEqual('25284168-24bb-4698-8cb4-3f509146eca5'); }); @@ -460,18 +458,14 @@ describe('VFModule Model Info', () => { test('Info for vfModule should be correct', () => { const model = getVFModule(); const instance = getVFModuleInstance(); - let actualVNFInfo = vfModuleModel.getInfoForVFModule(model,instance); + let actualVNFInfo = vfModuleModel.getInfo(model,instance); let expectedVNFInfo = [ - ModelInformationItem.createInstance('Type', 'vfModule'), - ModelInformationItem.createInstance('Model Version', '2'), - ModelInformationItem.createInstance('Model Customization ID','55b1be94-671a-403e-a26c-667e9c47d091'), - ModelInformationItem.createInstance('Instance ID', '2c1ca484-cbc2-408b-ab86-25a2c15ce280'), - ModelInformationItem.createInstance('In Maintenance', true), - ModelInformationItem.createInstance('Base Module', false), - ModelInformationItem.createInstance('Min Instances', 0), - ModelInformationItem.createInstance('Initial Instances Count',0) + ModelInformationItem.createInstance('Base module', false), + ModelInformationItem.createInstance('Min instances', "0"), + ModelInformationItem.createInstance("Max instances", null), + ModelInformationItem.createInstance('Initial instances count',"0") ]; - expect(actualVNFInfo).toEqual(new ComponentInfoModel(ComponentInfoType.VFMODULE, expectedVNFInfo, [])); + expect(actualVNFInfo).toEqual(expectedVNFInfo); }); function getVFModule(){ @@ -480,14 +474,14 @@ describe('VFModule Model Info', () => { "invariantUuid":"98a7c88b-b577-476a-90e4-e25a5871e02b", "customizationUuid":"55b1be94-671a-403e-a26c-667e9c47d091", "description":null, - "name":"VfVmee..vmme_vlc..module-1", + "name":"VfVgeraldine..vflorence_vlc..module-1", "version":"2", - "modelCustomizationName":"VfVmee..vmme_vlc..module-1", + "modelCustomizationName":"VfVgeraldine..vflorence_vlc..module-1", "properties":{ "minCountInstances":0, "maxCountInstances":null, "initialCount":0, - "vfModuleLabel":"vmme_vlc", + "vfModuleLabel":"vflorence_vlc", "baseModule":false }, "inputs":{}, @@ -505,7 +499,7 @@ describe('VFModule Model Info', () => { "lcpCloudRegionId":null, "tenantId":null, "modelInfo":{ - "modelCustomizationName":"VfVmee..vmme_vlc..module-1", + "modelCustomizationName":"VfVgeraldine..vflorence_vlc..module-1", "modelCustomizationId":"b200727a-1bf9-4e7c-bd06-b5f4c9d920b9", "modelInvariantId":"09edc9ef-85d0-4b26-80de-1f569d49e750", "modelVersionId":"522159d5-d6e0-4c2a-aa44-5a542a12a830", @@ -515,11 +509,11 @@ describe('VFModule Model Info', () => { "provStatus":null, "inMaint":true, "uuid":"522159d5-d6e0-4c2a-aa44-5a542a12a830", - "originalName":"VfVmee..vmme_vlc..module-1", + "originalName":"VfVgeraldine..vflorence_vlc..module-1", "legacyRegion":null, "lineOfBusiness":null, "platformName":null, - "trackById":"vf_vmee0..VfVmee..vmme_vlc..module-1:008", + "trackById":"vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1:008", "isBase":false, "volumeGroupName":null }; @@ -541,7 +535,7 @@ describe('VFModule Model Info', () => { "serviceEcompNaming": "false", "instantiationType": "Macro", "inputs": { - "2017488_adiodvpe0_ASN": { + "2017488_pasqualevpe0_ASN": { "type": "string", "description": "AV/PE", "entry_schema": null, @@ -557,11 +551,11 @@ describe('VFModule Model Info', () => { } }, "vnfs": { - "2017-388_ADIOD-vPE 1": { + "2017-388_PASQUALE-vPE 1": { "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413", "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "1.0", "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a", "inputs": { @@ -624,37 +618,37 @@ describe('VFModule Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -699,7 +693,7 @@ describe('VFModule Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -707,14 +701,14 @@ describe('VFModule Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -724,7 +718,7 @@ describe('VFModule Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -738,16 +732,16 @@ describe('VFModule Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-388_ADIOD-vPE 0": { + "2017-388_PASQUALE-vPE 0": { "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "4.0", "customizationUuid": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", "inputs": { @@ -810,37 +804,37 @@ describe('VFModule Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -886,7 +880,7 @@ describe('VFModule Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -894,14 +888,14 @@ describe('VFModule Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -911,7 +905,7 @@ describe('VFModule Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -925,16 +919,16 @@ describe('VFModule Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 0", + "modelCustomizationName": "2017-388_PASQUALE-vPE 0", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-488_ADIOD-vPE 0": { + "2017-488_PASQUALE-vPE 0": { "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-488_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-488_PASQUALE-vPE", "version": "5.0", "customizationUuid": "1da7b585-5e61-4993-b95e-8e6606c81e45", "inputs": { @@ -997,37 +991,37 @@ describe('VFModule Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -1074,7 +1068,7 @@ describe('VFModule Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -1082,14 +1076,14 @@ describe('VFModule Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -1099,7 +1093,7 @@ describe('VFModule Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -1113,21 +1107,21 @@ describe('VFModule Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-488_ADIOD-vPE 0", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1137,10 +1131,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1151,10 +1145,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1165,10 +1159,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1179,10 +1173,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1193,10 +1187,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" @@ -1204,37 +1198,37 @@ describe('VFModule Model Info', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -1242,19 +1236,19 @@ describe('VFModule Model Info', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1264,10 +1258,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1278,10 +1272,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1292,10 +1286,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1306,10 +1300,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1320,29 +1314,29 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" } } }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} @@ -1352,24 +1346,24 @@ describe('VFModule Model Info', () => { } }, "networks": {}, - "collectionResource": {}, + "collectionResources": {}, "configurations": {}, "fabricConfigurations": {}, "serviceProxies": {}, "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1379,10 +1373,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1393,10 +1387,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1407,10 +1401,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1421,10 +1415,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1435,10 +1429,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" @@ -1446,37 +1440,37 @@ describe('VFModule Model Info', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -1484,19 +1478,19 @@ describe('VFModule Model Info', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1506,10 +1500,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1520,10 +1514,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1534,10 +1528,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1548,10 +1542,10 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1562,29 +1556,29 @@ describe('VFModule Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" } } }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} 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 7db3d906e..bfe1d0082 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 @@ -42,6 +42,7 @@ export class VFModuleModelInfo implements ILevelNodeInfo { name: string = 'vfModules'; type: string = 'Module'; typeName: string = 'M'; + componentInfoType = ComponentInfoType.VFMODULE; /*********************************************************** * return if user should provide instance name or not. @@ -367,22 +368,16 @@ export class VFModuleModelInfo implements ILevelNodeInfo { return (!_.isNil(instance) && !_.isNil(instance[deepDynamicName])) ? instance[deepDynamicName].position : null; } - onSelectedNode(node: ITreeNode): void { + 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), + ModelInformationItem.createInstance("Max instances", !_.isNull(model.properties.maxCountInstances)? String(model.properties.maxCountInstances): null), + ModelInformationItem.createInstance("Initial instances count", !_.isNull(model.properties.initialCount)? String(model.properties.initialCount): null) + ] : []; + + const instanceInfo = []; + const result = [modelInformation, instanceInfo]; + return _.uniq(_.flatten(result)); } - - getInfoForVFModule(model, instance): ComponentInfoModel { - let modelInfoItems: ModelInformationItem[] = []; - if (model && !_.isNil(model.properties)) - { - modelInfoItems = [ - ModelInformationItem.createInstance("Base Module", model.properties.baseModule), - ModelInformationItem.createInstance("Min Instances", model.properties.minCountInstances), - ModelInformationItem.createInstance("Max Instances", model.properties.maxCountInstances), - ModelInformationItem.createInstance("Initial Instances Count", model.properties.initialCount) - ]; - } - return this._componentInfoService.addGeneralInfoItems(modelInfoItems, ComponentInfoType.VFMODULE, model, instance); - } - - } 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 10c8e399c..de8962787 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 @@ -18,7 +18,6 @@ import {IframeService} from "../../../../../shared/utils/iframe.service"; import {ServiceInfoService} from "../../../../../shared/server/serviceInfo/serviceInfo.service"; import {AuditInfoModalComponent} from "../../../../../shared/components/auditInfoModal/auditInfoModal.component"; import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; -import {ComponentInfoModel, ComponentInfoType} from "../../../component-info/component-info-model"; import {ComponentInfoService} from "../../../component-info/component-info.service"; import {AaiService} from "../../../../../shared/services/aaiService/aai.service"; import {HttpClient, HttpHandler} from "@angular/common/http"; @@ -88,8 +87,7 @@ describe('Vnf Model Info', () => { test('VnfModelInfo should defined extra details', () => { expect(vnfModel.name).toEqual('vnfs'); expect(vnfModel.type).toEqual('VNF'); - expect(vnfModel.childName).toEqual('vfModules'); - expect(vnfModel.childType).toEqual('VFModuleModelInfo'); + expect(vnfModel.childNames).toEqual(['vfModules']); }); test('isEcompGeneratedNaming should return true if isEcompGeneratedNaming is "true" ', () => { @@ -135,8 +133,8 @@ describe('Vnf Model Info', () => { }); test('getModel should return VNF model', () => { - let model: VNFModel = vnfModel.getModel('2017-388_ADIOD-vPE 1', <any>{ - originalName : '2017-388_ADIOD-vPE 1' + let model: VNFModel = vnfModel.getModel('2017-388_PASQUALE-vPE 1', <any>{ + originalName : '2017-388_PASQUALE-vPE 1' }, getServiceHierarchy()); expect(model.type).toEqual('VF'); }); @@ -283,7 +281,7 @@ describe('Vnf Model Info', () => { }); test('getMenuAction: edit', ()=>{ - let node = {"modelId":"d6557200-ecf2-4641-8094-5393ae3aae60","missingData":true,"action":"None","inMaint":true,"name":"jlfBwIks283yKlCD8","modelName":"VF_vMee 0","type":"VF","isEcompGeneratedNaming":true,"networkStoreKey":"VF_vMee 0:004","vnfStoreKey":"VF_vMee 0:004","typeName":"VNF"}; + let node = {"modelId":"d6557200-ecf2-4641-8094-5393ae3aae60","missingData":true,"action":"None","inMaint":true,"name":"jlfBwIks283yKlCD8","modelName":"VF_vGeraldine 0","type":"VF","isEcompGeneratedNaming":true,"networkStoreKey":"VF_vGeraldine 0:004","vnfStoreKey":"VF_vGeraldine 0:004","typeName":"VNF"}; let serviceModelId = "d6557200-ecf2-4641-8094-5393ae3aae60"; let result = vnfModel.getMenuAction(<any>node, serviceModelId); spyOn(result['edit'], 'method'); @@ -302,11 +300,11 @@ describe('Vnf Model Info', () => { "action": "None", "inMaint": true, "name": "jlfBwIks283yKlCD8", - "modelName": "VF_vMee 0", + "modelName": "VF_vGeraldine 0", "type": "VF", "userProvidedNaming": false, - "networkStoreKey": "VF_vMee 0:004", - "vnfStoreKey": "VF_vMee 0:004", + "networkStoreKey": "VF_vGeraldine 0:004", + "vnfStoreKey": "VF_vGeraldine 0:004", "typeName": "VNF" }, type : 'VNF' @@ -337,11 +335,11 @@ describe('Vnf Model Info', () => { "action": "None", "inMaint": true, "name": "jlfBwIks283yKlCD8", - "modelName": "VF_vMee 0", + "modelName": "VF_vGeraldine 0", "type": "VF", "isEcompGeneratedNaming":true, - "networkStoreKey": "VF_vMee 0:004", - "vnfStoreKey": "VF_vMee 0:004", + "networkStoreKey": "VF_vGeraldine 0:004", + "vnfStoreKey": "VF_vGeraldine 0:004", "typeName": "VNF" }, type : 'VNF' @@ -364,11 +362,11 @@ describe('Vnf Model Info', () => { "action": "None", "inMaint": true, "name": "jlfBwIks283yKlCD8", - "modelName": "VF_vMee 0", + "modelName": "VF_vGeraldine 0", "type": "VF", "isEcompGeneratedNaming":true, - "networkStoreKey": "VF_vMee 0:004", - "vnfStoreKey": "VF_vMee 0:004", + "networkStoreKey": "VF_vGeraldine 0:004", + "vnfStoreKey": "VF_vGeraldine 0:004", "typeName": "VNF" }, type : 'VNF' @@ -385,7 +383,7 @@ describe('Vnf Model Info', () => { }); test('getMenuAction: delete', ()=>{ - let node = {"modelId":"d6557200-ecf2-4641-8094-5393ae3aae60","missingData":true,"action":"None","inMaint":true,"name":"jlfBwIks283yKlCD8","modelName":"VF_vMee 0","type":"VF","isEcompGeneratedNaming":true,"networkStoreKey":"VF_vMee 0:004","vnfStoreKey":"VF_vMee 0:004","typeName":"VNF"}; + let node = {"modelId":"d6557200-ecf2-4641-8094-5393ae3aae60","missingData":true,"action":"None","inMaint":true,"name":"jlfBwIks283yKlCD8","modelName":"VF_vGeraldine 0","type":"VF","isEcompGeneratedNaming":true,"networkStoreKey":"VF_vGeraldine 0:004","vnfStoreKey":"VF_vGeraldine 0:004","typeName":"VNF"}; let serviceModelId = "d6557200-ecf2-4641-8094-5393ae3aae60"; let result = vnfModel.getMenuAction(<any>node, serviceModelId); spyOn(result['delete'], 'method'); @@ -398,7 +396,7 @@ describe('Vnf Model Info', () => { test('getMenuAction: undoDelete', ()=>{ - let node = {"modelId":"d6557200-ecf2-4641-8094-5393ae3aae60","missingData":true,"action":"None","inMaint":true,"name":"jlfBwIks283yKlCD8","modelName":"VF_vMee 0","type":"VF","isEcompGeneratedNaming":true,"networkStoreKey":"VF_vMee 0:004","vnfStoreKey":"VF_vMee 0:004","typeName":"VNF"}; + let node = {"modelId":"d6557200-ecf2-4641-8094-5393ae3aae60","missingData":true,"action":"None","inMaint":true,"name":"jlfBwIks283yKlCD8","modelName":"VF_vGeraldine 0","type":"VF","isEcompGeneratedNaming":true,"networkStoreKey":"VF_vGeraldine 0:004","vnfStoreKey":"VF_vGeraldine 0:004","typeName":"VNF"}; let serviceModelId = "d6557200-ecf2-4641-8094-5393ae3aae60"; let result = vnfModel.getMenuAction(<any>node, serviceModelId); spyOn(result['undoDelete'], 'method'); @@ -433,45 +431,36 @@ describe('Vnf Model Info', () => { expect(result['showAuditInfo'].enable(node)).toBeTruthy(); result['showAuditInfo']['method'](node, serviceModelId); - // expect(AuditInfoModalComponent.openInstanceAuditInfoModal.next).toBeCalled(); - // expect(result['showAuditInfo'].method) - }); test('Info for vnf should be correct', () => { const model = getVNFModel(); const instance = getVNFInstance(); - let actualVNFInfo = vnfModel.getInfoForVnf(model,instance); + let actualVNFInfo = vnfModel.getInfo(model,instance); let expectedVNFInfo = [ - ModelInformationItem.createInstance('Type', 'VF'), - ModelInformationItem.createInstance('Model Version', '2.0'), - ModelInformationItem.createInstance('Model Customization ID','91415b44-753d-494c-926a-456a9172bbb9'), - ModelInformationItem.createInstance('Instance ID', '66cbb3b5-c823-470c-9520-4e0b85112250'), - ModelInformationItem.createInstance('In Maintenance', true), - ModelInformationItem.createInstance('Min Instances', 0), - ModelInformationItem.createInstance('Max Instances',1) + ModelInformationItem.createInstance('Min instances', "0"), + ModelInformationItem.createInstance('Max instances',"1"), + ModelInformationItem.createInstance('NF type',undefined), + ModelInformationItem.createInstance('NF role',undefined) ]; - expect(actualVNFInfo).toEqual(new ComponentInfoModel(ComponentInfoType.VNF, expectedVNFInfo, [])); + expect(actualVNFInfo).toEqual(expectedVNFInfo); }); test('Info for vnf in left side - model only - should be correct', () => { const model = getVNFModel(); - let actualVNFInfo = vnfModel.getInfoForVnf(model,null); + let actualVNFInfo = vnfModel.getInfo(model,null); let expectedVNFInfo = [ - ModelInformationItem.createInstance('Type', 'VF'), - ModelInformationItem.createInstance('Model Version', '2.0'), - ModelInformationItem.createInstance('Model Customization ID','91415b44-753d-494c-926a-456a9172bbb9'), - ModelInformationItem.createInstance('Min Instances', 0), - ModelInformationItem.createInstance('Max Instances',1) + ModelInformationItem.createInstance('Min instances', "0"), + ModelInformationItem.createInstance('Max instances',"1") ]; - expect(actualVNFInfo).toEqual(new ComponentInfoModel(ComponentInfoType.VNF, expectedVNFInfo, [])); + expect(actualVNFInfo).toEqual(expectedVNFInfo); }); function getVNFModel(){ return { - "name":"VF_vMee", + "name":"VF_vGeraldine", "version":"2.0", - "description":"VSP_vMee", + "description":"VSP_vGeraldine", "uuid":"d6557200-ecf2-4641-8094-5393ae3aae60", "invariantUuid":"4160458e-f648-4b30-a176-43881ffffe9e", "max":1, @@ -479,7 +468,7 @@ describe('Vnf Model Info', () => { "customizationUuid":"91415b44-753d-494c-926a-456a9172bbb9", "isEcompGeneratedNaming":true, "type":"VF", - "modelCustomizationName":"VF_vMee 0", + "modelCustomizationName":"VF_vGeraldine 0", "vfcInstanceGroups":{}, "properties":{ "gpb2_Internal2_mac":"00:11:22:EF:AC:DF", @@ -521,7 +510,7 @@ describe('Vnf Model Info', () => { "lcpCloudRegionId":null, "tenantId":null, "modelInfo":{ - "modelCustomizationName":"VF_vMee 0", + "modelCustomizationName":"VF_vGeraldine 0", "modelInvariantId":"vnf-instance-model-invariant-id", "modelVersionId":"d6557200-ecf2-4641-8094-5393ae3aae60", "modelType":"vnf" @@ -530,14 +519,14 @@ describe('Vnf Model Info', () => { "provStatus":null, "inMaint":true, "uuid":"d6557200-ecf2-4641-8094-5393ae3aae60", - "originalName":"VF_vMee 0", + "originalName":"VF_vGeraldine 0", "legacyRegion":null, "lineOfBusiness":null, "platformName":null, - "trackById":"VF_vMee 0:004", + "trackById":"VF_vGeraldine 0:004", "vfModules":{ - "vf_vmee0..VfVmee..vmme_vlc..module-1":{ - "vf_vmee0..VfVmee..vmme_vlc..module-1:008":{ + "vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1":{ + "vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1:008":{ "action":"None", "instanceName":"ss820f_0918_db", "instanceId":"2c1ca484-cbc2-408b-ab86-25a2c15ce280", @@ -546,7 +535,7 @@ describe('Vnf Model Info', () => { "lcpCloudRegionId":null, "tenantId":null, "modelInfo":{ - "modelCustomizationName":"VfVmee..vmme_vlc..module-1", + "modelCustomizationName":"VfVgeraldine..vflorence_vlc..module-1", "modelCustomizationId":"b200727a-1bf9-4e7c-bd06-b5f4c9d920b9", "modelInvariantId":"09edc9ef-85d0-4b26-80de-1f569d49e750", "modelVersionId":"522159d5-d6e0-4c2a-aa44-5a542a12a830", @@ -556,11 +545,11 @@ describe('Vnf Model Info', () => { "provStatus":null, "inMaint":true, "uuid":"522159d5-d6e0-4c2a-aa44-5a542a12a830", - "originalName":"VfVmee..vmme_vlc..module-1", + "originalName":"VfVgeraldine..vflorence_vlc..module-1", "legacyRegion":null, "lineOfBusiness":null, "platformName":null, - "trackById":"vf_vmee0..VfVmee..vmme_vlc..module-1:008", + "trackById":"vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1:008", "isBase":false, "volumeGroupName":null } @@ -615,7 +604,7 @@ describe('Vnf Model Info', () => { "serviceEcompNaming": "false", "instantiationType": "Macro", "inputs": { - "2017488_adiodvpe0_ASN": { + "2017488_pasqualevpe0_ASN": { "type": "string", "description": "AV/PE", "entry_schema": null, @@ -631,11 +620,11 @@ describe('Vnf Model Info', () => { } }, "vnfs": { - "2017-388_ADIOD-vPE 1": { + "2017-388_PASQUALE-vPE 1": { "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413", "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "1.0", "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a", "inputs": { @@ -698,37 +687,37 @@ describe('Vnf Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -773,7 +762,7 @@ describe('Vnf Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -781,14 +770,14 @@ describe('Vnf Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -798,7 +787,7 @@ describe('Vnf Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -812,16 +801,16 @@ describe('Vnf Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-388_ADIOD-vPE 0": { + "2017-388_PASQUALE-vPE 0": { "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "4.0", "customizationUuid": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", "inputs": { @@ -884,37 +873,37 @@ describe('Vnf Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -960,7 +949,7 @@ describe('Vnf Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -968,14 +957,14 @@ describe('Vnf Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -985,7 +974,7 @@ describe('Vnf Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -999,16 +988,16 @@ describe('Vnf Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 0", + "modelCustomizationName": "2017-388_PASQUALE-vPE 0", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-488_ADIOD-vPE 0": { + "2017-488_PASQUALE-vPE 0": { "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-488_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-488_PASQUALE-vPE", "version": "5.0", "customizationUuid": "1da7b585-5e61-4993-b95e-8e6606c81e45", "inputs": { @@ -1071,37 +1060,37 @@ describe('Vnf Model Info', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -1148,7 +1137,7 @@ describe('Vnf Model Info', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -1156,14 +1145,14 @@ describe('Vnf Model Info', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -1173,7 +1162,7 @@ describe('Vnf Model Info', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -1187,21 +1176,21 @@ describe('Vnf Model Info', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-488_ADIOD-vPE 0", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1211,10 +1200,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1225,10 +1214,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1239,10 +1228,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1253,10 +1242,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1267,10 +1256,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" @@ -1278,37 +1267,37 @@ describe('Vnf Model Info', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -1316,19 +1305,19 @@ describe('Vnf Model Info', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1338,10 +1327,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1352,10 +1341,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1366,10 +1355,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1380,10 +1369,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1394,29 +1383,29 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" } } }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} @@ -1426,24 +1415,24 @@ describe('Vnf Model Info', () => { } }, "networks": {}, - "collectionResource": {}, + "collectionResources": {}, "configurations": {}, "fabricConfigurations": {}, "serviceProxies": {}, "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1453,10 +1442,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1467,10 +1456,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1481,10 +1470,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1495,10 +1484,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1509,10 +1498,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" @@ -1520,37 +1509,37 @@ describe('Vnf Model Info', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -1558,19 +1547,19 @@ describe('Vnf Model Info', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1580,10 +1569,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1594,10 +1583,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1608,10 +1597,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1622,10 +1611,10 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1636,29 +1625,29 @@ describe('Vnf Model Info', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" } } }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} 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 cec3fad1e..2bdeda083 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 @@ -33,7 +33,7 @@ import { } from "../../../../../shared/storeUtil/utils/vnf/vnf.actions"; import * as _ from 'lodash'; import {IModalConfig} from "onap-ui-angular/dist/modals/models/modal-config"; -import {ComponentInfoModel, ComponentInfoType} from "../../../component-info/component-info-model"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; import {ComponentInfoService} from "../../../component-info/component-info.service"; import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; @@ -53,9 +53,9 @@ export class VnfModelInfo implements ILevelNodeInfo { name: string = 'vnfs'; type: string = 'VNF'; - childName: string = 'vfModules'; - childType: string = 'VFModuleModelInfo'; + childNames: string[] = ['vfModules']; typeName: string = 'VNF'; + componentInfoType = ComponentInfoType.VNF; /*********************************************************** * return if user should provide instance name or not. @@ -215,11 +215,9 @@ export class VnfModelInfo implements ILevelNodeInfo { }, duplicate: { method: (node, serviceModelId) => { - if (this._store.getState().global.flags['FLAG_DUPLICATE_VNF']) { - const storeKey = node.data.vnfStoreKey; - let modalConfig: IModalConfig = this._duplicateService.openDuplicateModal(serviceModelId, node.data.modelUniqueId, node.data.modelName, storeKey, 1, this._store, node); - this.modalService.openCustomModal(modalConfig, DuplicateVnfComponent); - } + const storeKey = node.data.vnfStoreKey; + let modalConfig: IModalConfig = this._duplicateService.openDuplicateModal(serviceModelId, node.data.modelUniqueId, node.data.modelName, storeKey, 1, this._store, node); + this.modalService.openCustomModal(modalConfig, DuplicateVnfComponent); }, visible: (node) => this._sharedTreeService.shouldShowDuplicate(node) && !_.isNil(node.data) && !_.isNil(node.data.action) && node.data.action === ServiceInstanceActions.Create && this._duplicateService.canDuplicate(node), enable: (node, serviceModelId) => this._duplicateService.isEnabled(node, this._store, serviceModelId) @@ -306,27 +304,18 @@ export class VnfModelInfo implements ILevelNodeInfo { return !_.isNil(instance) ? instance.position : null; } - /*********************************************************** - * When user is click on some nod element - * @param node - current ITrees node - ************************************************************/ - onSelectedNode(node: ITreeNode): void { - ComponentInfoService.triggerComponentInfoChange.next(new ComponentInfoModel(ComponentInfoType.VNF,[], [])); - } + getInfo(model, instance): ModelInformationItem[] { + const modelInformation = !_.isEmpty(model) ? [ + ModelInformationItem.createInstance("Min instances", !_.isNull(model.min)? String(model.min): null), + ModelInformationItem.createInstance("Max instances", !_.isNull(model.max)? String(model.max): null) + ] : []; - getInfoForVnf(model, instance): ComponentInfoModel { - let modelInfoItems: ModelInformationItem[] = []; - if (model) { - modelInfoItems.push(ModelInformationItem.createInstance("Min Instances", model.min)); - modelInfoItems.push(ModelInformationItem.createInstance("Max Instances", model.max)); - } - if (instance) { - modelInfoItems.push(ModelInformationItem.createInstance("NF Type", instance.nfType)); - modelInfoItems.push(ModelInformationItem.createInstance("NF Role", instance.nfRole)); - } - return this._componentInfoService.addGeneralInfoItems(modelInfoItems, ComponentInfoType.VNF, model, instance); + const instanceInfo = !_.isEmpty(instance) ? [ + ModelInformationItem.createInstance("NF type", instance.nfType), + ModelInformationItem.createInstance("NF role", instance.nfRole) + ] : []; + const result = [modelInformation, instanceInfo]; + return _.uniq(_.flatten(result)); } - - } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnfGrouping/vnfGrouping.model.info.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnfGrouping/vnfGrouping.model.info.spec.ts index 532a8fe17..802047cb9 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnfGrouping/vnfGrouping.model.info.spec.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnfGrouping/vnfGrouping.model.info.spec.ts @@ -1,5 +1,4 @@ - -import {HttpClientTestingModule, HttpTestingController} from "@angular/common/http/testing"; +import {HttpClientTestingModule} from "@angular/common/http/testing"; import {getTestBed, TestBed} from "@angular/core/testing"; import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing"; import {VnfGroupingModelInfo} from "./vnfGrouping.model.info"; @@ -10,9 +9,11 @@ import {DialogService} from "ng2-bootstrap-modal"; import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service"; import {VnfGroupModel} from "../../../../../shared/models/vnfGroupModel"; import {IframeService} from "../../../../../shared/utils/iframe.service"; -import {ActivatedRoute} from "@angular/router"; import {RouterTestingModule} from "@angular/router/testing"; import {DrawingBoardModes} from "../../../drawing-board.modes"; +import {AaiService} from "../../../../../shared/services/aaiService/aai.service"; +import {FeatureFlagsService} from "../../../../../shared/services/featureFlag/feature-flags.service"; +import {ITableContent} from "../../../../../shared/components/searchMembersModal/members-table/element-table-row.model"; describe('VnfGroupingModelInfo Model Info', () => { let injector; @@ -22,6 +23,7 @@ describe('VnfGroupingModelInfo Model Info', () => { let _sharedTreeService : SharedTreeService; let _iframeService : IframeService; let vnfGroupModel: VnfGroupingModelInfo; + let _aaiService : AaiService; beforeAll(done => (async () => { TestBed.configureTestingModule({ imports: [HttpClientTestingModule, NgReduxTestingModule, RouterTestingModule], @@ -31,13 +33,16 @@ describe('VnfGroupingModelInfo Model Info', () => { DynamicInputsService, SharedTreeService, IframeService, + AaiService, + FeatureFlagsService, MockNgRedux] }); await TestBed.compileComponents(); injector = getTestBed(); _sharedTreeService = injector.get(SharedTreeService); + _aaiService = injector.get(AaiService); - vnfGroupModel = new VnfGroupingModelInfo(_dynamicInputsService, _sharedTreeService, _dialogService, _vnfGroupPopupService, _iframeService, MockNgRedux.getInstance()); + vnfGroupModel = new VnfGroupingModelInfo(_dynamicInputsService, _sharedTreeService, _dialogService, _vnfGroupPopupService, _iframeService, _aaiService, MockNgRedux.getInstance()); })().then(done).catch(done.fail)); @@ -59,7 +64,6 @@ describe('VnfGroupingModelInfo Model Info', () => { expect(isEcompGeneratedNaming).toBeTruthy(); }); - test('getTooltip should return "vnfGrouping"', () => { let tooltip: string = vnfGroupModel.getTooltip(); expect(tooltip).toEqual('VnfGroup'); @@ -75,7 +79,6 @@ describe('VnfGroupingModelInfo Model Info', () => { expect(nextLevel).not.toBeNull(); }); - test('showNodeIcons should return true if not reachLimit of max', ()=>{ let serviceId : string = 'servicedId'; let node = { @@ -199,6 +202,70 @@ describe('VnfGroupingModelInfo Model Info', () => { expect(result['showAuditInfo']['method']).toHaveBeenCalledWith(node, serviceModelId); }); + + test('generateRelatedMemberTableContent', ()=> { + const tableContents: ITableContent[] = vnfGroupModel.generateRelatedMemberTableContent(); + expect(tableContents).toEqual([ + { + id: 'vnfName', + contents: [{ + id: ['instanceName'], + value: ['instanceName'] + }, { + id: ['instanceId'], + value: ["instanceId"], + prefix: 'UUID: ' + }] + }, + { + id: 'version', + contents: [{ + id: ['modelInfo', 'modelVersion'], + value: ['modelInfo', 'modelVersion'] + }] + }, + { + id: 'modelName', + contents: [{ + id: ['modelInfo', 'modelName'], + value: ['modelInfo', 'modelName'] + }] + }, + { + id: 'provStatus', + contents: [{ + id: ['provStatus'], + value: ['provStatus'] + }] + }, + { + id: 'serviceInstance', + contents: [{ + id: ['serviceInstanceName'], + value: ['serviceInstanceName'] + }, { + id: ['serviceInstanceId'], + value: ["serviceInstanceId"], + prefix: 'UUID: ' + }] + }, + { + id: 'cloudRegion', + contents: [{ + id: ['lcpCloudRegionId'], + value: ['lcpCloudRegionId'] + }] + }, + { + id: 'tenantName', + contents: [{ + id: ['tenantName'], + value: ['tenantName'] + }] + } + ]); + }); + function getServiceHierarchy(){ return { "service": { @@ -214,7 +281,7 @@ describe('VnfGroupingModelInfo Model Info', () => { "serviceEcompNaming": "false", "instantiationType": "Macro", "inputs": { - "2017488_adiodvpe0_ASN": { + "2017488_pasqualevpe0_ASN": { "type": "string", "description": "AV/PE", "entry_schema": null, @@ -245,11 +312,11 @@ describe('VnfGroupingModelInfo Model Info', () => { "type": "LOAD-GROUP" }, "members": { - "vdbe_svc_vprs_proxy 0": { + "vdorothea_svc_vprs_proxy 0": { "uuid": "65fadfa8-a0d9-443f-95ad-836cd044e26c", "invariantUuid": "f4baae0c-b3a5-4ca1-a777-afbffe7010bc", - "description": "A Proxy for Service vDBE_Svc_vPRS", - "name": "vDBE_Svc_vPRS Service Proxy", + "description": "A Proxy for Service vDOROTHEA_Svc_vPRS", + "name": "vDOROTHEA_Svc_vPRS Service Proxy", "version": "1.0", "customizationUuid": "bdb63d23-e132-4ce7-af2c-a493b4cafac9", "inputs": {}, @@ -258,12 +325,12 @@ describe('VnfGroupingModelInfo Model Info', () => { "type": "Service Proxy", "sourceModelUuid": "da7827a2-366d-4be6-8c68-a69153c61274", "sourceModelInvariant": "24632e6b-584b-4f45-80d4-fefd75fd9f14", - "sourceModelName": "vDBE_Svc_vPRS" + "sourceModelName": "vDOROTHEA_Svc_vPRS" }, - "vdbe_svc_vprs_proxy 1": { + "vdorothea_svc_vprs_proxy 1": { "uuid": "111dfa8-a0d9-443f-95ad-836cd044e26c", "invariantUuid": "111ae0c-b3a5-4ca1-a777-afbffe7010bc", - "description": "A Proxy for Service vDBE_Svc_vPRS", + "description": "A Proxy for Service vDOROTHEA_Svc_vPRS", "name": "111_Svc_vPRS Service Proxy", "version": "1.0", "customizationUuid": "1113d23-e132-4ce7-af2c-a493b4cafac9", @@ -279,7 +346,7 @@ describe('VnfGroupingModelInfo Model Info', () => { } }, "networks": {}, - "collectionResource": {}, + "collectionResources": {}, "configurations": {}, "fabricConfigurations": {}, "serviceProxies": {}, @@ -288,4 +355,67 @@ describe('VnfGroupingModelInfo Model Info', () => { "pnfs": {} } } + + function loadMockMembers(): any[] { + return [ + { + "action": "None", + "instanceName": "VNF1_INSTANCE_NAME", + "instanceId": "VNF1_INSTANCE_ID", + "orchStatus": null, + "productFamilyId": null, + "lcpCloudRegionId": "hvf23b", + "tenantId": "3e9a20a3e89e45f884e09df0cc2d2d2a", + "tenantName": "APPC-24595-T-IST-02C", + "modelInfo": { + "modelInvariantId": "vnf-instance-model-invariant-id", + "modelVersionId": "7a6ee536-f052-46fa-aa7e-2fca9d674c44", + "modelVersion": "2.0", + "modelName": "vf_vEPDG", + "modelType": "vnf" + }, + "instanceType": "VNF1_INSTANCE_TYPE", + "provStatus": null, + "inMaint": false, + "uuid": "7a6ee536-f052-46fa-aa7e-2fca9d674c44", + "originalName": null, + "legacyRegion": null, + "lineOfBusiness": null, + "platformName": null, + "trackById": "7a6ee536-f052-46fa-aa7e-2fca9d674c44:002", + "serviceInstanceId": "service-instance-id1", + "serviceInstanceName": "service-instance-name" + }, + { + "action": "None", + "instanceName": "VNF2_INSTANCE_NAME", + "instanceId": "VNF2_INSTANCE_ID", + "orchStatus": null, + "productFamilyId": null, + "lcpCloudRegionId": "hvf23b", + "tenantId": "3e9a20a3e89e45f884e09df0cc2d2d2a", + "tenantName": "APPC-24595-T-IST-02C", + "modelInfo": { + "modelInvariantId": "vnf-instance-model-invariant-id", + "modelVersionId": "eb5f56bf-5855-4e61-bd00-3e19a953bf02", + "modelVersion": "1.0", + "modelName": "vf_vEPDG", + "modelType": "vnf" + }, + "instanceType": "VNF2_INSTANCE_TYPE", + "provStatus": null, + "inMaint": true, + "uuid": "eb5f56bf-5855-4e61-bd00-3e19a953bf02", + "originalName": null, + "legacyRegion": null, + "lineOfBusiness": null, + "platformName": null, + "trackById": "eb5f56bf-5855-4e61-bd00-3e19a953bf02:003", + "serviceInstanceId": "service-instance-id2", + "serviceInstanceName": "service-instance-name" + } + ]; + } + + }); diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnfGrouping/vnfGrouping.model.info.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnfGrouping/vnfGrouping.model.info.ts index 7f2052a0c..148ce22c7 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnfGrouping/vnfGrouping.model.info.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnfGrouping/vnfGrouping.model.info.ts @@ -20,10 +20,21 @@ import { undoDeleteActionVnfGroupInstance } from "../../../../../shared/storeUtil/utils/vnfGroup/vnfGroup.actions"; import {RelatedVnfMemberInfoModel} from "../relatedVnfMember/relatedVnfMember.info.model"; -import {SearchMembersModalComponent} from "../../../../../shared/components/searchMembersModal/search-members-modal.component"; +import {SearchElementsModalComponent} from "../../../../../shared/components/searchMembersModal/search-elements-modal.component"; import * as _ from "lodash"; import {MessageBoxData} from "../../../../../shared/components/messageBox/messageBox.data"; import {MessageBoxService} from "../../../../../shared/components/messageBox/messageBox.service"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; +import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; +import {Level1Instance} from "../../../../../shared/models/level1Instance"; +import {AaiService} from "../../../../../shared/services/aaiService/aai.service"; +import {Observable} from "rxjs"; +import {createRelatedVnfMemberInstance} from "../../../../../shared/storeUtil/utils/relatedVnfMember/relatedVnfMember.actions"; +import { + ITableContent, + SearchFieldItemType +} from "../../../../../shared/components/searchMembersModal/members-table/element-table-row.model"; +import {CustomTableColumnDefinition} from "../../../../../shared/components/searchMembersModal/members-table/elements-table.component"; export class VnfGroupingModelInfo implements ILevelNodeInfo { constructor(private _dynamicInputsService: DynamicInputsService, @@ -31,15 +42,16 @@ export class VnfGroupingModelInfo implements ILevelNodeInfo { private _dialogService: DialogService, private _vnfGroupPopupService: VnfGroupPopupService, private _iframeService: IframeService, + private _aaiService: AaiService, private _store: NgRedux<AppState>) { } name: string = 'vnfGroups'; type: string = 'VnfGroup'; typeName: string = 'G'; - childType: string = 'RelatedVnfMemberInfoModel'; - childName: string = 'vnfs'; - limitMembers : number; + childNames: string[] = ['vnfs']; + componentInfoType = ComponentInfoType.VNFGROUP; + limitMembers: number; /*********************************************************** * return if user should provide instance name or not. @@ -78,7 +90,7 @@ export class VnfGroupingModelInfo implements ILevelNodeInfo { node.typeName = this.typeName; node.menuActions = this.getMenuAction(<any>node, model.uuid); node.isFailed = _.isNil(instance.isFailed) ? false : instance.isFailed; - node.statusMessage = !_.isNil(instance.statusMessage) ? instance.statusMessage: ""; + node.statusMessage = !_.isNil(instance.statusMessage) ? instance.statusMessage : ""; node.limitMembers = (!_.isNil(model.properties.quantity)) ? model.properties.quantity : null; return node; } @@ -182,29 +194,61 @@ export class VnfGroupingModelInfo implements ILevelNodeInfo { visible: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node), enable: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node) }, + addGroupMember: { method: (node, serviceModelId) => { let serviceHierarchy = this._store.getState().service.serviceHierarchy[serviceModelId]; let serviceInstance = this._store.getState().service.serviceInstance[serviceModelId]; let vnfGroupModel = new VnfGroupModel(serviceHierarchy['vnfGroups'][node.data.modelName]); - this._dialogService.addDialog(SearchMembersModalComponent, { - title: 'Add members to group', - description: 'Select VNF instances to associate', - subscriberId: serviceInstance.globalSubscriberId, - serviceType: serviceInstance.subscriptionServiceType, - vnfGroupModel: vnfGroupModel, - serviceModelId: serviceModelId, - node: node.data, - searchFields: [{ - title: 'Service model name', - dataTestId: 'sourceModelName', - value: (Object.values(vnfGroupModel.members))[0].sourceModelName - }, - { - title: 'Service invariant UUID', - dataTestId: 'sourceModelInvariant', - value: (Object.values(vnfGroupModel.members))[0].sourceModelInvariant - }] + this._dialogService.addDialog(SearchElementsModalComponent, { + modalInformation: { + type: 'VNF', + serviceModelId : serviceModelId, + title: 'Add members to group', + description: 'Select VNF instances to associate', + noElementsMsg: 'No VNFs were found that can belong to this group.', + uniqObjectField: 'instanceId', + topButton: { + text: 'SET MEMBERS', + /******************************************************************************************************************************** + iterate over all current elements: + + 1) if element is selected then update REDUX store + 2) if element is not selected then delete member + + @searchElementsModalComponent - all modal information (allElementsStatusMap, vnfGroupStoreKey, serviceId) + ********************************************************************************************************************************/ + + action: (searchElementsModalComponent) => { + let tmpMembers = searchElementsModalComponent._membersTableService.allElementsStatusMap; + for (let key in tmpMembers) { + if (tmpMembers[key].isSelected) { + this._store.dispatch(createRelatedVnfMemberInstance(node.data.vnfGroupStoreKey, serviceModelId, tmpMembers[key])); + } + } + searchElementsModalComponent.closeDialog(); + } + }, + getElements: (): Observable<Level1Instance[]> => { + return this._aaiService.getOptionalGroupMembers(serviceModelId, serviceInstance.globalSubscriberId, serviceInstance.subscriptionServiceType, (Object.values(vnfGroupModel.members))[0].sourceModelInvariant, vnfGroupModel.properties.type, vnfGroupModel.properties.role).map((result) => { + return this.filterUsedVnfMembers(serviceModelId, result); + }); + }, + tableHeaders : this.getTableHeaders(), + tableContent: this.generateRelatedMemberTableContent(), + searchFields: [{ + title: 'Service model name', + dataTestId: 'sourceModelName', + value: (Object.values(vnfGroupModel.members))[0].sourceModelName, + type: SearchFieldItemType.LABEL + }, + { + title: 'Service invariant UUID', + dataTestId: 'sourceModelInvariant', + value: (Object.values(vnfGroupModel.members))[0].sourceModelInvariant, + type: SearchFieldItemType.LABEL + }] + } } ); }, @@ -223,9 +267,9 @@ export class VnfGroupingModelInfo implements ILevelNodeInfo { method: (node, serviceModelId) => { if ((!_.isNil(node.data.children) && node.data.children.length === 0) || _.isNil(node.data.children)) { this._store.dispatch(deleteActionVnfGroupInstance(node.data.vnfGroupStoreKey, serviceModelId)); - }else { - this._sharedTreeService.shouldShowDeleteInstanceWithChildrenModal(node, serviceModelId, (node, serviceModelId)=>{ - this._sharedTreeService.removeDeleteAllChild(node, serviceModelId, (node, serviceModelId)=>{ + } else { + this._sharedTreeService.shouldShowDeleteInstanceWithChildrenModal(node, serviceModelId, (node, serviceModelId) => { + this._sharedTreeService.removeDeleteAllChild(node, serviceModelId, (node, serviceModelId) => { this._store.dispatch(deleteActionVnfGroupInstance(node.data.vnfGroupStoreKey, serviceModelId)); }); }); @@ -252,13 +296,101 @@ export class VnfGroupingModelInfo implements ILevelNodeInfo { } + + generateRelatedMemberTableContent(): ITableContent[] { + return [ + { + id: 'vnfName', + contents: [{ + id: ['instanceName'], + value: ['instanceName'] + }, { + id: ['instanceId'], + value: ["instanceId"], + prefix: 'UUID: ' + }] + }, + { + id: 'version', + contents: [{ + id: ['modelInfo', 'modelVersion'], + value: ['modelInfo', 'modelVersion'] + }] + }, + { + id: 'modelName', + contents: [{ + id: ['modelInfo', 'modelName'], + value: ['modelInfo', 'modelName'] + }] + }, + { + id: 'provStatus', + contents: [{ + id: ['provStatus'], + value: ['provStatus'] + }] + }, + { + id: 'serviceInstance', + contents: [{ + id: ['serviceInstanceName'], + value: ['serviceInstanceName'] + }, { + id: ['serviceInstanceId'], + value: ["serviceInstanceId"], + prefix: 'UUID: ' + }] + }, + { + id: 'cloudRegion', + contents: [{ + id: ['lcpCloudRegionId'], + value: ['lcpCloudRegionId'] + }] + }, + { + id: 'tenantName', + contents: [{ + id: ['tenantName'], + value: ['tenantName'] + }] + } + ]; + } + + getTableHeaders() : CustomTableColumnDefinition[]{ + const type : string = 'VNF'; + return [ + {displayName: `${type} instance name`, key: ['instanceName']}, + {displayName: `${type} version`, key: ['modelInfo', 'modelVersion']}, + {displayName: `${type} model name`, key: ['modelInfo', 'modelName']}, + {displayName: 'Prov Status', key: ['provStatus']}, + {displayName: 'Service instance name', key: ['serviceInstanceName']}, + {displayName: 'Cloud Region', key: ['lcpCloudRegionId']}, + {displayName: 'Tenant Name', key: ['tenantName']} + ]; + } + + filterUsedVnfMembers = (serviceModelId: string, result: Level1Instance[]): Level1Instance[] => { + const allMembersMap = _.keyBy(result as Level1Instance[], 'instanceId'); + const vnfGroupsData = this._store.getState().service.serviceInstance[serviceModelId].vnfGroups; + const vnfMembersArr = _.flatMap(vnfGroupsData).map((vnfGroup) => vnfGroup.vnfs); + for (let vnf of vnfMembersArr) { + for (let member in vnf) { + delete allMembersMap[member]; + } + } + return _.flatMap(allMembersMap); + }; + removeGroup(this, node, serviceModelId) { this._store.dispatch(removeInstance(node.data.modelName, serviceModelId, node.data.vnfGroupStoreKey, node)); this._store.dispatch(changeInstanceCounter(node.data.modelUniqueId, serviceModelId, -1, node)); this._sharedTreeService.selectedVNF = null; } - updatePosition(that , node, instanceId): void { + updatePosition(that, node, instanceId): void { // TODO } @@ -266,7 +398,8 @@ export class VnfGroupingModelInfo implements ILevelNodeInfo { return !_.isNil(instance) ? instance.position : null; } - onSelectedNode(node: ITreeNode): void { + getInfo(model, instance): ModelInformationItem[] { + return []; } } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vpn/vpn.model.info.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vpn/vpn.model.info.spec.ts new file mode 100644 index 000000000..9ccfaf753 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vpn/vpn.model.info.spec.ts @@ -0,0 +1,66 @@ +import {ComponentInfoService} from "../../../component-info/component-info.service"; +import {NgRedux} from "@angular-redux/store"; +import {AppState} from "../../../../../shared/store/reducers"; +import {getTestBed, TestBed} from "@angular/core/testing"; +import {HttpClientTestingModule} from "@angular/common/http/testing"; +import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing"; +import {SharedTreeService} from "../../shared.tree.service"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; +import {VpnModelInfo} from "./vpn.model.info"; +import {VrfModel} from "../../../../../shared/models/vrfModel"; +import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; +import {Level1Instance} from "../../../../../shared/models/level1Instance"; +import * as _ from "lodash"; +import {VpnTreeNode} from "../../../../../shared/models/vpnTreeNode"; +import {Level1Model} from "../../../../../shared/models/nodeModel"; + +describe('VPN Model Info', () => { + + let injector; + let _store : NgRedux<AppState>; + let _sharedTreeService: SharedTreeService; + let vpnModel: VpnModelInfo; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule, NgReduxTestingModule], + providers: [ + SharedTreeService, + MockNgRedux + ] + }).compileComponents(); + injector = getTestBed(); + _sharedTreeService = injector.get(SharedTreeService); + _store = injector.get(NgRedux); + vpnModel = new VpnModelInfo(_store,_sharedTreeService); + }); + + + test('vpnModel should be defined', () => { + expect(vpnModel).toBeDefined(); + }); + + test('vpnModel should defined extra details', () => { + expect(vpnModel.name).toEqual('vpns'); + expect(vpnModel.type).toEqual('VPN'); + expect(vpnModel.childNames).toBeUndefined; + expect(vpnModel.componentInfoType).toEqual(ComponentInfoType.VPN); + }); + + test('Info for vpn should be correct', () => { + const model = null; + const instance = new VpnTreeNode(new Level1Instance(), new Level1Model(), ""); + instance.region = "USA,EMEA"; + instance.routeTargetId = "globalRouteTarget_1"; + instance.routeTargetRole = "routeTargetRole_1"; + instance.customerVPNId = "VPN1260"; + let actualVpnInfo = vpnModel.getInfo(model,instance); + const instanceInfo = [ + ModelInformationItem.createInstance("Region", "USA,EMEA"), + ModelInformationItem.createInstance("Route target id", "globalRouteTarget_1"), + ModelInformationItem.createInstance("Route target role", "routeTargetRole_1"), + ModelInformationItem.createInstance("Customet VPN ID", "VPN1260")]; + expect(actualVpnInfo).toEqual(instanceInfo); + }); + +}) diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vpn/vpn.model.info.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vpn/vpn.model.info.ts new file mode 100644 index 000000000..b951162f8 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vpn/vpn.model.info.ts @@ -0,0 +1,96 @@ +import {ILevelNodeInfo} from "../basic.model.info"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; +import {ITreeNode} from "angular-tree-component/dist/defs/api"; +import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service"; +import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; +import * as _ from "lodash"; +import {NgRedux} from "@angular-redux/store"; +import {AppState} from "../../../../../shared/store/reducers"; +import {SharedTreeService} from "../../shared.tree.service"; +import {NetworkInstance} from "../../../../../shared/models/networkInstance"; +import {Level1Model} from "../../../../../shared/models/nodeModel"; +import {VpnTreeNode} from "../../../../../shared/models/vpnTreeNode"; + +export class VpnModelInfo implements ILevelNodeInfo { + constructor(private _store: NgRedux<AppState>, + private _sharedTreeService: SharedTreeService) { + } + + name: string = 'vpns'; + type: string = 'VPN'; + typeName: string = 'VPN'; + + childNames: string[] = []; + componentInfoType = ComponentInfoType.VPN; + + isEcompGeneratedNaming(currentModel): boolean { + return false; + } + + updateDynamicInputsDataFromModel = (currentModel): any => []; + + getModel = (modelId: string, instance: any, serviceHierarchy): any => { + return new Level1Model(); + }; + + + createInstanceTreeNode = (instance: NetworkInstance, model: any, parentModel, storeKey: string): VpnTreeNode => { + let node = new VpnTreeNode(instance, model, storeKey); + node.missingData = this.hasMissingData(instance, node, model.isEcompGeneratedNaming); + node = this._sharedTreeService.addingStatusProperty(node); + node.typeName = this.typeName; + node.menuActions = this.getMenuAction(<any>node, model.uuid); + node.isFailed = _.isNil(instance.isFailed) ? false : instance.isFailed; + node.statusMessage = !_.isNil(instance.statusMessage) ? instance.statusMessage : ""; + node = this._sharedTreeService.addingStatusProperty(node); + return node; + }; + + + getNextLevelObject = (): any => { + return null; + }; + + getTooltip = (): string => 'VPN'; + + getType = (): string => 'VPN'; + + hasMissingData(instance, dynamicInputs: any, isEcompGeneratedNaming: boolean): boolean { + return false; + } + + onClickAdd(node, serviceModelId: string): void { + + } + + getNodeCount(node: ITreeNode, serviceModelId: string): number { + return 0; + } + + showNodeIcons(node: ITreeNode, serviceModelId: string): AvailableNodeIcons { + return null; + } + + getMenuAction(node: ITreeNode, serviceModelId: string): { [methodName: string]: { method: Function, visible: Function, enable: Function } } { + return {}; + } + + updatePosition(that, node, instanceId): void { + } + + getNodePosition(instance): number { + return 0; + } + + getInfo(model, instance): ModelInformationItem[] { + const modelInformation = []; + const instanceInfo = !_.isEmpty(instance) ? [ + ModelInformationItem.createInstance("Region", instance.region), + ModelInformationItem.createInstance("Route target id", !_.isNull(instance.routeTargetId) ? instance.routeTargetId : null), + ModelInformationItem.createInstance("Route target role", !_.isNull(instance.routeTargetRole) ? instance.routeTargetRole : null), + ModelInformationItem.createInstance("Customet VPN ID", !_.isNull(instance.customerVPNId) ? instance.customerVPNId : null)] : []; + const result = [modelInformation, instanceInfo]; + return _.uniq(_.flatten(result)); + } +} + diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrf.model.info.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrf.model.info.spec.ts new file mode 100644 index 000000000..07d4cee9b --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrf.model.info.spec.ts @@ -0,0 +1,238 @@ +import {ComponentInfoService} from "../../../component-info/component-info.service"; +import {NgRedux} from "@angular-redux/store"; +import {AppState} from "../../../../../shared/store/reducers"; +import {getTestBed, TestBed} from "@angular/core/testing"; +import {HttpClientTestingModule} from "@angular/common/http/testing"; +import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing"; +import {DynamicInputsService} from "../../dynamicInputs.service"; +import {SharedTreeService} from "../../shared.tree.service"; +import {DuplicateService} from "../../../duplicate/duplicate.service"; +import {AaiService} from "../../../../../shared/services/aaiService/aai.service"; +import {HttpClient, HttpHandler} from "@angular/common/http"; +import {FeatureFlagsService} from "../../../../../shared/services/featureFlag/feature-flags.service"; +import {IframeService} from "../../../../../shared/utils/iframe.service"; +import {VrfModelInfo} from "./vrf.model.info"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; +import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; +import {VrfModel} from "../../../../../shared/models/vrfModel"; +import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service"; +import each from 'jest-each'; +import {DialogService} from "ng2-bootstrap-modal"; +import {NetworkStepService} from "./vrfModal/networkStep/network.step.service"; +import {VpnStepService} from "./vrfModal/vpnStep/vpn.step.service"; + +describe('Vrf Model Info', () => { + + let injector; + let _componentInfoService : ComponentInfoService; + + let _store : NgRedux<AppState>; + let _sharedTreeService: SharedTreeService; + let _dialogService : DialogService; + let _iframeService : IframeService; + let _networkStepService : NetworkStepService; + let _vpnStepService : VpnStepService; + let vrfModel: VrfModelInfo; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule, NgReduxTestingModule], + providers: [ + MockNgRedux, + DynamicInputsService, + SharedTreeService, + DuplicateService, + AaiService, + HttpClient, + HttpHandler, + FeatureFlagsService, + ComponentInfoService, + DialogService, + IframeService, + IframeService, + NetworkStepService, + VpnStepService] + }).compileComponents(); + + injector = getTestBed(); + _sharedTreeService = injector.get(SharedTreeService); + _dialogService = injector.get(DialogService); + _iframeService = injector.get(IframeService); + _networkStepService = injector.get(NetworkStepService); + _vpnStepService = injector.get(VpnStepService); + _store = injector.get(NgRedux); + _componentInfoService = injector.get(ComponentInfoService); + + vrfModel = new VrfModelInfo(_store,_sharedTreeService, _dialogService, _iframeService, _networkStepService, _vpnStepService); + + }); + + + test('vrfModel should be defined', () => { + expect(vrfModel).toBeDefined(); + }); + + test('vrfModel should defined extra details', () => { + expect(vrfModel.name).toEqual('vrfs'); + expect(vrfModel.type).toEqual('VRF'); + expect(vrfModel.childNames).toEqual(['networks','vpns']); + expect(vrfModel.componentInfoType).toEqual(ComponentInfoType.VRF); + }); + + test('Info for vrf should be correct', () => { + const model = new VrfModel(); + const instance = null; + let actualNetworkInfo = vrfModel.getInfo(model,instance); + let expectedNetworkInfo = [ + ModelInformationItem.createInstance('Min instances', "1"), + ModelInformationItem.createInstance('Max instances', "1"), + ModelInformationItem.createInstance("Association", "L3-Network - VPN") + ]; + expect(actualNetworkInfo).toEqual(expectedNetworkInfo); + }); + + + + test('getModel should return VRF model with min and max are equal to 1 (hard coded)', () => { + let model: VrfModel = vrfModel.getModel('VRF Entry Configuration 0', <any>{ + originalName : 'VRF Entry Configuration 0' + }, getServiceHierarchy()); + expect(model.properties['type']).toEqual('VRF-ENTRY'); + expect(model.min).toEqual(1); + expect(model.max).toEqual(1); + }); + + const showNodeIconsDataProvider = [ + [false, new AvailableNodeIcons(true , false)], + [true, new AvailableNodeIcons(false , true)] + ]; + + each(showNodeIconsDataProvider).test('showNodeIcons should return value according reach limit of max',(existVRFs,expectedResult)=>{ + const serviceId : string = 'servicedId'; + const node = getNode(); + let state = getMockState(); + if(existVRFs) { + state.service.serviceInstance.servicedId.existingVRFCounterMap = { + 'modelCustomizationId': 1 + }; + } + jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue(state); + const result = vrfModel.showNodeIcons(<any>node, serviceId); + expect(result).toEqual(expectedResult); + }); + + function getNode() { + return { + data: { + id: 'vrfId', + name: 'VRF Entry Configuration 0', + modelCustomizationId: 'modelCustomizationId', + modelUniqueId: 'modelCustomizationId', + getModel: function () { + return {max: 1} + } + } + }; + } + + function getMockState(){ + return { + global:{ + "drawingBoardStatus": "CREATE" + }, + service : { + serviceHierarchy : { + 'servicedId' : { + } + }, + serviceInstance : { + 'servicedId' : { + 'existingVRFCounterMap' : {}, + 'vrfs' : { + 'vrfName' :{ + + } + } + } + } + } + }; + } + + function getServiceHierarchy() { + return { + "service": { + "uuid": "f028b2e2-7080-4b13-91b2-94944d4c42d8", + "invariantUuid": "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb", + "name": "infraVPN", + "version": "1.0", + "toscaModelURL": null, + "category": "Network Service", + "serviceType": "BONDING", + "serviceRole": "INFRASTRUCTURE-VPN", + "description": "ddd", + "serviceEcompNaming": "true", + "instantiationType": "A-La-Carte", + "inputs": {}, + "vidNotions": { + "instantiationUI": "macroService", + "modelCategory": "other", + "viewEditUI": "legacy" + } + }, + "vnfs": {}, + "networks": {}, + "collectionResources": {}, + "configurations": {}, + "fabricConfigurations": {}, + "serviceProxies": { + "misvpn_service_proxy 0": { + "uuid": "35186eb0-e6b6-4fa5-86bb-1501b342a7b1", + "invariantUuid": "73f89e21-b96c-473f-8884-8b93bcbd2f76", + "description": "A Proxy for Service MISVPN_SERVICE", + "name": "MISVPN_SERVICE Service Proxy", + "version": "3.0", + "customizationUuid": "4c2fb7e0-a0a5-4b32-b6ed-6a974e55d923", + "inputs": {}, + "commands": {}, + "properties": { + "ecomp_generated_naming": "false" + }, + "type": "Service Proxy", + "sourceModelUuid": "d5cc7d15-c842-450e-95ae-2a69e66dd23b", + "sourceModelInvariant": "c126ec86-59fe-48c0-9532-e39a9b3e5272", + "sourceModelName": "MISVPN_SERVICE" + } + }, + "vfModules": {}, + "volumeGroups": {}, + "pnfs": {}, + "vnfGroups": {}, + "vrfs": { + "VRF Entry Configuration 0": { + "uuid": "9cac02be-2489-4374-888d-2863b4511a59", + "invariantUuid": "b67a289b-1688-496d-86e8-1583c828be0a", + "description": "VRF Entry configuration object", + "name": "VRF Entry Configuration", + "version": "30.0", + "customizationUuid": "dd024d73-9bd1-425d-9db5-476338d53433", + "inputs": {}, + "commands": {}, + "properties": { + "ecomp_generated_naming": "false", + "type": "VRF-ENTRY", + "role": "INFRASTRUCTURE-CLOUD-VPN" + }, + "type": "Configuration", + "modelCustomizationName": "VRF Entry Configuration 0", + "sourceNodes": [], + "collectorNodes": null, + "configurationByPolicy": false + } + } + } + } + + + +}) diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrf.model.info.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrf.model.info.ts new file mode 100644 index 000000000..4c779a313 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrf.model.info.ts @@ -0,0 +1,188 @@ +import {ILevelNodeInfo} from "../basic.model.info"; +import {ComponentInfoType} from "../../../component-info/component-info-model"; +import {ITreeNode} from "angular-tree-component/dist/defs/api"; +import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service"; +import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component"; +import {VrfInstance} from "../../../../../shared/models/vrfInstance"; +import {VrfTreeNode} from "../../../../../shared/models/vrfTreeNode"; +import {VrfModel} from "../../../../../shared/models/vrfModel"; +import {NgRedux} from "@angular-redux/store"; +import {AppState} from "../../../../../shared/store/reducers"; +import {SharedTreeService} from "../../shared.tree.service"; +import {DialogService} from 'ng2-bootstrap-modal'; +import {SearchElementsModalComponent} from "../../../../../shared/components/searchMembersModal/search-elements-modal.component"; +import {IframeService} from "../../../../../shared/utils/iframe.service"; +import {NetworkStepService} from "./vrfModal/networkStep/network.step.service"; +import {VpnStepService} from "./vrfModal/vpnStep/vpn.step.service"; +import {NetworkModelInfo} from "../network/network.model.info"; +import {VpnModelInfo} from "../vpn/vpn.model.info"; +import { + clearAllGenericModalhelper, + updateGenericModalhelper, + updateGenericModalTableDataHelper +} from "../../../../../shared/storeUtil/utils/global/global.actions"; +import { + deleteActionVrfInstance, + undoDeleteActionVrfInstance +} from "../../../../../shared/storeUtil/utils/vrf/vrf.actions"; +import * as _ from "lodash"; + +export class VrfModelInfo implements ILevelNodeInfo { + constructor(private _store: NgRedux<AppState>, + private _sharedTreeService: SharedTreeService, + private _dialogService: DialogService, + private _iframeService: IframeService, + private _networkStepService: NetworkStepService, + private _vpnStepService: VpnStepService) { + } + + name: string = 'vrfs'; + type: string = 'VRF'; + typeName: string = 'VRF'; + childNames: string [] = ["networks", "vpns"]; + componentInfoType = ComponentInfoType.VRF; + + isEcompGeneratedNaming(currentModel): boolean { + return false; + } + + updateDynamicInputsDataFromModel = (currentModel): any => []; + + getModel = (vrfModelId: string, instance: VrfInstance, serviceHierarchy): VrfModel => { + const originalModelName = instance.originalName ? instance.originalName : vrfModelId; + return new VrfModel(serviceHierarchy[this.name][originalModelName]); + }; + + + createInstanceTreeNode = (instance: VrfInstance, model: VrfModel, parentModel, storeKey: string): VrfTreeNode => { + let node = new VrfTreeNode(instance, model, storeKey); + node.missingData = this.hasMissingData(instance, node, model.isEcompGeneratedNaming); + node.typeName = this.typeName; + node.menuActions = this.getMenuAction(<any>node, model.uuid); + node.isFailed = _.isNil(instance.isFailed) ? false : instance.isFailed; + node.statusMessage = !_.isNil(instance.statusMessage) ? instance.statusMessage : ""; + return node; + }; + + + getNextLevelObject = (nextLevelType: string): any => { + if (nextLevelType === 'vpns') { + return new VpnModelInfo(this._store, this._sharedTreeService); + } else { + if (nextLevelType === 'networks') { + return new NetworkModelInfo(null, this._sharedTreeService, null, null, null, null, null, this._store); + } + } + }; + + getTooltip = (): string => 'VRF'; + + getType = (): string => 'VRF'; + + hasMissingData(instance, dynamicInputs: any, isEcompGeneratedNaming: boolean): boolean { + return false; + } + + onClickAdd(node, serviceModelId: string): void { + this._store.dispatch(clearAllGenericModalhelper()); + this._store.dispatch(updateGenericModalTableDataHelper('currentVRF', { + model: this._store.getState().service.serviceHierarchy[serviceModelId].vrfs[node.data.name], + instance: null + })); + this._iframeService.addFullScreen(); + let modalSteps = [this._vpnStepService, this._networkStepService]; + const serviceInstance = this._store.getState().service.serviceInstance[serviceModelId]; + this._dialogService.addDialog(SearchElementsModalComponent, { + modalInformation: this._networkStepService.getNetworkStep(serviceInstance, serviceModelId, ...modalSteps) + } + ) + } + + getNodeCount(node: ITreeNode, serviceModelId: string): number { + //TODO + return 0; + } + + showNodeIcons(node: ITreeNode, serviceModelId: string): AvailableNodeIcons { + const serviceHierarchy = this._store.getState().service.serviceHierarchy[serviceModelId]; + + let counter: number = !_.isNil(this._store.getState().service.serviceInstance[serviceModelId]) ? + (this._store.getState().service.serviceInstance[serviceModelId].existingVRFCounterMap[node.data.modelUniqueId] || 0) : 0; + counter -= this._sharedTreeService.getExistingInstancesWithDeleteMode(node, serviceModelId, 'vrfs'); + const model = node.data.getModel(node.data.name, node.data, serviceHierarchy); + const maxInstances: number = model.max; + const isReachedLimit = !(maxInstances > counter); + const showAddIcon = this._sharedTreeService.shouldShowAddIcon() && !isReachedLimit; + + return new AvailableNodeIcons(showAddIcon, isReachedLimit) + } + + getMenuAction(node: ITreeNode, serviceModelId: string): { [methodName: string]: { method: Function, visible: Function, enable: Function } } { + return <any>{ + changeAssociations: { + method: (node, serviceModelId) => { + let modalSteps = [this._vpnStepService, this._networkStepService]; + this._store.dispatch(clearAllGenericModalhelper()); + const vrfInstance = this._store.getState().service.serviceInstance[serviceModelId].vrfs[node.data.vrfStoreKey]; + const vrfModel = this._store.getState().service.serviceHierarchy[serviceModelId].vrfs[node.data.name]; + this._store.dispatch(updateGenericModalTableDataHelper('currentVRF', { + model: vrfModel, + instance: vrfInstance, + vrfStoreKey: node.data.vrfStoreKey + })); + + + for (let networkKey in vrfInstance.networks) { + this._store.dispatch(updateGenericModalhelper(`selectedNetwork`, vrfInstance.networks[networkKey], modalSteps[1].uniqObjectField)); + } + + for (let networkKey in vrfInstance.vpns) { + this._store.dispatch(updateGenericModalhelper(`selectedVPN`, vrfInstance.vpns[networkKey], modalSteps[0].uniqObjectField)); + } + + this._iframeService.addFullScreen(); + + const serviceInstance = this._store.getState().service.serviceInstance[serviceModelId]; + this._dialogService.addDialog(SearchElementsModalComponent, { + modalInformation: this._networkStepService.getNetworkStep(serviceInstance, serviceModelId, ...modalSteps) + } + ) + }, + visible: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node), + enable: (node) => this._sharedTreeService.shouldShowRemoveAndEdit(node), + }, + delete: { + method: (node, serviceModelId) => { + this._store.dispatch(deleteActionVrfInstance(node.data.vrfStoreKey, serviceModelId)); + }, + visible: (node) => this._sharedTreeService.shouldShowDelete(node), + enable: (node) => this._sharedTreeService.shouldShowDelete(node) + }, + undoDelete: { + method: (node, serviceModelId) => { + this._store.dispatch(undoDeleteActionVrfInstance(node.data.vrfStoreKey, serviceModelId)); + }, + visible: (node) => this._sharedTreeService.shouldShowUndoDelete(node), + enable: (node, serviceModelId) => this._sharedTreeService.shouldShowUndoDelete(node) && !this._sharedTreeService.isServiceOnDeleteMode(serviceModelId) + } + } + } + + updatePosition(that, node, instanceId): void { + //TODO + } + + getNodePosition(instance): number { + //TODO + return 0; + } + + getInfo(model, instance): ModelInformationItem[] { + const modelInformation = !_.isEmpty(model) ? [ + ModelInformationItem.createInstance("Min instances", "1"), + ModelInformationItem.createInstance("Max instances", "1"), + ModelInformationItem.createInstance("Association", "L3-Network - VPN")] : []; + return modelInformation; + } +} + diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.model.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.model.ts new file mode 100644 index 000000000..8a2d18ad5 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.model.ts @@ -0,0 +1,18 @@ +export class NetworkModalRow { + instanceName : string; + instanceType: string; + role: string; + orchStatus: string; + physicalName: string; + instanceId: string; + serviceName : string; + serviceUUID : string; + tenantName : string; + lcpCloudRegionId : string; + modelInfo : { + modelCustomizationId: string; + modelInvariantId: string; + modelVersionId: string; + modelType: string; + } +} diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.service.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.service.spec.ts new file mode 100644 index 000000000..e06e4c9f9 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.service.spec.ts @@ -0,0 +1,458 @@ +import {NgRedux} from "@angular-redux/store"; +import {AppState} from "../../../../../../../shared/store/reducers"; +import {getTestBed, TestBed} from "@angular/core/testing"; +import {NgReduxTestingModule} from "@angular-redux/store/testing"; +import {HttpClientTestingModule} from "@angular/common/http/testing"; +import {FeatureFlagsService} from "../../../../../../../shared/services/featureFlag/feature-flags.service"; +import {AaiService} from "../../../../../../../shared/services/aaiService/aai.service"; +import {NetworkStepService} from "./network.step.service"; +import {updateGenericModalCriteria} from "../../../../../../../shared/storeUtil/utils/global/global.actions"; +import {ITableContent} from "../../../../../../../shared/components/searchMembersModal/members-table/element-table-row.model"; + +describe('Network step service', () => { + let injector; + let service: NetworkStepService; + let store: NgRedux<AppState>; + beforeAll(done => (async () => { + TestBed.configureTestingModule({ + imports: [NgReduxTestingModule, HttpClientTestingModule], + providers: [ + NetworkStepService, + FeatureFlagsService, + AaiService + ] + }); + await TestBed.compileComponents(); + injector = getTestBed(); + service = injector.get(NetworkStepService); + store = injector.get(NgRedux); + })().then(done).catch(done.fail)); + + test('service should be defined', () => { + expect(service).toBeDefined(); + }); + + + test('networkStep', () => { + spyOn(store, 'getState').and.returnValue({ + "global": { + "genericModalHelper": { + "selectedNetwork": { + "action": "None", + "instanceName": "NETWORK_1_INSTANCE_NAME", + "instanceId": "NETWORK_1_INSTANCE_ID", + "orchStatus": null, + "productFamilyId": null, + "lcpCloudRegionId": "hvf23b", + "tenantId": "3e9a20a3e89e45f884e09df0cc2d2d2a", + "tenantName": "APPC-24595-T-IST-02C", + "modelInfo": { + "modelInvariantId": "network-instance-model-invariant-id", + "modelVersionId": "7a6ee536-f052-46fa-aa7e-2fca9d674c44", + "modelVersion": "2.0", + "modelName": "vf_vEPDG", + "modelType": "vnf" + }, + "roles": ["network role 1", "network role 2"], + "instanceType": "NETWORK_1_INSTANCE_TYPE", + "provStatus": null, + "inMaint": false, + "uuid": "7a6ee536-f052-46fa-aa7e-2fca9d674c44", + "originalName": null, + "legacyRegion": null, + "lineOfBusiness": null, + "platformName": null, + "trackById": "VNF1_INSTANCE_ID", + "serviceInstanceId": "service-instance-id1", + "serviceInstanceName": "service-instance-name", + "isSelected": true + }, + "selectedVpn": { + "vpn-id": "120d39fb-3627-473d-913c-d228dd0f8e5b", + "vpn-name": "LPPVPN", + "vpn-platform": "AVPN", + "vpn-type": "SERVICE-INFRASTRUCTURE", + "vpn-region": "USA,EMEA", + "customer-vpn-id": "VPN1260", + "model-customization-id": null, + "model-invariant-id": null, + "model-version-id": null, + "route-targets": null, + "isSelected": true + } + }, + "genericModalCriteria": {"roles": ["-- select an option --", "network role 1", "network role 2", "network role 3", "network role 4", "network role 5"]}, + "name": null, + "flags": { + "CREATE_INSTANCE_TEST": false, + "EMPTY_DRAWING_BOARD_TEST": false, + "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false, + "FLAG_ASYNC_INSTANTIATION": true, + "FLAG_ASYNC_JOBS": true, + "FLAG_ADD_MSO_TESTAPI_FIELD": true, + "FLAG_UNASSIGN_SERVICE": false, + "FLAG_SERVICE_MODEL_CACHE": false, + "FLAG_SHOW_ASSIGNMENTS": true, + "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true, + "FLAG_DUPLICATE_VNF": true, + "FLAG_DEFAULT_VNF": true, + "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": true, + "FLAG_A_LA_CARTE_AUDIT_INFO": true, + "FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST": true, + "FLAG_PRESENT_PROVIDER_NETWORKS_ASSOCIATIONS": true, + "FLAG_1810_CR_SOFT_DELETE_ALACARTE_VF_MODULE": true, + "FLAG_1902_NEW_VIEW_EDIT": true, + "FLAG_VF_MODULE_RESUME_STATUS_CREATE": true, + "FLAG_1906_COMPONENT_INFO": true + }, + "drawingBoardStatus": "CREATE", + "type": "UPDATE_DRAWING_BOARD_STATUS" + }, "service": { + "serviceHierarchy": { + "f028b2e2-7080-4b13-91b2-94944d4c42d8": { + "service": { + "uuid": "f028b2e2-7080-4b13-91b2-94944d4c42d8", + "invariantUuid": "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb", + "name": "infraVPN", + "version": "1.0", + "toscaModelURL": null, + "category": "Network Service", + "serviceType": "BONDING", + "serviceRole": "INFRASTRUCTURE-VPN", + "description": "ddd", + "serviceEcompNaming": "true", + "instantiationType": "A-La-Carte", + "inputs": {}, + "vidNotions": {"instantiationUI": "macroService", "modelCategory": "other", "viewEditUI": "legacy"} + }, + "vnfs": {}, + "networks": {}, + "collectionResources": {}, + "configurations": {}, + "fabricConfigurations": {}, + "serviceProxies": { + "misvpn_service_proxy 0": { + "uuid": "35186eb0-e6b6-4fa5-86bb-1501b342a7b1", + "invariantUuid": "73f89e21-b96c-473f-8884-8b93bcbd2f76", + "description": "A Proxy for Service MISVPN_SERVICE", + "name": "MISVPN_SERVICE Service Proxy", + "version": "3.0", + "customizationUuid": "4c2fb7e0-a0a5-4b32-b6ed-6a974e55d923", + "inputs": {}, + "commands": {}, + "properties": {"ecomp_generated_naming": "false"}, + "type": "Service Proxy", + "sourceModelUuid": "d5cc7d15-c842-450e-95ae-2a69e66dd23b", + "sourceModelInvariant": "c126ec86-59fe-48c0-9532-e39a9b3e5272", + "sourceModelName": "MISVPN_SERVICE" + } + }, + "vfModules": {}, + "volumeGroups": {}, + "pnfs": {}, + "vnfGroups": {}, + "vrfs": { + "VRF Entry Configuration 0": { + "uuid": "9cac02be-2489-4374-888d-2863b4511a59", + "invariantUuid": "b67a289b-1688-496d-86e8-1583c828be0a", + "description": "VRF Entry configuration object", + "name": "VRF Entry Configuration", + "version": "30.0", + "customizationUuid": "dd024d73-9bd1-425d-9db5-476338d53433", + "inputs": {}, + "commands": {}, + "properties": {"ecomp_generated_naming": "false"}, + "type": "Configuration", + "modelCustomizationName": "VRF Entry Configuration 0", + "sourceNodes": [], + "collectorNodes": null, + "configurationByPolicy": false + } + } + } + }, + "serviceInstance": { + "f028b2e2-7080-4b13-91b2-94944d4c42d8": { + "action": "Create", + "isDirty": false, + "vnfs": {}, + "vrfs": {}, + "instanceParams": [{}], + "validationCounter": 0, + "existingNames": {"dfd": ""}, + "existingVNFCounterMap": {}, + "existingVRFCounterMap": {}, + "existingVnfGroupCounterMap": {}, + "existingNetworksCounterMap": {}, + "optionalGroupMembersMap": {}, + "networks": {}, + "vnfGroups": {}, + "bulkSize": 1, + "instanceName": "dfd", + "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89", + "subscriptionServiceType": "TYLER SILVIA", + "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", + "projectName": "WATKINS", + "rollbackOnFailure": "true", + "aicZoneName": null, + "owningEntityName": "WayneHolland", + "testApi": "VNF_API", + "tenantName": null, + "modelInfo": { + "modelInvariantId": "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb", + "modelVersionId": "f028b2e2-7080-4b13-91b2-94944d4c42d8", + "modelName": "infraVPN", + "modelVersion": "1.0", + "uuid": "f028b2e2-7080-4b13-91b2-94944d4c42d8", + "modelUniqueId": "f028b2e2-7080-4b13-91b2-94944d4c42d8" + }, + "isALaCarte": true, + "name": "infraVPN", + "version": "1.0", + "description": "ddd", + "category": "Network Service", + "uuid": "f028b2e2-7080-4b13-91b2-94944d4c42d8", + "invariantUuid": "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb", + "serviceType": "BONDING", + "serviceRole": "INFRASTRUCTURE-VPN", + "vidNotions": {"instantiationUI": "macroService", "modelCategory": "other", "viewEditUI": "legacy"}, + "isEcompGeneratedNaming": true, + "isMultiStepDesign": false + } + }, + "type": "UPDATE_CATEGORY_PARAMETERS", + "categoryParameters": { + "owningEntityList": [{ + "id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", + "name": "WayneHolland" + }, {"id": "Melissa", "name": "Melissa"}, {"id": "aaa1", "name": "aaa1"}], + "projectList": [{"id": "WATKINS", "name": "WATKINS"}, {"id": "x1", "name": "x1"}, {"id": "yyy1", "name": "yyy1"}], + "lineOfBusinessList": [{"id": "ONAP", "name": "ONAP"}, {"id": "zzz1", "name": "zzz1"}], + "platformList": [{"id": "platform", "name": "platform"}, {"id": "xxx1", "name": "xxx1"}] + } + } + }); + const networkStep = service.getNetworkStep( + "f028b2e2-7080-4b13-91b2-94944d4c42d8", + <any>{ + data: { + children: [], + componentInfoType: "VRF", + count: 0, + disabled: false, + id: "dd024d73-9bd1-425d-9db5-476338d53433", + isEcompGeneratedNaming: false, + max: 1, + modelCustomizationId: "dd024d73-9bd1-425d-9db5-476338d53433", + modelUniqueId: "dd024d73-9bd1-425d-9db5-476338d53433", + modelVersionId: "9cac02be-2489-4374-888d-2863b4511a59", + name: "VRF Entry Configuration 0", + tooltip: "VRF", + type: "VRF", + typeName: "VRF" + } + }); + + + expect(networkStep.type).toEqual('Network'); + expect(networkStep.title).toEqual('Associate network to VRF Entry'); + expect(networkStep.description).toEqual('Select a network to associate to the VRF Entry'); + expect(networkStep.noElementsMsg).toEqual('No network were found.'); + expect(networkStep.maxSelectRow).toEqual(1); + expect(networkStep.uniqObjectField).toEqual('instanceId'); + expect(networkStep.topButton.text).toEqual('Next'); + expect(networkStep.criteria).toHaveLength(1); + + }); + + test('getsNetworkStepSearchFields', () => { + const networkStepSearchFields = service.getsNetworkStepSearchFields({ + "lcpCloudRegionId": "lcpCloudRegionId", + "tenantName": "tenantName" + }); + + expect(networkStepSearchFields[0].value).toEqual("lcpCloudRegionId"); + expect(networkStepSearchFields[1].value).toEqual("tenantName"); + expect(networkStepSearchFields[2].value).toEqual("Active"); + expect(networkStepSearchFields[3].value).toEqual("VPN binding"); + }); + + test('generateRolesOptions should sort networks roles, check if should add "Not assigned" option', () => { + const networks = [ + {"role": "2"}, + {"role": "3"}, + {"role": "4"}, + {"role": "1"}, + {"role": "6"} + ]; + + spyOn(store, 'dispatch'); + + service.generateRolesOptions(networks); + expect(store.dispatch).toHaveBeenCalledWith(updateGenericModalCriteria("roles", ["-- select an option --", "1", "2", "3", "4", "6"])) + + networks.push({"role": null}); + service.generateRolesOptions(networks); + expect(store.dispatch).toHaveBeenCalledWith(updateGenericModalCriteria("roles", ["-- select an option --", "Not assigned", "1", "2", "3", "4", "6"])) + }); + + test('shouldAddNotAssigned- check if "Not Assigned" option to roles', () => { + const networks = [ + {"role": "5"}, + {"role": "3"}, + {"role": "4"}, + {"role": "1"}, + {"role": "6"} + ]; + + let result: boolean = service.shouldAddNotAssigned(networks); + expect(result).toBeFalsy(); + + networks.push({"role": null}); + + result = service.shouldAddNotAssigned(networks); + expect(result).toBeTruthy(); + }); + + + test('getNetworkStepHeaders should return the correct headers for network popup', () => { + let headers = service.getNetworkStepHeaders(); + + expect(headers[0].displayName).toEqual('Name'); + expect(headers[0].key).toEqual(['instanceName']); + + expect(headers[1].displayName).toEqual('Type'); + expect(headers[1].key).toEqual(['instanceType']); + + expect(headers[2].displayName).toEqual('Role'); + expect(headers[2].key).toEqual(['role']); + + expect(headers[3].displayName).toEqual('Orch. Status'); + expect(headers[3].key).toEqual(['orchStatus']); + + expect(headers[4].displayName).toEqual('Physical name'); + expect(headers[4].key).toEqual(['physicalName']); + + expect(headers[5].displayName).toEqual('Instance ID'); + expect(headers[5].key).toEqual(['instanceId']); + + expect(headers[6].displayName).toEqual('Model UUID'); + expect(headers[6].key).toEqual(['modelInfo', 'modelVersionId']); + + expect(headers[7].displayName).toEqual('Service name'); + expect(headers[7].key).toEqual(['serviceName']); + + expect(headers[8].displayName).toEqual('Service UUID'); + expect(headers[8].key).toEqual(['serviceUUID']); + + expect(headers[9].displayName).toEqual('Tenant'); + expect(headers[9].key).toEqual(['tenantName']); + + expect(headers[10].displayName).toEqual('Region'); + expect(headers[10].key).toEqual(['lcpCloudRegionId']); + }); + + test('getElementsFirstStep should return sort networks by instance name', () => { + let networks = [ + {"instanceUUID": "B"}, + {"instanceUUID": "A"}, + {"instanceUUID": "D"}, + {"instanceUUID": "C"}, + {"instanceUUID": "E"} + ]; + + let sortedNetworkByInstanceName = service.sortElementsResultByField(networks, "instanceUUID"); + expect(sortedNetworkByInstanceName).toEqual([ + {"instanceUUID": "A"}, + {"instanceUUID": "B"}, + {"instanceUUID": "C"}, + {"instanceUUID": "D"}, + {"instanceUUID": "E"} + ]) + }); + + + test('getNetworkTableContent', () => { + let tableContent: ITableContent[] = service.getNetworkTableContent(); + expect(tableContent).toEqual( + [ + { + id: 'instanceName', + contents: [{ + id: ['name'], + value: ["instanceName"] + }] + }, + { + id: 'instanceType', + contents: [{ + id: ['type'], + value: ['instanceType'] + }] + }, + { + id: 'role', + contents: [{ + id: ['role'], + value: ['role'] + }] + }, + { + id: 'network-orch-status', + contents: [{ + id: ['orchStatus'], + value: ['orchStatus'] + }] + }, + { + id: 'network-physical-name', + contents: [{ + id: ['physicalName'], + value: ['physicalName'] + }] + }, + { + id: 'network-instance-id', + contents: [{ + id: ['instanceID'], + value: ['instanceId'] + }] + }, + { + id: 'network-model-uuid', + contents: [{ + id: ['modelUUID'], + value: ['modelInfo', 'modelVersionId'] + }] + }, + { + id: 'network-serviceName', + contents: [{ + id: ['serviceName'], + value: ['serviceName'] + }] + }, + { + id: 'network-service-id', + contents: [{ + id: ['serviceUUID'], + value: ['serviceUUID'] + }] + }, + { + id: 'network-tenantName', + contents: [{ + id: ['tenant'], + value: ['tenantName'] + }] + }, + { + id: 'network-region', + contents: [{ + id: ['region'], + value: ['lcpCloudRegionId'] + }] + } + ]); + }); +}); diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.service.ts new file mode 100644 index 000000000..9cd928e8f --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.service.ts @@ -0,0 +1,242 @@ +import {Injectable} from "@angular/core"; +import {NgRedux} from "@angular-redux/store"; +import {AppState} from "../../../../../../../shared/store/reducers"; +import {AaiService} from "../../../../../../../shared/services/aaiService/aai.service"; +import { + updateGenericModalCriteria, + updateGenericModalhelper +} from "../../../../../../../shared/storeUtil/utils/global/global.actions"; +import {ElementsTableService} from "../../../../../../../shared/components/searchMembersModal/members-table/elements-table.service"; +import { + ICriteria, ISearchField, ITableContent, + ModalInformation +} from "../../../../../../../shared/components/searchMembersModal/members-table/element-table-row.model"; +import {Observable, of} from "rxjs"; +import * as _ from "lodash"; +import {CustomTableColumnDefinition} from "../../../../../../../shared/components/searchMembersModal/members-table/elements-table.component"; +import {NetworkModalRow} from "./network.step.model"; + +@Injectable() +export class NetworkStepService { + constructor(private _store: NgRedux<AppState>, private _aaiService: AaiService) {} + + uniqObjectField: string = "instanceId"; + type: string = "Network"; + + getNetworkStep = (serviceInstance, serviceModelId, ...otherSteps): ModalInformation => { + return { + type: this.type, + serviceModelId: serviceModelId, + title: 'Associate network to VRF Entry', + description: 'Select a network to associate to the VRF Entry', + noElementsMsg: 'No network were found.', + maxSelectRow: 1, + uniqObjectField: this.uniqObjectField, + backAction: (searchElementsModalComponent) => { + searchElementsModalComponent.closeDialog(); + }, + topButton: { + text: 'Next', + action: (searchElementsModalComponent) => { + let tmpMembers = searchElementsModalComponent._membersTableService.allElementsStatusMap; + let vpnStep = otherSteps[0]; + for (let key in tmpMembers) { + if (tmpMembers[key].isSelected) { + this._store.dispatch(updateGenericModalhelper(`selected${this.type}`, tmpMembers[key], this.uniqObjectField)); + } + } + ElementsTableService.changeModalInformationDataTrigger.next({ + modalInformation: vpnStep.getVpnStep(serviceInstance, searchElementsModalComponent.modalInformation.serviceModelId, ...otherSteps), + selectedRowsIds: [] + }) + } + }, + searchButton: { + text: 'Search', + action: (searchElementsModalComponent) => { + this.getNetworks(serviceInstance).subscribe((networks) => { + const currentRole = searchElementsModalComponent.modalInformation.criteria.find((criteria: ICriteria) => { + criteria.label === 'Roles'; + }); + ElementsTableService.changeFnTableDataTrigger.next( + networks.filter((network) => { + if (_.isNil(currentRole)) return network; + return network.role === currentRole.currentValue; + })); + }); + } + }, + getElements: (...args) => this.getNetworks(serviceInstance), + criteria: this.getNetworkStepCriteria(serviceInstance), + searchFields: this.getsNetworkStepSearchFields(serviceInstance), + tableHeaders: this.getNetworkStepHeaders(), + tableContent: this.getNetworkTableContent() + }; + }; + + getNetworks = (serviceInstance): Observable<any[]> => { + let cloudRegion = serviceInstance.lcpCloudRegionId; + let tenantId = serviceInstance.tenantName; + return this._aaiService.retrieveActiveNetwork(cloudRegion, tenantId).map((networks: NetworkModalRow[]) => { + this.generateRolesOptions(networks); + return this.sortElementsResultByField(networks, this.uniqObjectField); + }); + }; + + getNetworkStepCriteria(serviceInstance): ICriteria[] { + return [{ + label: "Roles", + defaultValue: "", + type: 'DROPDOWN', + onInit: (): Observable<any> => of(this._store.getState().global.genericModalCriteria.roles), + onChange: (that, selectedOption): void => { + that.currentValue = selectedOption; + }, + dataTestId: 'roles-criteria', + isRequired: false + }] + } + + getsNetworkStepSearchFields = (serviceInstance): ISearchField[] => { + return [ + { + title: 'Region', + dataTestId: 'Region', + value: serviceInstance["lcpCloudRegionId"], + type: "LABEL" + }, { + title: 'Tenant', + dataTestId: 'Tenant', + value: serviceInstance["tenantName"], + type: "LABEL" + }, + { + title: 'Orch. status', + dataTestId: 'Orch_status', + value: "Active", + type: "LABEL" + }, + { + title: 'Related to', + dataTestId: 'Related_to', + value: "VPN binding", + type: "LABEL" + } + ] + }; + + generateRolesOptions = (networks): void => { + let roles: string[] = (_.uniq(_.flatten(_.map(networks, 'role').filter((role) => !_.isNil(role))))).sort(); + const SELECTED_AN_OPTION: string = "-- select an option --"; + const NOT_ASSIGNED: string = "Not assigned"; + + roles = _.remove([SELECTED_AN_OPTION, this.shouldAddNotAssigned(networks) ? NOT_ASSIGNED : null, ...roles], null); + this._store.dispatch(updateGenericModalCriteria("roles", roles)); + }; + + getNetworkStepHeaders = (): CustomTableColumnDefinition[] => { + return [ + {displayName: `Name`, key: ['instanceName']}, + {displayName: `Type`, key: ['instanceType']}, + {displayName: `Role`, key: ['role']}, + {displayName: 'Orch. Status', key: ['orchStatus']}, + {displayName: 'Physical name', key: ['physicalName']}, + {displayName: 'Instance ID', key: ['instanceId']}, + {displayName: 'Model UUID', key: ['modelInfo', 'modelVersionId']}, + {displayName: 'Service name', key: ['serviceName']}, + {displayName: 'Service UUID', key: ['serviceUUID']}, + {displayName: 'Tenant', key: ['tenantName']}, + {displayName: 'Region', key: ['lcpCloudRegionId']} + ]; + }; + + getNetworkTableContent = (): ITableContent[] => { + return [ + { + id: 'instanceName', + contents: [{ + id: ['name'], + value: ["instanceName"] + }] + }, + { + id: 'instanceType', + contents: [{ + id: ['type'], + value: ['instanceType'] + }] + }, + { + id: 'role', + contents: [{ + id: ['role'], + value: ['role'] + }] + }, + { + id: 'network-orch-status', + contents: [{ + id: ['orchStatus'], + value: ['orchStatus'] + }] + }, + { + id: 'network-physical-name', + contents: [{ + id: ['physicalName'], + value: ['physicalName'] + }] + }, + { + id: 'network-instance-id', + contents: [{ + id: ['instanceID'], + value: ['instanceId'] + }] + }, + { + id: 'network-model-uuid', + contents: [{ + id: ['modelUUID'], + value: ['modelInfo', 'modelVersionId'] + }] + }, + { + id: 'network-serviceName', + contents: [{ + id: ['serviceName'], + value: ['serviceName'] + }] + }, + { + id: 'network-service-id', + contents: [{ + id: ['serviceUUID'], + value: ['serviceUUID'] + }] + }, + { + id: 'network-tenantName', + contents: [{ + id: ['tenant'], + value: ['tenantName'] + }] + }, + { + id: 'network-region', + contents: [{ + id: ['region'], + value: ['lcpCloudRegionId'] + }] + } + ]; + }; + + sortElementsResultByField = (elements, fieldName): any[] => { + return _.sortBy(elements, o => o[fieldName]); + }; + + shouldAddNotAssigned = (networks): boolean => { + return _.values(networks).some(network => _.isNil(network.role) || network.role === ""); + }; +} diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/vpnStep/vpn.step.model.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/vpnStep/vpn.step.model.ts new file mode 100644 index 000000000..ea3c69690 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/vpnStep/vpn.step.model.ts @@ -0,0 +1,17 @@ +export class VPNModalRow { + instanceId: string; + instanceName: string; + platformName: string; + instanceType: string; + region: string; + customerId: string; + modelInfo : { + modelCustomizationId: string; + modelInvariantId: string; + modelVersionId: string; + }; + routeTargets: { + "globalRouteTarget" : string, + "routeTargetRole" : string + }[]; +} diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/vpnStep/vpn.step.service.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/vpnStep/vpn.step.service.spec.ts new file mode 100644 index 000000000..b64b2f1b5 --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/vpnStep/vpn.step.service.spec.ts @@ -0,0 +1,463 @@ +import {NgRedux} from "@angular-redux/store"; +import {AppState} from "../../../../../../../shared/store/reducers"; +import {getTestBed, TestBed} from "@angular/core/testing"; +import {NgReduxTestingModule} from "@angular-redux/store/testing"; +import {HttpClientTestingModule} from "@angular/common/http/testing"; +import {FeatureFlagsService} from "../../../../../../../shared/services/featureFlag/feature-flags.service"; +import {AaiService} from "../../../../../../../shared/services/aaiService/aai.service"; +import {VpnStepService} from "./vpn.step.service"; +import {NetworkStepService} from "../networkStep/network.step.service"; +import {ITableContent} from "../../../../../../../shared/components/searchMembersModal/members-table/element-table-row.model"; +import {SearchElementsModalComponent} from "../../../../../../../shared/components/searchMembersModal/search-elements-modal.component"; +import {ElementsTableService} from "../../../../../../../shared/components/searchMembersModal/members-table/elements-table.service"; +import {DataFilterPipe} from "../../../../../../../shared/pipes/dataFilter/data-filter.pipe"; +import * as _ from "lodash"; + +describe('VPN step service', () => { + let injector; + let service: VpnStepService; + let memberTableService: ElementsTableService; + let store: NgRedux<AppState>; + beforeAll(done => (async () => { + TestBed.configureTestingModule({ + imports: [NgReduxTestingModule, HttpClientTestingModule], + providers: [ + VpnStepService, + NetworkStepService, + FeatureFlagsService, + AaiService, + ElementsTableService, + DataFilterPipe + ] + }); + await TestBed.compileComponents(); + injector = getTestBed(); + service = injector.get(VpnStepService); + store = injector.get(NgRedux); + memberTableService = injector.get(ElementsTableService); + })().then(done).catch(done.fail)); + + test('service should be defined', () => { + expect(service).toBeDefined(); + }); + + test('getVPNStepHeaders', () => { + let vpnHeaders = service.getVPNStepHeaders(); + expect(vpnHeaders).toEqual([ + {displayName: `VPN instance name`, key: ['instanceName']}, + {displayName: `Version`, key: ['modelInfo', 'modelVersionId']}, + {displayName: `Instance ID`, key: ['instanceId']}, + {displayName: `Platform`, key: ['platformName']}, + {displayName: 'Region', key: ['region']}, + {displayName: 'Route target', key: ['routeTargets', 'globalRouteTarget'], type: "LIST"}, + {displayName: 'Route target role', key: ['routeTargets', 'routeTargetRole'], type: "LIST"}, + {displayName: 'Customer VPN ID', key: ['customerId']}, + ]); + }); + + + test('vpnStep', () => { + spyOn(store, 'getState').and.returnValue({ + "global": { + "genericModalHelper": { + "selectedNetwork": { + "action": "None", + "instanceName": "NETWORK_1_INSTANCE_NAME", + "instanceId": "NETWORK_1_INSTANCE_ID", + "orchStatus": null, + "productFamilyId": null, + "lcpCloudRegionId": "hvf23b", + "tenantId": "3e9a20a3e89e45f884e09df0cc2d2d2a", + "tenantName": "APPC-24595-T-IST-02C", + "modelInfo": { + "modelInvariantId": "network-instance-model-invariant-id", + "modelVersionId": "7a6ee536-f052-46fa-aa7e-2fca9d674c44", + "modelVersion": "2.0", + "modelName": "vf_vEPDG", + "modelType": "vnf" + }, + "roles": ["network role 1", "network role 2"], + "instanceType": "NETWORK_1_INSTANCE_TYPE", + "provStatus": null, + "inMaint": false, + "uuid": "7a6ee536-f052-46fa-aa7e-2fca9d674c44", + "originalName": null, + "legacyRegion": null, + "lineOfBusiness": null, + "platformName": null, + "trackById": "VNF1_INSTANCE_ID", + "serviceInstanceId": "service-instance-id1", + "serviceInstanceName": "service-instance-name", + "isSelected": true + }, + "selectedVpn": { + "vpn-id": "120d39fb-3627-473d-913c-d228dd0f8e5b", + "vpn-name": "LPPVPN", + "vpn-platform": "AVPN", + "vpn-type": "SERVICE-INFRASTRUCTURE", + "vpn-region": "USA,EMEA", + "customer-vpn-id": "VPN1260", + "model-customization-id": null, + "model-invariant-id": null, + "model-version-id": null, + "route-targets": null, + "isSelected": true + } + }, + }, "service": {} + }); + const networkStep = service.getVpnStep( + "f028b2e2-7080-4b13-91b2-94944d4c42d8", + <any>{ + data: { + children: [], + componentInfoType: "VRF", + count: 0, + disabled: false, + id: "dd024d73-9bd1-425d-9db5-476338d53433", + isEcompGeneratedNaming: false, + max: 1, + modelCustomizationId: "dd024d73-9bd1-425d-9db5-476338d53433", + modelUniqueId: "dd024d73-9bd1-425d-9db5-476338d53433", + modelVersionId: "9cac02be-2489-4374-888d-2863b4511a59", + name: "VRF Entry Configuration 0", + tooltip: "VRF", + type: "VRF", + typeName: "VRF" + } + }); + + expect(networkStep.type).toEqual('VPN'); + expect(networkStep.title).toEqual('Associate VPN'); + expect(networkStep.description).toEqual('Select a VPN to associate to the VRF Entry'); + expect(networkStep.noElementsMsg).toEqual('No VPN instances were found.'); + expect(networkStep.maxSelectRow).toEqual(1); + expect(networkStep.uniqObjectField).toEqual('instanceId'); + expect(networkStep.topButton.text).toEqual('SET VPN'); + expect(networkStep.criteria).toHaveLength(0); + + }); + + test('getsVPNStepSearchFields', () => { + const networkStepSearchFields = service.getsVPNStepSearchFields(); + expect(networkStepSearchFields[0].value).toEqual("SERVICE-INFRASTRUCTURE"); + }); + + test('getVpnStepHeaders should return the correct headers for vpn popup', () => { + let headers = service.getVPNStepHeaders(); + expect(headers[0].displayName).toEqual('VPN instance name'); + expect(headers[0].key).toEqual(['instanceName']); + + expect(headers[1].displayName).toEqual('Version'); + expect(headers[1].key).toEqual(['modelInfo', 'modelVersionId']); + + expect(headers[2].displayName).toEqual('Instance ID'); + expect(headers[2].key).toEqual(['instanceId']); + + expect(headers[3].displayName).toEqual('Platform'); + expect(headers[3].key).toEqual(['platformName']); + + expect(headers[4].displayName).toEqual('Region'); + expect(headers[4].key).toEqual(['region']); + + expect(headers[5].displayName).toEqual('Route target'); + expect(headers[5].key).toEqual(['routeTargets', 'globalRouteTarget']); + + expect(headers[6].displayName).toEqual('Route target role'); + expect(headers[6].key).toEqual(['routeTargets', 'routeTargetRole']); + + expect(headers[7].displayName).toEqual('Customer VPN ID'); + expect(headers[7].key).toEqual(['customerId']); + + }); + + test('getElementsFirstStep should return sort vpns by name', () => { + let vpns = [ + {"name": "B"}, + {"name": "A"}, + {"name": "D"}, + {"name": "C"}, + {"name": "E"} + ]; + + let sortedNetworkByInstanceName = service.sortElementsResultByField(vpns, "name"); + expect(sortedNetworkByInstanceName).toEqual([ + {"name": "A"}, + {"name": "B"}, + {"name": "C"}, + {"name": "D"}, + {"name": "E"} + ]) + }); + + test('getVpnTableContent', () => { + let tableContent: ITableContent[] = service.getVPNTableContent(); + expect(tableContent).toEqual( + [ + { + id: 'vpn-name', + contents: [{ + id: ['vpn-name'], + value: ['instanceName'] + }] + }, + { + id: 'model-version-id', + contents: [{ + id: ['model-version-id'], + value: ['modelInfo', 'modelVersionId'] + }] + }, + { + id: 'vpn-id', + contents: [{ + id: ['vpn-id'], + value: ['instanceId'] + }] + }, + { + id: 'vpn-platform', + contents: [{ + id: ['vpn-platform'], + value: ['platformName'] + }] + }, + { + id: 'vpn-region', + contents: [{ + id: ['vpn-region'], + value: ['region'] + }] + }, + { + id: 'global-route-target', + contents: [{ + id: ['global-route-target'], + value: ['routeTargets', 'globalRouteTarget'], + type: 'LIST' + }] + }, + { + id: 'route-target-role', + contents: [{ + id: ['route-target-role'], + value: ['routeTargets', 'routeTargetRole'], + type: 'LIST' + }] + }, + { + id: 'customer-vpn-id', + contents: [{ + id: ['customer-vpn-id'], + value: ['customerId'] + }] + } + ] + ) + }); + + test('associateVrfNetworkMember', () => { + const vrfStoreKey: string = 'vrfStoreKey'; + const serviceModelId: string = 'serviceModelId'; + const reduxState = { + "global": { + "genericModalHelper": { + "selectedNetwork": { + "10a74149-c9d7-4918-bbcf-d5fb9b1799ce": true + } + } + } + }; + spyOn(store, 'dispatch'); + spyOn(store, 'getState').and.returnValue(reduxState); + let searchElementsModalComponent = new SearchElementsModalComponent(null, null, null, null, null); + + searchElementsModalComponent.modalInformation = <any>{ + serviceModelId: serviceModelId + }; + service.associateVrfNetworkMember(searchElementsModalComponent, vrfStoreKey); + expect(store.dispatch).toHaveBeenCalledTimes(Object.keys(reduxState.global.genericModalHelper.selectedNetwork).length); + }); + + test('associateVrfVPNMember', () => { + const vrfStoreKey: string = 'vrfStoreKey'; + const serviceModelId: string = 'serviceModelId'; + const members = { + "120d39fb-3627-473d-913c-d228dd0f8e5b": { + "instanceId": "120d39fb-3627-473d-913c-d228dd0f8e5b", + "instanceName": "LPPVPN", + "platformName": "AVPN", + "instanceType": "SERVICE-INFRASTRUCTURE", + "region": "USA,EMEA", + "customerId": "VPN1260", + "modelInfo": { + "modelCustomizationId": null, + "modelInvariantId": null, + "modelVersionId": null, + }, + "routeTargets": [ + { + "globalRouteTarget": "globalRouteTarget_1", + "routeTargetRole": "routeTargetRole_1" + }, + { + "globalRouteTarget": "globalRouteTarget_2", + "routeTargetRole": "routeTargetRole_2" + }, + { + "globalRouteTarget": "globalRouteTarget_3", + "routeTargetRole": "routeTargetRole_3" + } + ], + "isSelected": true + }, + "c70391f3-a6e3-4874-9834-cbe12d7bf8b6": { + "instanceId": "c70391f3-a6e3-4874-9834-cbe12d7bf8b6", + "instanceName": "LPPVPN", + "platformName": "AVPN", + "instanceType": "SERVICE-INFRASTRUCTURE", + "region": "USA,EMEA", + "customerId": "VPN1274", + "modelInfo": { + "modelCustomizationId": null, + "modelInvariantId": null, + "modelVersionId": null + }, + "routeTargets": null, + "isSelected": false + }, + "4776516b-7da2-446c-9ba7-47ca8c30c571": { + "instanceId": "4776516b-7da2-446c-9ba7-47ca8c30c571", + "instanceName": "LPPVPN", + "platformName": "AVPN", + "instanceType": "SERVICE-INFRASTRUCTURE", + "region": "USA,EMEA", + "customerId": "VPN1275", + "modelInfo": { + "modelCustomizationId": null, + "modelInvariantId": null, + "modelVersionId": null + }, + + "routeTargets": null, + "isSelected": false + }, + "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7": { + "instanceId": "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7", + "instanceName": "LPPVPN", + "platformName": "AVPN", + "instanceType": "SERVICE-INFRASTRUCTURE", + "region": "USA,EMEA", + "customerId": "VPN1271", + "modelInfo": { + "modelCustomizationId": null, + "modelInvariantId": null, + "modelVersionId": null, + }, + "routeTargets": null, + "isSelected": false + }, + "ffefbe38-3087-418a-87ae-f6582a15be78": { + "instanceId": "ffefbe38-3087-418a-87ae-f6582a15be78", + "instanceName": "LPPVPN", + "platformName": "AVPN", + "instanceType": "SERVICE-INFRASTRUCTURE", + "region": "USA,EMEA", + "customerId": "VPN1272", + "modelInfo": { + "modelCustomizationId": null, + "modelInvariantId": null, + "modelVersionId": null, + }, + "routeTargets": null, + "isSelected": false + }, + "961d05be-ee41-40a2-8653-f603fc495175": { + "id": "961d05be-ee41-40a2-8653-f603fc495175", + "name": "LPPVPN", + "platform": "AVPN", + "type": "SERVICE-INFRASTRUCTURE", + "region": "USA,EMEA", + "customerId": "VPN1273", + "modelCustomizationId": null, + "modelInvariantId": null, + "modelVersionId": null, + "routeTargets": null, + "isSelected": false + }, + "14bcfc2f-bbee-4fd9-89a5-42eb5dbb08d5": { + "instanceId": "14bcfc2f-bbee-4fd9-89a5-42eb5dbb08d5", + "instanceName": "LPPVPN", + "platformName": "AVPN", + "instanceType": "SERVICE-INFRASTRUCTURE", + "region": "USA,EMEA", + "customerId": "913443", + "modelInfo": { + "modelCustomizationId": null, + "modelInvariantId": null, + "modelVersionId": null, + }, + "routeTargets": null, + "isSelected": false + }, + "89d4c968-158c-4722-a22c-c5c2ccc17fd5": { + "instanceId": "89d4c968-158c-4722-a22c-c5c2ccc17fd5", + "instanceName": "LPPVPN", + "platformName": "AVPN", + "instanceType": "SERVICE-INFRASTRUCTURE", + "region": "USA,EMEA", + "customerId": "VPN1276", + "modelInfo": { + "modelCustomizationId": null, + "modelInvariantId": null, + "modelVersionId": null, + }, + "routeTargets": null, + "isSelected": false + }, + "3e7834fb-a8e0-4243-a837-5352ccab4602": { + "instanceId": "3e7834fb-a8e0-4243-a837-5352ccab4602", + "instanceName": "LPPVPN", + "platformName": "AVPN", + "instanceType": "SERVICE-INFRASTRUCTURE", + "region": "USA,EMEA", + "customerId": "VPN1259", + "modelInfo": { + "modelCustomizationId": null, + "modelInvariantId": null, + "modelVersionId": null, + }, + "routeTargets": null, + "isSelected": false + }, + "844a1ea7-556a-4e49-8aa3-171f1db4ea02": { + "instanceId": "844a1ea7-556a-4e49-8aa3-171f1db4ea02", + "instanceName": "LPPVPN", + "platformName": "AVPN", + "instanceType": "SERVICE-INFRASTRUCTURE", + "region": "USA,EMEA", + "customerId": "VPN1277", + "modelInfo": { + "modelCustomizationId": null, + "modelInvariantId": null, + "modelVersionId": null, + }, + "routeTargets": null, + "isSelected": false + } + }; + spyOn(store, 'dispatch'); + memberTableService.allElementsStatusMap = <any>members; + let searchElementsModalComponent = new SearchElementsModalComponent(null, null, null, memberTableService, null); + + searchElementsModalComponent.modalInformation = <any>{ + modalInformation: { + serviceModelId: serviceModelId + } + }; + + let memberArr = _.values(members); + service.associateVrfVPNMember(searchElementsModalComponent, vrfStoreKey); + expect(store.dispatch).toHaveBeenCalledTimes(memberArr.filter((item) => item.isSelected).length * 2); + }); +}); diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/vpnStep/vpn.step.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/vpnStep/vpn.step.service.ts new file mode 100644 index 000000000..5523cf1ff --- /dev/null +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/vpnStep/vpn.step.service.ts @@ -0,0 +1,195 @@ +import {Injectable} from "@angular/core"; +import {NgRedux} from "@angular-redux/store"; +import {AppState} from "../../../../../../../shared/store/reducers"; +import {AaiService} from "../../../../../../../shared/services/aaiService/aai.service"; +import { + ISearchField, + ITableContent, + ModalInformation +} from "../../../../../../../shared/components/searchMembersModal/members-table/element-table-row.model"; +import {ElementsTableService} from "../../../../../../../shared/components/searchMembersModal/members-table/elements-table.service"; +import { + clearAllGenericModalhelper, + updateGenericModalhelper +} from "../../../../../../../shared/storeUtil/utils/global/global.actions"; +import {Observable} from "rxjs"; +import {CustomTableColumnDefinition} from "../../../../../../../shared/components/searchMembersModal/members-table/elements-table.component"; +import {VPNModalRow} from "./vpn.step.model"; +import {NetworkStepService} from "../networkStep/network.step.service"; +import * as _ from "lodash"; +import { + associateVRFMember, + clearAssociateVRFMemberInstance, + createVrfInstance +} from "../../../../../../../shared/storeUtil/utils/vrf/vrf.actions"; +import {calculateNextUniqueModelName} from "../../../../../../../shared/storeUtil/utils/vnf/vnf.reducers"; + +@Injectable() +export class VpnStepService { + constructor(private _store: NgRedux<AppState>, private _aaiService: AaiService, private _networkStepService: NetworkStepService) { + } + + uniqObjectField: string = "instanceId"; + type: string = "VPN"; + + getVpnStep = (serviceInstance, serviceModelId, ...otherSteps): ModalInformation => { + return { + type: this.type, + serviceModelId: serviceModelId, + title: 'Associate VPN', + description: 'Select a VPN to associate to the VRF Entry', + noElementsMsg: 'No VPN instances were found.', + maxSelectRow: 1, + uniqObjectField: this.uniqObjectField, + backAction: (searchElementsModalComponent) => { + ElementsTableService.changeModalInformationDataTrigger.next({ + modalInformation: otherSteps[1].getNetworkStep(serviceInstance, searchElementsModalComponent.modalInformation.serviceModelId, ...otherSteps), + selectedRowsIds: [this._store.getState().global.genericModalHelper.selectedNetwork.instanceUUID] + }); + }, + topButton: { + text: 'SET VPN', + action: (searchElementsModalComponent) => { + let currentVRF = this._store.getState().global.genericModalHelper['currentVRF']; + const vrfStoreKey: string = _.isNil(currentVRF['vrfStoreKey']) + ? calculateNextUniqueModelName(currentVRF['model']['name'], searchElementsModalComponent.modalInformation.serviceModelId, this._store.getState().service, 'vrfs') + : currentVRF['vrfStoreKey']; + + + if (_.isNil(currentVRF['vrfStoreKey'])) { + this._store.dispatch(createVrfInstance(currentVRF['model'], serviceModelId, vrfStoreKey)); + } else { + this._store.dispatch(clearAssociateVRFMemberInstance(vrfStoreKey, serviceModelId, 'networks')); + this._store.dispatch(clearAssociateVRFMemberInstance(vrfStoreKey, serviceModelId, 'vpns')); + } + + this.associateVrfVPNMember(searchElementsModalComponent, vrfStoreKey); + this.associateVrfNetworkMember(searchElementsModalComponent, vrfStoreKey); + + this._store.dispatch(clearAllGenericModalhelper()); + searchElementsModalComponent.closeDialog(); + } + }, + getElements: () => this.getVPNs(), + criteria: [], + searchFields: this.getsVPNStepSearchFields(), + tableHeaders: this.getVPNStepHeaders(), + tableContent: this.getVPNTableContent() + }; + }; + + getVPNs = (): Observable<any[]> => { + return this._aaiService.retrieveActiveVPNs().map((vpns: VPNModalRow[]) => { + return this.sortElementsResultByField(vpns, "instanceName"); + }); + }; + + sortElementsResultByField = (elements, fieldName): any[] => { + return _.sortBy(elements, o => o[fieldName]); + }; + + associateVrfVPNMember = (searchElementsModalComponent, vrfStoreKey): void => { + let tmpMembers = searchElementsModalComponent._membersTableService.allElementsStatusMap; + for (let key in tmpMembers) { + if (tmpMembers[key].isSelected) { + this._store.dispatch(updateGenericModalhelper(`selected${this.type}`, tmpMembers[key], this.uniqObjectField)); + this._store.dispatch(associateVRFMember(vrfStoreKey, searchElementsModalComponent.modalInformation.serviceModelId, tmpMembers[key], 'vpns')); + } + } + }; + + associateVrfNetworkMember = (searchElementsModalComponent, vrfStoreKey): void => { + let selectedNetworks = this._store.getState().global.genericModalHelper['selectedNetwork']; + for (let key in selectedNetworks) { + this._store.dispatch(associateVRFMember(vrfStoreKey, searchElementsModalComponent.modalInformation.serviceModelId, selectedNetworks[key], 'networks')); + } + }; + + getsVPNStepSearchFields = (): ISearchField[] => { + return [ + { + title: 'Type ', + dataTestId: 'Type', + value: "SERVICE-INFRASTRUCTURE", + type: "LABEL" + } + ] + }; + + getVPNStepHeaders = (): CustomTableColumnDefinition[] => { + return [ + {displayName: `VPN instance name`, key: ['instanceName']}, + {displayName: `Version`, key: ['modelInfo', 'modelVersionId']}, + {displayName: `Instance ID`, key: ['instanceId']}, + {displayName: `Platform`, key: ['platformName']}, + {displayName: 'Region', key: ['region']}, + {displayName: 'Route target', key: ['routeTargets', 'globalRouteTarget'], type: 'LIST'}, + {displayName: 'Route target role', key: ['routeTargets', 'routeTargetRole'], type: 'LIST'}, + {displayName: 'Customer VPN ID', key: ['customerId']}, + ]; + }; + + getVPNTableContent = (): ITableContent[] => { + return [ + { + id: 'vpn-name', + contents: [{ + id: ['vpn-name'], + value: ['instanceName'] + }] + }, + { + id: 'model-version-id', + contents: [{ + id: ['model-version-id'], + value: ['modelInfo', 'modelVersionId'] + }] + }, + { + id: 'vpn-id', + contents: [{ + id: ['vpn-id'], + value: ['instanceId'] + }] + }, + { + id: 'vpn-platform', + contents: [{ + id: ['vpn-platform'], + value: ['platformName'] + }] + }, + { + id: 'vpn-region', + contents: [{ + id: ['vpn-region'], + value: ['region'] + }] + }, + { + id: 'global-route-target', + contents: [{ + id: ['global-route-target'], + value: ['routeTargets', 'globalRouteTarget'], + type: 'LIST' + }] + }, + { + id: 'route-target-role', + contents: [{ + id: ['route-target-role'], + value: ['routeTargets', 'routeTargetRole'], + type: 'LIST' + }] + }, + { + id: 'customer-vpn-id', + contents: [{ + id: ['customer-vpn-id'], + value: ['customerId'] + }] + } + ]; + }; + +} 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 fd39ed92a..d3f04fe66 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 @@ -30,6 +30,8 @@ import {DuplicateService} from "../../duplicate/duplicate.service"; import {SdcUiComponentsModule, SdcUiServices} from "onap-ui-angular"; import {ErrorMsgService} from "../../../../shared/components/error-msg/error-msg.service"; import {ComponentInfoService} from "../../component-info/component-info.service"; +import {NetworkStepService} from "../models/vrf/vrfModal/networkStep/network.step.service"; +import {VpnStepService} from "../models/vrf/vrfModal/vpnStep/vpn.step.service"; class MockAppStore<T> { getState() { @@ -81,6 +83,8 @@ describe('Model Tree Generator service', () => { ErrorMsgService, ComponentInfoService, SdcUiServices.ModalService, + NetworkStepService, + VpnStepService, { provide: NgRedux, useClass: MockAppStore }, MockNgRedux] }); @@ -106,14 +110,18 @@ describe('Model Tree Generator service', () => { delete convertToNodes[0].trackById; delete convertToNodes[0].updatePoistionFunction; delete convertToNodes[0].position; - delete convertToNodes[0].onSelectedNode; + delete convertToNodes[0].getInfo; + delete convertToNodes[0].componentInfoType; + delete convertToNodes[0].getModel; delete convertToNodes[1].children[0].isFailed; delete convertToNodes[1].children[0].menuActions; delete convertToNodes[1].children[0].trackById; delete convertToNodes[1].children[0].errors; delete convertToNodes[1].children[0].updatePoistionFunction; delete convertToNodes[1].children[0].position; - delete convertToNodes[1].children[0].onSelectedNode; + delete convertToNodes[1].children[0].getInfo; + delete convertToNodes[1].children[0].getModel; + delete convertToNodes[1].children[0].componentInfoType; expect(Object.assign({}, convertToNodes[0])).toEqual(Object.assign({}, expectInstanceNodesResultVNF()[0])); expect(Object.assign({}, convertToNodes[1].children[0])).toEqual(Object.assign({}, expectInstanceNodesResultVNF()[1].children[0])); expect(convertToNodes[1].inMaint).toBeFalsy(); @@ -131,7 +139,9 @@ describe('Model Tree Generator service', () => { delete convertToNodes[1].isFailed; delete convertToNodes[1].updatePoistionFunction; delete convertToNodes[1].position; - delete convertToNodes[1].onSelectedNode; + delete convertToNodes[1].getModel; + delete convertToNodes[1].getInfo; + delete convertToNodes[1].componentInfoType; expect(Object.assign({}, convertToNodes[0].children[0].dynamicInputs)).toEqual(Object.assign({}, expectInstanceNodesResultVNF_Network()[0]['children'][0].dynamicInputs)); expect(Object.assign({}, convertToNodes[0].children[0].missingData)).toEqual(Object.assign({}, expectInstanceNodesResultVNF_Network()[0]['children'][0].missingData)); expect(Object.assign({}, convertToNodes[1])).toEqual(Object.assign({}, expectInstanceNodesResultVNF_Network()[1])); @@ -154,7 +164,7 @@ describe('Model Tree Generator service', () => { "serviceEcompNaming": "false", "instantiationType": "Macro", "inputs": { - "2017488_adiodvpe0_ASN": { + "2017488_pasqualevpe0_ASN": { "type": "string", "description": "AV/PE", "entry_schema": null, @@ -170,11 +180,11 @@ describe('Model Tree Generator service', () => { } }, "vnfs": { - "2017-388_ADIOD-vPE 1": { + "2017-388_PASQUALE-vPE 1": { "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413", "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "1.0", "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a", "inputs": { @@ -237,37 +247,37 @@ describe('Model Tree Generator service', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -312,7 +322,7 @@ describe('Model Tree Generator service', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -320,14 +330,14 @@ describe('Model Tree Generator service', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -337,7 +347,7 @@ describe('Model Tree Generator service', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -351,16 +361,16 @@ describe('Model Tree Generator service', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-388_ADIOD-vPE 0": { + "2017-388_PASQUALE-vPE 0": { "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "4.0", "customizationUuid": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", "inputs": { @@ -423,37 +433,37 @@ describe('Model Tree Generator service', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -499,7 +509,7 @@ describe('Model Tree Generator service', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -507,14 +517,14 @@ describe('Model Tree Generator service', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -524,7 +534,7 @@ describe('Model Tree Generator service', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -538,16 +548,16 @@ describe('Model Tree Generator service', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 0", + "modelCustomizationName": "2017-388_PASQUALE-vPE 0", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-488_ADIOD-vPE 0": { + "2017-488_PASQUALE-vPE 0": { "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-488_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-488_PASQUALE-vPE", "version": "5.0", "customizationUuid": "1da7b585-5e61-4993-b95e-8e6606c81e45", "inputs": { @@ -610,37 +620,37 @@ describe('Model Tree Generator service', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -687,7 +697,7 @@ describe('Model Tree Generator service', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -695,14 +705,14 @@ describe('Model Tree Generator service', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -712,7 +722,7 @@ describe('Model Tree Generator service', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -726,21 +736,21 @@ describe('Model Tree Generator service', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-488_ADIOD-vPE 0", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -750,10 +760,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -764,10 +774,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -778,10 +788,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -792,10 +802,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -806,10 +816,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" @@ -817,37 +827,37 @@ describe('Model Tree Generator service', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -855,19 +865,19 @@ describe('Model Tree Generator service', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -877,10 +887,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -891,10 +901,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -905,10 +915,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -919,10 +929,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -933,29 +943,29 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" } } }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} @@ -965,24 +975,24 @@ describe('Model Tree Generator service', () => { } }, "networks": {}, - "collectionResource": {}, + "collectionResources": {}, "configurations": {}, "fabricConfigurations": {}, "serviceProxies": {}, "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -992,10 +1002,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1006,10 +1016,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1020,10 +1030,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1034,10 +1044,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1048,10 +1058,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" @@ -1059,37 +1069,37 @@ describe('Model Tree Generator service', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -1097,19 +1107,19 @@ describe('Model Tree Generator service', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": { @@ -1119,10 +1129,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, - "fromInputName": "2017488_adiodvpe0_vnf_config_template_version", + "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version", "constraints": null, "required": true, "default": "17.2" @@ -1133,10 +1143,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, - "fromInputName": "adiodvpe0_bandwidth_units", + "fromInputName": "pasqualevpe0_bandwidth_units", "constraints": null, "required": true, "default": "Gbps" @@ -1147,10 +1157,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, - "fromInputName": "adiodvpe0_bandwidth", + "fromInputName": "pasqualevpe0_bandwidth", "constraints": null, "required": true, "default": "10" @@ -1161,10 +1171,10 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, - "fromInputName": "2017488_adiodvpe0_AIC_CLLI", + "fromInputName": "2017488_pasqualevpe0_AIC_CLLI", "constraints": null, "required": true, "default": "ATLMY8GA" @@ -1175,29 +1185,29 @@ describe('Model Tree Generator service', () => { "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, - "fromInputName": "2017488_adiodvpe0_vnf_instance_name", + "fromInputName": "2017488_pasqualevpe0_vnf_instance_name", "constraints": null, "required": true, "default": "mtnj309me6" } } }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} @@ -1222,7 +1232,7 @@ describe('Model Tree Generator service', () => { "serviceEcompNaming": "false", "instantiationType": "A-La-Carte", "inputs": { - "2017488_adiodvpe0_ASN": { + "2017488_pasqualevpe0_ASN": { "type": "string", "description": "AV/PE", "entry_schema": null, @@ -1234,11 +1244,11 @@ describe('Model Tree Generator service', () => { } }, "vnfs": { - "2017-388_ADIOD-vPE 1": { + "2017-388_PASQUALE-vPE 1": { "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413", "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "1.0", "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a", "inputs": { @@ -1301,37 +1311,37 @@ describe('Model Tree Generator service', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -1376,7 +1386,7 @@ describe('Model Tree Generator service', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -1384,14 +1394,14 @@ describe('Model Tree Generator service', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -1401,7 +1411,7 @@ describe('Model Tree Generator service', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -1416,16 +1426,16 @@ describe('Model Tree Generator service', () => { "max_instances": 5 }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-388_ADIOD-vPE 0": { + "2017-388_PASQUALE-vPE 0": { "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "4.0", "customizationUuid": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", "inputs": { @@ -1488,37 +1498,37 @@ describe('Model Tree Generator service', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -1564,7 +1574,7 @@ describe('Model Tree Generator service', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -1572,14 +1582,14 @@ describe('Model Tree Generator service', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -1589,7 +1599,7 @@ describe('Model Tree Generator service', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -1603,16 +1613,16 @@ describe('Model Tree Generator service', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 0", + "modelCustomizationName": "2017-388_PASQUALE-vPE 0", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-488_ADIOD-vPE 0": { + "2017-488_PASQUALE-vPE 0": { "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-488_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-488_PASQUALE-vPE", "version": "5.0", "customizationUuid": "1da7b585-5e61-4993-b95e-8e6606c81e45", "inputs": { @@ -1675,37 +1685,37 @@ describe('Model Tree Generator service', () => { "vnf_config_template_version": { "displayName": "vnf_config_template_version", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_config_template_version" + "inputName": "2017488_pasqualevpe0_vnf_config_template_version" }, "bandwidth_units": { "displayName": "bandwidth_units", "command": "get_input", - "inputName": "adiodvpe0_bandwidth_units" + "inputName": "pasqualevpe0_bandwidth_units" }, "bandwidth": { "displayName": "bandwidth", "command": "get_input", - "inputName": "adiodvpe0_bandwidth" + "inputName": "pasqualevpe0_bandwidth" }, "AIC_CLLI": { "displayName": "AIC_CLLI", "command": "get_input", - "inputName": "2017488_adiodvpe0_AIC_CLLI" + "inputName": "2017488_pasqualevpe0_AIC_CLLI" }, "ASN": { "displayName": "ASN", "command": "get_input", - "inputName": "2017488_adiodvpe0_ASN" + "inputName": "2017488_pasqualevpe0_ASN" }, "vnf_instance_name": { "displayName": "vnf_instance_name", "command": "get_input", - "inputName": "2017488_adiodvpe0_vnf_instance_name" + "inputName": "2017488_pasqualevpe0_vnf_instance_name" } }, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -1752,7 +1762,7 @@ describe('Model Tree Generator service', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "false", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -1760,14 +1770,14 @@ describe('Model Tree Generator service', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:adiodvpe0_bandwidth", + "bandwidth": "get_input:pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -1777,7 +1787,7 @@ describe('Model Tree Generator service', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -1791,82 +1801,82 @@ describe('Model Tree Generator service', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-488_ADIOD-vPE 0", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV" + "vfModuleLabel": "PASQUALE_vRE_BV" }, "inputs": { - "adiodvpe0_bandwidth": { + "pasqualevpe0_bandwidth": { "type": "string", "description": "Requested VPE bandwidth", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, "constraints": null, "required": true, "default": "10" }, - "2017488_adiodvpe0_vnf_instance_name": { + "2017488_pasqualevpe0_vnf_instance_name": { "type": "string", "description": "The hostname assigned to the vpe.", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, "constraints": null, "required": true, "default": "mtnj309me6" }, - "2017488_adiodvpe0_vnf_config_template_version": { + "2017488_pasqualevpe0_vnf_config_template_version": { "type": "string", "description": "VPE Software Version", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, "constraints": null, "required": true, "default": "17.2" }, - "2017488_adiodvpe0_AIC_CLLI": { + "2017488_pasqualevpe0_AIC_CLLI": { "type": "string", "description": "AIC Site CLLI", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, "constraints": null, "required": true, "default": "ATLMY8GA" }, - "adiodvpe0_bandwidth_units": { + "pasqualevpe0_bandwidth_units": { "type": "string", "description": "Units of bandwidth", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, "constraints": null, @@ -1876,116 +1886,116 @@ describe('Model Tree Generator service', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV" + "vfModuleLabel": "PASQUALE_base_vPE_BV" }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV" + "vfModuleLabel": "PASQUALE_vPFE_BV" }, "inputs": {}, "volumeGroupAllowed": true } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV" + "vfModuleLabel": "PASQUALE_vRE_BV" }, "inputs": { - "adiodvpe0_bandwidth": { + "pasqualevpe0_bandwidth": { "type": "string", "description": "Requested VPE bandwidth", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, "constraints": null, "required": true, "default": "10" }, - "2017488_adiodvpe0_vnf_instance_name": { + "2017488_pasqualevpe0_vnf_instance_name": { "type": "string", "description": "The hostname assigned to the vpe.", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, "constraints": null, "required": true, "default": "mtnj309me6" }, - "2017488_adiodvpe0_vnf_config_template_version": { + "2017488_pasqualevpe0_vnf_config_template_version": { "type": "string", "description": "VPE Software Version", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, "constraints": null, "required": true, "default": "17.2" }, - "2017488_adiodvpe0_AIC_CLLI": { + "2017488_pasqualevpe0_AIC_CLLI": { "type": "string", "description": "AIC Site CLLI", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, "constraints": null, "required": true, "default": "ATLMY8GA" }, - "adiodvpe0_bandwidth_units": { + "pasqualevpe0_bandwidth_units": { "type": "string", "description": "Units of bandwidth", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, "constraints": null, @@ -1994,19 +2004,19 @@ describe('Model Tree Generator service', () => { } } }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV" + "vfModuleLabel": "PASQUALE_vPFE_BV" }, "inputs": {} } @@ -2093,85 +2103,85 @@ describe('Model Tree Generator service', () => { "modelCustomizationName": "ExtVL 0" } }, - "collectionResource": {}, + "collectionResources": {}, "configurations": {}, "fabricConfigurations": {}, "serviceProxies": {}, "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV" + "vfModuleLabel": "PASQUALE_vRE_BV" }, "inputs": { - "adiodvpe0_bandwidth": { + "pasqualevpe0_bandwidth": { "type": "string", "description": "Requested VPE bandwidth", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth" }, "constraints": null, "required": true, "default": "10" }, - "2017488_adiodvpe0_vnf_instance_name": { + "2017488_pasqualevpe0_vnf_instance_name": { "type": "string", "description": "The hostname assigned to the vpe.", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_instance_name" }, "constraints": null, "required": true, "default": "mtnj309me6" }, - "2017488_adiodvpe0_vnf_config_template_version": { + "2017488_pasqualevpe0_vnf_config_template_version": { "type": "string", "description": "VPE Software Version", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "vnf_config_template_version" }, "constraints": null, "required": true, "default": "17.2" }, - "2017488_adiodvpe0_AIC_CLLI": { + "2017488_pasqualevpe0_AIC_CLLI": { "type": "string", "description": "AIC Site CLLI", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "AIC_CLLI" }, "constraints": null, "required": true, "default": "ATLMY8GA" }, - "adiodvpe0_bandwidth_units": { + "pasqualevpe0_bandwidth_units": { "type": "string", "description": "Units of bandwidth", "entry_schema": null, "inputProperties": { "sourceType": "HEAT", - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "paramName": "bandwidth_units" }, "constraints": null, @@ -2181,36 +2191,36 @@ describe('Model Tree Generator service', () => { }, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV" + "vfModuleLabel": "PASQUALE_base_vPE_BV" }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV" + "vfModuleLabel": "PASQUALE_vPFE_BV" }, "inputs": {}, "volumeGroupAllowed": true @@ -2222,17 +2232,17 @@ describe('Model Tree Generator service', () => { function getInstanceServiceVNF() { return { "vnfs": { - "2017-388_ADIOD-vPE 0": { + "2017-388_PASQUALE-vPE 0": { "action": 'None', "inMaint": true, "orchStatus": "Active", "provStatus": "prov", "rollbackOnFailure": "true", - "originalName": "2017-388_ADIOD-vPE 0", + "originalName": "2017-388_PASQUALE-vPE 0", "isMissingData": true, "trackById": "u5mtsvzmq6p", "vfModules": {}, - "vnfStoreKey": "2017-388_ADIOD-vPE 0", + "vnfStoreKey": "2017-388_PASQUALE-vPE 0", "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168", "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c", "lcpCloudRegionId": null, @@ -2244,21 +2254,21 @@ describe('Model Tree Generator service', () => { "modelType": "VF", "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", "modelVersionId": "6b528779-44a3-4472-bdff-9cd15ec93450", - "modelName": "2017-388_ADIOD-vPE", + "modelName": "2017-388_PASQUALE-vPE", "modelVersion": "4.0", - "modelCustomizationName": "2017-388_ADIOD-vPE 0" + "modelCustomizationName": "2017-388_PASQUALE-vPE 0" } }, - "2017-488_ADIOD-vPE 0": { + "2017-488_PASQUALE-vPE 0": { "action": 'None', "inMaint": false, "rollbackOnFailure": "true", - "originalName": "2017-488_ADIOD-vPE 0", + "originalName": "2017-488_PASQUALE-vPE 0", "isMissingData": false, "trackById": "1d6dg4fsgbm", "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0zssmp": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0zssmp": { "action": 'None', "isMissingData": true, "sdncPreReload": null, @@ -2266,11 +2276,11 @@ describe('Model Tree Generator service', () => { "modelType": "VFmodule", "modelInvariantId": "b34833bb-6aa9-4ad6-a831-70b06367a091", "modelVersionId": "f8360508-3f17-4414-a2ed-6bc71161e8db", - "modelName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "modelVersion": "5", "modelCustomizationId": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "modelUniqueId": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0" + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0" }, "instanceParams": [ {} @@ -2280,24 +2290,24 @@ describe('Model Tree Generator service', () => { } } }, - "vnfStoreKey": "2017-488_ADIOD-vPE 0", + "vnfStoreKey": "2017-488_PASQUALE-vPE 0", "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c", - "lcpCloudRegionId": "JANET25", + "lcpCloudRegionId": "AAIAIC25", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "lineOfBusiness": "ONAP", "platformName": "platform", "modelInfo": { "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09", - "modelName": "2017-488_ADIOD-vPE", + "modelName": "2017-488_PASQUALE-vPE", "modelVersion": "5.0", "modelCustomizationId": "1da7b585-5e61-4993-b95e-8e6606c81e45", "modelUniqueId": "1da7b585-5e61-4993-b95e-8e6606c81e45", - "modelCustomizationName": "2017-488_ADIOD-vPE 0", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09" }, - "instanceName": "2017488_ADIODvPE", + "instanceName": "2017488_PASQUALEvPE", "legacyRegion": "123", "instanceParams": [ {} @@ -2306,7 +2316,7 @@ describe('Model Tree Generator service', () => { }, "instanceParams": [ { - "2017488_adiodvpe0_ASN": "AV_vPE" + "2017488_pasqualevpe0_ASN": "AV_vPE" } ], "validationCounter": 3, @@ -2324,7 +2334,7 @@ describe('Model Tree Generator service', () => { "subscriptionServiceType": "TYLER SILVIA", "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c", - "lcpCloudRegionId": "JANET25", + "lcpCloudRegionId": "AAIAIC25", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "aicZoneId": "ABC15", "projectName": "WATKINS", @@ -2358,43 +2368,43 @@ describe('Model Tree Generator service', () => { function getInstanceServiceVNF_Network() { return { "vnfs": { - "2017-488_ADIOD-vPE 0": { + "2017-488_PASQUALE-vPE 0": { "action": 'None', "rollbackOnFailure": "true", - "originalName": "2017-488_ADIOD-vPE 0", + "originalName": "2017-488_PASQUALE-vPE 0", "isMissingData": false, "trackById": "o65b26t2thj", "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1sgoqi": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1sgoqi": { "action": 'None', "instanceName": "yoav", "volumeGroupName": "123", "modelInfo": { "modelInvariantId": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1", "modelVersionId": "25284168-24bb-4698-8cb4-3f509146eca5", - "modelName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "modelVersion": "6", "modelCustomizationId": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401", "modelUniqueId": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "uuid": "25284168-24bb-4698-8cb4-3f509146eca5" }, "uuid": "25284168-24bb-4698-8cb4-3f509146eca5", "isMissingData": false, "instanceParams": [ { - "adiodvpe0_bandwidth": "10", - "2017488_adiodvpe0_vnf_instance_name": "mtnj309me6", - "2017488_adiodvpe0_vnf_config_template_version": "17.2", - "2017488_adiodvpe0_AIC_CLLI": "ATLMY8GA", - "adiodvpe0_bandwidth_units": "Gbps" + "pasqualevpe0_bandwidth": "10", + "2017488_pasqualevpe0_vnf_instance_name": "mtnj309me6", + "2017488_pasqualevpe0_vnf_config_template_version": "17.2", + "2017488_pasqualevpe0_AIC_CLLI": "ATLMY8GA", + "pasqualevpe0_bandwidth_units": "Gbps" } ] } } }, - "vnfStoreKey": "2017-488_ADIOD-vPE 0", + "vnfStoreKey": "2017-488_PASQUALE-vPE 0", "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034", "lcpCloudRegionId": "hvf6", @@ -2404,13 +2414,13 @@ describe('Model Tree Generator service', () => { "modelInfo": { "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09", - "modelName": "2017-488_ADIOD-vPE", + "modelName": "2017-488_PASQUALE-vPE", "modelVersion": "5.0", "modelCustomizationId": "1da7b585-5e61-4993-b95e-8e6606c81e45", - "modelCustomizationName": "2017-488_ADIOD-vPE 0", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09" }, - "instanceName": "2017488_ADIODvPE", + "instanceName": "2017488_PASQUALEvPE", "instanceParams": [ {} ] @@ -2418,7 +2428,7 @@ describe('Model Tree Generator service', () => { }, "instanceParams": [ { - "2017488_adiodvpe0_ASN": "AV_vPE" + "2017488_pasqualevpe0_ASN": "AV_vPE" } ], "validationCounter": 0, @@ -2448,6 +2458,11 @@ describe('Model Tree Generator service', () => { "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e", "platformName": "xxx1", "lineOfBusiness": "ONAP", + "uuid": "network-instance-model-version-id", + "routeTarget": { + "globalRouteTarget": "mock-global-1", + "routeTargetRole": "mock-role-x" + }, "instanceParams": [ {} ], @@ -2528,7 +2543,7 @@ describe('Model Tree Generator service', () => { "subscriptionServiceType": "TYLER SILVIA", "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "productFamilyId": "17cc1042-527b-11e6-beb8-9e71128cae77", - "lcpCloudRegionId": "JANET25", + "lcpCloudRegionId": "AAIAIC25", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "aicZoneId": "JAG1", "projectName": null, @@ -2571,13 +2586,13 @@ describe('Model Tree Generator service', () => { "orchStatus": 'Active', "provStatus": 'prov', "inMaint": true, - "name": "2017-388_ADIOD-vPE 0", - "modelName": "2017-388_ADIOD-vPE 0", + "name": "2017-388_PASQUALE-vPE 0", + "modelName": "2017-388_PASQUALE-vPE 0", "type": "VF", "parentType": '', "isEcompGeneratedNaming": false, - "networkStoreKey": "2017-388_ADIOD-vPE 0", - "vnfStoreKey": "2017-388_ADIOD-vPE 0", + "networkStoreKey": "2017-388_PASQUALE-vPE 0", + "vnfStoreKey": "2017-388_PASQUALE-vPE 0", "typeName": "VNF", "children": [], "statusMessage": "Failed Vnf Message", @@ -2598,12 +2613,12 @@ describe('Model Tree Generator service', () => { "id": "1d6dg4fsgbm", "inMaint": false, "parentType": '', - "name": "2017-488_ADIOD-vPE 0", - "modelName": "2017-488_ADIOD-vPE 0", + "name": "2017-488_PASQUALE-vPE 0", + "modelName": "2017-488_PASQUALE-vPE 0", "type": "VF", "isEcompGeneratedNaming": false, - "networkStoreKey": "2017-488_ADIOD-vPE 0", - "vnfStoreKey": "2017-488_ADIOD-vPE 0", + "networkStoreKey": "2017-488_PASQUALE-vPE 0", + "vnfStoreKey": "2017-488_PASQUALE-vPE 0", "typeName": "VNF", "statusProperties": [Object({ key: 'Prov Status:', @@ -2620,11 +2635,11 @@ describe('Model Tree Generator service', () => { "id": "v2egx1b8i1l", "statusMessage": "Failed vfModel message", "name": "<Automatically Assigned>", - "modelName": "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelName": "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "type": "VFmodule", "isEcompGeneratedNaming": false, "dynamicInputs": [], - "dynamicModelName": "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0zssmp", + "dynamicModelName": "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0zssmp", "typeName": "M", "statusProperties": [Object({ key: 'Prov Status:', @@ -2643,11 +2658,11 @@ describe('Model Tree Generator service', () => { "modelId": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "missingData": false, "id": "o65b26t2thj", - "name": "2017488_ADIODvPE", - "modelName": "2017-488_ADIOD-vPE 0", + "name": "2017488_PASQUALEvPE", + "modelName": "2017-488_PASQUALE-vPE 0", "type": "VF", "isEcompGeneratedNaming": false, - "vnfStoreKey": "2017-488_ADIOD-vPE 0", + "vnfStoreKey": "2017-488_PASQUALE-vPE 0", "typeName": "VNF", "statusProperties": [Object({ key: 'Prov Status:', @@ -2660,53 +2675,53 @@ describe('Model Tree Generator service', () => { "modelId": "25284168-24bb-4698-8cb4-3f509146eca5", "missingData": false, "name": "yoav", - "modelName": "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelName": "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "type": "VFmodule", "isEcompGeneratedNaming": false, "typeName": "M", "dynamicInputs": [ { - "id": "adiodvpe0_bandwidth", + "id": "pasqualevpe0_bandwidth", "type": "string", - "name": "adiodvpe0_bandwidth", + "name": "pasqualevpe0_bandwidth", "value": "10", "isRequired": true, "description": "Requested VPE bandwidth" }, { - "id": "2017488_adiodvpe0_vnf_instance_name", + "id": "2017488_pasqualevpe0_vnf_instance_name", "type": "string", - "name": "2017488_adiodvpe0_vnf_instance_name", + "name": "2017488_pasqualevpe0_vnf_instance_name", "value": "mtnj309me6", "isRequired": true, "description": "The hostname assigned to the vpe." }, { - "id": "2017488_adiodvpe0_vnf_config_template_version", + "id": "2017488_pasqualevpe0_vnf_config_template_version", "type": "string", - "name": "2017488_adiodvpe0_vnf_config_template_version", + "name": "2017488_pasqualevpe0_vnf_config_template_version", "value": "17.2", "isRequired": true, "description": "VPE Software Version" }, { - "id": "2017488_adiodvpe0_AIC_CLLI", + "id": "2017488_pasqualevpe0_AIC_CLLI", "type": "string", - "name": "2017488_adiodvpe0_AIC_CLLI", + "name": "2017488_pasqualevpe0_AIC_CLLI", "value": "ATLMY8GA", "isRequired": true, "description": "AIC Site CLLI" }, { - "id": "adiodvpe0_bandwidth_units", + "id": "pasqualevpe0_bandwidth_units", "type": "string", - "name": "adiodvpe0_bandwidth_units", + "name": "pasqualevpe0_bandwidth_units", "value": "Gbps", "isRequired": true, "description": "Units of bandwidth" } ], - "dynamicModelName": "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1sgoqi" + "dynamicModelName": "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1sgoqi" } ] }, @@ -2719,6 +2734,8 @@ describe('Model Tree Generator service', () => { "missingData": false, "id": "sf3zth68xjf", "name": "<Automatically Assigned>", + "routeTargetId": "mock-global-1", + "routeTargetRole": "mock-role-x", "statusMessage": "Network failed message", "modelName": "ExtVL 0", "type": "VL", diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToInstanceTree/objectToInstanceTree.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToInstanceTree/objectToInstanceTree.service.ts index 1fc439ea3..7a908b7fd 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToInstanceTree/objectToInstanceTree.service.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToInstanceTree/objectToInstanceTree.service.ts @@ -48,7 +48,7 @@ export class ObjectToInstanceTreeService { * @param node - the current node ****************************************************************/ increaseNumberOfFailed(node) { - if (node.isFailed) { + if (node && node.isFailed) { this.numberOfFailed++; node['errors'] = !_.isNil(node['errors']) ? node['errors'] : {}; node['errors']["isFailed"] = true; @@ -92,11 +92,16 @@ export class ObjectToInstanceTreeService { } addingExtraDataToNode(node, modelName: string, parentModel: any, instance: any, serviceHierarchy, option: ILevelNodeInfo, parentType ?: string) { - node.trackById = _.isNil(node.trackById) ? DefaultDataGeneratorService.createRandomTrackById() : node['trackById']; - node.parentType = !_.isNil(parentType) ? parentType : ""; - node.updatePoistionFunction = option.updatePosition; - node.position = option.getNodePosition(instance, node.dynamicModelName); - node.onSelectedNode = option.onSelectedNode; + if(!_.isNil(node)){ + node.trackById = _.isNil(node.trackById) ? DefaultDataGeneratorService.createRandomTrackById() : node['trackById']; + node.parentType = !_.isNil(parentType) ? parentType : ""; + node.updatePoistionFunction = option.updatePosition; + node.position = option.getNodePosition(instance, node.dynamicModelName); + node.getModel = option.getModel.bind(option); + node.getInfo = !_.isNil(option.getInfo) ? option.getInfo.bind(option) : ()=>{}; + node.componentInfoType = option.componentInfoType; + } + return node; } @@ -116,24 +121,27 @@ export class ObjectToInstanceTreeService { * @param serviceHierarchy - The service Hierarchy store ****************************************************************/ addNextInstanceTreeNode(parentInstance, parentModel, levelNodeInfo: ILevelNodeInfo, parentNode, serviceHierarchy): any[] { - if (!_.isNil(levelNodeInfo.childName)) { + if (!_.isNil(levelNodeInfo.childNames)&& levelNodeInfo.childNames.length > 0) { + const that = this; parentNode.children = []; - if (!_.isNil(parentInstance[levelNodeInfo.childName])) { - let parentType = levelNodeInfo.type; - let nextLevelNodeInfo = levelNodeInfo.getNextLevelObject.apply(this); - Object.keys(parentInstance[levelNodeInfo.childName]).map((modelName) => { - let nextLevelInstance = parentInstance[levelNodeInfo.childName][modelName]; - let nodes: any[] | any = this.getNodeInstance(modelName, parentModel, nextLevelInstance, serviceHierarchy, nextLevelNodeInfo, parentType); - if (_.isArray(nodes)) { - parentNode.children = parentNode.children.concat(nodes); - } else { - parentNode.children.push(nodes); - } - }); - return this.sortElementsByPosition(parentNode.children); - } + levelNodeInfo.childNames.forEach(function (childName) { + if (!_.isNil(parentInstance[childName])) { + let parentType = levelNodeInfo.type; + let nextLevelNodeInfo = levelNodeInfo.getNextLevelObject.apply(that, [childName]); + Object.keys(parentInstance[childName]).map((modelName) => { + let nextLevelInstance = parentInstance[childName][modelName]; + let nodes: any[] | any = that.getNodeInstance(modelName, parentModel, nextLevelInstance, serviceHierarchy, nextLevelNodeInfo, parentType); + if (_.isArray(nodes)) { + parentNode.children = parentNode.children.concat(nodes); + } else { + parentNode.children.push(nodes); + } + }); + } + }); + return this.sortElementsByPosition(parentNode.children); } - return parentNode.children; + return !_.isNil(parentNode) ? parentNode.children : null; } @@ -142,6 +150,7 @@ export class ObjectToInstanceTreeService { * @param node *********************************************************************************/ updateScalingPolicy(node): void { + if(_.isNil(node)) return node; node['errors'] = !_.isNil(node['errors']) ? node['errors'] : {}; if (!_.isNil(node['limitMembers']) && !_.isNil(node.children)) { let effectiveChildren = (node.children).filter(child => [ 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 41ad23f07..7246adc27 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 @@ -8,7 +8,10 @@ import {DefaultDataGeneratorService} from "../../../../shared/services/defaultDa import {DynamicInputsService} from "../dynamicInputs.service"; import {SharedTreeService} from "../shared.tree.service"; import {DrawingBoardModes} from "../../drawing-board.modes"; -import {AvailableModelsTreeService} from "../../available-models-tree/available-models-tree.service"; +import { + AvailableModelsTreeService, + AvailableNodeIcons +} from "../../available-models-tree/available-models-tree.service"; import {DialogService} from "ng2-bootstrap-modal"; import {VnfPopupService} from "../../../../shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service"; import {BasicControlGenerator} from "../../../../shared/components/genericForm/formControlsServices/basic.control.generator"; @@ -29,12 +32,39 @@ import {VnfGroupControlGenerator} from "../../../../shared/components/genericFor import {DuplicateService} from "../../duplicate/duplicate.service"; import {SdcUiComponentsModule} from "onap-ui-angular"; import {ComponentInfoService} from "../../component-info/component-info.service"; +import {IModelTreeNodeModel} from "../../../objectsToTree/objectToModelTree/modelTreeNode.model"; +import {VpnStepService} from "../models/vrf/vrfModal/vpnStep/vpn.step.service"; +import {NetworkStepService} from "../models/vrf/vrfModal/networkStep/network.step.service"; class MockAppStore<T> { getState() { return { global: { 'drawingBoardStatus': DrawingBoardModes.CREATE + }, + service: { + serviceInstance: { + "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd": { + "existingVNFCounterMap": { + "280dec31-f16d-488b-9668-4aae55d6648a": 1 + } + } + }, + serviceHierarchy: { + "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd": { + vnfs: { + "2017-388_PASQUALE-vPE 1": { + "properties": {} + }, + "2017-388_PASQUALE-vPE 0": { + "properties": {} + }, + "2017-488_PASQUALE-vPE 0": { + "properties": {} + } + } + } + } } } } @@ -77,8 +107,10 @@ describe('Model Tree Generator service', () => { DialogService, DuplicateService, ComponentInfoService, + NetworkStepService, + VpnStepService, {provide: NgRedux, useClass: MockAppStore}, - MockNgRedux] + MockNgRedux ] }).compileComponents(); injector = getTestBed(); @@ -90,25 +122,72 @@ describe('Model Tree Generator service', () => { expect(service).toBeDefined(); }); - test('should return nodes correctly: VNF', () => { + test('calculateNumberOfNodesWithPlusIcon : should return 0 when there are no nodes', () => { + service.calculateNumberOfNodesWithPlusIcon("someServiceModelId", []); + expect(service.numberOfPlusButton).toEqual(0); + }); + + test('calculateNumberOfNodesWithPlusIcon : should return 1 there is one node with plus icon', () => { + const serviceModel = { + service: { + uuid: "uuid" + } + }; + service.calculateNumberOfNodesWithPlusIcon(serviceModel, [{ + showNodeIcons: () => { + return new AvailableNodeIcons(true, false) + } + }]); + expect(service.numberOfPlusButton).toEqual(1); + }); + + test('calculateNumberOfNodesWithPlusIcon : should return 1 there is one node with plus icon and one without', () => { + const serviceModel = { + service: { + uuid: "uuid" + } + }; + service.calculateNumberOfNodesWithPlusIcon(serviceModel, [ + { + showNodeIcons: () => { + return new AvailableNodeIcons(true, false) + } + }, + { + showNodeIcons: () => { + return new AvailableNodeIcons(false, true) + } + } + ]); + expect(service.numberOfPlusButton).toEqual(1); + }); + + test('should return nodes correctly: VNF', () => { let convertToNodes = service.convertServiceHierarchyModelToTreeNodes(getServiceHeirarchyVNF()); - convertToNodes.map((item) => { - delete item['onAddClick']; - delete item['getNodeCount']; - delete item['showNodeIcons']; + convertToNodes.map((item: IModelTreeNodeModel) => { + delete item.onAddClick; + delete item.getNodeCount; + delete item.showNodeIcons; + delete item.getModel; + delete item.componentInfoType; + delete item.getMenuAction; delete item['menuActions']; - delete item['getMenuAction']; delete item['trackById']; + delete item.getInfo; + if (item.children) { item.children.map((child) => { - delete child['onAddClick']; - delete child['getNodeCount']; - delete child['showNodeIcons']; + delete child.onAddClick; + delete child.getNodeCount; + delete child.showNodeIcons; + delete child.getModel; + delete child.componentInfoType; + delete child.getMenuAction; delete child['menuActions']; - delete child['getMenuAction']; delete child['trackById']; + delete child.getInfo; }); } }); @@ -121,7 +200,7 @@ describe('Model Tree Generator service', () => { return [{ "id": "280dec31-f16d-488b-9668-4aae55d6648a", "modelVersionId": "0903e1c0-8e03-4936-b5c2-260653b96413", - "name": "2017-388_ADIOD-vPE 1", + "name": "2017-388_PASQUALE-vPE 1", "tooltip": "VF", "type": "VF", "count": 0, @@ -138,7 +217,7 @@ describe('Model Tree Generator service', () => { "modelVersionId": "afacccf6-397d-45d6-b5ae-94c39734b168", "modelCustomizationId": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", "modelUniqueId": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", - "name": "2017-388_ADIOD-vPE 0", + "name": "2017-388_PASQUALE-vPE 0", "tooltip": "VF", "type": "VF", "count": 0, @@ -153,7 +232,7 @@ describe('Model Tree Generator service', () => { "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "modelCustomizationId": "1da7b585-5e61-4993-b95e-8e6606c81e45", "modelUniqueId": "1da7b585-5e61-4993-b95e-8e6606c81e45", - "name": "2017-488_ADIOD-vPE 0", + "name": "2017-488_PASQUALE-vPE 0", "tooltip": "VF", "type": "VF", "count": 0, @@ -163,7 +242,7 @@ describe('Model Tree Generator service', () => { "modelVersionId": "25284168-24bb-4698-8cb4-3f509146eca5", "modelCustomizationId": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401", "modelUniqueId": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401", - "name": "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "tooltip": "VFmodule", "type": "VFmodule", "count": 0, @@ -178,7 +257,7 @@ describe('Model Tree Generator service', () => { "modelVersionId": "f8360508-3f17-4414-a2ed-6bc71161e8db", "modelCustomizationId": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "modelUniqueId": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", - "name": "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "tooltip": "VFmodule", "type": "VFmodule", "count": 0, @@ -193,7 +272,7 @@ describe('Model Tree Generator service', () => { "modelVersionId": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "modelCustomizationId": "3cd946bb-50e0-40d8-96d3-c9023520b557", "modelUniqueId": "3cd946bb-50e0-40d8-96d3-c9023520b557", - "name": "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "tooltip": "VFmodule", "type": "VFmodule", "count": 0, @@ -223,25 +302,25 @@ describe('Model Tree Generator service', () => { "category": "Network L1-3", "serviceType": "pnf", "serviceRole": "Testing", - "description": "ADIOD vMX vPE based on Juniper 17.2 release. Updated with updated VF for v8.0 of VLM", + "description": "PASQUALE vMX vPE based on Juniper 17.2 release. Updated with updated VF for v8.0 of VLM", "serviceEcompNaming": "false", "instantiationType": "Macro", "inputs": {}, "vidNotions": {"instantiationUI": "legacy", "modelCategory": "other"} }, "vnfs": { - "2017-388_ADIOD-vPE 1": { + "2017-388_PASQUALE-vPE 1": { "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413", "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "1.0", "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a", "inputs": {}, "commands": {}, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -287,7 +366,7 @@ describe('Model Tree Generator service', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "true", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -295,14 +374,14 @@ describe('Model Tree Generator service', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:2017488_adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:2017488_pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:2017488_adiodvpe0_bandwidth", + "bandwidth": "get_input:2017488_pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -312,7 +391,7 @@ describe('Model Tree Generator service', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -326,23 +405,23 @@ describe('Model Tree Generator service', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-388_ADIOD-vPE 0": { + "2017-388_PASQUALE-vPE 0": { "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "4.0", "customizationUuid": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", "inputs": {}, "commands": {}, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -388,7 +467,7 @@ describe('Model Tree Generator service', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "true", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -396,14 +475,14 @@ describe('Model Tree Generator service', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:2017488_adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:2017488_pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:2017488_adiodvpe0_bandwidth", + "bandwidth": "get_input:2017488_pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -413,7 +492,7 @@ describe('Model Tree Generator service', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -427,23 +506,23 @@ describe('Model Tree Generator service', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 0", + "modelCustomizationName": "2017-388_PASQUALE-vPE 0", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-488_ADIOD-vPE 0": { + "2017-488_PASQUALE-vPE 0": { "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-488_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-488_PASQUALE-vPE", "version": "5.0", "customizationUuid": "1da7b585-5e61-4993-b95e-8e6606c81e45", "inputs": {}, "commands": {}, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -489,7 +568,7 @@ describe('Model Tree Generator service', () => { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "true", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -497,14 +576,14 @@ describe('Model Tree Generator service', () => { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:2017488_adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:2017488_pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:2017488_adiodvpe0_bandwidth", + "bandwidth": "get_input:2017488_pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -514,7 +593,7 @@ describe('Model Tree Generator service', () => { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -528,57 +607,57 @@ describe('Model Tree Generator service', () => { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-488_ADIOD-vPE 0", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": {}, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -586,36 +665,36 @@ describe('Model Tree Generator service', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": {} }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} @@ -625,60 +704,60 @@ describe('Model Tree Generator service', () => { } }, "networks": {}, - "collectionResource": {}, + "collectionResources": {}, "configurations": {}, "fabricConfigurations": {}, "serviceProxies": {}, "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": {}, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -686,36 +765,36 @@ describe('Model Tree Generator service', () => { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": {} }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToModelTree/objectToModelTree.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToModelTree/objectToModelTree.service.ts index e941faad3..c101f44e9 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToModelTree/objectToModelTree.service.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/objectToModelTree/objectToModelTree.service.ts @@ -2,9 +2,11 @@ import {Injectable} from "@angular/core"; import {ILevelNodeInfo} from "../models/basic.model.info"; import {ObjectToTreeService} from "../objectToTree.service"; import * as _ from "lodash"; +import {IModelTreeNodeModel} from "../../../objectsToTree/objectToModelTree/modelTreeNode.model"; @Injectable() export class ObjectToModelTreeService { + numberOfPlusButton: number; constructor(private _objectToTreeService: ObjectToTreeService) { } @@ -21,10 +23,20 @@ export class ObjectToModelTreeService { nodes.push(_this.addFirstLevelModel(serviceModel.service.uuid, key, item, item.type, serviceModel, option)); }); } + + this.calculateNumberOfNodesWithPlusIcon(serviceModel, nodes); + console.log('nodes', nodes); return nodes; } + calculateNumberOfNodesWithPlusIcon(serviceModel, nodes) : void { + this.numberOfPlusButton = nodes.reduce((sum, node)=>{ + let showNodeIconResult = node.showNodeIcons({data : node}, serviceModel.service.uuid); + return (!_.isNil(showNodeIconResult) && showNodeIconResult.addIcon && !showNodeIconResult.vIcon) ? sum + 1 : sum; + }, 0); + } + /*********************************************************** * return node with all his child's @@ -50,13 +62,14 @@ export class ObjectToModelTreeService { * @param parentNode - parent node. ************************************************************/ addNextLevelNodes(serviceId: string, currentModel, parentModel, levelNodeInfo: ILevelNodeInfo, parentNode): any[] { - if (!_.isNil(levelNodeInfo.childName)) { - if (!_.isNil(currentModel[levelNodeInfo.childName])) { - let nextLevelNodeInfo = levelNodeInfo.getNextLevelObject.apply(this); - parentNode.children = Object.keys(currentModel[levelNodeInfo.childName]).map((key) => - ObjectToModelTreeService.convertItemToTreeNode(serviceId, key, currentModel[levelNodeInfo.childName][key], levelNodeInfo.childName, currentModel, nextLevelNodeInfo)); - - } + if (!_.isNil(levelNodeInfo.childNames) && levelNodeInfo.childNames.length > 0) { + levelNodeInfo.childNames.forEach(function (childName) { + if (!_.isNil(currentModel[childName])) { + let nextLevelNodeInfo = levelNodeInfo.getNextLevelObject.apply(this, [childName]); + parentNode.children = Object.keys(currentModel[childName]).map((key) => + ObjectToModelTreeService.convertItemToTreeNode(serviceId, key, currentModel[childName][key], childName, currentModel, nextLevelNodeInfo)); + } + }) } return parentNode.children; } @@ -72,7 +85,7 @@ export class ObjectToModelTreeService { * @param levelNodeInfo - current levelNodeInfo object ************************************************************/ static convertItemToTreeNode(serviceId: string, name: string, currentModel: any, valueType: string, parentModel: string, levelNodeInfo: ILevelNodeInfo) { - let node = { + let node : IModelTreeNodeModel = { id: currentModel.customizationUuid || currentModel.uuid, modelCustomizationId : currentModel.customizationUuid, modelVersionId: currentModel.uuid, @@ -88,11 +101,20 @@ export class ObjectToModelTreeService { isEcompGeneratedNaming: levelNodeInfo.isEcompGeneratedNaming(currentModel, parentModel) }; - node['onAddClick'] = (node, serviceId) => levelNodeInfo.onClickAdd(node, serviceId); - node['getNodeCount'] = (node, serviceId) => levelNodeInfo.getNodeCount(node, serviceId); - node['getMenuAction'] = (node, serviceId) => levelNodeInfo.getMenuAction(node, serviceId); - node['showNodeIcons'] = (node, serviceId) => levelNodeInfo.showNodeIcons(node, serviceId); - node['typeName'] = levelNodeInfo['typeName']; + node = this.addExtraFunctionality(node, serviceId, name, currentModel, valueType, parentModel, levelNodeInfo); + return node; + } + + + static addExtraFunctionality(node, serviceId: string, name: string, currentModel: any, valueType: string, parentModel: string, levelNodeInfo: ILevelNodeInfo){ + node.onAddClick = (node, serviceId) => levelNodeInfo.onClickAdd(node, serviceId); + node.getNodeCount = (node, serviceId) => levelNodeInfo.getNodeCount(node, serviceId); + node.getMenuAction = (node, serviceId) => levelNodeInfo.getMenuAction(node, serviceId); + node.showNodeIcons = (node, serviceId) => levelNodeInfo.showNodeIcons(node, serviceId); + node.typeName = levelNodeInfo.typeName; + node.getModel = levelNodeInfo.getModel.bind(levelNodeInfo); + node.getInfo = !_.isNil(levelNodeInfo.getInfo) ? levelNodeInfo.getInfo.bind(levelNodeInfo) : ()=>{}; + node.componentInfoType = levelNodeInfo.componentInfoType; return node; } } 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 338964515..0072196f2 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 @@ -18,6 +18,12 @@ import {DuplicateService} from "../duplicate/duplicate.service"; import {SdcUiServices} from "onap-ui-angular"; import {IframeService} from "../../../shared/utils/iframe.service"; import {ComponentInfoService} from "../component-info/component-info.service"; +import {PnfModelInfo} from "./models/pnf/pnf.model.info"; +import {CollectionResourceModelInfo} from "./models/collectionResource/collectionResource.model.info"; +import {AaiService} from "../../../shared/services/aaiService/aai.service"; +import {VrfModelInfo} from "./models/vrf/vrf.model.info"; +import {NetworkStepService} from "./models/vrf/vrfModal/networkStep/network.step.service"; +import {VpnStepService} from "./models/vrf/vrfModal/vpnStep/vpn.step.service"; @Injectable() export class ObjectToTreeService { @@ -33,6 +39,9 @@ export class ObjectToTreeService { private _modalService: SdcUiServices.ModalService, private _iframeService : IframeService, private _componentInfoService : ComponentInfoService, + private _networkStepService : NetworkStepService, + private _vpnStepService : VpnStepService, + private _aaiService : AaiService, private _store : NgRedux<AppState>) { } @@ -45,7 +54,10 @@ export class ObjectToTreeService { getFirstLevelOptions(): ILevelNodeInfo[] { return [new VnfModelInfo(this._dynamicInputsService, this._sharedTreeService, this._defaultDataGeneratorService, this._dialogService, this._vnfPopupService, this._vfModulePopupService, this._duplicateService, this._modalService, this._iframeService, this._componentInfoService, this._store) , new NetworkModelInfo(this._dynamicInputsService, this._sharedTreeService, this._dialogService, this._networkPopupService, this._duplicateService, this._modalService, this._iframeService, this._store), + new PnfModelInfo(), + new VrfModelInfo(this._store, this._sharedTreeService, this._dialogService, this._iframeService, this._networkStepService, this._vpnStepService), + new CollectionResourceModelInfo(this._store, this._sharedTreeService), new ConfigurationModelInfo(this._dynamicInputsService, this._sharedTreeService), - new VnfGroupingModelInfo(this._dynamicInputsService, this._sharedTreeService, this._dialogService, this._vnfGroupPopupService, this._iframeService, this._store)]; + new VnfGroupingModelInfo(this._dynamicInputsService, this._sharedTreeService, this._dialogService, this._vnfGroupPopupService, this._iframeService, this._aaiService, this._store)]; }; } 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 852c5d44d..cad23ffd9 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 @@ -36,6 +36,10 @@ import {ServiceInstanceActions} from "../../../shared/models/serviceInstanceActi import each from "jest-each"; import {DrawingBoardModes} from "../drawing-board.modes"; import {ComponentInfoService} from "../component-info/component-info.service"; +import {ComponentInfoModel, ComponentInfoType} from "../component-info/component-info-model"; +import {ModelInformationItem} from "../../../shared/components/model-information/model-information.component"; +import {VpnStepService} from "./models/vrf/vrfModal/vpnStep/vpn.step.service"; +import {NetworkStepService} from "./models/vrf/vrfModal/networkStep/network.step.service"; class MockAppStore<T> { getState() { @@ -90,6 +94,8 @@ describe('Shared Tree Service', () => { ErrorMsgService, ObjectToInstanceTreeService, ComponentInfoService, + NetworkStepService, + VpnStepService, {provide: NgRedux, useClass: MockAppStore} ] }); @@ -122,7 +128,7 @@ describe('Shared Tree Service', () => { test('openAuditInfoModal should open modal for failed instance', () => { jest.spyOn(AuditInfoModalComponent.openInstanceAuditInfoModal, 'next'); - let modelInfoServiceMock: ILevelNodeInfo = new VnfModelInfo(null, null, null, null, null, null, null, null, null, null); + let modelInfoServiceMock: ILevelNodeInfo = new VnfModelInfo(null, null, null, null, null, null, null, null, null, null,null); const modelMock = {"a": "a"}; const instanceMock = {"instance": "instance", "trackById": "123456789"}; const instanceTypeMock = "instanceTypeMock"; @@ -139,9 +145,7 @@ describe('Shared Tree Service', () => { { "instance": instanceMock, "instanceId": "serviceModelId", - "isInstanceFailed": node.data.isFailed, "model": modelMock, - "trackById": instanceMock.trackById, "type": instanceTypeMock }); }); @@ -161,6 +165,25 @@ describe('Shared Tree Service', () => { expect(MessageBoxService.openModal.next).not.toHaveBeenCalled(); }); + test ('addGeneralInfoItems should return correct info - ordered',()=>{ + let specificNetworkInfo = [ + ModelInformationItem.createInstance('Network role', "network role 1, network role 2") + ]; + const actualInfoModel: ComponentInfoModel = service.addGeneralInfoItems(specificNetworkInfo,ComponentInfoType.NETWORK, getNetworkModel(),getNetworkInstance()); + + let expectedGeneralInfo = [ + ModelInformationItem.createInstance('Model version', '37.0'), + ModelInformationItem.createInstance('Model customization ID', '94fdd893-4a36-4d70-b16a-ec29c54c184f'), + ModelInformationItem.createInstance('Instance ID', 'NETWORK4_INSTANCE_ID'), + ModelInformationItem.createInstance('Instance type', 'CONTRAIL30_HIMELGUARD'), + ModelInformationItem.createInstance('In maintenance', false), + ModelInformationItem.createInstance('Network role', 'network role 1, network role 2') + ]; + expect(actualInfoModel.modelInfoItems).toEqual(expectedGeneralInfo); + }); + + + test('statusProperties should be prop on node according to node properties', () => { let node = service.addingStatusProperty({orchStatus: 'completed', provStatus: 'inProgress', inMaint: false}); expect(node.statusProperties).toBeDefined(); @@ -189,7 +212,7 @@ describe('Shared Tree Service', () => { ['None action EDIT mode',DrawingBoardModes.EDIT, ServiceInstanceActions.None, false], ['None action RETRY_EDIT mode', DrawingBoardModes.RETRY_EDIT, ServiceInstanceActions.None, false]]; each(enableRemoveAndEditItemsDataProvider).test('shouldShowEditAndDelete if child exist with %s', (description, mode, action, enabled) => { - jest.spyOn(store, 'getState').mockReturnValue({ + jest.spyOn(store, 'getState').mockReturnValue(<any>{ global: { drawingBoardStatus: mode } @@ -206,60 +229,60 @@ describe('Shared Tree Service', () => { function generateService() { return { "vnfs": { - "2017-488_ADIOD-vPE 0": { + "2017-488_PASQUALE-vPE 0": { "inMaint": false, "rollbackOnFailure": "true", - "originalName": "2017-488_ADIOD-vPE 0", + "originalName": "2017-488_PASQUALE-vPE 0", "isMissingData": false, "trackById": "stigekyxrqi", "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0gytfi": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0gytfi": { "isMissingData": false, "sdncPreReload": null, "modelInfo": { "modelType": "VFmodule", "modelInvariantId": "b34833bb-6aa9-4ad6-a831-70b06367a091", "modelVersionId": "f8360508-3f17-4414-a2ed-6bc71161e8db", - "modelName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "modelVersion": "5", "modelCustomizationId": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0" + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0" }, "instanceParams": [{}], "trackById": "3oj23o7nupo" } } }, - "vnfStoreKey": "2017-488_ADIOD-vPE 0", + "vnfStoreKey": "2017-488_PASQUALE-vPE 0", "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c", - "lcpCloudRegionId": "JANET25", + "lcpCloudRegionId": "AAIAIC25", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "lineOfBusiness": "ONAP", "platformName": "xxx1", "modelInfo": { "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09", - "modelName": "2017-488_ADIOD-vPE", + "modelName": "2017-488_PASQUALE-vPE", "modelVersion": "5.0", - "modelCustomizationName": "2017-488_ADIOD-vPE 0", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", "modelCustomizationId": "1da7b585-5e61-4993-b95e-8e6606c81e45", "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09" }, "legacyRegion": "11111111", "instanceParams": [{}] }, - "2017-388_ADIOD-vPE 0": { + "2017-388_PASQUALE-vPE 0": { "inMaint": false, "rollbackOnFailure": "true", - "originalName": "2017-388_ADIOD-vPE 0", + "originalName": "2017-388_PASQUALE-vPE 0", "isMissingData": false, "trackById": "nib719t5vca", "vfModules": {}, - "vnfStoreKey": "2017-388_ADIOD-vPE 0", + "vnfStoreKey": "2017-388_PASQUALE-vPE 0", "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c", - "lcpCloudRegionId": "JANET25", + "lcpCloudRegionId": "AAIAIC25", "legacyRegion": "11111", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "platformName": "platform", @@ -268,24 +291,24 @@ function generateService() { "modelInfo": { "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", "modelVersionId": "afacccf6-397d-45d6-b5ae-94c39734b168", - "modelName": "2017-388_ADIOD-vPE", + "modelName": "2017-388_PASQUALE-vPE", "modelVersion": "4.0", "modelCustomizationId": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", - "modelCustomizationName": "2017-388_ADIOD-vPE 0", + "modelCustomizationName": "2017-388_PASQUALE-vPE 0", "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168" }, "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168" }, - "2017-388_ADIOD-vPE 1": { + "2017-388_PASQUALE-vPE 1": { "inMaint": false, "rollbackOnFailure": "true", - "originalName": "2017-388_ADIOD-vPE 1", + "originalName": "2017-388_PASQUALE-vPE 1", "isMissingData": false, "trackById": "cv7l1ak8vpe", "vfModules": {}, - "vnfStoreKey": "2017-388_ADIOD-vPE 1", + "vnfStoreKey": "2017-388_PASQUALE-vPE 1", "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c", - "lcpCloudRegionId": "JANET25", + "lcpCloudRegionId": "AAIAIC25", "legacyRegion": "123", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "platformName": "platform", @@ -294,10 +317,10 @@ function generateService() { "modelInfo": { "modelInvariantId": "00beb8f9-6d39-452f-816d-c709b9cbb87d", "modelVersionId": "0903e1c0-8e03-4936-b5c2-260653b96413", - "modelName": "2017-388_ADIOD-vPE", + "modelName": "2017-388_PASQUALE-vPE", "modelVersion": "1.0", "modelCustomizationId": "280dec31-f16d-488b-9668-4aae55d6648a", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413" }, "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413" @@ -325,7 +348,7 @@ function generateService() { "trackById": "s6okajvv2n8", "networkStoreKey": "ExtVL 0", "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c", - "lcpCloudRegionId": "JANET25", + "lcpCloudRegionId": "AAIAIC25", "legacyRegion": "12355555", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "platformName": "platform", @@ -369,7 +392,7 @@ function generateService() { "subscriptionServiceType": "TYLER SILVIA", "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c", - "lcpCloudRegionId": "JANET25", + "lcpCloudRegionId": "AAIAIC25", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "aicZoneId": "ATL53", "pause": null, @@ -391,7 +414,7 @@ function generateService() { "isALaCarte": false, "name": "action-data", "version": "1.0", - "description": "ADIOD vMX vPE based on Juniper 17.2 release. Updated with updated VF for v8.0 of VLM", + "description": "PASQUALE vMX vPE based on Juniper 17.2 release. Updated with updated VF for v8.0 of VLM", "category": "Network L1-3", "uuid": "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd", "invariantUuid": "cdb90b57-ed78-4d44-a5b4-7f43a02ec632", @@ -410,15 +433,10 @@ function getStore() { "CREATE_INSTANCE_TEST": false, "EMPTY_DRAWING_BOARD_TEST": false, "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false, - "FLAG_ASYNC_INSTANTIATION": true, - "FLAG_ASYNC_JOBS": true, "FLAG_ADD_MSO_TESTAPI_FIELD": true, - "FLAG_UNASSIGN_SERVICE": true, "FLAG_SERVICE_MODEL_CACHE": true, - "FLAG_COLLECTION_RESOURCE_SUPPORT": true, "FLAG_SHOW_ASSIGNMENTS": true, "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true, - "FLAG_DUPLICATE_VNF": true, "FLAG_DEFAULT_VNF": true, "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": true, "FLAG_A_LA_CARTE_AUDIT_INFO": true, @@ -431,7 +449,6 @@ function getStore() { "FLAG_SHOW_VERIFY_SERVICE": true, "FLAG_ASYNC_ALACARTE_VFMODULE": true, "FLAG_ASYNC_ALACARTE_VNF": true, - "FLAG_SHIFT_VFMODULE_PARAMS_TO_VNF": true, "FLAG_1810_AAI_LOCAL_CACHE": true, "FLAG_EXP_USE_DEFAULT_HOST_NAME_VERIFIER": false, "FLAG_EXP_ANY_ALACARTE_NEW_INSTANTIATION_UI": false, @@ -455,25 +472,25 @@ function getStore() { "category": "Network L1-3", "serviceType": "pnf", "serviceRole": "Testing", - "description": "ADIOD vMX vPE based on Juniper 17.2 release. Updated with updated VF for v8.0 of VLM", + "description": "PASQUALE vMX vPE based on Juniper 17.2 release. Updated with updated VF for v8.0 of VLM", "serviceEcompNaming": "false", "instantiationType": "Macro", "inputs": {}, "vidNotions": {"instantiationUI": "legacy", "modelCategory": "other", "viewEditUI": "legacy"} }, "vnfs": { - "2017-388_ADIOD-vPE 1": { + "2017-388_PASQUALE-vPE 1": { "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413", "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "1.0", "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a", "inputs": {}, "commands": {}, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -519,7 +536,7 @@ function getStore() { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "true", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -527,14 +544,14 @@ function getStore() { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:2017488_adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:2017488_pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:2017488_adiodvpe0_bandwidth", + "bandwidth": "get_input:2017488_pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -544,7 +561,7 @@ function getStore() { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -558,23 +575,23 @@ function getStore() { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-388_ADIOD-vPE 0": { + "2017-388_PASQUALE-vPE 0": { "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-388_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-388_PASQUALE-vPE", "version": "4.0", "customizationUuid": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", "inputs": {}, "commands": {}, "properties": { "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -620,7 +637,7 @@ function getStore() { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "true", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -628,14 +645,14 @@ function getStore() { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:2017488_adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:2017488_pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:2017488_adiodvpe0_bandwidth", + "bandwidth": "get_input:2017488_pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -645,7 +662,7 @@ function getStore() { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -659,16 +676,16 @@ function getStore() { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-388_ADIOD-vPE 0", + "modelCustomizationName": "2017-388_PASQUALE-vPE 0", "vfModules": {}, "volumeGroups": {}, "vfcInstanceGroups": {} }, - "2017-488_ADIOD-vPE 0": { + "2017-488_PASQUALE-vPE 0": { "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", - "description": "Name ADIOD vPE Description The provider edge function for the ADIOD service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", - "name": "2017-488_ADIOD-vPE", + "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM", + "name": "2017-488_PASQUALE-vPE", "version": "5.0", "customizationUuid": "1da7b585-5e61-4993-b95e-8e6606c81e45", "inputs": {}, @@ -676,7 +693,7 @@ function getStore() { "properties": { "max_instances": 1, "vmxvre_retype": "RE-VMX", - "vnf_config_template_version": "get_input:2017488_adiodvpe0_vnf_config_template_version", + "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version", "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d", "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9", "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF", @@ -722,7 +739,7 @@ function getStore() { "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true", "vmxvre_int_ctl_ip_0": "10.0.0.10", "ecomp_generated_naming": "true", - "AIC_CLLI": "get_input:2017488_adiodvpe0_AIC_CLLI", + "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI", "vnf_name": "mtnj309me6vre", "vmxvpfe_sriov41_0_port_unknownunicastallow": "true", "vmxvre_volume_type_1": "HITACHI", @@ -730,14 +747,14 @@ function getStore() { "vmxvre_volume_type_0": "HITACHI", "vmxvpfe_volume_type_0": "HITACHI", "vmxvpfe_sriov43_0_port_broadcastallow": "true", - "bandwidth_units": "get_input:2017488_adiodvpe0_bandwidth_units", + "bandwidth_units": "get_input:2017488_pasqualevpe0_bandwidth_units", "vnf_id": "123", "vmxvre_oam_prefix": "24", "availability_zone_0": "mtpocfo-kvm-az01", - "ASN": "get_input:2017488_adiodvpe0_ASN", + "ASN": "get_input:2017488_pasqualevpe0_ASN", "vmxvre_chassis_i2cid": "161", "vmxvpfe_name_0": "vPFEXI", - "bandwidth": "get_input:2017488_adiodvpe0_bandwidth", + "bandwidth": "get_input:2017488_pasqualevpe0_bandwidth", "availability_zone_max_count": "1", "vmxvre_volume_size_0": "45.0", "vmxvre_volume_size_1": "50.0", @@ -747,7 +764,7 @@ function getStore() { "vmxvre_ore_present": "0", "vmxvre_volume_name_0": "vREXI_FBVolume", "vmxvre_type": "0", - "vnf_instance_name": "get_input:2017488_adiodvpe0_vnf_instance_name", + "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name", "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true", "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429", "vmx_int_ctl_len": "24", @@ -761,57 +778,57 @@ function getStore() { "vmxvpfe_flavor_name": "ns.c20r16d25.v5" }, "type": "VF", - "modelCustomizationName": "2017-488_ADIOD-vPE 0", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": {}, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -819,36 +836,36 @@ function getStore() { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": {} }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} @@ -877,60 +894,60 @@ function getStore() { "modelCustomizationName": "ExtVL 0" } }, - "collectionResource": {}, + "collectionResources": {}, "configurations": {}, "fabricConfigurations": {}, "serviceProxies": {}, "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": {}, "volumeGroupAllowed": true }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db", "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091", "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", "description": null, - "name": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "version": "5", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "properties": { "minCountInstances": 1, "maxCountInstances": 1, "initialCount": 1, - "vfModuleLabel": "ADIOD_base_vPE_BV", + "vfModuleLabel": "PASQUALE_base_vPE_BV", "baseModule": true }, "inputs": {}, "volumeGroupAllowed": false }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {}, @@ -938,36 +955,36 @@ function getStore() { } }, "volumeGroups": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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", "description": null, - "name": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vRE_BV", + "vfModuleLabel": "PASQUALE_vRE_BV", "baseModule": false }, "inputs": {} }, - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vPFE_BV..module-2": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": { "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a", "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339", "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557", "description": null, - "name": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "version": "6", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2", + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2", "properties": { "minCountInstances": 0, "maxCountInstances": null, "initialCount": 0, - "vfModuleLabel": "ADIOD_vPFE_BV", + "vfModuleLabel": "PASQUALE_vPFE_BV", "baseModule": false }, "inputs": {} @@ -991,11 +1008,11 @@ function getStore() { "ecomp_generated_naming": "true" }, "members": { - "vdbe_svc_vprs_proxy 0": { + "vdorothea_svc_vprs_proxy 0": { "uuid": "65fadfa8-a0d9-443f-95ad-836cd044e26c", "invariantUuid": "f4baae0c-b3a5-4ca1-a777-afbffe7010bc", - "description": "A Proxy for Service vDBE_Svc_vPRS", - "name": "vDBE_Svc_vPRS Service Proxy", + "description": "A Proxy for Service vDOROTHEA_Svc_vPRS", + "name": "vDOROTHEA_Svc_vPRS Service Proxy", "version": "1.0", "customizationUuid": "bdb63d23-e132-4ce7-af2c-a493b4cafac9", "inputs": {}, @@ -1004,7 +1021,7 @@ function getStore() { "type": "Service Proxy", "sourceModelUuid": "da7827a2-366d-4be6-8c68-a69153c61274", "sourceModelInvariant": "24632e6b-584b-4f45-80d4-fefd75fd9f14", - "sourceModelName": "vDBE_Svc_vPRS" + "sourceModelName": "vDOROTHEA_Svc_vPRS" } } }, @@ -1083,7 +1100,7 @@ function getStore() { "modelCustomizationName": "AIC30_CONTRAIL_BASIC 0" } }, - "collectionResource": {}, + "collectionResources": {}, "configurations": {}, "fabricConfigurations": {}, "serviceProxies": {}, @@ -1096,62 +1113,62 @@ function getStore() { "serviceInstance": { "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd": { "vnfs": { - "2017-488_ADIOD-vPE 0": { + "2017-488_PASQUALE-vPE 0": { "action": "None", "inMaint": false, "rollbackOnFailure": "true", - "originalName": "2017-488_ADIOD-vPE 0", + "originalName": "2017-488_PASQUALE-vPE 0", "isMissingData": false, "trackById": "stigekyxrqi", "vfModules": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0": { - "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_base_vPE_BV..module-0gytfi": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": { + "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0gytfi": { "isMissingData": false, "sdncPreReload": null, "modelInfo": { "modelType": "VFmodule", "modelInvariantId": "b34833bb-6aa9-4ad6-a831-70b06367a091", "modelVersionId": "f8360508-3f17-4414-a2ed-6bc71161e8db", - "modelName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0", + "modelName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0", "modelVersion": "5", "modelCustomizationId": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3", - "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0" + "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0" }, "instanceParams": [{}], "trackById": "3oj23o7nupo" } } }, - "vnfStoreKey": "2017-488_ADIOD-vPE 0", + "vnfStoreKey": "2017-488_PASQUALE-vPE 0", "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09", "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c", - "lcpCloudRegionId": "JANET25", + "lcpCloudRegionId": "AAIAIC25", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "lineOfBusiness": "ONAP", "platformName": "xxx1", "modelInfo": { "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09", - "modelName": "2017-488_ADIOD-vPE", + "modelName": "2017-488_PASQUALE-vPE", "modelVersion": "5.0", - "modelCustomizationName": "2017-488_ADIOD-vPE 0", + "modelCustomizationName": "2017-488_PASQUALE-vPE 0", "modelCustomizationId": "1da7b585-5e61-4993-b95e-8e6606c81e45", "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09" }, "legacyRegion": "11111111", "instanceParams": [{}] }, - "2017-388_ADIOD-vPE 0": { + "2017-388_PASQUALE-vPE 0": { "action": "Create", "inMaint": false, "rollbackOnFailure": "true", - "originalName": "2017-388_ADIOD-vPE 0", + "originalName": "2017-388_PASQUALE-vPE 0", "isMissingData": false, "trackById": "nib719t5vca", "vfModules": {}, - "vnfStoreKey": "2017-388_ADIOD-vPE 0", + "vnfStoreKey": "2017-388_PASQUALE-vPE 0", "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c", - "lcpCloudRegionId": "JANET25", + "lcpCloudRegionId": "AAIAIC25", "legacyRegion": "11111", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "platformName": "platform", @@ -1160,25 +1177,25 @@ function getStore() { "modelInfo": { "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8", "modelVersionId": "afacccf6-397d-45d6-b5ae-94c39734b168", - "modelName": "2017-388_ADIOD-vPE", + "modelName": "2017-388_PASQUALE-vPE", "modelVersion": "4.0", "modelCustomizationId": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c", - "modelCustomizationName": "2017-388_ADIOD-vPE 0", + "modelCustomizationName": "2017-388_PASQUALE-vPE 0", "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168" }, "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168" }, - "2017-388_ADIOD-vPE 1": { + "2017-388_PASQUALE-vPE 1": { "action": "None", "inMaint": false, "rollbackOnFailure": "true", - "originalName": "2017-388_ADIOD-vPE 1", + "originalName": "2017-388_PASQUALE-vPE 1", "isMissingData": false, "trackById": "cv7l1ak8vpe", "vfModules": {}, - "vnfStoreKey": "2017-388_ADIOD-vPE 1", + "vnfStoreKey": "2017-388_PASQUALE-vPE 1", "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c", - "lcpCloudRegionId": "JANET25", + "lcpCloudRegionId": "AAIAIC25", "legacyRegion": "123", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "platformName": "platform", @@ -1187,10 +1204,10 @@ function getStore() { "modelInfo": { "modelInvariantId": "00beb8f9-6d39-452f-816d-c709b9cbb87d", "modelVersionId": "0903e1c0-8e03-4936-b5c2-260653b96413", - "modelName": "2017-388_ADIOD-vPE", + "modelName": "2017-388_PASQUALE-vPE", "modelVersion": "1.0", "modelCustomizationId": "280dec31-f16d-488b-9668-4aae55d6648a", - "modelCustomizationName": "2017-388_ADIOD-vPE 1", + "modelCustomizationName": "2017-388_PASQUALE-vPE 1", "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413" }, "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413" @@ -1218,7 +1235,7 @@ function getStore() { "trackById": "s6okajvv2n8", "networkStoreKey": "ExtVL 0", "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c", - "lcpCloudRegionId": "JANET25", + "lcpCloudRegionId": "AAIAIC25", "legacyRegion": "12355555", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "platformName": "platform", @@ -1262,7 +1279,7 @@ function getStore() { "subscriptionServiceType": "TYLER SILVIA", "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c", - "lcpCloudRegionId": "JANET25", + "lcpCloudRegionId": "AAIAIC25", "tenantId": "092eb9e8e4b7412e8787dd091bc58e86", "aicZoneId": "ATL53", "pause": null, @@ -1284,7 +1301,7 @@ function getStore() { "isALaCarte": false, "name": "action-data", "version": "1.0", - "description": "ADIOD vMX vPE based on Juniper 17.2 release. Updated with updated VF for v8.0 of VLM", + "description": "PASQUALE vMX vPE based on Juniper 17.2 release. Updated with updated VF for v8.0 of VLM", "category": "Network L1-3", "uuid": "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd", "invariantUuid": "cdb90b57-ed78-4d44-a5b4-7f43a02ec632", @@ -1296,13 +1313,13 @@ function getStore() { }, "lcpRegionsAndTenants": { "lcpRegionList": [{ - "id": "JANET25", - "name": "JANET25 (AIC)", + "id": "AAIAIC25", + "name": "AAIAIC25 (AIC)", "isPermitted": true, "cloudOwner": "irma-aic" }, {"id": "hvf6", "name": "hvf6 (AIC)", "isPermitted": true, "cloudOwner": "irma-aic"}], "lcpRegionsTenantsMap": { - "JANET25": [{ + "AAIAIC25": [{ "id": "092eb9e8e4b7412e8787dd091bc58e86", "name": "USP-SIP-IC-24335-T-01", "isPermitted": true, @@ -1314,8 +1331,128 @@ function getStore() { "isPermitted": true, "cloudOwner": "irma-aic" }, { - "id": "d0a3e3f2964542259d155a81c41aadc3", - "name": "test-hvf6-09", + "id": "229bcdc6eaeb4ca59d55221141d01f8e", + "name": "AIN Web Tool-15-D-STTest2", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "1178612d2b394be4834ad77f567c0af2", + "name": "AIN Web Tool-15-D-SSPtestcustome", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "19c5ade915eb461e8af52fb2fd8cd1f2", + "name": "AIN Web Tool-15-D-UncheckedEcopm", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "de007636e25249238447264a988a927b", + "name": "AIN Web Tool-15-D-dfsdf", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "62f29b3613634ca6a3065cbe0e020c44", + "name": "AIN/SMS-16-D-Multiservices1", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "649289e30d3244e0b48098114d63c2aa", + "name": "AIN Web Tool-15-D-SSPST66", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "3f21eeea6c2c486bba31dab816c05a32", + "name": "AIN Web Tool-15-D-ASSPST47", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "f60ce21d3ee6427586cff0d22b03b773", + "name": "CESAR-100-D-sspjg67246", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "8774659e425f479895ae091bb5d46560", + "name": "CESAR-100-D-sspjg68359", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "624eb554b0d147c19ff8885341760481", + "name": "AINWebTool-15-D-iftach", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "214f55f5fc414c678059c383b03e4962", + "name": "CESAR-100-D-sspjg612401", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "c90666c291664841bb98e4d981ff1db5", + "name": "CESAR-100-D-sspjg621340", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "ce5b6bc5c7b348e1bf4b91ac9a174278", + "name": "sspjg621351cloned", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "b386b768a3f24c8e953abbe0b3488c02", + "name": "AINWebTool-15-D-eteancomp", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "dc6c4dbfd225474e9deaadd34968646c", + "name": "AINWebTool-15-T-SPFET", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "02cb5030e9914aa4be120bd9ed1e19eb", + "name": "AINWebTool-15-X-eeweww", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "f2f3830e4c984d45bcd00e1a04158a79", + "name": "CESAR-100-D-spjg61909", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "05b91bd5137f4929878edd965755c06d", + "name": "CESAR-100-D-sspjg621512cloned", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "7002fbe8482d4a989ddf445b1ce336e0", + "name": "AINWebTool-15-X-vdr", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "4008522be43741dcb1f5422022a2aa0b", + "name": "AINWebTool-15-D-ssasa", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "f44e2e96a1b6476abfda2fa407b00169", + "name": "AINWebTool-15-D-PFNPT", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "b69a52bec8a84669a37a1e8b72708be7", + "name": "AINWebTool-15-X-vdre", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "fac7d9fd56154caeb9332202dcf2969f", + "name": "AINWebTool-15-X-NONPODECOMP", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "2d34d8396e194eb49969fd61ffbff961", + "name": "DN5242-Nov16-T5", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "cb42a77ff45b48a8b8deb83bb64acc74", + "name": "ro-T11", "isPermitted": true, "cloudOwner": "irma-aic" }, { @@ -1324,6 +1461,16 @@ function getStore() { "isPermitted": true, "cloudOwner": "irma-aic" }, { + "id": "4914ab0ab3a743e58f0eefdacc1dde77", + "name": "DN5242-Nov21-T1", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { + "id": "d0a3e3f2964542259d155a81c41aadc3", + "name": "test-hvf6-09", + "isPermitted": true, + "cloudOwner": "irma-aic" + }, { "id": "cbb99fe4ada84631b7baf046b6fd2044", "name": "DN5242-Nov16-T3", "isPermitted": true, @@ -1404,9 +1551,9 @@ function getStore() { "isPermitted": false }, {"id": "18", "name": "vCarroll", "isPermitted": false}, { "id": "9", - "name": "vMME", + "name": "vFLORENCE", "isPermitted": false - }, {"id": "13", "name": "vMMSC", "isPermitted": false}, { + }, {"id": "13", "name": "vWINIFRED", "isPermitted": false}, { "id": "10", "name": "vMNS", "isPermitted": false @@ -1414,34 +1561,205 @@ function getStore() { "id": "8", "name": "vOTA", "isPermitted": false - }, {"id": "11", "name": "vSCP", "isPermitted": false}, { + }, {"id": "11", "name": "vEsmeralda", "isPermitted": false}, { "id": "6", - "name": "vSEGW", + "name": "vPorfirio", "isPermitted": false }, {"id": "7", "name": "vVM", "isPermitted": false}, {"id": "4", "name": "vVoiceMail", "isPermitted": false}] }, - "aicZones": [ - { - "id": "NFT1", - "name": "NFTJSSSS-NFT1" - }, - { - "id": "JAG1", - "name": "YUDFJULP-JAG1" - }, - { - "id": "YYY1", - "name": "UUUAIAAI-YYY1" - }, - { - "id": "AVT1", - "name": "AVTRFLHD-AVT1" - }, - { - "id": "ATL34", - "name": "ATLSANAI-ATL34" - } - ], + "aicZones": [{"id": "ATL53", "name": "AAIATLTE-ATL53"}, {"id": "ABC15", "name": "AAITESAN-ABC15"}, { + "id": "TES36", + "name": "ABCEETES-TES36" + }, {"id": "ATL54", "name": "AICFTAAI-ATL54"}, {"id": "ATL43", "name": "AICLOCID-ATL43"}, { + "id": "AMD15", + "name": "AMDFAA01-AMD15" + }, {"id": "AMF11", "name": "AMDOCS01-AMF11"}, {"id": "RCT1", "name": "AMSTERNL-RCT1"}, { + "id": "AMS1", + "name": "AMSTNLBW-AMS1" + }, {"id": "HJH1", "name": "AOEEQQQD-HJH1"}, {"id": "HJE1", "name": "AOEEWWWD-HJE1"}, { + "id": "MCS1", + "name": "ASACMAMS-MCS1" + }, {"id": "AUG1", "name": "ASDFGHJK-AUG1"}, {"id": "LUC1", "name": "ATLDFGYC-LUC1"}, { + "id": "ATL1", + "name": "ATLNGAMA-ATL1" + }, {"id": "ATL2", "name": "ATLNGANW-ATL2"}, {"id": "HPO1", "name": "ATLNGAUP-HPO1"}, { + "id": "ANI1", + "name": "ATLNGTRE-ANI1" + }, {"id": "ATL44", "name": "ATLSANAB-ATL44"}, {"id": "ATL56", "name": "ATLSANAC-ATL56"}, { + "id": "ABC11", + "name": "ATLSANAI-ABC11" + }, {"id": "ATL34", "name": "ATLSANAI-ATL34"}, {"id": "ATL63", "name": "ATLSANEW-ATL63"}, { + "id": "ABC12", + "name": "ATLSECIA-ABC12" + }, {"id": "AMD18", "name": "AUDIMA01-AMD18"}, {"id": "AVT1", "name": "AVTRFLHD-AVT1"}, { + "id": "KIT1", + "name": "BHYJFGLN-KIT1" + }, {"id": "BHY17", "name": "BHYTFRF3-BHY17"}, {"id": "RTW5", "name": "BHYTFRY4-RTW5"}, { + "id": "RTZ4", + "name": "BHYTFRZ6-RTZ4" + }, {"id": "RTD2", "name": "BHYTFRk4-RTD2"}, {"id": "BNA1", "name": "BNARAGBK-BNA1"}, { + "id": "VEL1", + "name": "BNMLKUIK-VEL1" + }, {"id": "BOT1", "name": "BOTHWAKY-BOT1"}, {"id": "CAL33", "name": "CALIFORN-CAL33"}, { + "id": "ATL84", + "name": "CANTTCOC-ATL84" + }, {"id": "HSD1", "name": "CHASKCDS-HSD1"}, {"id": "CHI1", "name": "CHILLIWE-CHI1"}, { + "id": "XCP12", + "name": "CHKGH123-XCP12" + }, {"id": "JNL1", "name": "CJALSDAC-JNL1"}, {"id": "KJN1", "name": "CKALDKSA-KJN1"}, { + "id": "CLG1", + "name": "CLGRABAD-CLG1" + }, {"id": "CKL1", "name": "CLKSKCKK-CKL1"}, {"id": "ATL66", "name": "CLLIAAII-ATL66"}, { + "id": "CQK1", + "name": "CQKSCAKK-CQK1" + }, {"id": "CWY1", "name": "CWYMOWBS-CWY1"}, {"id": "DKJ1", "name": "DKJSJDKA-DKJ1"}, { + "id": "DSF45", + "name": "DSFBG123-DSF45" + }, {"id": "DSL12", "name": "DSLFK242-DSL12"}, {"id": "FDE55", "name": "FDERT555-FDE55"}, { + "id": "VEN2", + "name": "FGHJUHIL-VEN2" + }, {"id": "ATL64", "name": "FORLOAAJ-ATL64"}, {"id": "GNV1", "name": "GNVLSCTL-GNV1"}, { + "id": "SAN22", + "name": "GNVLSCTL-SAN22" + }, {"id": "KAP1", "name": "HIOUYTRQ-KAP1"}, {"id": "LIS1", "name": "HOSTPROF-LIS1"}, { + "id": "HRG1", + "name": "HRGHRGGS-HRG1" + }, {"id": "HST25", "name": "HSTNTX01-HST25"}, {"id": "STN27", "name": "HSTNTX01-STN27"}, { + "id": "HST70", + "name": "HSTNTX70-HST70" + }, {"id": "KOR1", "name": "HYFLNBVT-KOR1"}, {"id": "RAD10", "name": "INDIPUNE-RAD10"}, { + "id": "REL1", + "name": "INGERFGT-REL1" + }, {"id": "JAD1", "name": "JADECLLI-JAD1"}, {"id": "HKA1", "name": "JAKHLASS-HKA1"}, { + "id": "JCS1", + "name": "JCSJSCJS-JCS1" + }, {"id": "JCV1", "name": "JCVLFLBW-JCV1"}, {"id": "KGM2", "name": "KGMTNC20-KGM2"}, { + "id": "KJF12", + "name": "KJFDH123-KJF12" + }, {"id": "JGS1", "name": "KSJKKKKK-JGS1"}, {"id": "LAG1", "name": "LARGIZON-LAG1"}, { + "id": "LAG1a", + "name": "LARGIZON-LAG1a" + }, {"id": "LAG45", "name": "LARGIZON-LAG1a"}, {"id": "LAG1b", "name": "LARGIZON-LAG1b"}, { + "id": "WAN1", + "name": "LEIWANGW-WAN1" + }, {"id": "DSA1", "name": "LKJHGFDS-DSA1"}, {"id": "LON1", "name": "LONEENCO-LON1"}, { + "id": "SITE", + "name": "LONEENCO-SITE" + }, {"id": "ZXL1", "name": "LWLWCANN-ZXL1"}, {"id": "hvf20", "name": "MDTWNJ21-hvf20"}, { + "id": "hvf32", + "name": "MDTWNJ21-hvf32" + }, {"id": "AMD13", "name": "MEMATLAN-AMD13"}, {"id": "MIC54", "name": "MICHIGAN-MIC54"}, { + "id": "MAR1", + "name": "MNBVCXZM-MAR1" + }, {"id": "NCA1", "name": "NCANCANN-NCA1"}, {"id": "NFT1", "name": "NFTJSSSS-NFT1"}, { + "id": "GAR1", + "name": "NGFVSJKO-GAR1" + }, {"id": "NYC1", "name": "NYCMNY54-NYC1"}, {"id": "OKC1", "name": "OKCBOK55-OKC1"}, { + "id": "OLG1", + "name": "OLHOLHOL-OLG1" + }, {"id": "OLK1", "name": "OLKOLKLS-OLK1"}, {"id": "NIR1", "name": "ORFLMANA-NIR1"}, { + "id": "JAN1", + "name": "ORFLMATT-JAN1" + }, {"id": "ORL1", "name": "ORLDFLMA-ORL1"}, {"id": "PAR1", "name": "PARSFRCG-PAR1"}, { + "id": "PBL1", + "name": "PBLAPBAI-PBL1" + }, {"id": "mac10", "name": "PKGTESTF-mac10"}, {"id": "mac20", "name": "PKGTESTF-mac20"}, { + "id": "TIR2", + "name": "PLKINHYI-TIR2" + }, {"id": "IBB1", "name": "PLMKOIJU-IBB1"}, {"id": "COM1", "name": "PLMKOPIU-COM1"}, { + "id": "POI1", + "name": "PLMNJKIU-POI1" + }, {"id": "PLT1", "name": "PLTNCA60-PLT1"}, {"id": "POI22", "name": "POIUY123-POI22"}, { + "id": "DCC1", + "name": "POIUYTGH-DCC1" + }, {"id": "DCC1a", "name": "POIUYTGH-DCC1a"}, {"id": "DCC1b", "name": "POIUYTGH-DCC1b"}, { + "id": "DCC2", + "name": "POIUYTGH-DCC2" + }, {"id": "DCC3", "name": "POIUYTGH-DCC3"}, {"id": "IAA1", "name": "QAZXSWED-IAA1"}, { + "id": "QWE1", + "name": "QWECLLI1-QWE1" + }, {"id": "NUM1", "name": "QWERTYUI-NUM1"}, {"id": "RAD1", "name": "RADICAL1-RAD1"}, { + "id": "RJN1", + "name": "RJNRBZAW-RJN1" + }, {"id": "SAA13", "name": "SAIT1AA9-SAA13"}, {"id": "SAA14", "name": "SAIT1AA9-SAA14"}, { + "id": "SDD81", + "name": "SAIT1DD6-SDD81" + }, {"id": "SDD82", "name": "SAIT1DD9-SDD82"}, {"id": "SAA11", "name": "SAIT9AA2-SAA11"}, { + "id": "SAA80", + "name": "SAIT9AA3-SAA80" + }, {"id": "SAA12", "name": "SAIT9AF8-SAA12"}, {"id": "SCC80", "name": "SAIT9CC3-SCC80"}, { + "id": "ATL75", + "name": "SANAAIRE-ATL75" + }, {"id": "ICC1", "name": "SANJITAT-ICC1"}, {"id": "SCK1", "name": "SCKSCKSK-SCK1"}, { + "id": "EHH78", + "name": "SDCSHHH5-EHH78" + }, {"id": "SAA78", "name": "SDCTAAA1-SAA78"}, {"id": "SAX78", "name": "SDCTAXG1-SAX78"}, { + "id": "SBX78", + "name": "SDCTBXG1-SBX78" + }, {"id": "SEE78", "name": "SDCTEEE4-SEE78"}, {"id": "SGG78", "name": "SDCTGGG1-SGG78"}, { + "id": "SXB78", + "name": "SDCTGXB1-SXB78" + }, {"id": "SJJ78", "name": "SDCTJJJ1-SJJ78"}, {"id": "SKK78", "name": "SDCTKKK1-SKK78"}, { + "id": "SLF78", + "name": "SDCTLFN1-SLF78" + }, {"id": "SLL78", "name": "SDCTLLL1-SLL78"}, {"id": "MAD11", "name": "SDFQWGKL-MAD11"}, { + "id": "HGD1", + "name": "SDFQWHGD-HGD1" + }, {"id": "SBB78", "name": "SDIT1BBB-SBB78"}, {"id": "SDG78", "name": "SDIT1BDG-SDG78"}, { + "id": "SBU78", + "name": "SDIT1BUB-SBU78" + }, {"id": "SHH78", "name": "SDIT1HHH-SHH78"}, {"id": "SJU78", "name": "SDIT1JUB-SJU78"}, { + "id": "SNA1", + "name": "SNANTXCA-SNA1" + }, {"id": "SAM1", "name": "SNDGCA64-SAN1"}, {"id": "SNG1", "name": "SNGPSIAU-SNG1"}, { + "id": "SSA56", + "name": "SSIT2AA7-SSA56" + }, {"id": "STG1", "name": "STTGGE62-STG1"}, {"id": "STT1", "name": "STTLWA02-STT1"}, { + "id": "SYD1", + "name": "SYDNAUBV-SYD1" + }, {"id": "ATL99", "name": "TEESTAAI-ATL43"}, {"id": "ATL98", "name": "TEESTAAI-ATL43"}, { + "id": "ATL76", + "name": "TELEPAAI-ATL76" + }, {"id": "ABC14", "name": "TESAAISA-ABC14"}, {"id": "TAT33", "name": "TESAAISA-TAT33"}, { + "id": "TAT34", + "name": "TESAAISB-TAT34" + }, {"id": "TAT37", "name": "TESAAISD-TAT37"}, {"id": "ATL62", "name": "TESSASCH-ATL62"}, { + "id": "TLP1", + "name": "TLPNXM18-TLP1" + }, {"id": "SAN13", "name": "TOKYJPFA-SAN13"}, {"id": "TOK1", "name": "TOKYJPFA-TOK1"}, { + "id": "TOL1", + "name": "TOLDOH21-TOL1" + }, {"id": "TOR1", "name": "TOROONXN-TOR1"}, {"id": "TOY1", "name": "TORYONNZ-TOY1"}, { + "id": "ATL35", + "name": "TTESSAAI-ATL35" + }, {"id": "TUF1", "name": "TUFCLLI1-TUF1"}, {"id": "SAI1", "name": "UBEKQLPD-SAI1"}, { + "id": "UUU4", + "name": "UUUAAAUU-UUU4" + }, {"id": "YYY1", "name": "UUUAIAAI-YYY1"}, {"id": "BAN1", "name": "VSDKYUTP-BAN1"}, { + "id": "WAS1", + "name": "WASHDCSW-WAS1" + }, {"id": "APP1", "name": "WBHGTYUI-APP1"}, {"id": "SUL2", "name": "WERTYUJK-SUL2"}, { + "id": "DEF2", + "name": "WSBHGTYL-DEF2" + }, {"id": "DHA12", "name": "WSXEDECF-DHA12"}, {"id": "MNT11", "name": "WSXEFBTH-MNT11"}, { + "id": "RAJ1", + "name": "YGBIJNLQ-RAJ1" + }, {"id": "JAG1", "name": "YUDFJULP-JAG1"}, {"id": "ZEN1", "name": "ZENCLLI1-ZEN1"}, { + "id": "ZOG1", + "name": "ZOGASTRO-ZOG1" + }, {"id": "SDE1", "name": "ZXCVBNMA-SDE1"}, {"id": "SIP1", "name": "ZXCVBNMK-SIP1"}, { + "id": "JUL1", + "name": "ZXCVBNMM-JUL1" + }, {"id": "ERT1", "name": "ertclli1-ERT1"}, {"id": "IOP1", "name": "iopclli1-IOP1"}, { + "id": "OPA1", + "name": "opaclli1-OPA1" + }, {"id": "RAI1", "name": "poiuytre-RAI1"}, {"id": "PUR1", "name": "purelyde-PUR1"}, { + "id": "RTY1", + "name": "rtyclli1-RTY1" + }, {"id": "SDF1", "name": "sdfclli1-SDF1"}, {"id": "SSW56", "name": "ss8126GT-SSW56"}, { + "id": "UIO1", + "name": "uioclli1-UIO1" + }], "categoryParameters": { "owningEntityList": [{ "id": "aaa1", @@ -1458,3 +1776,63 @@ function getStore() { } } } + +function getNetworkModel(){ + return { + "customizationUuid":"94fdd893-4a36-4d70-b16a-ec29c54c184f", + "name":"ExtVL", + "version":"37.0", + "description":"ECOMP generic virtual link (network) base type for all other service-level and global networks", + "uuid":"ddc3f20c-08b5-40fd-af72-c6d14636b986", + "invariantUuid":"379f816b-a7aa-422f-be30-17114ff50b7c", + "max":1, + "min":0, + "isEcompGeneratedNaming":false, + "type":"VL", + "modelCustomizationName":"ExtVL 0", + "roles":["network role 1"," network role 2"], + "properties":{ + "network_role":"network role 1, network role 2", + "network_assignments": + "{is_external_network=false, ipv4_subnet_default_assignment={min_subnets_count=1}, ecomp_generated_network_assignment=false, ipv6_subnet_default_assignment={min_subnets_count=1}}", + "exVL_naming":"{ecomp_generated_naming=true}","network_flows":"{is_network_policy=false, is_bound_to_vpn=false}", + "network_homing":"{ecomp_selected_instance_node_target=false}" + } + }; + +} + +function getNetworkInstance() { + return { + "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f", + "modelId": "ddc3f20c-08b5-40fd-af72-c6d14636b986", + "modelUniqueId": "94fdd893-4a36-4d70-b16a-ec29c54c184f", + "missingData": true, + "id": "NETWORK4_INSTANCE_ID", + "action": "None", + "orchStatus": "Created", + "provStatus": "preprov", + "inMaint": false, + "instanceId": "NETWORK4_INSTANCE_ID", + "instanceType": "CONTRAIL30_HIMELGUARD", + "instanceName": "NETWORK4_INSTANCE_NAME", + "name": "NETWORK4_INSTANCE_NAME", + "modelName": "ExtVL 0", + "type": "VL", + "isEcompGeneratedNaming": false, + "networkStoreKey": "NETWORK4_INSTANCE_ID", + "typeName": "N", + "menuActions": {"edit": {}, "showAuditInfo": {}, "duplicate": {}, "remove": {}, "delete": {}, "undoDelete": {}}, + "isFailed": false, + "statusMessage": "", + "statusProperties": [{"key": "Prov Status:", "value": "preprov", "testId": "provStatus"}, { + "key": "Orch Status:", + "value": "Created", + "testId": "orchStatus" + }], + "trackById": "1wvr73xl999", + "parentType": "", + "componentInfoType": "Network", + "errors": {} + }; +} diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts index 5a023d55c..7df03fd0a 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts @@ -9,6 +9,8 @@ import {DrawingBoardModes} from "../drawing-board.modes"; import {AuditInfoModalComponent} from "../../../shared/components/auditInfoModal/auditInfoModal.component"; import {VnfModelInfo} from "./models/vnf/vnf.model.info"; import {ILevelNodeInfo} from "./models/basic.model.info"; +import {ComponentInfoModel, ComponentInfoType} from "../component-info/component-info-model"; +import {ModelInformationItem} from "../../../shared/components/model-information/model-information.component"; @Injectable() export class SharedTreeService { @@ -265,14 +267,29 @@ export class SharedTreeService { @modelInfoService : the model (vnf, vfmodule, network, vnfgroup)object that call to the function (this) ************************************************/ openAuditInfoModal(node, serviceModelId, instance, instanceType, modelInfoService : ILevelNodeInfo){ - let isInstanceFailed = this.isFailed(node); - AuditInfoModalComponent.openInstanceAuditInfoModal.next({ - instanceId: serviceModelId, - type: instanceType, - model: modelInfoService.getModel(node.data.modelName, instance, this._store.getState().service.serviceHierarchy[serviceModelId]), - instance, - isInstanceFailed, - trackById: instance.trackById - }); - } + AuditInfoModalComponent.openInstanceAuditInfoModal.next({ + instanceId: serviceModelId, + type: instanceType, + model: modelInfoService.getModel(node.data.modelName, instance, this._store.getState().service.serviceHierarchy[serviceModelId]), + instance + }); + } + + + addGeneralInfoItems(modelInfoSpecificItems: ModelInformationItem[], type: ComponentInfoType, model, instance):ComponentInfoModel { + let modelInfoItems: ModelInformationItem[] = [ + ModelInformationItem.createInstance("Model version", model ? model.version : null), + ModelInformationItem.createInstance("Model customization ID", model ? model.customizationUuid : null), + ModelInformationItem.createInstance("Instance ID", instance ? instance.instanceId : null), + ModelInformationItem.createInstance("Instance type", instance ? instance.instanceType : null), + ModelInformationItem.createInstance("In maintenance", instance? instance.inMaint : null), + ]; + modelInfoItems = modelInfoItems.concat(modelInfoSpecificItems); + return this.getComponentInfoModelByModelInformationItems(modelInfoItems, type, instance); + } + + getComponentInfoModelByModelInformationItems(modelInfoItems: ModelInformationItem[], type: ComponentInfoType, instance){ + const modelInfoItemsWithoutEmpty = _.filter(modelInfoItems, function(item){ return !item.values.every(_.isNil)}); + return new ComponentInfoModel(type, modelInfoItemsWithoutEmpty, [], instance != null); + } } diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/service-planning.component.html b/vid-webpack-master/src/app/drawingBoard/service-planning/service-planning.component.html index 059937f6d..3255f083b 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/service-planning.component.html +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/service-planning.component.html @@ -3,9 +3,15 @@ <drawing-board-header></drawing-board-header> </div> <div class="service-planning-content"> - <available-models-tree class="left-side" [ngClass]="isShowComponentInfo() ?'col-md-5':'col-md-6'" + <available-models-tree class="left-side" + [ngClass]="isShowComponentInfo() ?'col-md-5':'col-md-6'" (highlightInstances)="highlightInstancesBySelectingNode($event)"></available-models-tree> - <drawing-board-tree *ngIf="isShowTree()" class="span-over" [ngClass]="isShowComponentInfo() ?'col-md-5':'col-md-6'" (highlightNode)="highlightNodeBySelectingInstance($event)"></drawing-board-tree> + <drawing-board-tree + *ngIf="isShowTree()" + class="span-over" + [ngClass]="isShowComponentInfo() ?'col-md-5':'col-md-6'" + [pageMode]="pageMode" + (highlightNode)="highlightNodeBySelectingInstance($event)"></drawing-board-tree> <component-info *ngIf="isShowComponentInfo()" class="col-md-2"></component-info> </div> |