From f792671ae247a931f34d902e9276202b5016ef9a Mon Sep 17 00:00:00 2001 From: Ittay Stern Date: Sun, 7 Jul 2019 19:23:03 +0300 Subject: Merge from ecomp 718fd196 - Modern UI Issue-ID: VID-378 Change-Id: I2736b98426e324ec3aa233b034229ba84d99839f Signed-off-by: Ittay Stern --- .../objectsToTree/models/basic.model.info.ts | 19 +- .../collectionResource.model.info.spec.ts | 1207 ++++++++++++++++++++ .../collectionResource.model.info.ts | 102 ++ .../configuration/configuration.model.info.spec.ts | 326 +++--- .../configuration/configuration.model.info.ts | 10 +- .../models/ncf/ncf.model.info.spec.ts | 112 ++ .../objectsToTree/models/ncf/ncf.model.info.ts | 121 ++ .../models/network/network.model.info.spec.ts | 372 +++--- .../models/network/network.model.info.ts | 77 +- .../models/pnf/pnf.model.info.spec.ts | 134 +++ .../objectsToTree/models/pnf/pnf.model.info.ts | 70 ++ .../relatedVnfMember.info.model.spec.ts | 268 ++--- .../relatedVnfMember.info.model.ts | 7 +- .../models/vfModule/vfModule.model.info.spec.ts | 296 +++-- .../models/vfModule/vfModule.model.info.ts | 29 +- .../models/vnf/vnf.model.info.spec.ts | 343 +++--- .../objectsToTree/models/vnf/vnf.model.info.ts | 45 +- .../vnfGrouping/vnfGrouping.model.info.spec.ts | 158 ++- .../models/vnfGrouping/vnfGrouping.model.info.ts | 189 ++- .../models/vpn/vpn.model.info.spec.ts | 66 ++ .../objectsToTree/models/vpn/vpn.model.info.ts | 96 ++ .../models/vrf/vrf.model.info.spec.ts | 238 ++++ .../objectsToTree/models/vrf/vrf.model.info.ts | 188 +++ .../vrf/vrfModal/networkStep/network.step.model.ts | 18 + .../networkStep/network.step.service.spec.ts | 458 ++++++++ .../vrfModal/networkStep/network.step.service.ts | 242 ++++ .../models/vrf/vrfModal/vpnStep/vpn.step.model.ts | 17 + .../vrf/vrfModal/vpnStep/vpn.step.service.spec.ts | 463 ++++++++ .../vrf/vrfModal/vpnStep/vpn.step.service.ts | 195 ++++ 29 files changed, 4964 insertions(+), 902 deletions(-) create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/collectionResource/collectionResource.model.info.spec.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/collectionResource/collectionResource.model.info.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/ncf/ncf.model.info.spec.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/ncf/ncf.model.info.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.spec.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/pnf/pnf.model.info.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vpn/vpn.model.info.spec.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vpn/vpn.model.info.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrf.model.info.spec.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrf.model.info.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.model.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.service.spec.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.service.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/vpnStep/vpn.step.model.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/vpnStep/vpn.step.service.spec.ts create mode 100644 vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/vpnStep/vpn.step.service.ts (limited to 'vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models') 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; + 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({}); + 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', { + originalName : 'CR_sanity 0' + }, getServiceHierarchy()); + expect(model.type).toEqual('CR'); + }); + + test('cr getMenuAction: delete', ()=>{ + let node = {}; + let serviceModelId = 'serviceModelId'; + let result = collectionResourceModel.getMenuAction(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,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(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 { + 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(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){ + } + + 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(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 { + 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 { 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', {}, getServiceHierarchy()); + let model = networkModel.getModel('2017-388_PASQUALE-vPE 1_1', {}, 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(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; + 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({}); + expect(isEcompGeneratedNaming).toBeFalsy(); + }); + + test('getModel should return pnf model', () => { + let model: CollectionResourceModel = pnfModel.getModel('PNF1', { + 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', { - originalName : '2017-388_ADIOD-vPE 1' + let model: VNFModel = relatedVnfMemeber.getModel('2017-388_PASQUALE-vPE 1', { + 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(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(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 { 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', { - originalName : '2017-388_ADIOD-vPE 1' + let model: VNFModel = vnfModel.getModel('2017-388_PASQUALE-vPE 1', { + 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(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(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(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) { } 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(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 => { + 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; + 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, + 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(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; + 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', { + 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(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, + 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(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 { + 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; + 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", + { + 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, 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 => { + 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 => 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; + 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", + { + 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 = { + 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 = members; + let searchElementsModalComponent = new SearchElementsModalComponent(null, null, null, memberTableService, null); + + searchElementsModalComponent.modalInformation = { + 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, 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 => { + 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'] + }] + } + ]; + }; + +} -- cgit 1.2.3-korg