summaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/shared/components
diff options
context:
space:
mode:
Diffstat (limited to 'vid-webpack-master/src/app/shared/components')
-rw-r--r--vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.html92
-rw-r--r--vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.scss175
-rw-r--r--vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.service.spec.ts274
-rw-r--r--vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.service.ts79
-rw-r--r--vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.spec.ts203
-rw-r--r--vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.ts122
-rw-r--r--vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.component.spec.ts157
-rw-r--r--vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.component.ts80
-rw-r--r--vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.html22
-rw-r--r--vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.scss58
-rw-r--r--vid-webpack-master/src/app/shared/components/ellipsis/ellipsis.component.ts28
-rw-r--r--vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.html5
-rw-r--r--vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.scss22
-rw-r--r--vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.spec.ts48
-rw-r--r--vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.ts28
-rw-r--r--vid-webpack-master/src/app/shared/components/error-msg/error-msg.model.ts11
-rw-r--r--vid-webpack-master/src/app/shared/components/error-msg/error-msg.service.spec.ts38
-rw-r--r--vid-webpack-master/src/app/shared/components/error-msg/error-msg.service.ts22
-rw-r--r--vid-webpack-master/src/app/shared/components/error/error.component.service.ts15
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.html11
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.ts13
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/dropdown/dropdown.formControl.component.html21
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/dropdown/dropdown.formControl.component.scss7
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/dropdown/dropdown.formControl.component.ts27
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.html22
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.scss87
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.spec.ts62
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.ts27
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/file/fileUnit.enum.ts7
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.html25
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.scss0
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.spec.ts68
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.ts18
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.html16
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.spec.ts74
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.ts20
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/number/number.formControl.component.html13
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/component/number/number.formControl.component.ts12
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/errorMessage/formControlMessageError.component.html5
-rw-r--r--vid-webpack-master/src/app/shared/components/formControls/errorMessage/formControlMessageError.component.ts15
-rw-r--r--vid-webpack-master/src/app/shared/components/formGeneralErrors/formGeneralErrors.component.scss1
-rw-r--r--vid-webpack-master/src/app/shared/components/formGeneralErrors/formGeneralErrors.service.ts7
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/basic.control.generator.spec.ts48
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/basic.control.generator.ts240
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator.spec.ts1979
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator.ts247
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/service.control.generator.spec.ts1859
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/service.control.generator.ts331
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator.spec.ts2008
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator.ts349
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator.spec.ts1943
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator.ts243
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator.spec.ts364
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator.ts118
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/generic-form.component.html29
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/generic-form.component.scss68
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/generic-form.component.ts45
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/generic-form.service.spec.ts140
-rw-r--r--vid-webpack-master/src/app/shared/components/genericForm/generic-form.service.ts54
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.component.html70
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.component.scss182
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.component.ts145
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.service.spec.ts1938
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.service.ts93
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/basic.popup.service.spec.ts92
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/basic.popup.service.ts54
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/generic-popup.interface.ts25
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/network/network.popup.service.spec.ts2395
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/network/network.popup.service.ts150
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.spec.ts2439
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.ts184
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.spec.ts2407
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.ts184
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service.spec.ts3242
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service.ts158
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service.spec.ts3239
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service.ts158
-rw-r--r--vid-webpack-master/src/app/shared/components/messageBox/messageBox.component.ts15
-rw-r--r--vid-webpack-master/src/app/shared/components/messageBox/messageBox.data.ts45
-rw-r--r--vid-webpack-master/src/app/shared/components/messageBox/messageBox.service.spec.ts21
-rw-r--r--vid-webpack-master/src/app/shared/components/messageBox/messageBox.service.ts8
-rw-r--r--vid-webpack-master/src/app/shared/components/model-information/model-information.component.ts23
-rw-r--r--vid-webpack-master/src/app/shared/components/model-information/model-information.html4
-rw-r--r--vid-webpack-master/src/app/shared/components/model-information/model-information.service.spec.ts32
-rw-r--r--vid-webpack-master/src/app/shared/components/model-information/model-information.service.ts16
-rw-r--r--vid-webpack-master/src/app/shared/components/model-information/model-information.spec.ts12
-rw-r--r--vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.html5
-rw-r--r--vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.scss3
-rw-r--r--vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.ts1
-rw-r--r--vid-webpack-master/src/app/shared/components/popover/popover.component.html5
-rw-r--r--vid-webpack-master/src/app/shared/components/popover/popover.component.scss1
-rw-r--r--vid-webpack-master/src/app/shared/components/popover/popover.component.ts34
-rw-r--r--vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/member-table-row.model.ts6
-rw-r--r--vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.component.html75
-rw-r--r--vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.component.scss91
-rw-r--r--vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.component.ts57
-rw-r--r--vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.service.spec.ts270
-rw-r--r--vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.service.ts153
-rw-r--r--vid-webpack-master/src/app/shared/components/searchMembersModal/search-members-modal.component.html35
-rw-r--r--vid-webpack-master/src/app/shared/components/searchMembersModal/search-members-modal.component.scss89
-rw-r--r--vid-webpack-master/src/app/shared/components/searchMembersModal/search-members-modal.component.ts82
-rw-r--r--vid-webpack-master/src/app/shared/components/spinner/spinner.component.html8
-rw-r--r--vid-webpack-master/src/app/shared/components/spinner/spinner.component.spec.ts44
-rw-r--r--vid-webpack-master/src/app/shared/components/spinner/spinner.component.ts50
-rw-r--r--vid-webpack-master/src/app/shared/components/svg/svg-component.ts47
-rw-r--r--vid-webpack-master/src/app/shared/components/validators/numbersLettersUnderscore/numbersLettersUnderscore.validator.spec.ts39
-rw-r--r--vid-webpack-master/src/app/shared/components/validators/numbersLettersUnderscore/numbersLettersUnderscore.validator.ts20
107 files changed, 30365 insertions, 183 deletions
diff --git a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.html b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.html
new file mode 100644
index 000000000..1dad32376
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.html
@@ -0,0 +1,92 @@
+<div class="modal fade" bsModal #auditInfoModal="bs-modal" [config]="{backdrop: 'static'}"
+ tabindex="-1" role="dialog" aria-labelledby="dialog-static-name">
+ <div id="audit-info-modal" class="">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" (click)="onCancelClick()">&times;</button>
+ <span [attr.data-tests-id]="'audit-info-title'" class="modal-title">{{title}}</span>
+ </div>
+ <div class="modal-body row">
+ <div class="col-md-4 left-panel">
+ <div id="service-model-name" class="row">{{type | uppercase}} MODEL: <span>{{serviceModelName}}</span></div>
+ <div class="row service-model">
+ <model-information [modelInformationItems]="modelInfoItems"></model-information>
+ </div>
+ </div>
+ <div class="col-md-8 right-panel">
+ <div class="row" *ngIf="showVidStatus"><span class="table-title">VID status</span></div>
+ <div class="row" *ngIf="showVidStatus">
+ <table id="service-instantiation-audit-info-vid" class="table table-bordered">
+ <thead class="thead-dark">
+ <tr class="row">
+ <th class="col-md-4" scope="col">Status</th>
+ <th class="col-md-4" scope="col">Status time</th>
+ <th class="col-md-4" scope="col">Final</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="row" *ngFor="let data of vidInfoData">
+ <td class="col-md-4" id="vidJobStatus" [attr.data-tests-id]="'vidJobStatus'">
+ <custom-ellipsis [id]="data?.jobStatus" [value]="data?.jobStatus | capitalizeAndFormat"></custom-ellipsis>
+ </td>
+ <td class="col-md-4" id="vidStatusTime">
+ <custom-ellipsis [id]="data?.vidCreated"
+ [value]="data?.createdDate | date:'MMM dd, yyyy HH:mm'"></custom-ellipsis>
+ </td>
+ <td class="col-md-4" id="vidFinalStatus">
+ <custom-ellipsis [id]="data?.final"
+ [value]="data?.final ? 'Yes' : 'No'"></custom-ellipsis>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <div class="no-result" *ngIf="!isLoading && vidInfoData?.length == 0">There is no data.</div>
+ </div>
+
+ <div class="row">
+ <div class="col-md-6 leftColumn"><span class="table-title">MSO status</span></div>
+ <div class="col-md-6 rightColumn"><span><a id="glossary_link" target="_blank" href="#" (click)="onNavigate()">Building Block (BB) glossary</a></span></div>
+ </div>
+ <table id="service-instantiation-audit-info-mso" class="table table-bordered">
+ <thead class="thead-dark row">
+ <tr class="row">
+ <th scope="col" class="request-id">Request ID</th>
+ <th *ngIf="isAlaCarte&&isALaCarteFlagOn" id="instanceName" class="col-md-2" scope="col">Instance Name</th>
+ <th class="col-md-2" scope="col">Status</th>
+ <th class="col-md-2" scope="col">Status time</th>
+ <th class="col-md-2" scope="col">Additional info</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="row" *ngFor="let data of msoInfoData">
+ <td id="msoRequestId" class="request-id">
+ <custom-ellipsis [id]="data?.requestId" [value]="data?.requestId"></custom-ellipsis>
+ </td>
+ <td *ngIf="isAlaCarte && isALaCarteFlagOn" class="msoInstanceName col-md-2">
+ <custom-ellipsis [id]="data?.instanceName" [value]="data?.instanceType + ': ' + data?.instanceName"></custom-ellipsis>
+ </td>
+ <td class="col-md-2" id="msoJobStatus">
+ <custom-ellipsis [id]="data?.jobStatus" [value]="data?.jobStatus | capitalizeAndFormat"></custom-ellipsis>
+ </td>
+ <td class="col-md-2" id="msoStatusTime">
+ <custom-ellipsis [id]="data?.vidCreated"
+ [value]="data?.createdDate | date:'MMM dd, yyyy HH:mm'"></custom-ellipsis>
+ </td>
+ <td class="col-md-2" id="msoAdditionalInfo">
+ <custom-ellipsis [id]="data?.additionalInfo" [value]="data?.additionalInfo"></custom-ellipsis>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <div class="no-result" *ngIf="!isLoading && msoInfoData?.length == 0">There is no data.</div>
+ </div>
+
+ </div>
+ <div class="modal-footer row">
+ <button style= "font-size: 12px" id="cancelButton" type="button" class="btn btn-default cancel" (click)="onCancelClick()">
+ Close
+ </button>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.scss b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.scss
new file mode 100644
index 000000000..f36b8b41d
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.scss
@@ -0,0 +1,175 @@
+.templatebody.modal-open{
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000;
+ opacity: 0.5;
+}
+.modal{
+
+ #audit-info-modal {
+ .leftColumn {
+ padding-left: 0;
+ }
+
+ .rightColumn {
+ padding-right: 0;
+ text-align: right;
+ }
+ .modal-content{
+ border-radius: 0px;
+ border: none;
+ .modal-header{
+ background: #009FDB;
+ font-size: 24px;
+ color: #ffffff;
+ .close{
+ font-size: 32px;
+ font-weight: 200;
+ color: #ffffff;
+ text-shadow: none;
+ filter: none;
+ opacity: 1;
+ &:hover{
+ color: #d2d2d2;
+ }
+ }
+ .modal-title{
+
+ }
+ }
+ .modal-body{
+ padding: 0px;
+ margin: 0px;
+ display: flex;
+ .left-panel{
+ background: #f2f2f2;
+ border-right: 1px solid #D2D2D2;
+ padding-right: 0px;
+ .row:first-child{
+ border-bottom: 1px solid #D2D2D2;
+ height: 50px;
+ font-size: 12px;
+ line-height: 50px;
+ padding-left: 30px;
+ font-weight: 700;
+ margin-right: 0px;
+ }
+ .service-model{
+ padding-left: 30px;
+ padding-top: 15px;
+ }
+ }
+ .right-panel{
+ padding: 30px 30px 15px 30px;
+ .row{
+ margin: 0px;
+ }
+ .table-title{
+ font-size: 12px;
+ text-transform: uppercase;
+ font-weight: bold;
+ }
+ .no-result{
+ margin-bottom: 20px;
+ text-align: center;
+ border: 1px solid #d2d2d2;
+ padding: 20px;
+ margin-top: -23px;
+ }
+
+ .table-bordered{
+ width: 100%;
+ margin-top: 10px;
+ font-family: OpenSans-Semibold;
+ font-size: 12px;
+ overflow-x: auto;
+ display: block;
+ color: #5A5A5A;
+ .request-id {
+ width: 85px;
+ }
+ thead {
+ position: sticky;
+ top: 0;
+ z-index: 100;
+ display: block;
+ background: rgb(242, 242, 242);
+ border-bottom: 1px solid #d2d2d2;
+ tr {
+ display: flex;
+ th {
+ flex-grow: 1;
+ border-right: 1px solid #d2d2d2;
+ &:last-child{
+ border-right: none;
+ }
+ &.request-id {
+ flex-grow: 0;
+ }
+ }
+ }
+ }
+
+ tbody {
+ border: none !important;
+ max-height: 152px;
+ display: block;
+
+ tr {
+ display: flex;
+ border-bottom: 1px solid #d2d2d2;
+ &:last-child{
+ border-bottom: none;
+ }
+ td {
+ border: none;
+ border-right: 1px solid #d2d2d2;
+ flex-grow: 1;
+ &:last-child{
+ border-right: none;
+ }
+ &.request-id {
+ flex-grow: 0;
+ }
+ }
+ }
+ }
+
+ th {
+ background: #f2f2f2;
+ font-family: OpenSans-Semibold;
+ color: #000000;
+ font-weight: bold;
+ border: none;
+ }
+
+ tr.odd {
+ background-color: rgb(242, 242, 242);
+ }
+
+ tr:hover {
+ background: #e1e1e1;
+ }
+ }
+ }
+ }
+ .modal-footer{
+ margin: 0px;
+ .cancel{
+ width: 120px;
+ height: 36px;
+ background: #009fdb;
+ border-radius: 2px;
+ font-family: OpenSans-Regular;
+ font-size: 14px;
+ color: #ffffff;
+ line-height: 16px;
+ }
+ }
+ }
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.service.spec.ts b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.service.spec.ts
new file mode 100644
index 000000000..35b5fbfe5
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.service.spec.ts
@@ -0,0 +1,274 @@
+
+import {HttpClientTestingModule, HttpTestingController} from "@angular/common/http/testing";
+import {getTestBed, TestBed} from "@angular/core/testing";
+import {NgRedux} from "@angular-redux/store";
+import {AuditInfoModalComponentService} from "./auditInfoModal.component.service";
+import {ModelInformationItem} from "../model-information/model-information.component";
+
+class MockAppStore<T> {
+ getState() {
+ return {
+ "service": {
+ "serviceInstance": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "instanceParams": [],
+ "bulkSize": 1,
+ "action": "None",
+ "instanceName": "PQijmEmzhVma4zujr",
+ "instanceId": "service-instance-id",
+ "orchStatus": "GARBAGE DATA",
+ "productFamilyId": null,
+ "lcpCloudRegionId": null,
+ "tenantId": null,
+ "modelInfo": {
+ "modelInvariantId": "d27e42cf-087e-4d31-88ac-6c4b7585f800",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "vf_vEPDG",
+ "modelType": "service",
+ "modelVersion": "5.0"
+ },
+ "globalSubscriberId": "global-customer-id",
+ "subscriptionServiceType": "service-instance-type",
+ "owningEntityId": null,
+ "owningEntityName": null,
+ "tenantName": null,
+ "aicZoneId": null,
+ "aicZoneName": null,
+ "projectName": null,
+ "rollbackOnFailure": null,
+ "isALaCarte": false
+ }
+ },
+ "subscribers": [
+ {
+ "id": "CAR_2020_ER",
+ "name": "CAR_2020_ER",
+ "isPermitted": true
+ },
+ {
+ "id": "21014aa2-526b-11e6-beb8-9e71128cae77",
+ "name": "JULIO ERICKSON",
+ "isPermitted": false
+ },
+ {
+ "id": "global-customer-id",
+ "name": "DALE BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-1",
+ "name": "LLOYD BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example",
+ "name": "JimmyExampleCust-20161102",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example2",
+ "name": "JimmyExampleCust-20161103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-102",
+ "name": "ERICA5779-TestSub-PWT-102",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-101",
+ "name": "ERICA5779-TestSub-PWT-101",
+ "isPermitted": false
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-4",
+ "name": "ERICA5779-Subscriber-5",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-103",
+ "name": "ERICA5779-TestSub-PWT-103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-2",
+ "name": "ERICA5779-Subscriber-2",
+ "isPermitted": false
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "SILVIA ROBBINS",
+ "isPermitted": true
+ },
+ {
+ "id": "ERICA5779-Subscriber-3",
+ "name": "ERICA5779-Subscriber-3",
+ "isPermitted": false
+ },
+ {
+ "id": "31739f3e-526b-11e6-beb8-9e71128cae77",
+ "name": "CRAIG/ROBERTS",
+ "isPermitted": false
+ }
+ ]
+ }
+ }
+ }
+}
+
+describe("Audit info modal component service", () => {
+ let injector;
+ let httpMock: HttpTestingController;
+ let auditInfoModalComponentService: AuditInfoModalComponentService;
+
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ imports: [HttpClientTestingModule],
+ providers: [
+ AuditInfoModalComponentService,
+ {provide: NgRedux, useClass: MockAppStore}
+ ]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ httpMock = injector.get(HttpTestingController);
+ auditInfoModalComponentService = injector.get(AuditInfoModalComponentService);
+
+ })().then(done).catch(done.fail));
+
+
+ test('auditInfoModalComponentService service should be defined', () => {
+ expect(auditInfoModalComponentService).toBeDefined();
+ });
+
+ test('getModelInfo: VNF information from existing instance with model', () => {
+ const model = getVNFModel();
+ const instance = getVNFInstance();
+ const results: ModelInformationItem[] = auditInfoModalComponentService.getModelInfo(model, instance, "6e59c5de-f052-46fa-aa7e-2fca9d674c44");
+ expect(results.find((item) => item.label === 'Model customization ID').values[0]).toEqual("91415b44-753d-494c-926a-456a9172bbb9");
+ expect(results.find((item) => item.label === 'Model version').values[0]).toEqual("2.0");
+ expect(results.find((item) => item.label === 'Model name').values[0]).toEqual("VF_vMee");
+ expect(results.find((item) => item.label === 'Instance name').values[0]).toEqual("4O61SmpFAdCm1oVEs");
+ expect(results.find((item) => item.label === 'Instance ID').values[0]).toEqual("66cbb3b5-c823-470c-9520-4e0b85112250");
+ expect(results.find((item) => item.label === 'Subscriber name').values[0]).toEqual("DALE BRIDGES"); // TODO should call subscriber
+ expect(results.find((item) => item.label === 'Service type').values[0]).toEqual("service-instance-type");
+ });
+
+ test('getModelInfo: Network information from existing instance without model', () => {
+ const model = getNetworkModel();
+ const instance = getNetworkInstance();
+ const results: ModelInformationItem[] = auditInfoModalComponentService.getModelInfo(model, instance, "6e59c5de-f052-46fa-aa7e-2fca9d674c44");
+ expect(results.find((item) => item.label === 'Instance name').values[0]).toEqual("KADmyK6e3sVWNfGbA");
+ expect(results.find((item) => item.label === 'Instance ID').values[0]).toEqual("712cad2d-fc1c-40c7-aaff-d2d6e17ac2b6");
+ expect(results.find((item) => item.label === 'Subscriber name').values[0]).toEqual("DALE BRIDGES"); // TODO should call subscriber
+ expect(results.find((item) => item.label === 'Service type').values[0]).toEqual("service-instance-type");
+ });
+
+ test('getModelInfo: VFModule information from existing instance with model', () => {
+ const model = getVFModule();
+ const instance = getVFModuleInstance();
+ const results: ModelInformationItem[] = auditInfoModalComponentService.getModelInfo(model, instance, "6e59c5de-f052-46fa-aa7e-2fca9d674c44");
+ expect(results.find((item) => item.label === 'Model customization ID').values[0]).toEqual("55b1be94-671a-403e-a26c-667e9c47d091");
+ expect(results.find((item) => item.label === 'Model version').values[0]).toEqual("2");
+ expect(results.find((item) => item.label === 'Model name').values[0]).toEqual("VfVmee..vmme_vlc..module-1");
+ expect(results.find((item) => item.label === 'Instance name').values[0]).toEqual("ss820f_0918_db");
+ expect(results.find((item) => item.label === 'Instance ID').values[0]).toEqual("2c1ca484-cbc2-408b-ab86-25a2c15ce280");
+ expect(results.find((item) => item.label === 'Subscriber name').values[0]).toEqual("DALE BRIDGES"); // TODO should call subscriber
+ expect(results.find((item) => item.label === 'Service type').values[0]).toEqual("service-instance-type");
+ });
+
+ test('getModelInfo: VNFGroup information from existing instance with model', () => {
+ const model = getVNFGroupModel();
+ const instance = getVNFGroupInstance();
+ const results: ModelInformationItem[] = auditInfoModalComponentService.getModelInfo(model, instance, "6e59c5de-f052-46fa-aa7e-2fca9d674c44");
+ expect(results.find((item) => item.label === 'Model version').values[0]).toEqual("1");
+ expect(results.find((item) => item.label === 'Model name').values[0]).toEqual("groupingservicefortest..ResourceInstanceGroup..0");
+ expect(results.find((item) => item.label === 'Instance name').values[0]).toEqual("VNF_GROUP1_INSTANCE_NAME");
+ expect(results.find((item) => item.label === 'Instance ID').values[0]).toEqual("VNF_GROUP1_INSTANCE_ID");
+ expect(results.find((item) => item.label === 'Subscriber name').values[0]).toEqual("DALE BRIDGES"); // TODO should call subscriber
+ expect(results.find((item) => item.label === 'Service type').values[0]).toEqual("service-instance-type");
+ });
+
+
+ test('setModalTitlesType: should return modal title', () => {
+ expect(AuditInfoModalComponentService.setModalTitle('VNF')).toEqual('VNF Instantiation Information');
+ expect(AuditInfoModalComponentService.setModalTitle('VFMODULE')).toEqual('VfModule Instantiation Information');
+ expect(AuditInfoModalComponentService.setModalTitle('NETWORK')).toEqual('Network Instantiation Information');
+ expect(AuditInfoModalComponentService.setModalTitle('VNFGROUP')).toEqual('Vnf Group Instantiation Information');
+ });
+
+ test('setModalTitlesType: should return modal title type', () => {
+ expect(AuditInfoModalComponentService.setModalTitlesType('VNF')).toEqual('VNF');
+ expect(AuditInfoModalComponentService.setModalTitlesType('VFMODULE')).toEqual('VfModule');
+ expect(AuditInfoModalComponentService.setModalTitlesType('NETWORK')).toEqual('Network');
+ expect(AuditInfoModalComponentService.setModalTitlesType('VNFGROUP')).toEqual('Vnf Group');
+ });
+
+ test('getInstanceModelName: should return model name if exist', () => {
+ expect(AuditInfoModalComponentService.getInstanceModelName({name : 'some name'})).toEqual('some name');
+ expect(AuditInfoModalComponentService.getInstanceModelName(null)).toEqual('');
+ });
+
+ test('createModelInformationItemsJob: should return job information', () => {
+ let service = {
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "cfef8302-d90f-475f-87cc-3f49a62ef14c",
+ "name": "ComplexService",
+ "version": "1.0",
+ "toscaModelURL": null,
+ "category": "Emanuel",
+ "serviceType": "",
+ "serviceRole": "",
+ "description": "ComplexService",
+ "serviceEcompNaming": "true",
+ "instantiationType": "Macro",
+ "inputs": {},
+ "vidNotions": {
+ "instantiationUI": "legacy",
+ "modelCategory": "other",
+ "viewEditUI": "legacy"
+ }
+ };
+ const results = AuditInfoModalComponentService.createModelInformationItemsJob(<any>service);
+ });
+
+
+ function getVNFModel(){
+ return {"name":"VF_vMee","version":"2.0","description":"VSP_vMee","uuid":"d6557200-ecf2-4641-8094-5393ae3aae60","invariantUuid":"4160458e-f648-4b30-a176-43881ffffe9e","max":1,"min":0,"customizationUuid":"91415b44-753d-494c-926a-456a9172bbb9","isEcompGeneratedNaming":true,"type":"VF","modelCustomizationName":"VF_vMee 0","vfcInstanceGroups":{},"properties":{"gpb2_Internal2_mac":"00:11:22:EF:AC:DF","sctp-a-ipv6-egress_rule_application":"any","sctp-b-ipv6-egress_src_start_port":"0","Internal2_allow_transit":"true","sctp-b-IPv6_ethertype":"IPv6","ncb2_Internal1_mac":"00:11:22:EF:AC:DF","sctp-b-ingress_rule_protocol":"icmp","sctp-b-ingress_action":"pass","sctp-a-egress_rule_application":"any","sctp-b-ipv6-ingress-src_start_port":"0.0","ncb1_Internal2_mac":"00:11:22:EF:AC:DF","sctp-b-egress_src_addresses":"local","fsb_volume_size_0":"320.0","sctp-a-ipv6-ingress-dst_start_port":"0","sctp-a-ipv6-ingress_ethertype":"IPv4","sctp-b-ipv6-ingress_rule_application":"any","domain_name":"default-domain","sctp-a-egress_src_addresses":"local","sctp-b-egress-src_start_port":"0.0","sctp-a-ingress_rule_protocol":"icmp","sctp-b-display_name":"epc-sctp-b-ipv4v6-sec-group","sctp-b-ipv6-ingress-dst_end_port":"65535","sctp-a-ingress_ethertype":"IPv4","sctp-a-egress-src_start_port":"0.0","sctp-b-dst_subnet_prefix_v6":"::","nf_naming":"{ecomp_generated_naming=true}","sctp-a-ipv6-ingress_src_subnet_prefix":"0.0.0.0","sctp-b-egress-dst_start_port":"0.0","ncb_flavor_name":"nv.c20r64d1","sctp-b-egress_dst_subnet_prefix_len":"0.0","gpb1_Internal1_mac":"00:11:22:EF:AC:DF","Internal2_net_cidr":"10.0.0.10","sctp-a-ingress-dst_start_port":"0.0","fsb1_Internal2_mac":"00:11:22:EF:AC:DF","sctp-a-egress-dst_start_port":"0.0","sctp-a-egress_ethertype":"IPv4","vlc_st_service_mode":"in-network-nat","sctp-a-ipv6-egress_ethertype":"IPv4","sctp-a-egress-src_end_port":"65535.0","sctp-b-egress_action":"pass","sctp-b-ipv6-egress_rule_application":"any","sctp-a-ingress-src_subnet_prefix_len":"0.0","sctp-b-ipv6-ingress-src_end_port":"65535.0","sctp-a-ipv6-ingress-src_start_port":"0.0","fsb2_Internal1_mac":"00:11:22:EF:AC:DF","sctp-b-name":"epc-sctp-b-ipv4v6-sec-group","sctp-b-ipv6-egress_ethertype":"IPv4","Internal1_net_cidr":"10.0.0.10","sctp-a-egress_dst_subnet_prefix":"0.0.0.0","fsb_flavor_name":"nv.c20r64d1","sctp_rule_protocol":"132","sctp-a-ipv6-ingress_rule_application":"any","sctp-b-ipv6-ingress_src_subnet_prefix_len":"0","ecomp_generated_naming":"true","sctp-a-IPv6_ethertype":"IPv6","vlc_st_virtualization_type":"virtual-machine","vlc2_Internal1_mac":"00:11:22:EF:AC:DF","sctp-b-ingress-dst_end_port":"65535.0","sctp-b-ingress-dst_start_port":"0.0","sctp-a-ipv6-ingress-src_end_port":"65535.0","sctp-a-display_name":"epc-sctp-a-ipv4v6-sec-group","sctp-b-ingress_rule_application":"any","vlc_flavor_name":"nd.c16r64d1","int2_sec_group_name":"int2-sec-group","sctp-b-ipv6-egress_src_addresses":"local","vlc_st_interface_type_int1":"other1","vlc_st_interface_type_int2":"other2","sctp-a-ipv6-egress-dst_start_port":"0","sctp-b-egress-src_end_port":"65535.0","sctp-a-ipv6-egress_dst_subnet_prefix_len":"0","Internal2_shared":"false","sctp-a-ipv6-egress_rule_protocol":"any","Internal2_rpf":"disable","vlc1_Internal1_mac":"00:11:22:EF:AC:DF","sctp-b-ipv6-egress_src_end_port":"65535","sctp-a-ipv6-egress_src_addresses":"local","sctp-a-ingress-dst_end_port":"65535.0","sctp-a-ipv6-egress_src_end_port":"65535","Internal1_forwarding_mode":"l2","Internal2_dhcp":"false","sctp-a-dst_subnet_prefix_v6":"::","pxe_image_name":"MME_PXE-Boot_16ACP04_GA.qcow2","vlc_st_interface_type_gtp":"other0","ncb1_Internal1_mac":"00:11:22:EF:AC:DF","sctp-b-src_subnet_prefix_v6":"::","sctp-a-egress_dst_subnet_prefix_len":"0.0","int1_sec_group_name":"int1-sec-group","Internal1_dhcp":"false","fsb2_Internal2_mac":"00:11:22:EF:AC:DF","Internal2_forwarding_mode":"l2","sctp-a-ipv6-egress_dst_end_port":"65535","sctp-b-egress_dst_subnet_prefix":"0.0.0.0","Internal1_net_cidr_len":"17","gpb2_Internal1_mac":"00:11:22:EF:AC:DF","sctp-a-ingress_dst_addresses":"local","sctp-b-ingress-src_subnet_prefix_len":"0.0","sctp-a-egress_action":"pass","fsb_volume_type_0":"SF-Default-SSD","ncb2_Internal2_mac":"00:11:22:EF:AC:DF","vlc_st_interface_type_sctp_a":"left","vlc_st_version":"2","sctp-a-src_subnet_prefix_v6":"::","vlc_st_interface_type_sctp_b":"right","sctp-a-ingress_rule_application":"any","sctp-b-egress_ethertype":"IPv4","sctp-a-ipv6-egress_src_start_port":"0","instance_ip_family_v6":"v6","gpb1_Internal2_mac":"00:11:22:EF:AC:DF","sctp-b-ingress-src_start_port":"0.0","fsb1_Internal1_mac":"00:11:22:EF:AC:DF","sctp-b-ingress_dst_addresses":"local","vlc_st_interface_type_oam":"management","multi_stage_design":"false","oam_sec_group_name":"oam-sec-group","Internal2_net_gateway":"10.0.0.10","sctp-a-ipv6-ingress-dst_end_port":"65535","Internal1_net_gateway":"10.0.0.10","sctp-b-ipv6-egress-dst_start_port":"0","sctp-b-ipv6-egress_rule_protocol":"any","gtp_sec_group_name":"gtp-sec-group","sctp-a-ipv6-egress_dst_subnet_prefix":"0.0.0.0","sctp-a-ipv6-ingress_dst_addresses":"local","sctp-b-ipv6-egress_dst_subnet_prefix_len":"0","sctp-b-ipv6-egress_action":"pass","sctp-a-egress_rule_protocol":"icmp","sctp-a-ipv6-egress_action":"pass","Internal1_shared":"false","sctp-b-ipv6-ingress_rule_protocol":"any","Internal2_net_cidr_len":"17","sctp-a-name":"epc-sctp-a-ipv4v6-sec-group","sctp-a-ingress-src_end_port":"65535.0","sctp-b-ipv6-ingress_src_subnet_prefix":"0.0.0.0","sctp-a-egress-dst_end_port":"65535.0","sctp-b-egress_rule_protocol":"icmp","sctp-a-ingress_action":"pass","sctp-b-ipv6-ingress_action":"pass","vlc_st_service_type":"firewall","sctp-b-ipv6-egress_dst_end_port":"65535","vlc2_Internal2_mac":"00:11:22:EF:AC:DF","sctp-b-ipv6-ingress-dst_start_port":"0","vlc_st_availability_zone":"true","sctp-b-ingress-src_subnet_prefix":"0.0.0.0","fsb_volume_image_name_1":"MME_FSB2_16ACP04_GA.qcow2","sctp-a-ipv6-ingress_src_subnet_prefix_len":"0","gpb_flavor_name":"nv.c20r64d1","Internal1_allow_transit":"true","availability_zone_max_count":"1","fsb_volume_image_name_0":"MME_FSB1_16ACP04_GA.qcow2","sctp-b-ipv6-ingress_dst_addresses":"local","sctp-b-ipv6-ingress_ethertype":"IPv4","sctp-b-ipv6-egress_dst_subnet_prefix":"0.0.0.0","sctp-a-ingress-src_subnet_prefix":"0.0.0.0","vlc1_Internal2_mac":"00:11:22:EF:AC:DF","sctp-a-ipv6-ingress_action":"pass","Internal1_rpf":"disable","sctp-b-ingress_ethertype":"IPv4","sctp-b-ingress-src_end_port":"65535.0","sctp-b-egress_rule_application":"any","sctp-a-ipv6-ingress_rule_protocol":"any","sctp-a-ingress-src_start_port":"0.0","sctp-b-egress-dst_end_port":"65535.0"}};
+ }
+
+ function getVNFInstance(){
+ return {"action":"None","instanceName":"4O61SmpFAdCm1oVEs","instanceId":"66cbb3b5-c823-470c-9520-4e0b85112250","orchStatus":null,"productFamilyId":null,"lcpCloudRegionId":null,"tenantId":null,"modelInfo":{"modelCustomizationName":"VF_vMee 0","modelInvariantId":"vnf-instance-model-invariant-id","modelVersionId":"d6557200-ecf2-4641-8094-5393ae3aae60","modelType":"vnf"},"instanceType":"7538ifdSoTccmbEkr","provStatus":null,"inMaint":true,"uuid":"d6557200-ecf2-4641-8094-5393ae3aae60","originalName":"VF_vMee 0","legacyRegion":null,"lineOfBusiness":null,"platformName":null,"trackById":"VF_vMee 0:004","vfModules":{"vf_vmee0..VfVmee..vmme_vlc..module-1":{"vf_vmee0..VfVmee..vmme_vlc..module-1:008":{"action":"None","instanceName":"ss820f_0918_db","instanceId":"2c1ca484-cbc2-408b-ab86-25a2c15ce280","orchStatus":"deleted","productFamilyId":null,"lcpCloudRegionId":null,"tenantId":null,"modelInfo":{"modelCustomizationName":"VfVmee..vmme_vlc..module-1","modelCustomizationId":"b200727a-1bf9-4e7c-bd06-b5f4c9d920b9","modelInvariantId":"09edc9ef-85d0-4b26-80de-1f569d49e750","modelVersionId":"522159d5-d6e0-4c2a-aa44-5a542a12a830","modelType":"vfModule"},"instanceType":null,"provStatus":null,"inMaint":true,"uuid":"522159d5-d6e0-4c2a-aa44-5a542a12a830","originalName":"VfVmee..vmme_vlc..module-1","legacyRegion":null,"lineOfBusiness":null,"platformName":null,"trackById":"vf_vmee0..VfVmee..vmme_vlc..module-1:008","isBase":false,"volumeGroupName":null}},"dc229cd8-c132-4455-8517-5c1787c18b14":{"dc229cd8-c132-4455-8517-5c1787c18b14:009":{"action":"None","instanceName":"ss820f_0918_base","instanceId":"3ef042c4-259f-45e0-9aba-0989bd8d1cc5","orchStatus":"Assigned","productFamilyId":null,"lcpCloudRegionId":null,"tenantId":null,"modelInfo":{"modelCustomizationId":"8ad8670b-0541-4499-8101-275bbd0e8b6a","modelInvariantId":"1e463c9c-404d-4056-ba56-28fd102608de","modelVersionId":"dc229cd8-c132-4455-8517-5c1787c18b14","modelType":"vfModule"},"instanceType":null,"provStatus":null,"inMaint":false,"uuid":"dc229cd8-c132-4455-8517-5c1787c18b14","originalName":null,"legacyRegion":null,"lineOfBusiness":null,"platformName":null,"trackById":"dc229cd8-c132-4455-8517-5c1787c18b14:009","isBase":true,"volumeGroupName":null}}},"networks":{}};
+ }
+
+ function getVFModule(){
+ return {"uuid":"522159d5-d6e0-4c2a-aa44-5a542a12a830","invariantUuid":"98a7c88b-b577-476a-90e4-e25a5871e02b","customizationUuid":"55b1be94-671a-403e-a26c-667e9c47d091","description":null,"name":"VfVmee..vmme_vlc..module-1","version":"2","modelCustomizationName":"VfVmee..vmme_vlc..module-1","properties":{"minCountInstances":0,"maxCountInstances":null,"initialCount":0,"vfModuleLabel":"vmme_vlc","baseModule":false},"inputs":{},"volumeGroupAllowed":false};
+ }
+
+ function getVFModuleInstance() {
+ return{"action":"None","instanceName":"ss820f_0918_db","instanceId":"2c1ca484-cbc2-408b-ab86-25a2c15ce280","orchStatus":"deleted","productFamilyId":null,"lcpCloudRegionId":null,"tenantId":null,"modelInfo":{"modelCustomizationName":"VfVmee..vmme_vlc..module-1","modelCustomizationId":"b200727a-1bf9-4e7c-bd06-b5f4c9d920b9","modelInvariantId":"09edc9ef-85d0-4b26-80de-1f569d49e750","modelVersionId":"522159d5-d6e0-4c2a-aa44-5a542a12a830","modelType":"vfModule"},"instanceType":null,"provStatus":null,"inMaint":true,"uuid":"522159d5-d6e0-4c2a-aa44-5a542a12a830","originalName":"VfVmee..vmme_vlc..module-1","legacyRegion":null,"lineOfBusiness":null,"platformName":null,"trackById":"vf_vmee0..VfVmee..vmme_vlc..module-1:008","isBase":false,"volumeGroupName":null};
+ }
+
+ function getNetworkModel(){
+ return null;
+ }
+
+ function getNetworkInstance(){
+ return {"action":"None","instanceName":"KADmyK6e3sVWNfGbA","instanceId":"712cad2d-fc1c-40c7-aaff-d2d6e17ac2b6","orchStatus":"Assigned","productFamilyId":null,"lcpCloudRegionId":null,"tenantId":null,"modelInfo":{"modelInvariantId":"network-instance-model-invariant-id","modelVersionId":"ddc3f20c-08b5-40fd-af72-c6d14636b986","modelType":"network"},"instanceType":"CONTRAIL30_BASIC","provStatus":"nvtprov","inMaint":false,"uuid":"ddc3f20c-08b5-40fd-af72-c6d14636b986","originalName":null,"legacyRegion":null,"lineOfBusiness":null,"platformName":null,"trackById":"ddc3f20c-08b5-40fd-af72-c6d14636b986:001"};
+ }
+
+ function getVNFGroupModel(){
+ return {"name":"groupingservicefortest..ResourceInstanceGroup..0","version":"1","uuid":"daeb6568-cef8-417f-9075-ed259ce59f48","invariantUuid":"4bb2e27e-ddab-4790-9c6d-1f731bc14a45","max":1,"min":0,"isEcompGeneratedNaming":true,"type":"VnfGroup","modelCustomizationName":"groupingservicefortest..ResourceInstanceGroup..0","properties":{"contained_resource_type":"VF","role":"SERVICE-ACCESS","function":"DATA","description":"DDD0","type":"LOAD-GROUP","ecomp_generated_naming":"true"},"members":{"vdbe_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","version":"1.0","customizationUuid":"bdb63d23-e132-4ce7-af2c-a493b4cafac9","inputs":{},"commands":{},"properties":{"ecomp_generated_naming":"false"},"type":"Service Proxy","sourceModelUuid":"da7827a2-366d-4be6-8c68-a69153c61274","sourceModelInvariant":"24632e6b-584b-4f45-80d4-fefd75fd9f14","sourceModelName":"vDBE_Svc_vPRS"}}};
+ }
+
+ function getVNFGroupInstance(){
+ return {"originalName":"groupingservicefortest..ResourceInstanceGroup..0","trackById":"groupingservicefortest..ResourceInstanceGroup..0:001","instanceName":"VNF_GROUP1_INSTANCE_NAME","action":"None","instanceId":"VNF_GROUP1_INSTANCE_ID","instanceType":"VNF_GROUP1_INSTANCE_TYPE","orchStatus":"Active","provStatus":null,"inMaint":false,"modelInfo":{"modelType":"instanceGroup","modelCustomizationName":"groupingservicefortest..ResourceInstanceGroup..0","modelInvariantId":"4bb2e27e-ddab-4790-9c6d-1f731bc14a45","modelVersionId":"daeb6568-cef8-417f-9075-ed259ce59f48"},"uuid":"daeb6568-cef8-417f-9075-ed259ce59f48","vnfs":{}};
+ }
+});
diff --git a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.service.ts b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.service.ts
new file mode 100644
index 000000000..cd36ece25
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.service.ts
@@ -0,0 +1,79 @@
+import {Injectable} from "@angular/core";
+import {ModelInformationItem} from "../model-information/model-information.component";
+import {NgRedux} from "@angular-redux/store";
+import {AppState} from "../../store/reducers";
+import {Subscriber} from "../../models/subscriber";
+import {ServiceInfoModel} from "../../server/serviceInfo/serviceInfo.model";
+import * as _ from 'lodash';
+
+@Injectable()
+export class AuditInfoModalComponentService {
+ constructor(private _store: NgRedux<AppState>){}
+
+ getModelInfo(model, instance, serviceModelId: string): ModelInformationItem[] {
+ const serviceInstance = this._store.getState().service.serviceInstance[serviceModelId];
+ const modelInformation = !_.isNil(model) ? [
+ new ModelInformationItem('Model name', 'model_name', [model.name]),
+ new ModelInformationItem('Model version', 'model_version', [model.version]),
+ new ModelInformationItem('Model customization ID', 'model_customization_ID', [model.customizationUuid]),
+ new ModelInformationItem('Base module', 'base_module', [!_.isNil(model.properties) ? model.properties.baseModule : null])
+ ] : [];
+
+ const instanceInfo = !_.isNil(instance) ? [
+ new ModelInformationItem('Instance name', 'instance_name', [instance.instanceName]),
+ new ModelInformationItem('Instance ID', 'instance_ID', [instance.instanceId])
+ ] : [];
+
+ const serviceInfo = !_.isNil(serviceInstance) ? [
+ new ModelInformationItem("Subscriber name", "subscriberName", [this.extractSubscriberNameBySubscriberId(serviceInstance.globalSubscriberId, this._store)]),
+ new ModelInformationItem('Service type', 'service_type', [serviceInstance.subscriptionServiceType])
+ ] : [];
+
+ const result = [modelInformation, instanceInfo, serviceInfo];
+ return _.uniq(_.flatten(result));
+ }
+
+ static createModelInformationItemsJob(serviceModel: ServiceInfoModel): ModelInformationItem[] {
+ return [
+ new ModelInformationItem('Subscriber name', 'subscriberName', [serviceModel.subscriberName]),
+ new ModelInformationItem('Service type', 'serviceType', [serviceModel.serviceType]),
+ new ModelInformationItem('Service model version', 'serviceModelVersion', [serviceModel.serviceModelVersion]),
+ new ModelInformationItem('Service instance name', 'serviceInstanceName', [serviceModel.serviceInstanceName || 'Automatically generated'], '', true),
+ new ModelInformationItem('Service instance ID', 'serviceInstanceId', [serviceModel.serviceInstanceId]),
+ new ModelInformationItem('Requestor User ID', 'userId', [serviceModel.userId]),
+ ];
+ }
+
+ static getInstanceModelName(model) : string {
+ return !_.isNil(model) && model.name ? model.name : '';
+ }
+
+ static setModalTitlesType(type : string) : string {
+ return !_.isNil(type) ? AuditInfoModalComponentService.getTypeMap()[type] : 'Service' ;
+ }
+
+ static getTypeMap(){
+ return {
+ SERVICE : 'Service',
+ VNFGROUP : 'Vnf Group',
+ NETWORK : 'Network',
+ VFMODULE : 'VfModule',
+ VNF : 'VNF'
+ };
+ }
+
+ static setModalTitle(type : string) : string {
+ return !_.isNil(type) ? (AuditInfoModalComponentService.getTypeMap()[type] + " Instantiation Information") : 'Service Instantiation Information';
+ }
+
+ extractSubscriberNameBySubscriberId(subscriberId: string, store: NgRedux<AppState>) {
+ let result: string = null;
+ let filteredArray: any = _.filter(store.getState().service.subscribers, function (o: Subscriber) {
+ return o.id === subscriberId
+ });
+ if (filteredArray.length > 0) {
+ result = filteredArray[0].name;
+ }
+ return result;
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.spec.ts b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.spec.ts
new file mode 100644
index 000000000..ecce68daf
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.spec.ts
@@ -0,0 +1,203 @@
+import {ComponentFixture, TestBed} from '@angular/core/testing';
+import {ContextMenuModule, ContextMenuService} from 'ngx-contextmenu';
+import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
+import {AuditInfoModalComponent} from "./auditInfoModal.component";
+import {NgRedux} from "@angular-redux/store";
+import {FeatureFlagsService} from "../../services/featureFlag/feature-flags.service";
+import {AaiService} from "../../services/aaiService/aai.service";
+import {HttpClientTestingModule} from "@angular/common/http/testing";
+import {ScrollToModule} from "@nicky-lenaers/ngx-scroll-to";
+import {RouterTestingModule} from "@angular/router/testing";
+import {ModalModule} from "ngx-bootstrap";
+import {CapitalizeAndFormatPipe} from "../../pipes/capitalize/capitalize-and-format.pipe";
+import {ServiceInfoService} from "../../server/serviceInfo/serviceInfo.service";
+import {IframeService} from "../../utils/iframe.service";
+import {AuditInfoModalComponentService} from "./auditInfoModal.component.service";
+import {ServiceInfoModel} from "../../server/serviceInfo/serviceInfo.model";
+import {HttpClient} from '@angular/common/http';
+import {getTestBed} from "@angular/core/testing";
+import {of} from 'rxjs';
+
+class MockAppStore<T> {
+ getState() {
+ return {
+ global: {
+ flags: {
+ 'FLAG_1902_NEW_VIEW_EDIT': true
+ }
+ },
+ service: {
+ serviceInstance: {}
+ }
+ }
+ }
+
+ dispatch() {
+
+ }
+}
+
+
+describe('Audit Info Modal Component_serviceInfoService', () => {
+ let component: AuditInfoModalComponent;
+ let fixture: ComponentFixture<AuditInfoModalComponent>;
+ let _serviceInfoService: ServiceInfoService;
+ let injector;
+ beforeAll(done => (async () => {
+
+ TestBed.configureTestingModule({
+ imports: [
+ HttpClientTestingModule,
+ ContextMenuModule,
+ ScrollToModule.forRoot(),
+ RouterTestingModule,
+ ModalModule.forRoot()
+ ],
+ providers: [
+ ServiceInfoService,
+ AaiService,
+ IframeService,
+ AuditInfoModalComponentService,
+ ContextMenuService,
+ FeatureFlagsService,
+ {provide: NgRedux, useClass: MockAppStore}
+ ],
+ declarations: [AuditInfoModalComponent, CapitalizeAndFormatPipe],
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ _serviceInfoService = injector.get(ServiceInfoService);
+ fixture = TestBed.createComponent(AuditInfoModalComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ })().then(done).catch(done.fail));
+
+
+ test('component should be defined', () => {
+ expect(component).toBeDefined();
+ });
+
+ test('setModalTitles should set modal title according to type', () => {
+ component.setModalTitles('VNF');
+ expect(component.type).toEqual('VNF');
+ expect(component.title).toEqual('VNF Instantiation Information');
+ });
+
+ test('initializeProperties should init some component properties', () => {
+ component.initializeProperties();
+ expect(component.modelInfoItems).toBeNull();
+ expect(component.vidInfoData).toEqual([]);
+ expect(component.msoInfoData).toEqual([]);
+ expect(component.isLoading).toEqual(true);
+ });
+
+ test('openAuditInfoModal', () => {
+ const jobData: ServiceInfoModel = new ServiceInfoModel();
+ spyOn(AuditInfoModalComponentService, 'createModelInformationItemsJob');
+ spyOn(component, 'initAuditInfoData');
+ spyOn(component.auditInfoModal, 'show');
+ component.openAuditInfoModal(jobData);
+
+ expect(AuditInfoModalComponentService.createModelInformationItemsJob).toHaveBeenCalledWith(jobData);
+ expect(component.initAuditInfoData).toHaveBeenCalledWith(jobData);
+ expect(component.auditInfoModal.show).toHaveBeenCalled();
+ });
+
+ test('onCancelClick', () => {
+ spyOn(component, 'initializeProperties');
+ spyOn(component.auditInfoModal, 'hide');
+ component.onCancelClick();
+
+ expect(component.initializeProperties).toHaveBeenCalledWith();
+ expect(component.auditInfoModal.hide).toHaveBeenCalled();
+ });
+
+ test('openInstanceAuditInfoModal calls to getAuditStatusForRetry function', () => {
+ spyOn(component.auditInfoModalComponentService, 'getModelInfo').and.returnValue([]);
+ spyOn(component, 'initializeProperties');
+ spyOn(component, 'setModalTitles');
+ spyOn(component.auditInfoModal, 'show');
+ spyOn(_serviceInfoService, 'getAuditStatusForRetry');
+ jest.spyOn(_serviceInfoService, 'getAuditStatusForRetry').mockReturnValue(of([]))
+
+ spyOn(AuditInfoModalComponentService, 'getInstanceModelName');
+ const instanceId: string = "instanceID";
+ const type: string = 'VNF';
+ const model = {};
+ const instance = {};
+ const isInstanceFailed: boolean = true;
+ const trackById = "trackById";
+
+ AuditInfoModalComponent.openInstanceAuditInfoModal.next({
+ instanceId: instanceId,
+ type: type,
+ model: model,
+ instance: instance,
+ isInstanceFailed: isInstanceFailed,
+ trackById: trackById
+ });
+
+ expect(component.showVidStatus).toEqual(false);
+ expect(component.initializeProperties).toHaveBeenCalled();
+ expect(component.setModalTitles).toHaveBeenCalled();
+ expect(_serviceInfoService.getAuditStatusForRetry).toHaveBeenCalledWith(trackById);
+ expect(component.auditInfoModal.show).toHaveBeenCalled();
+ expect(AuditInfoModalComponentService.getInstanceModelName).toHaveBeenCalledWith(model);
+ });
+
+ test('openInstanceAuditInfoModal calls to getInstanceAuditStatus function', () => {
+ spyOn(component.auditInfoModalComponentService, 'getModelInfo').and.returnValue([]);
+ spyOn(component, 'initializeProperties');
+ spyOn(component, 'setModalTitles');
+ spyOn(component.auditInfoModal, 'show');
+ spyOn(_serviceInfoService, 'getAuditStatusForRetry');
+ jest.spyOn(_serviceInfoService, 'getInstanceAuditStatus').mockReturnValue(of([]))
+
+ spyOn(AuditInfoModalComponentService, 'getInstanceModelName');
+ const instanceId: string = "instanceID";
+ const type: string = 'VNF';
+ const model = {};
+ const instance = {};
+ const isInstanceFailed: boolean = false;
+ const trackById = "trackById";
+
+ AuditInfoModalComponent.openInstanceAuditInfoModal.next({
+ instanceId: instanceId,
+ type: type,
+ model: model,
+ instance: instance,
+ isInstanceFailed: isInstanceFailed,
+ trackById: trackById
+ });
+
+ expect(component.showVidStatus).toEqual(false);
+ expect(component.initializeProperties).toHaveBeenCalled();
+ expect(component.setModalTitles).toHaveBeenCalled();
+ expect(_serviceInfoService.getInstanceAuditStatus).toHaveBeenCalledWith(instanceId, type);
+ expect(component.auditInfoModal.show).toHaveBeenCalled();
+ expect(AuditInfoModalComponentService.getInstanceModelName).toHaveBeenCalledWith(model);
+ });
+
+ test('openInstanceAuditInfoModal : openModal : with job data', () => {
+ spyOn(component.auditInfoModalComponentService, 'getModelInfo').and.returnValue([]);
+ spyOn(component, 'initializeProperties');
+ spyOn(component.auditInfoModal, 'show');
+ spyOn(AuditInfoModalComponentService, 'getInstanceModelName');
+ const jobData: ServiceInfoModel = new ServiceInfoModel();
+ jobData.aLaCarte = true;
+ AuditInfoModalComponent.openModal.next(jobData);
+
+ expect(component.showVidStatus).toEqual(true);
+ expect(component.initializeProperties).toHaveBeenCalled();
+ expect(component.auditInfoModal.show).toHaveBeenCalled();
+ });
+
+ test('openInstanceAuditInfoModal : openModal : without job data', () => {
+ spyOn(component.auditInfoModal, 'hide');
+ const jobData: ServiceInfoModel = null;
+ AuditInfoModalComponent.openModal.next(jobData);
+ expect(component.auditInfoModal.hide).toHaveBeenCalled();
+ });
+});
diff --git a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.ts b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.ts
new file mode 100644
index 000000000..cf385d767
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.ts
@@ -0,0 +1,122 @@
+import {Component, ViewChild} from '@angular/core';
+import {Subject} from 'rxjs/Subject';
+import {ModalDirective} from 'ngx-bootstrap'
+import {ModelInformationItem} from '../model-information/model-information.component';
+import {ServiceModel} from '../../models/serviceModel';
+import {ServiceInfoService} from '../../server/serviceInfo/serviceInfo.service';
+import {ServiceInfoModel} from '../../server/serviceInfo/serviceInfo.model';
+import {AuditStatus} from '../../server/serviceInfo/AuditStatus.model';
+import {IframeService} from "../../utils/iframe.service";
+import {NgRedux} from "@angular-redux/store";
+import {AppState} from "../../store/reducers";
+import {AuditInfoModalComponentService} from "./auditInfoModal.component.service";
+
+@Component({
+ selector: 'audit-info-modal',
+ templateUrl: './auditInfoModal.component.html',
+ styleUrls: ['./auditInfoModal.component.scss']
+})
+export class AuditInfoModalComponent {
+ static openModal: Subject<ServiceInfoModel> = new Subject<ServiceInfoModel>();
+ static openInstanceAuditInfoModal: Subject<{instanceId , type, model, instance, isInstanceFailed?, trackById?}> = new Subject<{instanceId , type, model, instance, isInstanceFailed, trackById}>();
+ @ViewChild('auditInfoModal') public auditInfoModal: ModalDirective;
+ title: string = 'Service Instantiation Information';
+ modelInfoItems: ModelInformationItem[] = [];
+ serviceModel: ServiceModel;
+ serviceModelName: string;
+ vidInfoData: AuditStatus[] = [];
+ msoInfoData: AuditStatus[] = [];
+ isAlaCarte: boolean;
+ parentElementClassName = 'content';
+ isLoading = true;
+ model: any;
+ instanceId: string;
+ isALaCarteFlagOn: boolean;
+ type : string = "Service";
+ showVidStatus : boolean = true;
+ auditInfoModalComponentService : AuditInfoModalComponentService;
+ constructor(private _serviceInfoService: ServiceInfoService, private _iframeService : IframeService,
+ private _auditInfoModalComponentService : AuditInfoModalComponentService,
+ private store: NgRedux<AppState>) {
+ this.auditInfoModalComponentService = this._auditInfoModalComponentService;
+ AuditInfoModalComponent.openModal.subscribe((jobData: ServiceInfoModel) => {
+ this.isALaCarteFlagOn = this.store.getState().global.flags['FLAG_A_LA_CARTE_AUDIT_INFO'];
+ this.initializeProperties();
+ this.showVidStatus = true;
+ if (jobData) {
+ this.isAlaCarte = jobData.aLaCarte;
+ this.openAuditInfoModal(jobData);
+ _iframeService.addClassOpenModal(this.parentElementClassName);
+ this.serviceModelName = jobData.serviceModelName ? jobData.serviceModelName : '';
+ this.auditInfoModal.show();
+ } else {
+ _iframeService.removeClassCloseModal(this.parentElementClassName);
+ this.auditInfoModal.hide();
+ }
+ });
+
+ AuditInfoModalComponent.openInstanceAuditInfoModal.subscribe(({instanceId , type , model, instance, isInstanceFailed, trackById}) => {
+ this.showVidStatus = false;
+ this.initializeProperties();
+ this.setModalTitles(type);
+ this.serviceModelName = AuditInfoModalComponentService.getInstanceModelName(model);
+
+ if (isInstanceFailed) {
+ this._serviceInfoService.getAuditStatusForRetry(trackById).subscribe((res: AuditStatus) => {
+ this.msoInfoData = [res];
+ });
+ }else{
+ this._serviceInfoService.getInstanceAuditStatus(instanceId, type).subscribe((res : AuditStatus[]) =>{
+ this.msoInfoData = res;
+ });
+ }
+ this.modelInfoItems = this.auditInfoModalComponentService.getModelInfo(model, instance, instanceId);
+ _iframeService.addClassOpenModal(this.parentElementClassName);
+ this.auditInfoModal.show();
+ });
+ }
+
+
+ setModalTitles(type : string) : void{
+ this.type = AuditInfoModalComponentService.setModalTitlesType(type) ;
+ this.title = AuditInfoModalComponentService.setModalTitle(type);
+ }
+
+ initializeProperties() : void {
+ this.modelInfoItems = null;
+ this.vidInfoData = [];
+ this.msoInfoData = [];
+ this.isLoading = true;
+ }
+
+ openAuditInfoModal(jobData: ServiceInfoModel): void {
+ this.modelInfoItems = AuditInfoModalComponentService.createModelInformationItemsJob(jobData);
+ this.initAuditInfoData(jobData);
+ this.auditInfoModal.onHide.subscribe(()=>{
+ this._iframeService.removeClassCloseModal(this.parentElementClassName);
+ this.initializeProperties();
+ });
+ this.auditInfoModal.show();
+ }
+
+ initAuditInfoData(jobData: ServiceInfoModel) {
+ this._serviceInfoService.getJobAuditStatus(jobData)
+ .subscribe((res: AuditStatus[][]) => {
+ this.vidInfoData = res[0];
+ this.msoInfoData = res[1];
+ this.isLoading = false;
+ });
+ }
+
+ onCancelClick() {
+ this._iframeService.removeClassCloseModal(this.parentElementClassName);
+ this.initializeProperties();
+ this.auditInfoModal.hide();
+ }
+
+
+ onNavigate(){
+ window.open("https://wiki.onap.org/display/DW/SO+Building+blocks", "_blank");
+ }
+}
+
diff --git a/vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.component.spec.ts b/vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.component.spec.ts
new file mode 100644
index 000000000..6194aad5e
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.component.spec.ts
@@ -0,0 +1,157 @@
+import {HttpClientTestingModule, HttpTestingController} from "@angular/common/http/testing";
+import {DynamicInputsComponent} from "./dynamic-inputs.component";
+import {async, ComponentFixture, getTestBed, TestBed} from "@angular/core/testing";
+import {CUSTOM_ELEMENTS_SCHEMA} from "@angular/core";
+import {FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, ValidatorFn} from "@angular/forms";
+import {BrowserModule} from "@angular/platform-browser";
+import {CommonModule} from "@angular/common";
+import {RouterTestingModule} from "@angular/router/testing";
+import {DynamicInputLabelPipe} from "../../pipes/dynamicInputLabel/dynamic-input-label.pipe";
+import {DynamicNumber} from "../../models/dynamicInput";
+
+
+describe('DynamicInputs Component', () => {
+ let component: DynamicInputsComponent;
+ let fixture: ComponentFixture<DynamicInputsComponent>;
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ imports: [BrowserModule, CommonModule, FormsModule, HttpClientTestingModule, RouterTestingModule, ReactiveFormsModule],
+ declarations: [DynamicInputsComponent, DynamicInputLabelPipe],
+ providers : [FormBuilder],
+ schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
+ });
+ await TestBed.compileComponents();
+
+ fixture = TestBed.createComponent(DynamicInputsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ })().then(done).catch(done.fail));
+
+ test('should be defined', () => {
+ expect(component).toBeDefined();
+ });
+
+ test('isDynamicNumber should return item', () => {
+ let options = {
+ minLength : 10,
+ maxLength : 10
+ };
+
+ let dynamicNumber : DynamicNumber = new DynamicNumber(<any>options);
+ expect(component.isDynamicNumber(dynamicNumber)).toBeDefined();
+ });
+
+ test('buildValidators should return validator', () => {
+ let options = {
+ minLength : 10,
+ maxLength : 10,
+ max : 10,
+ min : 1
+ };
+
+ let dynamicNumber : DynamicNumber = new DynamicNumber(<any>options);
+ let validator : ValidatorFn = component.buildValidators(dynamicNumber);
+ expect(validator).toBeDefined();
+ });
+
+
+ test('ngOnInit', ()=>{
+ component.group = new FormGroup({
+
+ });
+ component.list = [
+ {
+ type : 'select',
+ value : 'optionName',
+ name : 'multiSelectControl',
+ optionList : [{
+ isDataLoading : true,
+ name : 'optionName',
+ id : 'id'
+ }]
+ },
+ {
+ type : 'select',
+ value : 'optionName',
+ name : 'multiSelectControl',
+ optionList : [{
+ isDataLoading : true,
+ name : 'optionName',
+ id : 'id'
+ }]
+ },
+ {
+ type : 'multi_select',
+ value : 'optionName',
+ name : 'selectControl',
+ optionList : [{
+ isDataLoading : true,
+ name : 'optionName',
+ id : 'id'
+ }]
+ },
+ {
+ type : 'multi_select',
+ value : 'optionName',
+ name : 'selectControl',
+ optionList : [{
+ isDataLoading : true,
+ name : 'optionName'
+ }]
+ },
+ {
+ type : 'boolean',
+ value : true,
+ name : 'booleanControl'
+ },
+ {
+ type : 'boolean',
+ name : 'booleanControl2'
+ },
+ {
+ type : 'number',
+ value : 100,
+ name : 'numberControl'
+ },
+ {
+ type : 'file',
+ value : 'someValue',
+ name : 'fileControl'
+ },
+ {
+ type : 'checkbox',
+ value : true,
+ name : 'checkboxControl'
+ },
+ {
+ type : 'map',
+ value : true,
+ name : 'mapControl'
+ },
+ {
+ type : 'list',
+ value : true,
+ name : 'listControl'
+ },
+ {
+ type : 'default',
+ value : true,
+ name : 'defaultControl'
+ }
+ ];
+
+ component.ngOnInit();
+ expect(component.group.controls['multiSelectControl'].value).toEqual('id');
+ expect(component.group.controls['selectControl'].value).toEqual('optionName');
+ expect(component.group.controls['booleanControl'].value).toEqual(true);
+ expect(component.group.controls['booleanControl2'].value).toEqual(false);
+ expect(component.group.controls['numberControl'].value).toEqual(100);
+ expect(component.group.controls['fileControl'].value).toEqual('someValue');
+ expect(component.group.controls['checkboxControl'].value).toEqual(true);
+ expect(component.group.controls['mapControl'].value).toEqual(true);
+ expect(component.group.controls['listControl'].value).toEqual(true);
+ expect(component.group.controls['defaultControl'].value).toEqual(true);
+ })
+
+});
diff --git a/vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.component.ts b/vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.component.ts
new file mode 100644
index 000000000..096a51eb7
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.component.ts
@@ -0,0 +1,80 @@
+import {Component, Input, OnInit} from '@angular/core';
+import {FormControl, FormGroup, Validators} from "@angular/forms";
+import {DynamicInput, DynamicMultiSelect, DynamicNumber, DynamicSelect} from "../../models/dynamicInput";
+
+@Component({
+ selector: 'dynamic-inputs',
+ templateUrl: './dynamic-inputs.html',
+ styleUrls: ['./dynamic-inputs.scss']
+})
+
+export class DynamicInputsComponent implements OnInit{
+ @Input() public list:any[] = [];
+ @Input() public group: FormGroup;
+
+ private dynamicList:DynamicInput<any>[] = [];
+
+ isDynamicNumber(item: any): item is DynamicNumber {
+ return item;
+ }
+
+ buildValidators(item: DynamicInput<any>) {
+ let validatorArr = [];
+ item.maxLength && validatorArr.push(Validators.maxLength(item.maxLength));
+ item.minLength && validatorArr.push(Validators.minLength(item.minLength));
+ if(this.isDynamicNumber(item)) {
+ item.max && validatorArr.push(Validators.max(item.max));
+ item.min && validatorArr.push(Validators.min(item.min));
+ }
+ return Validators.compose(validatorArr);
+ }
+
+ ngOnInit(): void {
+ this.list.forEach((item)=> {
+ let dynamicItem: DynamicInput<any>;
+ switch (item.type) {
+ case 'multi_select':
+ item.optionList.forEach(function(option) { option.id = option.id||option.name;
+ option.itemName = option.name;});
+ item.settings = {
+ disabled: !item.isEnabled,
+ text: item.prompt,
+ };
+ dynamicItem = new DynamicMultiSelect(item);
+ break;
+ case 'select':
+ let defaultValue:any = item.optionList.find((option) => option.isDataLoading && option.name);
+ item.value = defaultValue && defaultValue.id;
+ dynamicItem = new DynamicSelect(item);
+ break;
+ case 'boolean':
+ item.value = item.value || false;
+ item.optionList = [{name: true, isPermitted: true, isDataLoading: item.value}, {name: false, isPermitted: true, isDataLoading: !item.value}];
+
+ dynamicItem = new DynamicSelect(item);
+ break;
+ case 'number':
+ dynamicItem = new DynamicNumber(item);
+ break;
+ case 'file':
+ dynamicItem = new DynamicInput<any>(item);
+ break;
+ case 'checkbox':
+ dynamicItem = new DynamicInput<boolean>(item);
+ break;
+ case 'map':
+ item.prompt = "{<key1>: <value1>,\.\.\.,<keyN>: <valueN>}";
+ dynamicItem = new DynamicInput<string>(item);
+ break;
+ case 'list':
+ item.prompt = "[<value1>,...,<valueN>]";
+ dynamicItem = new DynamicInput<string>(item);
+ break;
+ default: dynamicItem = new DynamicInput<string>(item);
+ }
+ this.dynamicList.push(dynamicItem);
+ this.group.addControl(dynamicItem.name, new FormControl({value: dynamicItem.value, disabled: !dynamicItem.isEnabled}, this.buildValidators(dynamicItem)));
+ })
+ }
+
+}
diff --git a/vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.html b/vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.html
new file mode 100644
index 000000000..740b798e4
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.html
@@ -0,0 +1,22 @@
+<div *ngFor="let item of dynamicList">
+ <div id="{{item.id}}" class="details-item" [ngSwitch]="item.type" [formGroup]="group" [hidden]="!item.isVisible">
+ <label [ngClass]="{'required' : item.isRequired && item.isVisible}">{{item.name | dynamicInputLabel }}</label>
+ <select *ngSwitchCase="item.type === 'select'|| item.type === 'boolean'? item.type: ''" name="{{item.name}}" class="form-control input-text" [formControlName]="item.name" title="{{item.description}}" [required]="item.isRequired && item.isVisible" maxlength="{{item.maxLength}}" minlength="{{item.minLength}}">
+ <option value="null" [selected]="item.value == null || item.value == undefined" hidden disabled>{{item.prompt}}</option>
+ <option *ngFor="let option of item.optionList" [ngValue]="option.id || option.name" [disabled]="!option.isPermitted" [selected]="option.isDataLoading">{{option.name}}</option>
+ </select>
+ <angular2-multiselect *ngSwitchCase="'multi_select'" [formControlName]="item.name" [(ngModel)]="item.selectedItems" [data]="item.optionList" [settings]="item.settings" title="{{item.description}}" [required]="item.isRequired && item.isVisible"></angular2-multiselect>
+ <input *ngSwitchCase="'number'" name="{{item.name}}" class="form-control input-text" [formControlName]="item.name" type="number" placeholder="{{item.prompt}}" title="{{item.description}}" min="{{item.min}}" max="{{item.max}}" [readonly]="item.isReadOnly" [required]="item.isRequired && item.isVisible">
+ <div *ngSwitchCase="'file'">
+
+ <label class="dynamicFileName" for="dynamicFileInput-{{item.name}}">
+ <input id="dynamicFileInput-{{item.name}}" name="{{item.name}}" class="form-control input-text" [formControlName]="item.name" type="file" placeholder="{{item.prompt}}" [readonly]="item.isReadOnly" [required]="item.isRequired && item.isVisible">
+ <label for="dynamicFileInput-{{item.name}}" class="labelForImage">
+ <span class="icon-browse"></span>
+ </label>
+ </label>
+ </div>
+ <input *ngSwitchCase="'checkbox'" name="{{item.name}}" [formControlName]="item.name" type="checkbox" data-toggle="toggle" title="{{item.description}}" [readonly]="item.isReadOnly" [required]="item.isRequired && item.isVisible">
+ <input *ngSwitchDefault name="{{item.name}}" class="form-control input-text" [formControlName]="item.name" placeholder="{{item.prompt}}" title="{{item.description}}" maxlength="{{item.maxLength}}" minlength="{{item.minLength}}" [readonly]="item.isReadOnly" [required]="item.isRequired && item.isVisible"/>
+ </div>
+</div>
diff --git a/vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.scss b/vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.scss
new file mode 100644
index 000000000..11a141420
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/dynamic-inputs/dynamic-inputs.scss
@@ -0,0 +1,58 @@
+input[type=file] {
+ opacity: 0;
+ position: relative;
+ z-index: 1;
+ width: 0.5px;
+ height: 0.5px;
+ display: inline-block;
+ input {
+ display: none;
+ }
+}
+
+.dynamicFileName {
+ width: 100%;
+ height: 34px;
+ background: #FFFFFF;
+ border: 1px solid #D2D2D2;
+ border-radius: 2px;
+ display: inline-block;
+ line-height: 34px;
+ font-weight: normal !important;
+ padding-left: 3px;
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.labelForImage {
+ background: #F2F2F2;
+ border-left: 1px solid #D2D2D2;
+ float: right;
+ height: 32px;
+}
+
+.icon-browse:before {
+ content: "\e90d";
+ color: #5A5A5A;
+ font-size: 15px;
+ cursor: pointer;
+ width: 34px;
+ height: 100%;
+ line-height: 34px;
+ text-align: center;
+ display: inline-block;
+ vertical-align: super;
+ border-radius: 2px;
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+
+.icon-browse:hover::before {
+ background-color: #E6F6FB;
+ color: #009FDB;
+}
+
+.icon-browse:active::before {
+ background-color: #E6F6FB;
+ color: #009FDB;
+}
diff --git a/vid-webpack-master/src/app/shared/components/ellipsis/ellipsis.component.ts b/vid-webpack-master/src/app/shared/components/ellipsis/ellipsis.component.ts
index fd58b6507..bce06953c 100644
--- a/vid-webpack-master/src/app/shared/components/ellipsis/ellipsis.component.ts
+++ b/vid-webpack-master/src/app/shared/components/ellipsis/ellipsis.component.ts
@@ -1,12 +1,17 @@
-import { Component, Input } from '@angular/core';
+import {Component, Input, OnChanges, SimpleChanges} from '@angular/core';
+import {HighlightPipe} from "../../pipes/highlight/highlight-filter.pipe";
+import * as _ from 'lodash';
@Component({
selector : 'custom-ellipsis',
template: `
- <span
+ <span
+ sdc-tooltip
class="ellipsis"
id="{{id}}"
- tooltip="{{value}}">{{value}}</span>`,
+ [innerHtml]="displayValue | safe : 'html'"
+ [tooltip-text]="value">
+ </span>`,
styles : [
`
.ellipsis {
@@ -18,10 +23,23 @@ import { Component, Input } from '@angular/core';
text-align: left;
}
`
- ]
+ ],
+ providers : [HighlightPipe]
})
-export class EllipsisComponent {
+export class EllipsisComponent implements OnChanges{
@Input() value : string;
@Input() id : string;
+ @Input() hightlight : string;
+ displayValue : string;
+ constructor(private _highlightPipe : HighlightPipe){
+ this.displayValue = this.value;
+ }
+
+ ngOnChanges(changes: SimpleChanges): void {
+ this.displayValue = this.value;
+ if(!_.isNil(this.hightlight)){
+ this.displayValue = this._highlightPipe.transform(this.value ,this.hightlight ? this.hightlight : '');
+ }
+ }
}
diff --git a/vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.html b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.html
new file mode 100644
index 000000000..6fb46c256
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.html
@@ -0,0 +1,5 @@
+<div [attr.data-tests-id]="'error-msg-wrapper'" class="error-msg-wrapper" *ngIf="errorMsgService?.errorMsgObject">
+ <div class="title" [attr.data-tests-id]="'error-msg-title'">{{errorMsgService?.errorMsgObject?.title}}</div>
+ <div class="sub-title" [attr.data-tests-id]="'error-msg-sub-title'">{{errorMsgService?.errorMsgObject?.subtitle}}</div>
+ <div *ngIf="errorMsgService?.errorMsgObject?.description" class="description" [attr.data-tests-id]="'error-msg-description'">{{errorMsgService?.errorMsgObject?.description}}</div>
+</div>
diff --git a/vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.scss b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.scss
new file mode 100644
index 000000000..98c7e8480
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.scss
@@ -0,0 +1,22 @@
+.error-msg-wrapper{
+ display: block;
+ border-top: 6px solid #CF2A2A;
+ border-bottom: 1px solid #D2D2D2;
+ padding: 20px 45px;
+ font-family: OpenSans-Regular;
+ font-size: 14px;
+ .title{
+ color: #CF2A2A;
+ margin-bottom: 10px;
+ font-family: OpenSans-SemiBold;
+ font-size: 16px;
+ }
+ .sub-title{
+ color: #CF2A2A;
+ margin-bottom: 5px;
+ }
+ .description{
+ color: #191919;
+ }
+}
+
diff --git a/vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.spec.ts b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.spec.ts
new file mode 100644
index 000000000..2ca72c533
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.spec.ts
@@ -0,0 +1,48 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {ComponentFixture, TestBed} from '@angular/core/testing';
+import { ErrorMsgComponent } from './error-msg.component';
+import {ErrorMsgService} from "./error-msg.service";
+import {ErrorMsgObject} from "./error-msg.model";
+
+describe('ErrorMsgComponent', () => {
+
+ let component: ErrorMsgComponent;
+ let fixture: ComponentFixture<ErrorMsgComponent>;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ErrorMsgComponent],
+ providers: [ErrorMsgService]
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ErrorMsgComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ test('should create', () => {
+ expect(component).toBeTruthy();
+ });
+
+ test('should triggerShowError fill error msg object', () => {
+ let errorMsgObj:ErrorMsgObject = new ErrorMsgObject("Title", "SubTitle", "Description")
+ component.errorMsgService.triggerShowError.next(errorMsgObj);
+ let errorMsg = component.errorMsgService.errorMsgObject;
+ expect(errorMsg).toBeDefined();
+ expect(errorMsg.title).toBe('Title');
+ expect(errorMsg.subtitle).toBe('SubTitle');
+ expect(errorMsg.description).toBe('Description');
+ });
+
+ test('should triggerClearError delete error msg object', () => {
+ let errorMsgObj:ErrorMsgObject = new ErrorMsgObject("Title", "SubTitle", "Description")
+ component.errorMsgService.triggerShowError.next(errorMsgObj);
+ let errorMsg = component.errorMsgService.errorMsgObject;
+ expect(errorMsg).toBeDefined();
+ component.errorMsgService.triggerClearError.next();
+ expect(component.errorMsgService.errorMsgObject).toBeNull();
+
+ });
+});
diff --git a/vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.ts b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.ts
new file mode 100644
index 000000000..e47a06ca6
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.component.ts
@@ -0,0 +1,28 @@
+import {Component, OnChanges, SimpleChanges} from '@angular/core';
+import {ErrorMsgService} from "./error-msg.service";
+import {ErrorMsgObject} from "./error-msg.model";
+
+@Component({
+ selector: 'error-msg',
+ templateUrl: './error-msg.component.html',
+ styleUrls: ['./error-msg.component.scss']
+})
+
+export class ErrorMsgComponent implements OnChanges {
+
+ errorMsgService: ErrorMsgService;
+ constructor(private _errorMsgService: ErrorMsgService) {
+ this.errorMsgService = _errorMsgService;
+ this._errorMsgService.triggerShowError.subscribe((error: ErrorMsgObject) => {
+ this.errorMsgService.errorMsgObject = error;
+ });
+
+ this._errorMsgService.triggerClearError.subscribe(() => {
+ this.errorMsgService.errorMsgObject = null;
+ });
+ }
+
+ ngOnChanges(changes: SimpleChanges): void {
+ }
+}
+
diff --git a/vid-webpack-master/src/app/shared/components/error-msg/error-msg.model.ts b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.model.ts
new file mode 100644
index 000000000..0cdb74290
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.model.ts
@@ -0,0 +1,11 @@
+export class ErrorMsgObject {
+ title: string;
+ subtitle: string;
+ description: string;
+
+ constructor(title: string, subtitle: string, description: string) {
+ this.title = title;
+ this.subtitle = subtitle;
+ this.description = description;
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/error-msg/error-msg.service.spec.ts b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.service.spec.ts
new file mode 100644
index 000000000..faaef8d41
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.service.spec.ts
@@ -0,0 +1,38 @@
+import {TestBed, getTestBed } from '@angular/core/testing';
+import {ErrorMsgService} from "./error-msg.service";
+
+describe('Error msg Service', () => {
+ let injector;
+ let service: ErrorMsgService;
+
+ beforeAll(done => (async () => {
+
+ TestBed.configureTestingModule(
+ {
+ providers: [
+ ErrorMsgService
+ ]
+ });
+ await TestBed.compileComponents();
+ injector = getTestBed();
+ service = injector.get(ErrorMsgService);
+ })().then(done).catch(done.fail));
+
+ test('should return error msg object when call to getScalingErrorObject', () => {
+ let errorMsgObject = service.getScalingErrorObject();
+ expect(errorMsgObject).toBeDefined();
+ expect(errorMsgObject.title).toBe('Error : Too many members');
+ expect(errorMsgObject.subtitle).toBe('One or more VNF groups, marked below, exceeds the maximum allowed number of members to associate');
+ expect(errorMsgObject.description).toBe('Please make sure the total amount of VNF instances is less than that amount.');
+ });
+
+ test('should return error msg object when call to getRetryErrorObject', () => {
+ let errorMsgObject = service.getRetryErrorObject(1);
+ expect(errorMsgObject).toBeDefined();
+ expect(errorMsgObject.title).toBe('ERROR!');
+ expect(errorMsgObject.subtitle).toBe(`Attention: You are currently viewing instances from the MSO. \n 1 of the instances failed, please try again.`);
+ expect(errorMsgObject.description).toBe(null);
+ });
+
+});
+
diff --git a/vid-webpack-master/src/app/shared/components/error-msg/error-msg.service.ts b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.service.ts
new file mode 100644
index 000000000..e1bcd423f
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/error-msg/error-msg.service.ts
@@ -0,0 +1,22 @@
+import {Injectable} from '@angular/core';
+import {Subject} from 'rxjs/Subject';
+import {ErrorMsgObject} from "./error-msg.model";
+
+@Injectable()
+export class ErrorMsgService {
+ triggerShowError: Subject<ErrorMsgObject> = new Subject<ErrorMsgObject>();
+ triggerClearError: Subject<boolean> = new Subject<boolean>();
+ errorMsgObject: ErrorMsgObject = null;
+
+ getScalingErrorObject(): ErrorMsgObject {
+ return new ErrorMsgObject("Error : Too many members",
+ "One or more VNF groups, marked below, exceeds the maximum allowed number of members to associate",
+ "Please make sure the total amount of VNF instances is less than that amount.");
+ }
+
+ getRetryErrorObject(numberOfFailed: number): ErrorMsgObject {
+ return new ErrorMsgObject("ERROR!",
+ `Attention: You are currently viewing instances from the MSO. \n ${numberOfFailed} of the instances failed, please try again.`,
+ null);
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/error/error.component.service.ts b/vid-webpack-master/src/app/shared/components/error/error.component.service.ts
index 35b83f0b6..c573d16e9 100644
--- a/vid-webpack-master/src/app/shared/components/error/error.component.service.ts
+++ b/vid-webpack-master/src/app/shared/components/error/error.component.service.ts
@@ -1,18 +1,16 @@
import {Injectable} from "@angular/core";
-import {Subject} from "rxjs/Subject";
-import { MessageBoxService } from '../messageBox/messageBox.service';
-import { MessageBoxData, ModalSize, ModalType } from '../messageBox/messageBox.data';
-
+import {MessageBoxService } from '../messageBox/messageBox.service';
+import {MessageBoxData} from '../messageBox/messageBox.data';
+import { SdcUiCommon} from "onap-ui-angular";
@Injectable()
export class ErrorService {
static showErrorWithMessage(error : ErrorMessage) : void {
setTimeout(()=>{
let messageBoxData : MessageBoxData = new MessageBoxData(
- error.title, // modal title
+ error.title,
error.text,
-
- ModalType.error,
- ModalSize.medium,
+ SdcUiCommon.ModalType.error,
+ SdcUiCommon.ModalSize.medium,
[
{text:"Close", size:"large", closeModal:true}
]);
@@ -33,3 +31,4 @@ export class ErrorMessage {
this.errorNumber = errorNumber;
}
}
+
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.html b/vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.html
new file mode 100644
index 000000000..26362ebed
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.html
@@ -0,0 +1,11 @@
+<div class="details-item">
+ <input type="checkbox"
+ id="{{data?.dataTestId}}"
+ [attr.data-tests-id]="data?.dataTestId"
+ [checked]="data?.value"
+ name="{{data?.controlName}}"
+ [formControl]="form?.controls[data?.controlName]"
+ data-toggle="toggle">
+ <label class="checkbox-label"
+ for="{{data?.dataTestId}}">{{data?.displayName}}</label>
+</div>
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.ts b/vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.ts
new file mode 100644
index 000000000..f9ba48308
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/checkbox/checkbox.formControl.component.ts
@@ -0,0 +1,13 @@
+import {Component, Input} from "@angular/core";
+import {FormControlModel} from "../../../../models/formControlModels/formControl.model";
+import {FormGroup} from "@angular/forms";
+
+@Component({
+ selector: 'checkbox-form-control',
+ templateUrl: './checkbox.formControl.component.html'
+})
+export class CheckboxFormControlComponent{
+ @Input() data: FormControlModel;
+ @Input() form: FormGroup;
+
+}
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/dropdown/dropdown.formControl.component.html b/vid-webpack-master/src/app/shared/components/formControls/component/dropdown/dropdown.formControl.component.html
new file mode 100644
index 000000000..6d13e52f8
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/dropdown/dropdown.formControl.component.html
@@ -0,0 +1,21 @@
+<div class="details-item" *ngIf="data != null && form != null">
+ <label [ngClass]="{'required': data.isRequired()}"
+ for="{{data?.dataTestId}}-select">{{data?.displayName}}:</label>
+ <select class="form-control input-text"
+ id="{{data?.dataTestId}}-select"
+ [attr.data-tests-id]="data?.dataTestId"
+ name="{{data?.name}}"
+ [formControl]="form.controls[data.controlName]"
+ [ngClass]="{'error-style' : (form?.controls[data?.controlName]?.touched && form?.controls[data?.controlName]?.errors) || data?.hasEmptyOptions ,
+ 'grayColor': form?.controls[data?.controlName]?.value == null || form?.controls[data?.controlName]?.value == undefined,
+ 'blackColor' : form?.controls[data?.controlName]?.value != null}"
+ (blur)="data.onBlur()">
+
+ <option [value]="null" hidden>{{data?.placeHolder}}</option>
+ <option *ngFor="let option of data?.options$ | orderBy : {property : 'name', direction : 1} ; let i = index" class="{{option?.id}} {{data?.dataTestId}}Option"
+ [value]="option[data.ngValue]" [disabled]="!option?.isPermitted && option?.isPermitted != undefined">{{option.name}}
+ </option>
+ </select>
+ <form-control-error *ngIf="data?.hasEmptyOptions" [message]="'No results for this request. Please change criteria.'"></form-control-error>
+</div>
+
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/dropdown/dropdown.formControl.component.scss b/vid-webpack-master/src/app/shared/components/formControls/component/dropdown/dropdown.formControl.component.scss
new file mode 100644
index 000000000..9826332cc
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/dropdown/dropdown.formControl.component.scss
@@ -0,0 +1,7 @@
+.grayColor {
+ color: gray !important;
+}
+
+.blackColor {
+ color: black !important;
+}
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/dropdown/dropdown.formControl.component.ts b/vid-webpack-master/src/app/shared/components/formControls/component/dropdown/dropdown.formControl.component.ts
new file mode 100644
index 000000000..550feca22
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/dropdown/dropdown.formControl.component.ts
@@ -0,0 +1,27 @@
+import {Component, Input, OnChanges, SimpleChanges} from "@angular/core";
+import {DropdownFormControl} from "../../../../models/formControlModels/dropdownFormControl.model";
+import {FormGroup} from "@angular/forms";
+
+@Component({
+ selector: 'dropdown-form-control',
+ templateUrl: './dropdown.formControl.component.html',
+ styleUrls : ['./dropdown.formControl.component.scss']
+})
+export class DropdownFormControlComponent implements OnChanges{
+ @Input() data: DropdownFormControl = null;
+ @Input() form: FormGroup = null;
+
+ ngOnChanges(changes: SimpleChanges): void {
+ if (changes["data"] !== undefined && changes["data"].currentValue !== changes["data"].previousValue && changes["data"].firstChange) {
+ if(this.data.onInit){
+ this.data.onInit(this.data, this.form);
+ }
+ }
+
+ if (changes["data"] !== undefined) {
+ this.form.controls[this.data.controlName].valueChanges.subscribe((value)=>{
+ this.data.onChange(value, this.form);
+ })
+ }
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.html b/vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.html
new file mode 100644
index 000000000..bcbe91e5e
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.html
@@ -0,0 +1,22 @@
+<div class="details-item file-form-control">
+ <label [ngClass]="{'required': data.isRequired()}" for="{{data?.controlName}}">{{data?.displayName}}:</label>
+ <label for="{{data?.controlName}}" class="file-input-wrapper" [ngClass]="{'file-uploaded': fileUploader.files && fileUploader.files[0] || data.selectedFile != data.placeHolder}">
+ <span data-tests-id="file-name" class="file-name">
+ {{ fileUploader.files && fileUploader.files[0] ? fileUploader.files[0].name : data.selectedFile}}
+ </span>
+ <input id="{{data?.controlName}}"
+ name="{{data?.controlName}}"
+ class="form-control input-text"
+ [formControl]="form?.controls[data?.controlName]"
+ [ngClass]="{'error-style' : form?.controls[data?.controlName]?.touched && form?.controls[data?.controlName]?.errors}"
+ type="file"
+ #fileUploader
+ accept="{{data?.acceptedExtentions}}"
+ (change)="data?.onChange($event.target.files, form)">
+ <input *ngFor="let hiddenFile of data?.hiddenFile" type="hidden" id="{{hiddenFile.controlName}}" name="{{hiddenFile.controlName}}"
+ [formControl]="form?.controls[hiddenFile.controlName]"/>
+ <span class="delete" data-tests-id="remove-uploaded-file" (click)="onDelete($event, data, form)">X</span>
+ <span class="icon-browse"></span>
+ </label>
+</div>
+
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.scss b/vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.scss
new file mode 100644
index 000000000..98fae0249
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.scss
@@ -0,0 +1,87 @@
+.file-form-control{
+ label{
+ color: #191919;
+ }
+ input[type=file] {
+ opacity: 0;
+ flex: 0;
+ }
+ .file-input-wrapper{
+ display: flex;
+ background: #FFFFFF;
+ border: 1px solid #D2D2D2;
+ border-radius: 2px;
+ height: 38px;
+ &:hover{
+ cursor: pointer;
+ border: 1px solid #009FDB;
+ .icon-browse{
+ background: #E6F6FB;
+ border-left: 1px solid #009FDB;
+ &:before{
+ color: #009FDB;
+ }
+ }
+ }
+ &:active{
+ .icon-browse{
+ background: #1EB9F3;
+ border-left: 1px solid #009FDB;
+ &:before{
+ color: #ffffff;
+ }
+ }
+ }
+ .file-name {
+ font-family: OpenSans-Italic;
+ font-weight: normal;
+ font-size: 14px;
+ color: #959595;
+ margin: 9px;
+ width: 100%;
+ }
+ .icon-browse{
+ z-index: 1;
+ margin-left: auto;
+ margin-bottom: 0;
+ cursor: pointer;
+ content: "\e90d";
+ color: #5A5A5A;
+ font-size: 30px;
+ display: block;
+ text-align: center;
+ padding-top: 4px;
+ background: #F2F2F2;
+ border-left: 1px solid #D2D2D2;
+ width: 36px;
+ height:100%;
+ &:before{
+ content: "\e90d";
+ color: #5A5A5A;
+ }
+ }
+ .delete{
+ visibility: hidden;
+ cursor: pointer;
+ font-size: 14px;
+ margin-right: 10px;
+ margin-top: 9px;
+ color: #5a5a5a;
+ margin-left: 10px;
+ z-index: 1;
+ &:hover{
+ color: #000000;
+ }
+ }
+ &.file-uploaded{
+ .file-name{
+ font-family: OpenSans-Regular;
+ font-size: 14px;
+ color: #000000;
+ }
+ .delete{
+ visibility: visible;
+ }
+ }
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.spec.ts b/vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.spec.ts
new file mode 100644
index 000000000..e27f5115a
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.spec.ts
@@ -0,0 +1,62 @@
+import {ComponentFixture, TestBed} from '@angular/core/testing';
+import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core'
+import {FileFormControlComponent} from "./file.formControl.component";
+import {CommonModule} from "@angular/common";
+import {FormBuilder, FormControl, ReactiveFormsModule, Validators} from "@angular/forms";
+import {ValidatorModel, ValidatorOptions} from "../../../../models/formControlModels/formControl.model";
+import {FormControlMessageErrorComponent} from "../../errorMessage/formControlMessageError.component";
+import {BrowserModule} from "@angular/platform-browser";
+import {TooltipModule} from "ngx-tooltip";
+import {FileFormControl} from "../../../../models/formControlModels/fileFormControl.model";
+
+describe('File Form Control Component', () => {
+ let component: FileFormControlComponent;
+ let fixture: ComponentFixture<FileFormControlComponent>;
+ let fb: FormBuilder;
+
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ imports: [CommonModule, BrowserModule, ReactiveFormsModule, TooltipModule],
+ providers: [FormBuilder],
+ declarations: [FileFormControlComponent, FormControlMessageErrorComponent],
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
+ });
+ await TestBed.compileComponents();
+
+ fixture = TestBed.createComponent(FileFormControlComponent);
+ component = fixture.componentInstance;
+ fb = TestBed.get(FormBuilder);
+
+ })().then(done).catch(done.fail));
+
+ test('file component should initialize basic parameters', () => {
+ component.data = new FileFormControl({
+ displayName: "display Name",
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ dataTestId: "data-test-id",
+ placeHolder: "place holder",
+ controlName: 'testFile',
+ acceptedExtentions: "json"
+ });
+
+ component.form = fb.group({
+ 'testFile': new FormControl({
+ value: component.data.selectedFile,
+ disabled: false
+ },
+ Validators.compose(component.data.validations.map(item => item.validator))
+ ),
+ });
+
+ component.data.onDelete = function () {
+ component.form.controls['testFile'].setValue('onDelete');
+ };
+
+ expect(component.form.controls['testFile'].value).toEqual("place holder");
+ let event = new Event("onDelete", null);
+ component.data.onDelete(event, component.data, component.form);
+ expect(component.form.controls['testFile'].value).toEqual('onDelete');
+ })
+});
+
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.ts b/vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.ts
new file mode 100644
index 000000000..2c2172005
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/file/file.formControl.component.ts
@@ -0,0 +1,27 @@
+import {Component, ElementRef, Input, ViewChild} from "@angular/core";
+import {FormGroup} from "@angular/forms";
+import {FileFormControl} from "../../../../models/formControlModels/fileFormControl.model";
+
+@Component({
+ selector : 'file-form-control',
+ templateUrl : './file.formControl.component.html',
+ styleUrls : ['./file.formControl.component.scss']
+})
+
+export class FileFormControlComponent {
+ @Input() data: FileFormControl = null;
+ @Input() form: FormGroup;
+ @ViewChild('fileUploader')
+ fileUploader:ElementRef ;
+
+ onDelete(event, data, form) {
+ event.stopPropagation();
+ event.preventDefault();
+ form.value[data.controlName] = this.fileUploader.nativeElement.value = "";
+ data.selectedFile = data.placeHolder;
+ if (data.onDelete){
+ data.onDelete(form);
+ }
+
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/file/fileUnit.enum.ts b/vid-webpack-master/src/app/shared/components/formControls/component/file/fileUnit.enum.ts
new file mode 100644
index 000000000..d875e486c
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/file/fileUnit.enum.ts
@@ -0,0 +1,7 @@
+export enum FileUnit {
+ b,
+ B,
+ KB,
+ MB,
+ GB
+}
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.html b/vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.html
new file mode 100644
index 000000000..90ac7c698
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.html
@@ -0,0 +1,25 @@
+<div class="details-item" *ngIf="data?.isVisible">
+ <label
+ [tooltip]="data?.tooltip ? data.tooltip : null"
+ id="{{data?.dataTestId}}-label"
+ [ngClass]="{'required' : data?.isRequired()}">
+ {{data?.displayName}}: </label>
+ <input
+ #customInput
+
+ [disabled]="data?.isDisabled ? data.isDisabled : false"
+ [type]="data?.inputType ? data?.inputType : 'text'"
+ [attr.data-tests-id]="data?.dataTestId"
+ class="form-control input-text"
+ id="{{data?.dataTestId}}"
+ [placeholder]="data?.placeHolder ? data?.placeHolder : ''"
+ [formControl]="form?.controls[data?.controlName]"
+ [ngClass]="{'error-style' : form?.controls[data?.controlName]?.touched && form?.controls[data?.controlName]?.errors}"
+ minlength="{{data?.minLength}}"
+ maxlength="{{data?.maxLength}}"
+ (blur)="data.onBlur($event, form)"
+ (keypress)="data?.onKeypress($event)">
+</div>
+
+
+
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.scss b/vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.scss
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.scss
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.spec.ts b/vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.spec.ts
new file mode 100644
index 000000000..84d379d1a
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.spec.ts
@@ -0,0 +1,68 @@
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
+import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core'
+import {InputFormControlComponent} from "./input.formControl.component";
+import {CommonModule} from "@angular/common";
+import {FormBuilder, FormControl, ReactiveFormsModule, Validators} from "@angular/forms";
+import {InputFormControl} from "../../../../models/formControlModels/inputFormControl.model";
+import {ValidatorModel, ValidatorOptions} from "../../../../models/formControlModels/formControl.model";
+import {FormControlMessageErrorComponent} from "../../errorMessage/formControlMessageError.component";
+import {BrowserModule} from "@angular/platform-browser";
+import {TooltipModule} from "ngx-tooltip";
+
+describe('Input Form Control Component', () => {
+ let component: InputFormControlComponent;
+ let fixture: ComponentFixture<InputFormControlComponent>;
+ let fb: FormBuilder;
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ imports: [CommonModule, BrowserModule, ReactiveFormsModule, TooltipModule],
+ providers: [FormBuilder],
+ declarations: [InputFormControlComponent, FormControlMessageErrorComponent],
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
+ });
+ await TestBed.compileComponents();
+
+ fixture = TestBed.createComponent(InputFormControlComponent);
+ component = fixture.componentInstance;
+ fb = TestBed.get(FormBuilder);
+
+ })().then(done).catch(done.fail));
+
+ test('component should initialize basic parameters', () => {
+ component.data = new InputFormControl({
+ value: "value",
+ displayName: "display Name",
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ dataTestId: "data-test-id",
+ placeHolder: "place holder",
+ controlName: 'testInstanceName'
+ });
+
+ component.data.hasErrors = function () {
+ return this.formGroup.controls[this.controlName].touched && this.formGroup.controls[this.controlName].errors ? ['error-style'] : [];
+ };
+
+ component.data.onBlur = function () {
+ component.form.controls['testInstanceName'].setValue('onBlur');
+ };
+
+ component.form = fb.group({
+ 'testInstanceName': new FormControl({
+ value: component.data.value,
+ disabled: false
+ }, Validators.compose(component.data.validations.map(item => item.validator)))
+ });
+
+
+ component.form.controls['testInstanceName'].setValue('newValue');
+ expect(component.form.controls['testInstanceName'].errors).toBeFalsy();
+ component.form.controls['testInstanceName'].setValue('');
+ expect(component.form.controls['testInstanceName'].errors.required).toBeTruthy();
+ component.data.onBlur();
+ expect(component.form.controls['testInstanceName'].value).toEqual('onBlur');
+ expect(component.form.controls['testInstanceName'].errors).toBeFalsy();
+ }
+ )
+});
+
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.ts b/vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.ts
new file mode 100644
index 000000000..1e8c28104
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/input/input.formControl.component.ts
@@ -0,0 +1,18 @@
+import {Component, ElementRef, Input, ViewChild} from "@angular/core";
+import {InputFormControl} from "../../../../models/formControlModels/inputFormControl.model";
+import {FormGroup} from "@angular/forms";
+
+@Component({
+ selector : 'form-control-input',
+ templateUrl : './input.formControl.component.html',
+ styleUrls : ['./input.formControl.component.scss']
+})
+
+export class InputFormControlComponent{
+ @ViewChild('customInput') element:ElementRef;
+ @Input() data: InputFormControl = null;
+ @Input() form: FormGroup;
+
+
+
+}
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.html b/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.html
new file mode 100644
index 000000000..f7c4894b2
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.html
@@ -0,0 +1,16 @@
+<div>
+ <div class="details-item" *ngIf="data != null && form != null">
+ <label [ngClass]="{'required': data.isRequired()}"
+ for="{{data?.dataTestId}}">{{data?.displayName}}:</label>
+ <angular2-multiselect id="{{data?.dataTestId}}"
+ [attr.data-tests-id]="data?.dataTestId"
+ [formControl]="form.controls[data.controlName]"
+ [(ngModel)]="data.selectedItems"
+ [data]="data?.options$"
+ [settings]="data?.settings"
+ title="{{data.tooltip}}"
+ [ngClass]="{'error-style' : form?.controls[data?.controlName]?.touched && form?.controls[data?.controlName]?.errors}">
+ </angular2-multiselect>
+ </div>
+</div>
+
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.spec.ts b/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.spec.ts
new file mode 100644
index 000000000..81c8d4679
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.spec.ts
@@ -0,0 +1,74 @@
+import {ComponentFixture, TestBed} from '@angular/core/testing';
+import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core'
+import {CommonModule} from "@angular/common";
+import {FormBuilder, FormControl, ReactiveFormsModule, Validators} from "@angular/forms";
+import {
+ ValidatorModel,
+ ValidatorOptions
+} from "../../../../models/formControlModels/formControl.model";
+import {FormControlMessageErrorComponent} from "../../errorMessage/formControlMessageError.component";
+import {BrowserModule} from "@angular/platform-browser";
+import {MultiselectFormControlComponent} from "./multiselect.formControl.component";
+import {MultiselectFormControl} from "../../../../models/formControlModels/multiselectFormControl.model";
+import { of } from "rxjs";
+describe('Dropdown Form Control Component', () => {
+ let component: MultiselectFormControlComponent;
+ let fixture: ComponentFixture<MultiselectFormControlComponent>;
+ let fb: FormBuilder;
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ imports: [CommonModule, BrowserModule, ReactiveFormsModule],
+ providers: [FormBuilder],
+ declarations: [MultiselectFormControlComponent, FormControlMessageErrorComponent],
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
+ });
+ await TestBed.compileComponents();
+
+ fixture = TestBed.createComponent(MultiselectFormControlComponent);
+ component = fixture.componentInstance;
+ fb = TestBed.get(FormBuilder);
+
+ })().then(done).catch(done.fail));
+
+ test('component should initialize basic parameters', () => {
+ component.data = new MultiselectFormControl({
+ displayName: "display Name",
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ dataTestId: "data-test-id",
+ placeHolder: "place holder",
+ controlName: 'testDropdown',
+ options: of([
+ 'option1',
+ 'option2',
+ 'option3',
+ 'onBlur'
+ ])
+ });
+
+ component.data.hasErrors = function () {
+ return this.formGroup.controls[this.controlName].touched && this.formGroup.controls[this.controlName].errors ? ['error-style'] : [];
+ };
+
+ component.data.onBlur = function () {
+ component.form.controls['testDropdown'].setValue('onBlur');
+ };
+
+ component.form = fb.group({
+ 'testDropdown': new FormControl({
+ value: component.data.value,
+ disabled: false
+ }, Validators.compose(component.data.validations.map(item => item.validator)))
+ });
+
+ component.form.controls['testDropdown'].setValue('');
+ expect(component.form.controls['testDropdown'].errors.required).toBeTruthy();
+ component.form.controls['testDropdown'].setValue('option2');
+ expect(component.form.controls['testDropdown'].errors).toBeFalsy();
+ component.data.onBlur();
+ expect(component.form.controls['testDropdown'].value).toEqual('onBlur');
+ expect(component.form.controls['testDropdown'].errors).toBeFalsy();
+ }
+ )
+});
+
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.ts b/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.ts
new file mode 100644
index 000000000..4b98c7e26
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/multiselect/multiselect.formControl.component.ts
@@ -0,0 +1,20 @@
+import {Component, Input, OnChanges, SimpleChanges} from "@angular/core";
+import {FormGroup} from "@angular/forms";
+import {MultiselectFormControl} from "../../../../models/formControlModels/multiselectFormControl.model";
+
+@Component({
+ selector: 'multiselect-form-control',
+ templateUrl: './multiselect.formControl.component.html'
+})
+export class MultiselectFormControlComponent implements OnChanges{
+ @Input() data: MultiselectFormControl = null;
+ @Input() form: FormGroup = null;
+
+ ngOnChanges(changes: SimpleChanges): void {
+ if (changes["data"] !== undefined && changes["data"].currentValue !== changes["data"].previousValue && changes["data"].firstChange) {
+ if(this.data.onInit){
+ this.data.onInit(this.data, this.form);
+ }
+ }
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/number/number.formControl.component.html b/vid-webpack-master/src/app/shared/components/formControls/component/number/number.formControl.component.html
new file mode 100644
index 000000000..3763764d5
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/number/number.formControl.component.html
@@ -0,0 +1,13 @@
+<div>
+ <div class="details-item" *ngIf="data != null && form != null">
+ <label [ngClass]="{'required': data.isRequired()}"
+ for="{{data?.dataTestId}}">{{data?.displayName}}:</label>
+ <input id="{{data?.dataTestId}}" [attr.data-tests-id]="data?.dataTestId"
+ name="{{data?.controlName}}" class="form-control input-text"
+ [formControl]="form.controls[data.controlName]" type="number"
+ placeholder="{{data?.placeHolder}}" title="{{data?.tooltip}}"
+ [ngClass]="{'error-style' : form?.controls[data?.controlName]?.touched && form?.controls[data?.controlName]?.errors}"
+ min="{{data?.min}}" max="{{data?.max}}">
+ </div>
+</div>
+
diff --git a/vid-webpack-master/src/app/shared/components/formControls/component/number/number.formControl.component.ts b/vid-webpack-master/src/app/shared/components/formControls/component/number/number.formControl.component.ts
new file mode 100644
index 000000000..bd25ded81
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/component/number/number.formControl.component.ts
@@ -0,0 +1,12 @@
+import {Component, Input} from "@angular/core";
+import {FormGroup} from "@angular/forms";
+import {NumberFormControl} from "../../../../models/formControlModels/numberFormControl.model";
+
+@Component({
+ selector: 'number-form-control',
+ templateUrl: './number.formControl.component.html'
+})
+export class NumberFormControlComponent {
+ @Input() data: NumberFormControl = null;
+ @Input() form: FormGroup = null;
+}
diff --git a/vid-webpack-master/src/app/shared/components/formControls/errorMessage/formControlMessageError.component.html b/vid-webpack-master/src/app/shared/components/formControls/errorMessage/formControlMessageError.component.html
new file mode 100644
index 000000000..4d89854d5
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/errorMessage/formControlMessageError.component.html
@@ -0,0 +1,5 @@
+<div *ngIf="form != null && formControl != null && form.controls[formControl.controlName]?.errors">
+ <div *ngFor="let validatorModel of formControl?.validations">
+ <form-control-error *ngIf="form.controls[formControl?.controlName]?.errors[validatorModel?.validatorName]" [message]="validatorModel?.errorMsg"></form-control-error>
+ </div>
+</div>
diff --git a/vid-webpack-master/src/app/shared/components/formControls/errorMessage/formControlMessageError.component.ts b/vid-webpack-master/src/app/shared/components/formControls/errorMessage/formControlMessageError.component.ts
new file mode 100644
index 000000000..02ec57e43
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formControls/errorMessage/formControlMessageError.component.ts
@@ -0,0 +1,15 @@
+import {Component, Input, OnChanges, SimpleChanges} from "@angular/core";
+import {FormGroup} from "@angular/forms";
+import {FormControlModel} from "../../../models/formControlModels/formControl.model";
+
+@Component({
+ selector : 'form-control-message-error',
+ templateUrl : './formControlMessageError.component.html'
+})
+export class FormControlMessageErrorComponent implements OnChanges{
+ @Input() formControl: FormControlModel = null;
+ @Input() form: FormGroup = null;
+
+ ngOnChanges(changes: SimpleChanges): void {
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/formGeneralErrors/formGeneralErrors.component.scss b/vid-webpack-master/src/app/shared/components/formGeneralErrors/formGeneralErrors.component.scss
index 5271cad49..988d12cd6 100644
--- a/vid-webpack-master/src/app/shared/components/formGeneralErrors/formGeneralErrors.component.scss
+++ b/vid-webpack-master/src/app/shared/components/formGeneralErrors/formGeneralErrors.component.scss
@@ -32,6 +32,7 @@
.parentbox {
padding-right: 0;
+ line-height: 67px;
}
.parentbox:before {
diff --git a/vid-webpack-master/src/app/shared/components/formGeneralErrors/formGeneralErrors.service.ts b/vid-webpack-master/src/app/shared/components/formGeneralErrors/formGeneralErrors.service.ts
new file mode 100644
index 000000000..1550e0820
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/formGeneralErrors/formGeneralErrors.service.ts
@@ -0,0 +1,7 @@
+import {Injectable} from "@angular/core";
+import {Subject} from "rxjs";
+
+@Injectable()
+export class FormGeneralErrorsService {
+ static checkForErrorTrigger : Subject<boolean> = new Subject<boolean>();
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/basic.control.generator.spec.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/basic.control.generator.spec.ts
new file mode 100644
index 000000000..4189fba05
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/basic.control.generator.spec.ts
@@ -0,0 +1,48 @@
+import {getTestBed, TestBed} from '@angular/core/testing';
+import {AaiService} from "../../../services/aaiService/aai.service";
+import {FormControlModel, ValidatorModel, ValidatorOptions} from "../../../models/formControlModels/formControl.model";
+import {FeatureFlagsService} from "../../../services/featureFlag/feature-flags.service";
+import {BasicControlGenerator} from "./basic.control.generator";
+import {NgRedux} from '@angular-redux/store';
+import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
+
+class MockAppStore<T> {}
+
+class MockFeatureFlagsService {}
+
+describe('Basic Control Generator', () => {
+ let injector;
+ let service: BasicControlGenerator;
+ let httpMock: HttpTestingController;
+
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ imports: [HttpClientTestingModule],
+ providers: [BasicControlGenerator,
+ AaiService,
+ {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
+ {provide: NgRedux, useClass: MockAppStore}]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ service = injector.get(BasicControlGenerator);
+ httpMock = injector.get(HttpTestingController);
+
+ })().then(done).catch(done.fail));
+
+
+ test('getlegacyRegion with JANET25 - isVisible true', () => {
+ const instance = {lcpCloudRegionId : 'JANET25'};
+ const legacyRegionControl: FormControlModel = service.getLegacyRegion(instance);
+ expect(legacyRegionControl.isVisible).toBeTruthy();
+ });
+
+ test('getlegacyRegion without JANET25 - isVisible false', () => {
+ const instance = {lcpCloudRegionId : 'olson3'};
+ const legacyRegionControl: FormControlModel = service.getLegacyRegion(instance);
+ expect(legacyRegionControl.isVisible).toBeFalsy();
+ });
+});
+
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/basic.control.generator.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/basic.control.generator.ts
new file mode 100644
index 000000000..cbbff3c39
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/basic.control.generator.ts
@@ -0,0 +1,240 @@
+import {Injectable} from "@angular/core";
+import {DropdownFormControl} from "../../../models/formControlModels/dropdownFormControl.model";
+import {FormGroup} from "@angular/forms";
+import {
+ CustomValidatorOptions,
+ FormControlModel,
+ ValidatorModel,
+ ValidatorOptions
+} from "../../../models/formControlModels/formControl.model";
+import {InputFormControl} from "../../../models/formControlModels/inputFormControl.model";
+import {AppState} from "../../../store/reducers";
+import {NgRedux} from "@angular-redux/store";
+import {NumberFormControl} from "../../../models/formControlModels/numberFormControl.model";
+import {FormControlType} from "../../../models/formControlModels/formControlTypes.enum";
+import {FileFormControl} from "../../../models/formControlModels/fileFormControl.model";
+import {SelectOption} from "../../../models/selectOption";
+import * as _ from 'lodash';
+import {DynamicInputLabelPipe} from "../../../pipes/dynamicInputLabel/dynamic-input-label.pipe";
+import {AaiService} from "../../../services/aaiService/aai.service";
+import {FormGeneralErrorsService} from "../../formGeneralErrors/formGeneralErrors.service";
+import {Observable, of} from "rxjs";
+import {NodeModel} from "../../../models/nodeModel";
+import {Constants} from "../../../utils/constants";
+
+
+@Injectable()
+export class BasicControlGenerator {
+
+ public static readonly INSTANCE_NAME_REG_EX:RegExp = /^[a-zA-Z0-9._-]*$/;
+ public static readonly GENERATED_NAME_REG_EX:RegExp = /[^a-zA-Z0-9._-]/g;
+
+ constructor(private _store : NgRedux<AppState>,
+ private _aaiService : AaiService){}
+ getSubscribeResult(subscribeFunction : Function, control : DropdownFormControl) : Observable<any>{
+ return subscribeFunction(this).subscribe((res) => {
+ control.options$ = res;
+ control.hasEmptyOptions = res.length === 0;
+ FormGeneralErrorsService.checkForErrorTrigger.next();
+ return of(res);
+ });
+ }
+
+ getSubscribeInitResult(subscribeFunction : Function, control : DropdownFormControl, form : FormGroup) : Observable<any>{
+ return subscribeFunction(this).subscribe((res) => {
+ if(!_.isNil(control['onInitSelectedField'])){
+ let result = res;
+ for(let key of control['onInitSelectedField']){
+ result = !_.isNil(result[key]) ? result[key] : [];
+ }
+ control.options$ = result;
+ control.hasEmptyOptions = _.isNil(result) || result.length === 0;
+ } else{
+ control.options$ = !_.isNil(res) ? res : [];
+ control.hasEmptyOptions = _.isNil(res) || res.length === 0;
+ }
+
+ FormGeneralErrorsService.checkForErrorTrigger.next();
+ return of(res);
+ });
+ }
+
+ getInstanceNameController(instance: any, serviceId: string, isEcompGeneratedNaming: boolean, model: NodeModel): FormControlModel {
+ let validations: ValidatorModel[] = this.createValidationsForInstanceName(instance, serviceId, isEcompGeneratedNaming);
+ return new InputFormControl({
+ controlName: 'instanceName',
+ displayName: 'Instance name',
+ dataTestId: 'instanceName',
+ placeHolder: (!isEcompGeneratedNaming) ? 'Instance name' : 'Automatically generated when not provided',
+ validations: validations,
+ isVisible : true,
+ value : (!isEcompGeneratedNaming || (!_.isNil(instance) && !_.isNil(instance.instanceName)))
+ ? this.getDefaultInstanceName(instance, model) : null,
+ onKeypress : (event) => {
+ const pattern:RegExp = BasicControlGenerator.INSTANCE_NAME_REG_EX;
+ if(pattern){
+ if(!pattern.test(event['key'])){
+ event.preventDefault();
+ }
+ }
+ return event;
+ }
+ });
+ }
+
+ getInstanceName(instance : any, serviceId : string, isEcompGeneratedNaming: boolean): FormControlModel {
+ let formControlModel:FormControlModel = this.getInstanceNameController(instance, serviceId, isEcompGeneratedNaming, new NodeModel());
+ formControlModel.value = instance ? instance.instanceName : null;
+ return formControlModel;
+ }
+
+ isLegacyRegionShouldBeVisible(instance : any) : boolean {
+ if(!_.isNil(instance) && !_.isNil(instance.lcpCloudRegionId)) {
+ return Constants.LegacyRegion.MEGA_REGION.indexOf(instance.lcpCloudRegionId) !== -1;
+ }
+ return false;
+ }
+
+ getLegacyRegion(instance: any): FormControlModel {
+ return new InputFormControl({
+ controlName: 'legacyRegion',
+ displayName: 'Legacy Region',
+ dataTestId: 'lcpRegionText',
+ placeHolder: 'Type Legacy Region',
+ validations: [],
+ isVisible: this.isLegacyRegionShouldBeVisible(instance),
+ isDisabled : _.isNil(instance) ? true : Constants.LegacyRegion.MEGA_REGION.indexOf(instance.lcpCloudRegionId),
+ value: instance ? instance.legacyRegion : null
+ });
+ }
+
+ private createValidationsForInstanceName(instance: any, serviceId: string, isEcompGeneratedNaming: boolean): ValidatorModel[] {
+ let validations: ValidatorModel[] = [
+ new ValidatorModel(ValidatorOptions.pattern, 'Instance name may include only alphanumeric characters and underscore.', BasicControlGenerator.INSTANCE_NAME_REG_EX),
+ new ValidatorModel(CustomValidatorOptions.uniqueInstanceNameValidator, 'some error', [this._store, serviceId, instance && instance.instanceName])
+ ];
+ if (!isEcompGeneratedNaming) {
+ validations.push(new ValidatorModel(ValidatorOptions.required, 'is required'));
+ }
+ return validations;
+ }
+
+ getInputsOptions = (options: any[]) : Observable<SelectOption[]> =>{
+ let optionList: SelectOption[] = [];
+ options.forEach((option) => {
+ optionList.push(new SelectOption({
+ id: option.id || option.name,
+ name: option.name
+ }));
+ });
+ return of(optionList);
+ };
+
+ getProductFamilyControl = (instance : any, controls : FormControlModel[], isMandatory?: boolean) : DropdownFormControl => {
+ return new DropdownFormControl({
+ type : FormControlType.DROPDOWN,
+ controlName : 'productFamilyId',
+ displayName : 'Product family',
+ dataTestId : 'productFamily',
+ placeHolder : 'Select Product Family',
+ isDisabled : false,
+ name : "product-family-select",
+ value : instance ? instance.productFamilyId : null,
+ validations : _.isNil(isMandatory) || isMandatory === true ? [new ValidatorModel(ValidatorOptions.required, 'is required')]: [],
+ onInit : this.getSubscribeResult.bind(this, this._aaiService.getProductFamilies),
+ })
+ };
+
+
+
+ getDynamicInputsByType(dynamicInputs : any, serviceModelId : string, storeKey : string, type: string ) : FormControlModel[] {
+ let result : FormControlModel[] = [];
+ if(dynamicInputs) {
+ let nodeInstance = null;
+ if (_.has(this._store.getState().service.serviceInstance[serviceModelId][type], storeKey)) {
+ nodeInstance = Object.assign({}, this._store.getState().service.serviceInstance[serviceModelId][type][storeKey]);
+ }
+ result = this.getDynamicInputs(dynamicInputs, nodeInstance);
+ }
+ return result;
+ }
+
+
+ getServiceDynamicInputs(dynamicInputs : any, serviceModelId : string) : FormControlModel[] {
+ let result: FormControlModel[] = [];
+ if (dynamicInputs) {
+ let serviceInstance = null;
+ if (_.has(this._store.getState().service.serviceInstance, serviceModelId)) {
+ serviceInstance = Object.assign({}, this._store.getState().service.serviceInstance[serviceModelId]);
+ }
+ result = this.getDynamicInputs(dynamicInputs, serviceInstance);
+ }
+ return result;
+ }
+
+ getDynamicInputs(dynamicInputs : any, instance :any) : FormControlModel[]{
+ let result : FormControlModel[] = [];
+ if(dynamicInputs) {
+ dynamicInputs.forEach((input)=> {
+ let validations: ValidatorModel[] = [];
+ if(input.isRequired) {
+ validations.push(new ValidatorModel(ValidatorOptions.required, 'is required'))
+ }
+ if(input.minLength) {
+ validations.push(new ValidatorModel(ValidatorOptions.minLength, '', input.minLength))
+ }
+ if(input.maxLength) {
+ validations.push(new ValidatorModel(ValidatorOptions.maxLength, '', input.maxLength))
+ }
+
+ let dynamicInputLabelPipe: DynamicInputLabelPipe = new DynamicInputLabelPipe();
+ let data:any = {
+ controlName: input.name,
+ displayName: dynamicInputLabelPipe.transform(input.name).slice(0, -1),
+ dataTestId: input.id,
+ placeHolder: input.prompt,
+ tooltip: input.description,
+ validations: validations,
+ isVisible: input.isVisible,
+ value: !_.isNil(instance) && !_.isNil(instance.instanceParams) && instance.instanceParams.length > 0 ? instance.instanceParams[0][input.name] : input.value
+ };
+
+ switch (input.type) {
+ case 'select' :
+ case 'boolean' :{
+ data.value = data.value || input.optionList.filter((option) => option.isDefault ? option.id || option.name: null);
+ data.onInit = this.getSubscribeInitResult.bind(null, this.getInputsOptions.bind(this, input.optionList));
+ result.push(new DropdownFormControl(data));
+ break;
+ }
+ case 'checkbox': {
+ data.type = FormControlType.CHECKBOX;
+ result.push(new FormControlModel(data));
+ break;
+ }
+ case 'number': {
+ data.min = input.min;
+ data.max = input.max;
+ result.push(new NumberFormControl(data));
+ break;
+ }
+ case 'file': {
+ result.push(new FileFormControl(data));
+ break;
+ }
+ default: {
+ result.push(new InputFormControl(data));
+ }
+ }
+ })
+ }
+
+ return result;
+ }
+
+ getDefaultInstanceName(instance: any, model: NodeModel) : string {
+ const initialInstanceName = (!_.isNil(instance) && instance.instanceName) || (!_.isNil(model.name) ? model.name.replace(BasicControlGenerator.GENERATED_NAME_REG_EX, "") : model.name);
+ return initialInstanceName;
+ }
+
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator.spec.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator.spec.ts
new file mode 100644
index 000000000..97c6ddf59
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator.spec.ts
@@ -0,0 +1,1979 @@
+import {getTestBed, TestBed} from '@angular/core/testing';
+import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
+import {NgRedux} from '@angular-redux/store';
+import {BasicControlGenerator} from "../basic.control.generator";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {GenericFormService} from "../../generic-form.service";
+import {FormBuilder} from "@angular/forms";
+import {LogService} from "../../../../utils/log/log.service";
+import {FormControlNames, NetworkControlGenerator} from "./network.control.generator";
+import {
+ FormControlModel,
+ ValidatorModel,
+ ValidatorOptions
+} from "../../../../models/formControlModels/formControl.model";
+import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flags.service";
+
+class MockAppStore<T> {
+ getState(){
+ return {
+ "global": {
+ "name": null,
+ "flags": {
+ "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
+ "FLAG_SHOW_ASSIGNMENTS": true,
+ "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
+ "FLAG_UNASSIGN_SERVICE": true,
+ "FLAG_SHOW_VERIFY_SERVICE": false,
+ "FLAG_COLLECTION_RESOURCE_SUPPORT": true,
+ "FLAG_DUPLICATE_VNF": true,
+ "FLAG_SERVICE_MODEL_CACHE": true,
+ "CREATE_INSTANCE_TEST": false,
+ "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
+ "FLAG_ASYNC_INSTANTIATION": true,
+ "FLAG_ASYNC_JOBS": true,
+ "EMPTY_DRAWING_BOARD_TEST": false,
+ "FLAG_ADD_MSO_TESTAPI_FIELD": true
+ },
+ "type": "[FLAGS] Update"
+ },
+ "service": {
+ "serviceHierarchy": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "service": {
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "name": "ComplexService",
+ "version": "1.0",
+ "toscaModelURL": null,
+ "category": "Emanuel",
+ "serviceType": "",
+ "serviceRole": "",
+ "description": "ComplexService",
+ "serviceEcompNaming": "false",
+ "instantiationType": "Macro",
+ "inputs": {}
+ },
+ "vnfs": {
+ "VF_vMee 0": {
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "invariantUuid": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "description": "VSP_vMee",
+ "name": "VF_vMee",
+ "version": "2.0",
+ "customizationUuid": "91415b44-753d-494c-926a-456a9172bbb9",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "max_instances": 10,
+ "min_instances": 1,
+ "gpb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_start_port": "0",
+ "sctp-a-ipv6-egress_rule_application": "any",
+ "Internal2_allow_transit": "true",
+ "sctp-b-IPv6_ethertype": "IPv6",
+ "sctp-a-egress_rule_application": "any",
+ "sctp-b-ingress_action": "pass",
+ "sctp-b-ingress_rule_protocol": "icmp",
+ "ncb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-ingress-src_start_port": "0.0",
+ "ncb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "fsb_volume_size_0": "320.0",
+ "sctp-b-egress_src_addresses": "local",
+ "sctp-a-ipv6-ingress_ethertype": "IPv4",
+ "sctp-a-ipv6-ingress-dst_start_port": "0",
+ "sctp-b-ipv6-ingress_rule_application": "any",
+ "domain_name": "default-domain",
+ "sctp-a-ingress_rule_protocol": "icmp",
+ "sctp-b-egress-src_start_port": "0.0",
+ "sctp-a-egress_src_addresses": "local",
+ "sctp-b-display_name": "epc-sctp-b-ipv4v6-sec-group",
+ "sctp-a-egress-src_start_port": "0.0",
+ "sctp-a-ingress_ethertype": "IPv4",
+ "sctp-b-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-dst_subnet_prefix_v6": "::",
+ "nf_naming": "{ecomp_generated_naming=true}",
+ "sctp-a-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-b-egress-dst_start_port": "0.0",
+ "ncb_flavor_name": "nv.c20r64d1",
+ "gpb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix_len": "0.0",
+ "Internal2_net_cidr": "10.0.0.10",
+ "sctp-a-ingress-dst_start_port": "0.0",
+ "sctp-a-egress-dst_start_port": "0.0",
+ "fsb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-egress_ethertype": "IPv4",
+ "vlc_st_service_mode": "in-network-nat",
+ "sctp-a-ipv6-egress_ethertype": "IPv4",
+ "sctp-a-egress-src_end_port": "65535.0",
+ "sctp-b-ipv6-egress_rule_application": "any",
+ "sctp-b-egress_action": "pass",
+ "sctp-a-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-b-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-b-name": "epc-sctp-b-ipv4v6-sec-group",
+ "fsb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ipv6-ingress-src_start_port": "0.0",
+ "sctp-b-ipv6-egress_ethertype": "IPv4",
+ "Internal1_net_cidr": "10.0.0.10",
+ "sctp-a-egress_dst_subnet_prefix": "0.0.0.0",
+ "fsb_flavor_name": "nv.c20r64d1",
+ "sctp_rule_protocol": "132",
+ "sctp-b-ipv6-ingress_src_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_rule_application": "any",
+ "ecomp_generated_naming": "false",
+ "sctp-a-IPv6_ethertype": "IPv6",
+ "vlc2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_virtualization_type": "virtual-machine",
+ "sctp-b-ingress-dst_start_port": "0.0",
+ "sctp-b-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-a-display_name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-b-ingress_rule_application": "any",
+ "int2_sec_group_name": "int2-sec-group",
+ "vlc_flavor_name": "nd.c16r64d1",
+ "sctp-b-ipv6-egress_src_addresses": "local",
+ "vlc_st_interface_type_int1": "other1",
+ "sctp-b-egress-src_end_port": "65535.0",
+ "sctp-a-ipv6-egress-dst_start_port": "0",
+ "vlc_st_interface_type_int2": "other2",
+ "sctp-a-ipv6-egress_rule_protocol": "any",
+ "Internal2_shared": "false",
+ "sctp-a-ipv6-egress_dst_subnet_prefix_len": "0",
+ "Internal2_rpf": "disable",
+ "vlc1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_end_port": "65535",
+ "sctp-a-ipv6-egress_src_addresses": "local",
+ "sctp-a-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-egress_src_end_port": "65535",
+ "Internal1_forwarding_mode": "l2",
+ "Internal2_dhcp": "false",
+ "sctp-a-dst_subnet_prefix_v6": "::",
+ "pxe_image_name": "MME_PXE-Boot_16ACP04_GA.qcow2",
+ "vlc_st_interface_type_gtp": "other0",
+ "ncb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-src_subnet_prefix_v6": "::",
+ "sctp-a-egress_dst_subnet_prefix_len": "0.0",
+ "int1_sec_group_name": "int1-sec-group",
+ "Internal1_dhcp": "false",
+ "sctp-a-ipv6-egress_dst_end_port": "65535",
+ "Internal2_forwarding_mode": "l2",
+ "fsb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix": "0.0.0.0",
+ "Internal1_net_cidr_len": "17",
+ "gpb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-a-ingress_dst_addresses": "local",
+ "sctp-a-egress_action": "pass",
+ "fsb_volume_type_0": "SF-Default-SSD",
+ "ncb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_sctp_a": "left",
+ "vlc_st_interface_type_sctp_b": "right",
+ "sctp-a-src_subnet_prefix_v6": "::",
+ "vlc_st_version": "2",
+ "sctp-b-egress_ethertype": "IPv4",
+ "sctp-a-ingress_rule_application": "any",
+ "gpb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "instance_ip_family_v6": "v6",
+ "sctp-a-ipv6-egress_src_start_port": "0",
+ "sctp-b-ingress-src_start_port": "0.0",
+ "sctp-b-ingress_dst_addresses": "local",
+ "fsb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_oam": "management",
+ "multi_stage_design": "true",
+ "oam_sec_group_name": "oam-sec-group",
+ "Internal2_net_gateway": "10.0.0.10",
+ "sctp-a-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-ipv6-egress-dst_start_port": "0",
+ "Internal1_net_gateway": "10.0.0.10",
+ "sctp-b-ipv6-egress_rule_protocol": "any",
+ "gtp_sec_group_name": "gtp-sec-group",
+ "sctp-a-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-egress_dst_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_dst_addresses": "local",
+ "sctp-a-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-egress_action": "pass",
+ "sctp-a-ipv6-egress_action": "pass",
+ "Internal1_shared": "false",
+ "sctp-b-ipv6-ingress_rule_protocol": "any",
+ "Internal2_net_cidr_len": "17",
+ "sctp-a-name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-a-ingress-src_end_port": "65535.0",
+ "sctp-b-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-a-egress-dst_end_port": "65535.0",
+ "sctp-a-ingress_action": "pass",
+ "sctp-b-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-ingress_action": "pass",
+ "vlc_st_service_type": "firewall",
+ "sctp-b-ipv6-egress_dst_end_port": "65535",
+ "sctp-b-ipv6-ingress-dst_start_port": "0",
+ "vlc2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_availability_zone": "true",
+ "fsb_volume_image_name_1": "MME_FSB2_16ACP04_GA.qcow2",
+ "sctp-b-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_src_subnet_prefix_len": "0",
+ "Internal1_allow_transit": "true",
+ "gpb_flavor_name": "nv.c20r64d1",
+ "availability_zone_max_count": "1",
+ "fsb_volume_image_name_0": "MME_FSB1_16ACP04_GA.qcow2",
+ "sctp-b-ipv6-ingress_dst_addresses": "local",
+ "sctp-b-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-ingress_ethertype": "IPv4",
+ "vlc1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_action": "pass",
+ "Internal1_rpf": "disable",
+ "sctp-b-ingress_ethertype": "IPv4",
+ "sctp-b-egress_rule_application": "any",
+ "sctp-b-ingress-src_end_port": "65535.0",
+ "sctp-a-ipv6-ingress_rule_protocol": "any",
+ "sctp-a-ingress-src_start_port": "0.0",
+ "sctp-b-egress-dst_end_port": "65535.0"
+ },
+ "type": "VF",
+ "modelCustomizationName": "VF_vMee 0",
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "ecomp_generated_naming" : "false",
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ },
+ "ExtVL 1": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b987",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL1",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "ecomp_generated_naming" : "true",
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {
+ "Port Mirroring Configuration By Policy 0": {
+ "uuid": "b4398538-e89d-4f13-b33d-ca323434ba50",
+ "invariantUuid": "6ef0ca40-f366-4897-951f-abd65d25f6f7",
+ "description": "A port mirroring configuration by policy object",
+ "name": "Port Mirroring Configuration By Policy",
+ "version": "27.0",
+ "customizationUuid": "3c3b7b8d-8669-4b3b-8664-61970041fad2",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Configuration",
+ "modelCustomizationName": "Port Mirroring Configuration By Policy 0",
+ "sourceNodes": [],
+ "collectorNodes": null,
+ "configurationByPolicy": false
+ }
+ },
+ "serviceProxies": {},
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ }
+ },
+ "serviceInstance": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "networks" : {},
+ "vnfs": {
+ "VF_vMee 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "vf_vmee0..VfVmee..base_vmme..module-0vmvzo": {
+ "isMissingData": false,
+ "sdncPreReload": null,
+ "modelInfo": {
+ "modelType": "VFmodule",
+ "modelInvariantId": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "modelVersionId": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "modelName": "VfVmee..base_vmme..module-0",
+ "modelVersion": "2",
+ "modelCustomizationId": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0"
+ },
+ "instanceParams": [
+ {}
+ ],
+ "trackById": "wmtm6sy2uj"
+ }
+ }
+ },
+ "isMissingData": true,
+ "originalName": "VF_vMee 0",
+ "vnfStoreKey": "VF_vMee 0",
+ "trackById": "p3wk448m5do",
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": null,
+ "tenantId": null,
+ "lineOfBusiness": null,
+ "platformName": null,
+ "modelInfo": {
+ "modelType": "VF",
+ "modelInvariantId": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "VF_vMee",
+ "modelVersion": "2.0",
+ "modelCustomizationName": "VF_vMee 0"
+ }
+ }
+ },
+ "instanceParams": [
+ {}
+ ],
+ "validationCounter": 1,
+ "existingNames": {},
+ "existingVNFCounterMap": {
+ "d6557200-ecf2-4641-8094-5393ae3aae60": 1
+ },
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "aicZoneId": "JAG1",
+ "projectName": "x1",
+ "rollbackOnFailure": "true",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "ComplexService",
+ "modelVersion": "1.0",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44"
+ },
+ "isALaCarte": false,
+ "name": "ComplexService",
+ "version": "1.0",
+ "description": "ComplexService",
+ "category": "Emanuel",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isMultiStepDesign": false
+ }
+ },
+ "lcpRegionsAndTenants": {
+ "lcpRegionList": [
+ {
+ "id": "JANET25",
+ "name": "JANET25",
+ "isPermitted": true
+ },
+ {
+ "id": "hvf6",
+ "name": "hvf6",
+ "isPermitted": true
+ }
+ ],
+ "lcpRegionsTenantsMap": {
+ "JANET25": [
+ {
+ "id": "092eb9e8e4b7412e8787dd091bc58e86",
+ "name": "USP-SIP-IC-24335-T-01",
+ "isPermitted": true
+ }
+ ],
+ "hvf6": [
+ {
+ "id": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "name": "AIN Web Tool-15-D-testalexandria",
+ "isPermitted": true
+ },
+ {
+ "id": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "name": "AIN Web Tool-15-D-STTest2",
+ "isPermitted": true
+ },
+ {
+ "id": "1178612d2b394be4834ad77f567c0af2",
+ "name": "AIN Web Tool-15-D-SSPtestcustome",
+ "isPermitted": true
+ },
+ {
+ "id": "19c5ade915eb461e8af52fb2fd8cd1f2",
+ "name": "AIN Web Tool-15-D-UncheckedEcopm",
+ "isPermitted": true
+ },
+ {
+ "id": "de007636e25249238447264a988a927b",
+ "name": "AIN Web Tool-15-D-dfsdf",
+ "isPermitted": true
+ },
+ {
+ "id": "62f29b3613634ca6a3065cbe0e020c44",
+ "name": "AIN/SMS-16-D-Multiservices1",
+ "isPermitted": true
+ },
+ {
+ "id": "649289e30d3244e0b48098114d63c2aa",
+ "name": "AIN Web Tool-15-D-SSPST66",
+ "isPermitted": true
+ },
+ {
+ "id": "3f21eeea6c2c486bba31dab816c05a32",
+ "name": "AIN Web Tool-15-D-ASSPST47",
+ "isPermitted": true
+ },
+ {
+ "id": "f60ce21d3ee6427586cff0d22b03b773",
+ "name": "CESAR-100-D-sspjg67246",
+ "isPermitted": true
+ },
+ {
+ "id": "8774659e425f479895ae091bb5d46560",
+ "name": "CESAR-100-D-sspjg68359",
+ "isPermitted": true
+ },
+ {
+ "id": "624eb554b0d147c19ff8885341760481",
+ "name": "AINWebTool-15-D-iftach",
+ "isPermitted": true
+ },
+ {
+ "id": "214f55f5fc414c678059c383b03e4962",
+ "name": "CESAR-100-D-sspjg612401",
+ "isPermitted": true
+ },
+ {
+ "id": "c90666c291664841bb98e4d981ff1db5",
+ "name": "CESAR-100-D-sspjg621340",
+ "isPermitted": true
+ },
+ {
+ "id": "ce5b6bc5c7b348e1bf4b91ac9a174278",
+ "name": "sspjg621351cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "b386b768a3f24c8e953abbe0b3488c02",
+ "name": "AINWebTool-15-D-eteancomp",
+ "isPermitted": true
+ },
+ {
+ "id": "dc6c4dbfd225474e9deaadd34968646c",
+ "name": "AINWebTool-15-T-SPFET",
+ "isPermitted": true
+ },
+ {
+ "id": "02cb5030e9914aa4be120bd9ed1e19eb",
+ "name": "AINWebTool-15-X-eeweww",
+ "isPermitted": true
+ },
+ {
+ "id": "f2f3830e4c984d45bcd00e1a04158a79",
+ "name": "CESAR-100-D-spjg61909",
+ "isPermitted": true
+ },
+ {
+ "id": "05b91bd5137f4929878edd965755c06d",
+ "name": "CESAR-100-D-sspjg621512cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "7002fbe8482d4a989ddf445b1ce336e0",
+ "name": "AINWebTool-15-X-vdr",
+ "isPermitted": true
+ },
+ {
+ "id": "4008522be43741dcb1f5422022a2aa0b",
+ "name": "AINWebTool-15-D-ssasa",
+ "isPermitted": true
+ },
+ {
+ "id": "f44e2e96a1b6476abfda2fa407b00169",
+ "name": "AINWebTool-15-D-PFNPT",
+ "isPermitted": true
+ },
+ {
+ "id": "b69a52bec8a84669a37a1e8b72708be7",
+ "name": "AINWebTool-15-X-vdre",
+ "isPermitted": true
+ },
+ {
+ "id": "fac7d9fd56154caeb9332202dcf2969f",
+ "name": "AINWebTool-15-X-NONPODECOMP",
+ "isPermitted": true
+ },
+ {
+ "id": "2d34d8396e194eb49969fd61ffbff961",
+ "name": "DN5242-Nov16-T5",
+ "isPermitted": true
+ },
+ {
+ "id": "cb42a77ff45b48a8b8deb83bb64acc74",
+ "name": "ro-T11",
+ "isPermitted": true
+ },
+ {
+ "id": "fa45ca53c80b492fa8be5477cd84fc2b",
+ "name": "ro-T112",
+ "isPermitted": true
+ },
+ {
+ "id": "4914ab0ab3a743e58f0eefdacc1dde77",
+ "name": "DN5242-Nov21-T1",
+ "isPermitted": true
+ },
+ {
+ "id": "d0a3e3f2964542259d155a81c41aadc3",
+ "name": "test-hvf6-09",
+ "isPermitted": true
+ },
+ {
+ "id": "cbb99fe4ada84631b7baf046b6fd2044",
+ "name": "DN5242-Nov16-T3",
+ "isPermitted": true
+ }
+ ]
+ }
+ },
+ "productFamilies": [
+ {
+ "id": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "name": "SCOTTIE",
+ "isPermitted": true
+ },
+ {
+ "id": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "name": "IGNACIO",
+ "isPermitted": true
+ },
+ {
+ "id": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "name": "Christie",
+ "isPermitted": true
+ },
+ {
+ "id": "a4f6f2ae-9bf5-4ed7-b904-06b2099c4bd7",
+ "name": "Enhanced Services",
+ "isPermitted": true
+ },
+ {
+ "id": "vTerrance",
+ "name": "vTerrance",
+ "isPermitted": true
+ },
+ {
+ "id": "323d69d9-2efe-4r45-ay0a-89ea7ard4e6f",
+ "name": "vSCP",
+ "isPermitted": true
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": true
+ },
+ {
+ "id": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
+ "name": "BVOIP",
+ "isPermitted": true
+ },
+ {
+ "id": "db171b8f-115c-4992-a2e3-ee04cae357e0",
+ "name": "LINDSEY",
+ "isPermitted": true
+ },
+ {
+ "id": "LRSI-OSPF",
+ "name": "LRSI-OSPF",
+ "isPermitted": true
+ },
+ {
+ "id": "vRosemarie",
+ "name": "HNGATEWAY",
+ "isPermitted": true
+ },
+ {
+ "id": "vHNPaas",
+ "name": "WILKINS",
+ "isPermitted": true
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "b6a3f28c-eebf-494c-a900-055cc7c874ce",
+ "name": "VROUTER",
+ "isPermitted": true
+ },
+ {
+ "id": "Cisneros",
+ "name": "vMuriel",
+ "isPermitted": true
+ },
+ {
+ "id": "0ee8c1bc-7cbd-4b0a-a1ac-e9999255abc1",
+ "name": "CARA Griffin",
+ "isPermitted": true
+ },
+ {
+ "id": "c7611ebe-c324-48f1-8085-94aef0c6ef3d",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ },
+ {
+ "id": "e30755dc-5673-4b6b-9dcf-9abdd96b93d1",
+ "name": "Transport",
+ "isPermitted": true
+ },
+ {
+ "id": "vSalvatore",
+ "name": "vSalvatore",
+ "isPermitted": true
+ },
+ {
+ "id": "d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4",
+ "name": "Josefina",
+ "isPermitted": true
+ },
+ {
+ "id": "vHubbard",
+ "name": "vHubbard",
+ "isPermitted": true
+ },
+ {
+ "id": "12a96a9d-4b4c-4349-a950-fe1159602621",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ }
+ ],
+ "serviceTypes": {
+ "e433710f-9217-458d-a79d-1c7aff376d89": [
+ {
+ "id": "0",
+ "name": "vRichardson",
+ "isPermitted": false
+ },
+ {
+ "id": "1",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "2",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "3",
+ "name": "vJamie",
+ "isPermitted": false
+ },
+ {
+ "id": "4",
+ "name": "vVoiceMail",
+ "isPermitted": false
+ },
+ {
+ "id": "5",
+ "name": "Kennedy",
+ "isPermitted": false
+ },
+ {
+ "id": "6",
+ "name": "vSEGW",
+ "isPermitted": false
+ },
+ {
+ "id": "7",
+ "name": "vVM",
+ "isPermitted": false
+ },
+ {
+ "id": "8",
+ "name": "vOTA",
+ "isPermitted": false
+ },
+ {
+ "id": "9",
+ "name": "vMME",
+ "isPermitted": false
+ },
+ {
+ "id": "10",
+ "name": "vMNS",
+ "isPermitted": false
+ },
+ {
+ "id": "11",
+ "name": "vSCP",
+ "isPermitted": false
+ },
+ {
+ "id": "12",
+ "name": "VPMS",
+ "isPermitted": false
+ },
+ {
+ "id": "13",
+ "name": "vMMSC",
+ "isPermitted": false
+ },
+ {
+ "id": "14",
+ "name": "SSD",
+ "isPermitted": false
+ },
+ {
+ "id": "15",
+ "name": "vMOG",
+ "isPermitted": false
+ },
+ {
+ "id": "16",
+ "name": "LINDSEY",
+ "isPermitted": false
+ },
+ {
+ "id": "17",
+ "name": "JOHANNA_SANTOS",
+ "isPermitted": false
+ },
+ {
+ "id": "18",
+ "name": "vCarroll",
+ "isPermitted": false
+ }
+ ]
+ },
+ "aicZones": [
+ {
+ "id": "NFT1",
+ "name": "NFTJSSSS-NFT1"
+ },
+ {
+ "id": "JAG1",
+ "name": "YUDFJULP-JAG1"
+ },
+ {
+ "id": "YYY1",
+ "name": "UUUAIAAI-YYY1"
+ },
+ {
+ "id": "BAN1",
+ "name": "VSDKYUTP-BAN1"
+ },
+ {
+ "id": "DKJ1",
+ "name": "DKJSJDKA-DKJ1"
+ },
+ {
+ "id": "MCS1",
+ "name": "ASACMAMS-MCS1"
+ },
+ {
+ "id": "UIO1",
+ "name": "uioclli1-UIO1"
+ },
+ {
+ "id": "RAJ1",
+ "name": "YGBIJNLQ-RAJ1"
+ },
+ {
+ "id": "OPA1",
+ "name": "opaclli1-OPA1"
+ },
+ {
+ "id": "SDE1",
+ "name": "ZXCVBNMA-SDE1"
+ },
+ {
+ "id": "VEN2",
+ "name": "FGHJUHIL-VEN2"
+ },
+ {
+ "id": "ORL1",
+ "name": "ORLDFLMA-ORL1"
+ },
+ {
+ "id": "JAD1",
+ "name": "JADECLLI-JAD1"
+ },
+ {
+ "id": "ZXL1",
+ "name": "LWLWCANN-ZXL1"
+ },
+ {
+ "id": "CKL1",
+ "name": "CLKSKCKK-CKL1"
+ },
+ {
+ "id": "SDF1",
+ "name": "sdfclli1-SDF1"
+ },
+ {
+ "id": "RAD1",
+ "name": "RADICAL1-RAD1"
+ },
+ {
+ "id": "KIT1",
+ "name": "BHYJFGLN-KIT1"
+ },
+ {
+ "id": "REL1",
+ "name": "INGERFGT-REL1"
+ },
+ {
+ "id": "JNL1",
+ "name": "CJALSDAC-JNL1"
+ },
+ {
+ "id": "OLK1",
+ "name": "OLKOLKLS-OLK1"
+ },
+ {
+ "id": "CHI1",
+ "name": "CHILLIWE-CHI1"
+ },
+ {
+ "id": "UUU4",
+ "name": "UUUAAAUU-UUU4"
+ },
+ {
+ "id": "TUF1",
+ "name": "TUFCLLI1-TUF1"
+ },
+ {
+ "id": "KJN1",
+ "name": "CKALDKSA-KJN1"
+ },
+ {
+ "id": "SAM1",
+ "name": "SNDGCA64-SAN1"
+ },
+ {
+ "id": "SCK1",
+ "name": "SCKSCKSK-SCK1"
+ },
+ {
+ "id": "HJH1",
+ "name": "AOEEQQQD-HJH1"
+ },
+ {
+ "id": "HGD1",
+ "name": "SDFQWHGD-HGD1"
+ },
+ {
+ "id": "KOR1",
+ "name": "HYFLNBVT-KOR1"
+ },
+ {
+ "id": "ATL43",
+ "name": "AICLOCID-ATL43"
+ },
+ {
+ "id": "ATL54",
+ "name": "AICFTAAI-ATL54"
+ },
+ {
+ "id": "ATL66",
+ "name": "CLLIAAII-ATL66"
+ },
+ {
+ "id": "VEL1",
+ "name": "BNMLKUIK-VEL1"
+ },
+ {
+ "id": "ICC1",
+ "name": "SANJITAT-ICC1"
+ },
+ {
+ "id": "MNT11",
+ "name": "WSXEFBTH-MNT11"
+ },
+ {
+ "id": "DEF2",
+ "name": "WSBHGTYL-DEF2"
+ },
+ {
+ "id": "MAD11",
+ "name": "SDFQWGKL-MAD11"
+ },
+ {
+ "id": "OLG1",
+ "name": "OLHOLHOL-OLG1"
+ },
+ {
+ "id": "GAR1",
+ "name": "NGFVSJKO-GAR1"
+ },
+ {
+ "id": "SAN22",
+ "name": "GNVLSCTL-SAN22"
+ },
+ {
+ "id": "HRG1",
+ "name": "HRGHRGGS-HRG1"
+ },
+ {
+ "id": "JCS1",
+ "name": "JCSJSCJS-JCS1"
+ },
+ {
+ "id": "DHA12",
+ "name": "WSXEDECF-DHA12"
+ },
+ {
+ "id": "HJE1",
+ "name": "AOEEWWWD-HJE1"
+ },
+ {
+ "id": "NCA1",
+ "name": "NCANCANN-NCA1"
+ },
+ {
+ "id": "IOP1",
+ "name": "iopclli1-IOP1"
+ },
+ {
+ "id": "RTY1",
+ "name": "rtyclli1-RTY1"
+ },
+ {
+ "id": "KAP1",
+ "name": "HIOUYTRQ-KAP1"
+ },
+ {
+ "id": "ZEN1",
+ "name": "ZENCLLI1-ZEN1"
+ },
+ {
+ "id": "HKA1",
+ "name": "JAKHLASS-HKA1"
+ },
+ {
+ "id": "CQK1",
+ "name": "CQKSCAKK-CQK1"
+ },
+ {
+ "id": "SAI1",
+ "name": "UBEKQLPD-SAI1"
+ },
+ {
+ "id": "ERT1",
+ "name": "ertclli1-ERT1"
+ },
+ {
+ "id": "IBB1",
+ "name": "PLMKOIJU-IBB1"
+ },
+ {
+ "id": "TIR2",
+ "name": "PLKINHYI-TIR2"
+ },
+ {
+ "id": "HSD1",
+ "name": "CHASKCDS-HSD1"
+ },
+ {
+ "id": "SLF78",
+ "name": "SDCTLFN1-SLF78"
+ },
+ {
+ "id": "SEE78",
+ "name": "SDCTEEE4-SEE78"
+ },
+ {
+ "id": "SAN13",
+ "name": "TOKYJPFA-SAN13"
+ },
+ {
+ "id": "SAA78",
+ "name": "SDCTAAA1-SAA78"
+ },
+ {
+ "id": "LUC1",
+ "name": "ATLDFGYC-LUC1"
+ },
+ {
+ "id": "AMD13",
+ "name": "MEMATLAN-AMD13"
+ },
+ {
+ "id": "TOR1",
+ "name": "TOROONXN-TOR1"
+ },
+ {
+ "id": "QWE1",
+ "name": "QWECLLI1-QWE1"
+ },
+ {
+ "id": "ZOG1",
+ "name": "ZOGASTRO-ZOG1"
+ },
+ {
+ "id": "CAL33",
+ "name": "CALIFORN-CAL33"
+ },
+ {
+ "id": "SHH78",
+ "name": "SDIT1HHH-SHH78"
+ },
+ {
+ "id": "DSA1",
+ "name": "LKJHGFDS-DSA1"
+ },
+ {
+ "id": "CLG1",
+ "name": "CLGRABAD-CLG1"
+ },
+ {
+ "id": "BNA1",
+ "name": "BNARAGBK-BNA1"
+ },
+ {
+ "id": "ATL84",
+ "name": "CANTTCOC-ATL84"
+ },
+ {
+ "id": "APP1",
+ "name": "WBHGTYUI-APP1"
+ },
+ {
+ "id": "RJN1",
+ "name": "RJNRBZAW-RJN1"
+ },
+ {
+ "id": "EHH78",
+ "name": "SDCSHHH5-EHH78"
+ },
+ {
+ "id": "mac10",
+ "name": "PKGTESTF-mac10"
+ },
+ {
+ "id": "SXB78",
+ "name": "SDCTGXB1-SXB78"
+ },
+ {
+ "id": "SAX78",
+ "name": "SDCTAXG1-SAX78"
+ },
+ {
+ "id": "SYD1",
+ "name": "SYDNAUBV-SYD1"
+ },
+ {
+ "id": "TOK1",
+ "name": "TOKYJPFA-TOK1"
+ },
+ {
+ "id": "KGM2",
+ "name": "KGMTNC20-KGM2"
+ },
+ {
+ "id": "DCC1b",
+ "name": "POIUYTGH-DCC1b"
+ },
+ {
+ "id": "SKK78",
+ "name": "SDCTKKK1-SKK78"
+ },
+ {
+ "id": "SGG78",
+ "name": "SDCTGGG1-SGG78"
+ },
+ {
+ "id": "SJJ78",
+ "name": "SDCTJJJ1-SJJ78"
+ },
+ {
+ "id": "SBX78",
+ "name": "SDCTBXG1-SBX78"
+ },
+ {
+ "id": "LAG1",
+ "name": "LARGIZON-LAG1"
+ },
+ {
+ "id": "IAA1",
+ "name": "QAZXSWED-IAA1"
+ },
+ {
+ "id": "POI1",
+ "name": "PLMNJKIU-POI1"
+ },
+ {
+ "id": "LAG1a",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "PBL1",
+ "name": "PBLAPBAI-PBL1"
+ },
+ {
+ "id": "LAG45",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "MAR1",
+ "name": "MNBVCXZM-MAR1"
+ },
+ {
+ "id": "HST70",
+ "name": "HSTNTX70-HST70"
+ },
+ {
+ "id": "DCC1a",
+ "name": "POIUYTGH-DCC1a"
+ },
+ {
+ "id": "TOL1",
+ "name": "TOLDOH21-TOL1"
+ },
+ {
+ "id": "LON1",
+ "name": "LONEENCO-LON1"
+ },
+ {
+ "id": "SJU78",
+ "name": "SDIT1JUB-SJU78"
+ },
+ {
+ "id": "STN27",
+ "name": "HSTNTX01-STN27"
+ },
+ {
+ "id": "SSW56",
+ "name": "ss8126GT-SSW56"
+ },
+ {
+ "id": "SBB78",
+ "name": "SDIT1BBB-SBB78"
+ },
+ {
+ "id": "DCC3",
+ "name": "POIUYTGH-DCC3"
+ },
+ {
+ "id": "GNV1",
+ "name": "GNVLSCTL-GNV1"
+ },
+ {
+ "id": "WAS1",
+ "name": "WASHDCSW-WAS1"
+ },
+ {
+ "id": "TOY1",
+ "name": "TORYONNZ-TOY1"
+ },
+ {
+ "id": "STT1",
+ "name": "STTLWA02-STT1"
+ },
+ {
+ "id": "STG1",
+ "name": "STTGGE62-STG1"
+ },
+ {
+ "id": "SLL78",
+ "name": "SDCTLLL1-SLL78"
+ },
+ {
+ "id": "SBU78",
+ "name": "SDIT1BUB-SBU78"
+ },
+ {
+ "id": "ATL2",
+ "name": "ATLNGANW-ATL2"
+ },
+ {
+ "id": "BOT1",
+ "name": "BOTHWAKY-BOT1"
+ },
+ {
+ "id": "SNG1",
+ "name": "SNGPSIAU-SNG1"
+ },
+ {
+ "id": "NYC1",
+ "name": "NYCMNY54-NYC1"
+ },
+ {
+ "id": "LAG1b",
+ "name": "LARGIZON-LAG1b"
+ },
+ {
+ "id": "AMD15",
+ "name": "AMDFAA01-AMD15"
+ },
+ {
+ "id": "SNA1",
+ "name": "SNANTXCA-SNA1"
+ },
+ {
+ "id": "PLT1",
+ "name": "PLTNCA60-PLT1"
+ },
+ {
+ "id": "TLP1",
+ "name": "TLPNXM18-TLP1"
+ },
+ {
+ "id": "SDD81",
+ "name": "SAIT1DD6-SDD81"
+ },
+ {
+ "id": "DCC1",
+ "name": "POIUYTGH-DCC1"
+ },
+ {
+ "id": "DCC2",
+ "name": "POIUYTGH-DCC2"
+ },
+ {
+ "id": "OKC1",
+ "name": "OKCBOK55-OKC1"
+ },
+ {
+ "id": "PAR1",
+ "name": "PARSFRCG-PAR1"
+ },
+ {
+ "id": "TES36",
+ "name": "ABCEETES-TES36"
+ },
+ {
+ "id": "COM1",
+ "name": "PLMKOPIU-COM1"
+ },
+ {
+ "id": "ANI1",
+ "name": "ATLNGTRE-ANI1"
+ },
+ {
+ "id": "SDG78",
+ "name": "SDIT1BDG-SDG78"
+ },
+ {
+ "id": "mac20",
+ "name": "PKGTESTF-mac20"
+ },
+ {
+ "id": "DSF45",
+ "name": "DSFBG123-DSF45"
+ },
+ {
+ "id": "HST25",
+ "name": "HSTNTX01-HST25"
+ },
+ {
+ "id": "AMD18",
+ "name": "AUDIMA01-AMD18"
+ },
+ {
+ "id": "SAA80",
+ "name": "SAIT9AA3-SAA80"
+ },
+ {
+ "id": "SSA56",
+ "name": "SSIT2AA7-SSA56"
+ },
+ {
+ "id": "SDD82",
+ "name": "SAIT1DD9-SDD82"
+ },
+ {
+ "id": "JCV1",
+ "name": "JCVLFLBW-JCV1"
+ },
+ {
+ "id": "SUL2",
+ "name": "WERTYUJK-SUL2"
+ },
+ {
+ "id": "PUR1",
+ "name": "purelyde-PUR1"
+ },
+ {
+ "id": "FDE55",
+ "name": "FDERT555-FDE55"
+ },
+ {
+ "id": "SITE",
+ "name": "LONEENCO-SITE"
+ },
+ {
+ "id": "ATL1",
+ "name": "ATLNGAMA-ATL1"
+ },
+ {
+ "id": "JUL1",
+ "name": "ZXCVBNMM-JUL1"
+ },
+ {
+ "id": "TAT34",
+ "name": "TESAAISB-TAT34"
+ },
+ {
+ "id": "XCP12",
+ "name": "CHKGH123-XCP12"
+ },
+ {
+ "id": "RAI1",
+ "name": "poiuytre-RAI1"
+ },
+ {
+ "id": "HPO1",
+ "name": "ATLNGAUP-HPO1"
+ },
+ {
+ "id": "KJF12",
+ "name": "KJFDH123-KJF12"
+ },
+ {
+ "id": "SCC80",
+ "name": "SAIT9CC3-SCC80"
+ },
+ {
+ "id": "SAA12",
+ "name": "SAIT9AF8-SAA12"
+ },
+ {
+ "id": "SAA14",
+ "name": "SAIT1AA9-SAA14"
+ },
+ {
+ "id": "ATL35",
+ "name": "TTESSAAI-ATL35"
+ },
+ {
+ "id": "CWY1",
+ "name": "CWYMOWBS-CWY1"
+ },
+ {
+ "id": "ATL76",
+ "name": "TELEPAAI-ATL76"
+ },
+ {
+ "id": "DSL12",
+ "name": "DSLFK242-DSL12"
+ },
+ {
+ "id": "ATL53",
+ "name": "AAIATLTE-ATL53"
+ },
+ {
+ "id": "SAA11",
+ "name": "SAIT9AA2-SAA11"
+ },
+ {
+ "id": "ATL62",
+ "name": "TESSASCH-ATL62"
+ },
+ {
+ "id": "AUG1",
+ "name": "ASDFGHJK-AUG1"
+ },
+ {
+ "id": "POI22",
+ "name": "POIUY123-POI22"
+ },
+ {
+ "id": "SAA13",
+ "name": "SAIT1AA9-SAA13"
+ },
+ {
+ "id": "BHY17",
+ "name": "BHYTFRF3-BHY17"
+ },
+ {
+ "id": "LIS1",
+ "name": "HOSTPROF-LIS1"
+ },
+ {
+ "id": "SIP1",
+ "name": "ZXCVBNMK-SIP1"
+ },
+ {
+ "id": "ATL99",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "ATL64",
+ "name": "FORLOAAJ-ATL64"
+ },
+ {
+ "id": "TAT33",
+ "name": "TESAAISA-TAT33"
+ },
+ {
+ "id": "RAD10",
+ "name": "INDIPUNE-RAD10"
+ },
+ {
+ "id": "RTW5",
+ "name": "BHYTFRY4-RTW5"
+ },
+ {
+ "id": "JGS1",
+ "name": "KSJKKKKK-JGS1"
+ },
+ {
+ "id": "ATL98",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "WAN1",
+ "name": "LEIWANGW-WAN1"
+ },
+ {
+ "id": "ATL44",
+ "name": "ATLSANAB-ATL44"
+ },
+ {
+ "id": "RTD2",
+ "name": "BHYTFRk4-RTD2"
+ },
+ {
+ "id": "NIR1",
+ "name": "ORFLMANA-NIR1"
+ },
+ {
+ "id": "ATL75",
+ "name": "SANAAIRE-ATL75"
+ },
+ {
+ "id": "NUM1",
+ "name": "QWERTYUI-NUM1"
+ },
+ {
+ "id": "MTN32",
+ "name": "MDTWNJ21-MTN32"
+ },
+ {
+ "id": "RTZ4",
+ "name": "BHYTFRZ6-RTZ4"
+ },
+ {
+ "id": "ATL56",
+ "name": "ATLSANAC-ATL56"
+ },
+ {
+ "id": "AMS1",
+ "name": "AMSTNLBW-AMS1"
+ },
+ {
+ "id": "RCT1",
+ "name": "AMSTERNL-RCT1"
+ },
+ {
+ "id": "JAN1",
+ "name": "ORFLMATT-JAN1"
+ },
+ {
+ "id": "ABC14",
+ "name": "TESAAISA-ABC14"
+ },
+ {
+ "id": "TAT37",
+ "name": "TESAAISD-TAT37"
+ },
+ {
+ "id": "MIC54",
+ "name": "MICHIGAN-MIC54"
+ },
+ {
+ "id": "ABC11",
+ "name": "ATLSANAI-ABC11"
+ },
+ {
+ "id": "AMF11",
+ "name": "AMDOCS01-AMF11"
+ },
+ {
+ "id": "ATL63",
+ "name": "ATLSANEW-ATL63"
+ },
+ {
+ "id": "ABC12",
+ "name": "ATLSECIA-ABC12"
+ },
+ {
+ "id": "MTN20",
+ "name": "MDTWNJ21-MTN20"
+ },
+ {
+ "id": "ABC15",
+ "name": "AAITESAN-ABC15"
+ },
+ {
+ "id": "AVT1",
+ "name": "AVTRFLHD-AVT1"
+ },
+ {
+ "id": "ATL34",
+ "name": "ATLSANAI-ATL34"
+ }
+ ],
+ "categoryParameters": {
+ "owningEntityList": [
+ {
+ "id": "aaa1",
+ "name": "aaa1"
+ },
+ {
+ "id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "name": "WayneHolland"
+ },
+ {
+ "id": "Melissa",
+ "name": "Melissa"
+ }
+ ],
+ "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"
+ }
+ ]
+ },
+ "type": "[LCP_REGIONS_AND_TENANTS] Update",
+ "subscribers": [
+ {
+ "id": "CAR_2020_ER",
+ "name": "CAR_2020_ER",
+ "isPermitted": true
+ },
+ {
+ "id": "21014aa2-526b-11e6-beb8-9e71128cae77",
+ "name": "JULIO ERICKSON",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-2",
+ "name": "DALE BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-1",
+ "name": "LLOYD BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example",
+ "name": "JimmyExampleCust-20161102",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example2",
+ "name": "JimmyExampleCust-20161103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-102",
+ "name": "ERICA5779-TestSub-PWT-102",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-101",
+ "name": "ERICA5779-TestSub-PWT-101",
+ "isPermitted": false
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-4",
+ "name": "ERICA5779-Subscriber-5",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-103",
+ "name": "ERICA5779-TestSub-PWT-103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-2",
+ "name": "ERICA5779-Subscriber-2",
+ "isPermitted": false
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "SILVIA ROBBINS",
+ "isPermitted": true
+ },
+ {
+ "id": "ERICA5779-Subscriber-3",
+ "name": "ERICA5779-Subscriber-3",
+ "isPermitted": false
+ },
+ {
+ "id": "31739f3e-526b-11e6-beb8-9e71128cae77",
+ "name": "CRAIG/ROBERTS",
+ "isPermitted": false
+ }
+ ]
+ }
+}
+}
+}
+
+class MockFeatureFlagsService {}
+
+describe('Network Control Generator', () => {
+ let injector;
+ let service: NetworkControlGenerator;
+ let httpMock: HttpTestingController;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ imports: [HttpClientTestingModule],
+ providers: [NetworkControlGenerator,
+ GenericFormService,
+ BasicControlGenerator,
+ AaiService,
+ FormBuilder,
+ LogService,
+ {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
+ {provide: NgRedux, useClass: MockAppStore}]
+ });
+
+ injector = getTestBed();
+ service = injector.get(NetworkControlGenerator);
+ httpMock = injector.get(HttpTestingController);
+ });
+
+ test('getMacroFormControls check for mandatory controls', () => {
+ const serviceId : string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const networkName : string = "ExtVL 0";
+ const networkStoreKey : string = "ExtVL 0";
+ const controls :FormControlModel[] = service.getMacroFormControls(serviceId, networkStoreKey, networkName, false);
+
+ const mandatoryControls : string[] = [
+ FormControlNames.LCPCLOUD_REGION_ID,
+ 'tenantId',
+ 'platformName'
+ ];
+ for(let i = 0 ; i < mandatoryControls.length ; i++){
+ let requiredExist = controls.find(ctrl => ctrl.controlName === mandatoryControls[i]).validations.find(item => item.validatorName === 'required');
+ expect(requiredExist).toBeDefined();
+ }
+ });
+
+
+ test('getMacroFormControls should return instance name if isEcompName is true', () => {
+ const serviceId : string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const networkName : string = "ExtVL 1";
+ const networkStoreKey : string = "ExtVL 1";
+ const controls :FormControlModel[] = service.getMacroFormControls(serviceId, networkStoreKey, networkName, false);
+
+ const controlsOrderNames = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.PRODUCT_FAMILY_ID,
+ FormControlNames.LCPCLOUD_REGION_ID ,
+ 'legacyRegion',
+ 'tenantId',
+ 'platformName',
+ 'lineOfBusiness'];
+
+
+
+ expect(controls.length).toEqual(7);
+ for(let i = 0 ; i < controls.length ; i++){
+ expect(controls[i].controlName).toEqual(controlsOrderNames[i]);
+ }
+ });
+
+ test('getMacroFormControls should return the correct order of controls', () => {
+ const serviceId : string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const networkName : string = "ExtVL 0";
+ const networkStoreKey : string = "ExtVL 0";
+ const controls :FormControlModel[] = service.getMacroFormControls(serviceId, networkStoreKey, networkName, false);
+
+ const controlsOrderNames = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.PRODUCT_FAMILY_ID,
+ FormControlNames.LCPCLOUD_REGION_ID ,
+ 'legacyRegion',
+ 'tenantId',
+ 'platformName',
+ 'lineOfBusiness'];
+
+
+
+ expect(controls.length).toEqual(7);
+ for(let i = 0 ; i < controls.length ; i++){
+ expect(controls[i].controlName).toEqual(controlsOrderNames[i]);
+ }
+ });
+
+ test('getMacroFormControls should not return the rollback status', () => {
+ const serviceId : string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const networkName : string = "ExtVL 0";
+ const networkStoreKey : string = "ExtVL 0";
+ const controls :FormControlModel[] = service.getMacroFormControls(serviceId, networkStoreKey, networkName, false);
+
+ const controlsOrderNames = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.PRODUCT_FAMILY_ID,
+ FormControlNames.LCPCLOUD_REGION_ID ,
+ 'legacyRegion',
+ 'tenantId',
+ 'platformName',
+ 'lineOfBusiness',
+ FormControlNames.ROLLBACK_ON_FAILURE
+ ];
+
+
+
+ expect(controls.length).toEqual(7);
+ for(let i = 0 ; i < controls.length ; i++){
+ expect(controls[i].controlName).toEqual(controlsOrderNames[i]);
+ }
+ });
+
+ test('getAlacartFormControls should return the correct order of controls', () => {
+ const controls:FormControlModel[] = getAlaCarteFormControls();
+
+ const controlsOrderNames = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.PRODUCT_FAMILY_ID,
+ FormControlNames.LCPCLOUD_REGION_ID,
+ 'legacyRegion',
+ 'tenantId',
+ 'platformName',
+ 'lineOfBusiness',
+ 'rollbackOnFailure'];
+ expect(controls.length).toEqual(8);
+ for(let i = 0 ; i < controls.length ; i++) {
+ expect(controls[i].controlName).toEqual(controlsOrderNames[i]);
+ }
+ });
+
+ function getAlaCarteFormControls(): FormControlModel[] {
+ const serviceId: string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const networkName: string = "ExtVL 0";
+ const networkStoreKey: string = "ExtVL 0";
+ const controls: FormControlModel[] = service.getAlaCarteFormControls(serviceId, networkStoreKey, networkName, false);
+ return controls;
+ }
+
+ test('getAlacartFormControls instance name control validator shall have the expected regex', () => {
+ const controls:FormControlModel[] = getAlaCarteFormControls();
+
+ const instanceNameControl: FormControlModel = <FormControlModel>controls.find(item => item.controlName === FormControlNames.INSTANCE_NAME);
+ const instanceNameValidator: ValidatorModel = instanceNameControl.validations.find(val => val.validatorName === ValidatorOptions.pattern);
+ expect(instanceNameValidator.validatorArg).toEqual(/^[a-zA-Z0-9._-]*$/);
+ });
+
+ test('getAlacartFormControls check for mandatory controls', () => {
+ const controls:FormControlModel[] = getAlaCarteFormControls();
+
+ const mandatoryControls : string[] = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.LCPCLOUD_REGION_ID,
+ 'tenantId',
+ 'platformName',
+ 'rollbackOnFailure'
+ ];
+ for(let i = 0 ; i < mandatoryControls.length ; i++){
+ let requiredExist = controls.find(ctrl => ctrl.controlName === mandatoryControls[i]).validations.find(item => item.validatorName === 'required');
+ expect(requiredExist).toBeDefined();
+ }
+ });
+});
+
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator.ts
new file mode 100644
index 000000000..c3a622338
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator.ts
@@ -0,0 +1,247 @@
+import {Injectable} from "@angular/core";
+import {GenericFormService} from "../../generic-form.service";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {NgRedux} from "@angular-redux/store";
+import {HttpClient} from "@angular/common/http";
+import {BasicControlGenerator} from "../basic.control.generator";
+import * as _ from 'lodash';
+import {Observable, of} from "rxjs";
+
+import {
+ FormControlModel,
+ ValidatorModel,
+ ValidatorOptions
+} from "../../../../models/formControlModels/formControl.model";
+import {LogService} from "../../../../utils/log/log.service";
+import {AppState} from "../../../../store/reducers";
+import {FormGroup} from "@angular/forms";
+import {DropdownFormControl} from "../../../../models/formControlModels/dropdownFormControl.model";
+import {FormControlType} from "../../../../models/formControlModels/formControlTypes.enum";
+import {InputFormControl} from "../../../../models/formControlModels/inputFormControl.model";
+import {SelectOption} from "../../../../models/selectOption";
+import {NetworkInstance} from "../../../../models/networkInstance";
+import {NetworkModel} from "../../../../models/networkModel";
+import {Constants} from "../../../../utils/constants";
+
+export enum FormControlNames {
+ INSTANCE_NAME = 'instanceName',
+ GLOBAL_SUBSCRIBER_ID = 'globalSubscriberId',
+ PRODUCT_FAMILY_ID = 'productFamilyId',
+ LCPCLOUD_REGION_ID = 'lcpCloudRegionId',
+ TENANT_ID = 'tenantId',
+ AICZONE_ID = 'aicZoneId',
+ ROLLBACK_ON_FAILURE = 'rollbackOnFailure',
+ LEGACY_REGION = 'legacyRegion'
+}
+
+
+enum InputType {
+ LCP_REGION = "lcpCloudRegionId",
+ TENANT = "tenantId",
+ LOB = "lineOfBusiness",
+ PLATFORM = "platformName",
+ ROLLBACK = "rollbackOnFailure",
+ PRODUCT_FAMILY = "productFamilyId",
+ VG = "volumeGroupName"
+}
+
+@Injectable()
+export class NetworkControlGenerator {
+ aaiService: AaiService;
+
+ constructor(private genericFormService: GenericFormService,
+ private _basicControlGenerator: BasicControlGenerator,
+ private store: NgRedux<AppState>,
+ private http: HttpClient,
+ private _aaiService: AaiService,
+ private _logService: LogService) {
+ this.aaiService = _aaiService;
+ }
+
+ getNetworkInstance = (serviceId: string, networkName: string, isUpdateMode : boolean): NetworkInstance => {
+ let networkInstance : NetworkInstance = null;
+ if (isUpdateMode && this.store.getState().service.serviceInstance[serviceId] && _.has(this.store.getState().service.serviceInstance[serviceId].networks, networkName)) {
+ networkInstance = Object.assign({}, this.store.getState().service.serviceInstance[serviceId].networks[networkName]);
+ }
+ return networkInstance;
+ };
+
+
+ getMacroFormControls(serviceId: string, networkStoreKey: string, networkName: string, isUpdateMode : boolean): FormControlModel[] {
+ networkStoreKey = _.isNil(networkStoreKey) ? networkName : networkStoreKey;
+
+ if (_.isNil(serviceId) || _.isNil(networkStoreKey) || _.isNil(networkName)) {
+ this._logService.error('should provide serviceId, networkName, networkStoreKey', serviceId);
+ return [];
+ }
+
+ const networkInstance = this.getNetworkInstance(serviceId, networkStoreKey, isUpdateMode);
+ const networkModel = new NetworkModel(this.store.getState().service.serviceHierarchy[serviceId].networks[networkName]);
+ let result: FormControlModel[] = [];
+
+ if (!_.isNil(networkModel)) {
+ result.push(this.getInstanceName(networkInstance, serviceId, networkName, networkModel.isEcompGeneratedNaming));
+ result.push(this._basicControlGenerator.getProductFamilyControl(networkInstance, result, false));
+ result.push(this.getLcpRegionControl(serviceId, networkInstance, result));
+ result.push(this._basicControlGenerator.getLegacyRegion(networkInstance));
+ result.push(this.getTenantControl(serviceId, networkInstance, result));
+ result.push(this.getPlatformControl(networkInstance, result));
+ result.push(this.getLineOfBusinessControl(networkInstance, result));
+ }
+ return result;
+
+ }
+
+ getAlaCarteFormControls(serviceId: string, networkStoreKey: string, networkName: string, isUpdateMode : boolean): FormControlModel[] {
+ networkStoreKey = _.isNil(networkStoreKey) ? networkName : networkStoreKey;
+ if (_.isNil(serviceId) || _.isNil(networkStoreKey) || _.isNil(networkName)) {
+ this._logService.error('should provide serviceId, networkName, networkStoreKey', serviceId);
+ return [];
+ }
+
+ let result: FormControlModel[] = [];
+ const networkInstance = this.getNetworkInstance(serviceId, networkStoreKey, isUpdateMode);
+ const networkModel = new NetworkModel(this.store.getState().service.serviceHierarchy[serviceId].networks[networkName]);
+
+ if (!_.isNil(networkModel)) {
+ result.push(this.getInstanceName(networkInstance, serviceId, networkName, networkModel.isEcompGeneratedNaming));
+ result.push(this._basicControlGenerator.getProductFamilyControl(networkInstance, result, false));
+ result.push(this.getLcpRegionControl(serviceId, networkInstance, result));
+ result.push(this._basicControlGenerator.getLegacyRegion(networkInstance));
+ result.push(this.getTenantControl(serviceId, networkInstance, result));
+ result.push(this.getPlatformControl(networkInstance, result));
+ result.push(this.getLineOfBusinessControl(networkInstance, result));
+ result.push(this.getRollbackOnFailureControl(networkInstance, result));
+ }
+ return result;
+
+ }
+
+ isInputShouldBeShown = (inputType: any): boolean => {
+ let networkInputs = [InputType.LCP_REGION, InputType.LOB, InputType.TENANT, InputType.PRODUCT_FAMILY, InputType.PLATFORM, InputType.ROLLBACK];
+ return networkInputs.indexOf(inputType) > -1;
+ };
+
+ getInstanceName(instance : any, serviceId : string, networkName : string, isEcompGeneratedNaming: boolean): FormControlModel {
+ const networkModel : NetworkModel = this.store.getState().service.serviceHierarchy[serviceId].networks[networkName];
+ return this._basicControlGenerator.getInstanceNameController(instance, serviceId, isEcompGeneratedNaming, networkModel);
+ }
+
+ getLineOfBusinessControl = (instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: 'lineOfBusiness',
+ displayName: 'Line of business',
+ dataTestId: 'lineOfBusiness',
+ placeHolder: 'Select Line Of Business',
+ isDisabled: false,
+ name: "lineOfBusiness",
+ value: instance ? instance.lineOfBusiness : null,
+ validations: [],
+ onInitSelectedField: ['lineOfBusinessList'],
+ onInit: this._basicControlGenerator.getSubscribeInitResult.bind(null, this._aaiService.getCategoryParameters)
+ })
+ };
+
+ getPlatformControl = (instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: 'platformName',
+ displayName: 'Platform',
+ dataTestId: 'platform',
+ placeHolder: 'Select Platform',
+ isDisabled: false,
+ name: "platform",
+ value: instance ? instance.platformName : null,
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ onInitSelectedField: ['platformList'],
+ onInit: this._basicControlGenerator.getSubscribeInitResult.bind(null, this._aaiService.getCategoryParameters)
+ })
+ };
+
+ getTenantControl = (serviceId: string, instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ const service = this.store.getState().service.serviceInstance[serviceId];
+ const globalCustomerId: string = service.globalSubscriberId;
+ const serviceType: string = service.subscriptionServiceType;
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: FormControlNames.TENANT_ID,
+ displayName: 'Tenant',
+ dataTestId: 'tenant',
+ placeHolder: 'Select Tenant',
+ name: "tenant",
+ isDisabled: _.isNil(instance) || _.isNil(instance.lcpCloudRegionId),
+ onInitSelectedField: instance ? ['lcpRegionsTenantsMap', instance.lcpCloudRegionId] : null,
+ value: instance ? instance.tenantId : null,
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ onInit : instance ? this._basicControlGenerator.getSubscribeInitResult.bind(
+ this._aaiService,
+ this.aaiService.getLcpRegionsAndTenants.bind(this, globalCustomerId, serviceType)) : ()=>{},
+ })
+ };
+
+ getLcpRegionControl = (serviceId: string, instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ const service = this.store.getState().service.serviceInstance[serviceId];
+ const globalCustomerId: string = service.globalSubscriberId;
+ const serviceType: string = service.subscriptionServiceType;
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: 'lcpCloudRegionId',
+ displayName: 'LCP region',
+ dataTestId: 'lcpRegion',
+ placeHolder: 'Select LCP Region',
+ name: "lcpRegion",
+ isDisabled: false,
+ value: instance ? instance.lcpCloudRegionId : null,
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ onInitSelectedField: ['lcpRegionList'],
+ onInit: this._basicControlGenerator.getSubscribeInitResult.bind(
+ this._aaiService,
+ this._aaiService.getLcpRegionsAndTenants.bind(this, globalCustomerId, serviceType)),
+ onChange: (param: string, form: FormGroup) => {
+ form.controls[FormControlNames.TENANT_ID].enable();
+ form.controls[FormControlNames.TENANT_ID].reset();
+ if (!_.isNil(globalCustomerId) && !_.isNil(serviceType)) {
+ this._basicControlGenerator.getSubscribeResult.bind(this, this._aaiService.getLcpRegionsAndTenants(globalCustomerId, serviceType).subscribe(res => {
+ controls.find(item => item.controlName === FormControlNames.TENANT_ID)['options$'] = res.lcpRegionsTenantsMap[param];
+ if(res.lcpRegionsTenantsMap[param]){
+ controls.find(item => item.controlName === FormControlNames.TENANT_ID)['hasEmptyOptions'] = res.lcpRegionsTenantsMap[param].length === 0;
+ }
+ }));
+ }
+
+ if (Constants.LegacyRegion.MEGA_REGION.indexOf(param) !== -1) {
+ form.controls['legacyRegion'].enable();
+ controls.find(item => item.controlName === 'legacyRegion').isVisible = true;
+
+ } else {
+ controls.find(item => item.controlName === 'legacyRegion').isVisible = false;
+ form.controls['legacyRegion'].setValue(null);
+ form.controls['legacyRegion'].reset();
+ form.controls['legacyRegion'].disable();
+ }
+ }
+ })
+ };
+
+ getRollbackOnFailureControl = (instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: FormControlNames.ROLLBACK_ON_FAILURE,
+ displayName: 'Rollback on failure',
+ dataTestId: 'rollback',
+ placeHolder: 'Rollback on failure',
+ isDisabled: false,
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ value: instance ? instance.rollbackOnFailure : 'true',
+ onInit: this._basicControlGenerator.getSubscribeInitResult.bind(null, this.getRollBackOnFailureOptions)
+ })
+ };
+
+ getRollBackOnFailureOptions = (): Observable<SelectOption[]> => {
+ return of([
+ new SelectOption({id: 'true', name: 'Rollback'}),
+ new SelectOption({id: 'false', name: 'Don\'t Rollback'})
+ ]);
+ };
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/service.control.generator.spec.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/service.control.generator.spec.ts
new file mode 100644
index 000000000..b7a728c6d
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/service.control.generator.spec.ts
@@ -0,0 +1,1859 @@
+import {getTestBed, TestBed} from '@angular/core/testing';
+import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
+import {NgRedux} from '@angular-redux/store';
+import {FormControlNames, ServiceControlGenerator} from "./service.control.generator";
+import {BasicControlGenerator} from "./basic.control.generator";
+import {AaiService} from "../../../services/aaiService/aai.service";
+import {GenericFormService} from "../generic-form.service";
+import {FormBuilder} from "@angular/forms";
+import {FormControlModel, ValidatorModel, ValidatorOptions} from "../../../models/formControlModels/formControl.model";
+import {LogService} from "../../../utils/log/log.service";
+import {FormControlType} from "../../../models/formControlModels/formControlTypes.enum";
+import {DropdownFormControl} from "../../../models/formControlModels/dropdownFormControl.model";
+import {FeatureFlagsService} from "../../../services/featureFlag/feature-flags.service";
+
+class MockAppStore<T> {
+ getState(){
+ return {
+ "global": {
+ "name": null,
+ "flags": {
+ "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
+ "FLAG_SHOW_ASSIGNMENTS": true,
+ "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
+ "FLAG_UNASSIGN_SERVICE": true,
+ "FLAG_SHOW_VERIFY_SERVICE": false,
+ "FLAG_COLLECTION_RESOURCE_SUPPORT": true,
+ "FLAG_DUPLICATE_VNF": true,
+ "FLAG_SERVICE_MODEL_CACHE": true,
+ "CREATE_INSTANCE_TEST": false,
+ "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
+ "FLAG_ASYNC_INSTANTIATION": true,
+ "FLAG_ASYNC_JOBS": true,
+ "EMPTY_DRAWING_BOARD_TEST": false,
+ "FLAG_ADD_MSO_TESTAPI_FIELD": true
+ },
+ "type": "[FLAGS] Update"
+ },
+ "service": {
+ "serviceHierarchy": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "service": {
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "name": "ComplexService",
+ "version": "1.0",
+ "toscaModelURL": null,
+ "category": "Emanuel",
+ "serviceType": "",
+ "serviceRole": "",
+ "description": "ComplexService",
+ "serviceEcompNaming": "false",
+ "instantiationType": "Macro",
+ "inputs": {}
+ },
+ "vnfs": {
+ "VF_vMee 0": {
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "invariantUuid": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "description": "VSP_vMee",
+ "name": "VF_vMee",
+ "version": "2.0",
+ "customizationUuid": "91415b44-753d-494c-926a-456a9172bbb9",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "max_instances": 10,
+ "min_instances": 1,
+ "gpb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_start_port": "0",
+ "sctp-a-ipv6-egress_rule_application": "any",
+ "Internal2_allow_transit": "true",
+ "sctp-b-IPv6_ethertype": "IPv6",
+ "sctp-a-egress_rule_application": "any",
+ "sctp-b-ingress_action": "pass",
+ "sctp-b-ingress_rule_protocol": "icmp",
+ "ncb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-ingress-src_start_port": "0.0",
+ "ncb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "fsb_volume_size_0": "320.0",
+ "sctp-b-egress_src_addresses": "local",
+ "sctp-a-ipv6-ingress_ethertype": "IPv4",
+ "sctp-a-ipv6-ingress-dst_start_port": "0",
+ "sctp-b-ipv6-ingress_rule_application": "any",
+ "domain_name": "default-domain",
+ "sctp-a-ingress_rule_protocol": "icmp",
+ "sctp-b-egress-src_start_port": "0.0",
+ "sctp-a-egress_src_addresses": "local",
+ "sctp-b-display_name": "epc-sctp-b-ipv4v6-sec-group",
+ "sctp-a-egress-src_start_port": "0.0",
+ "sctp-a-ingress_ethertype": "IPv4",
+ "sctp-b-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-dst_subnet_prefix_v6": "::",
+ "nf_naming": "{ecomp_generated_naming=true}",
+ "sctp-a-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-b-egress-dst_start_port": "0.0",
+ "ncb_flavor_name": "nv.c20r64d1",
+ "gpb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix_len": "0.0",
+ "Internal2_net_cidr": "10.0.0.10",
+ "sctp-a-ingress-dst_start_port": "0.0",
+ "sctp-a-egress-dst_start_port": "0.0",
+ "fsb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-egress_ethertype": "IPv4",
+ "vlc_st_service_mode": "in-network-nat",
+ "sctp-a-ipv6-egress_ethertype": "IPv4",
+ "sctp-a-egress-src_end_port": "65535.0",
+ "sctp-b-ipv6-egress_rule_application": "any",
+ "sctp-b-egress_action": "pass",
+ "sctp-a-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-b-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-b-name": "epc-sctp-b-ipv4v6-sec-group",
+ "fsb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ipv6-ingress-src_start_port": "0.0",
+ "sctp-b-ipv6-egress_ethertype": "IPv4",
+ "Internal1_net_cidr": "10.0.0.10",
+ "sctp-a-egress_dst_subnet_prefix": "0.0.0.0",
+ "fsb_flavor_name": "nv.c20r64d1",
+ "sctp_rule_protocol": "132",
+ "sctp-b-ipv6-ingress_src_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_rule_application": "any",
+ "ecomp_generated_naming": "false",
+ "sctp-a-IPv6_ethertype": "IPv6",
+ "vlc2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_virtualization_type": "virtual-machine",
+ "sctp-b-ingress-dst_start_port": "0.0",
+ "sctp-b-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-a-display_name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-b-ingress_rule_application": "any",
+ "int2_sec_group_name": "int2-sec-group",
+ "vlc_flavor_name": "nd.c16r64d1",
+ "sctp-b-ipv6-egress_src_addresses": "local",
+ "vlc_st_interface_type_int1": "other1",
+ "sctp-b-egress-src_end_port": "65535.0",
+ "sctp-a-ipv6-egress-dst_start_port": "0",
+ "vlc_st_interface_type_int2": "other2",
+ "sctp-a-ipv6-egress_rule_protocol": "any",
+ "Internal2_shared": "false",
+ "sctp-a-ipv6-egress_dst_subnet_prefix_len": "0",
+ "Internal2_rpf": "disable",
+ "vlc1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_end_port": "65535",
+ "sctp-a-ipv6-egress_src_addresses": "local",
+ "sctp-a-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-egress_src_end_port": "65535",
+ "Internal1_forwarding_mode": "l2",
+ "Internal2_dhcp": "false",
+ "sctp-a-dst_subnet_prefix_v6": "::",
+ "pxe_image_name": "MME_PXE-Boot_16ACP04_GA.qcow2",
+ "vlc_st_interface_type_gtp": "other0",
+ "ncb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-src_subnet_prefix_v6": "::",
+ "sctp-a-egress_dst_subnet_prefix_len": "0.0",
+ "int1_sec_group_name": "int1-sec-group",
+ "Internal1_dhcp": "false",
+ "sctp-a-ipv6-egress_dst_end_port": "65535",
+ "Internal2_forwarding_mode": "l2",
+ "fsb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix": "0.0.0.0",
+ "Internal1_net_cidr_len": "17",
+ "gpb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-a-ingress_dst_addresses": "local",
+ "sctp-a-egress_action": "pass",
+ "fsb_volume_type_0": "SF-Default-SSD",
+ "ncb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_sctp_a": "left",
+ "vlc_st_interface_type_sctp_b": "right",
+ "sctp-a-src_subnet_prefix_v6": "::",
+ "vlc_st_version": "2",
+ "sctp-b-egress_ethertype": "IPv4",
+ "sctp-a-ingress_rule_application": "any",
+ "gpb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "instance_ip_family_v6": "v6",
+ "sctp-a-ipv6-egress_src_start_port": "0",
+ "sctp-b-ingress-src_start_port": "0.0",
+ "sctp-b-ingress_dst_addresses": "local",
+ "fsb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_oam": "management",
+ "multi_stage_design": "true",
+ "oam_sec_group_name": "oam-sec-group",
+ "Internal2_net_gateway": "10.0.0.10",
+ "sctp-a-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-ipv6-egress-dst_start_port": "0",
+ "Internal1_net_gateway": "10.0.0.10",
+ "sctp-b-ipv6-egress_rule_protocol": "any",
+ "gtp_sec_group_name": "gtp-sec-group",
+ "sctp-a-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-egress_dst_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_dst_addresses": "local",
+ "sctp-a-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-egress_action": "pass",
+ "sctp-a-ipv6-egress_action": "pass",
+ "Internal1_shared": "false",
+ "sctp-b-ipv6-ingress_rule_protocol": "any",
+ "Internal2_net_cidr_len": "17",
+ "sctp-a-name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-a-ingress-src_end_port": "65535.0",
+ "sctp-b-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-a-egress-dst_end_port": "65535.0",
+ "sctp-a-ingress_action": "pass",
+ "sctp-b-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-ingress_action": "pass",
+ "vlc_st_service_type": "firewall",
+ "sctp-b-ipv6-egress_dst_end_port": "65535",
+ "sctp-b-ipv6-ingress-dst_start_port": "0",
+ "vlc2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_availability_zone": "true",
+ "fsb_volume_image_name_1": "MME_FSB2_16ACP04_GA.qcow2",
+ "sctp-b-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_src_subnet_prefix_len": "0",
+ "Internal1_allow_transit": "true",
+ "gpb_flavor_name": "nv.c20r64d1",
+ "availability_zone_max_count": "1",
+ "fsb_volume_image_name_0": "MME_FSB1_16ACP04_GA.qcow2",
+ "sctp-b-ipv6-ingress_dst_addresses": "local",
+ "sctp-b-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-ingress_ethertype": "IPv4",
+ "vlc1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_action": "pass",
+ "Internal1_rpf": "disable",
+ "sctp-b-ingress_ethertype": "IPv4",
+ "sctp-b-egress_rule_application": "any",
+ "sctp-b-ingress-src_end_port": "65535.0",
+ "sctp-a-ipv6-ingress_rule_protocol": "any",
+ "sctp-a-ingress-src_start_port": "0.0",
+ "sctp-b-egress-dst_end_port": "65535.0"
+ },
+ "type": "VF",
+ "modelCustomizationName": "VF_vMee 0",
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {
+ "Port Mirroring Configuration By Policy 0": {
+ "uuid": "b4398538-e89d-4f13-b33d-ca323434ba50",
+ "invariantUuid": "6ef0ca40-f366-4897-951f-abd65d25f6f7",
+ "description": "A port mirroring configuration by policy object",
+ "name": "Port Mirroring Configuration By Policy",
+ "version": "27.0",
+ "customizationUuid": "3c3b7b8d-8669-4b3b-8664-61970041fad2",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Configuration",
+ "modelCustomizationName": "Port Mirroring Configuration By Policy 0",
+ "sourceNodes": [],
+ "collectorNodes": null,
+ "configurationByPolicy": false
+ }
+ },
+ "serviceProxies": {},
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ }
+ },
+ "serviceInstance": {},
+ "lcpRegionsAndTenants": {
+ "lcpRegionList": [
+ {
+ "id": "JANET25",
+ "name": "JANET25",
+ "isPermitted": true
+ },
+ {
+ "id": "hvf6",
+ "name": "hvf6",
+ "isPermitted": true
+ }
+ ],
+ "lcpRegionsTenantsMap": {
+ "JANET25": [
+ {
+ "id": "092eb9e8e4b7412e8787dd091bc58e86",
+ "name": "USP-SIP-IC-24335-T-01",
+ "isPermitted": true
+ }
+ ],
+ "hvf6": [
+ {
+ "id": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "name": "AIN Web Tool-15-D-testalexandria",
+ "isPermitted": true
+ },
+ {
+ "id": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "name": "AIN Web Tool-15-D-STTest2",
+ "isPermitted": true
+ },
+ {
+ "id": "1178612d2b394be4834ad77f567c0af2",
+ "name": "AIN Web Tool-15-D-SSPtestcustome",
+ "isPermitted": true
+ },
+ {
+ "id": "19c5ade915eb461e8af52fb2fd8cd1f2",
+ "name": "AIN Web Tool-15-D-UncheckedEcopm",
+ "isPermitted": true
+ },
+ {
+ "id": "de007636e25249238447264a988a927b",
+ "name": "AIN Web Tool-15-D-dfsdf",
+ "isPermitted": true
+ },
+ {
+ "id": "62f29b3613634ca6a3065cbe0e020c44",
+ "name": "AIN/SMS-16-D-Multiservices1",
+ "isPermitted": true
+ },
+ {
+ "id": "649289e30d3244e0b48098114d63c2aa",
+ "name": "AIN Web Tool-15-D-SSPST66",
+ "isPermitted": true
+ },
+ {
+ "id": "3f21eeea6c2c486bba31dab816c05a32",
+ "name": "AIN Web Tool-15-D-ASSPST47",
+ "isPermitted": true
+ },
+ {
+ "id": "f60ce21d3ee6427586cff0d22b03b773",
+ "name": "CESAR-100-D-sspjg67246",
+ "isPermitted": true
+ },
+ {
+ "id": "8774659e425f479895ae091bb5d46560",
+ "name": "CESAR-100-D-sspjg68359",
+ "isPermitted": true
+ },
+ {
+ "id": "624eb554b0d147c19ff8885341760481",
+ "name": "AINWebTool-15-D-iftach",
+ "isPermitted": true
+ },
+ {
+ "id": "214f55f5fc414c678059c383b03e4962",
+ "name": "CESAR-100-D-sspjg612401",
+ "isPermitted": true
+ },
+ {
+ "id": "c90666c291664841bb98e4d981ff1db5",
+ "name": "CESAR-100-D-sspjg621340",
+ "isPermitted": true
+ },
+ {
+ "id": "ce5b6bc5c7b348e1bf4b91ac9a174278",
+ "name": "sspjg621351cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "b386b768a3f24c8e953abbe0b3488c02",
+ "name": "AINWebTool-15-D-eteancomp",
+ "isPermitted": true
+ },
+ {
+ "id": "dc6c4dbfd225474e9deaadd34968646c",
+ "name": "AINWebTool-15-T-SPFET",
+ "isPermitted": true
+ },
+ {
+ "id": "02cb5030e9914aa4be120bd9ed1e19eb",
+ "name": "AINWebTool-15-X-eeweww",
+ "isPermitted": true
+ },
+ {
+ "id": "f2f3830e4c984d45bcd00e1a04158a79",
+ "name": "CESAR-100-D-spjg61909",
+ "isPermitted": true
+ },
+ {
+ "id": "05b91bd5137f4929878edd965755c06d",
+ "name": "CESAR-100-D-sspjg621512cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "7002fbe8482d4a989ddf445b1ce336e0",
+ "name": "AINWebTool-15-X-vdr",
+ "isPermitted": true
+ },
+ {
+ "id": "4008522be43741dcb1f5422022a2aa0b",
+ "name": "AINWebTool-15-D-ssasa",
+ "isPermitted": true
+ },
+ {
+ "id": "f44e2e96a1b6476abfda2fa407b00169",
+ "name": "AINWebTool-15-D-PFNPT",
+ "isPermitted": true
+ },
+ {
+ "id": "b69a52bec8a84669a37a1e8b72708be7",
+ "name": "AINWebTool-15-X-vdre",
+ "isPermitted": true
+ },
+ {
+ "id": "fac7d9fd56154caeb9332202dcf2969f",
+ "name": "AINWebTool-15-X-NONPODECOMP",
+ "isPermitted": true
+ },
+ {
+ "id": "2d34d8396e194eb49969fd61ffbff961",
+ "name": "DN5242-Nov16-T5",
+ "isPermitted": true
+ },
+ {
+ "id": "cb42a77ff45b48a8b8deb83bb64acc74",
+ "name": "ro-T11",
+ "isPermitted": true
+ },
+ {
+ "id": "fa45ca53c80b492fa8be5477cd84fc2b",
+ "name": "ro-T112",
+ "isPermitted": true
+ },
+ {
+ "id": "4914ab0ab3a743e58f0eefdacc1dde77",
+ "name": "DN5242-Nov21-T1",
+ "isPermitted": true
+ },
+ {
+ "id": "d0a3e3f2964542259d155a81c41aadc3",
+ "name": "test-hvf6-09",
+ "isPermitted": true
+ },
+ {
+ "id": "cbb99fe4ada84631b7baf046b6fd2044",
+ "name": "DN5242-Nov16-T3",
+ "isPermitted": true
+ }
+ ]
+ }
+ },
+ "productFamilies": [
+ {
+ "id": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "name": "SCOTTIE",
+ "isPermitted": true
+ },
+ {
+ "id": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "name": "IGNACIO",
+ "isPermitted": true
+ },
+ {
+ "id": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "name": "Christie",
+ "isPermitted": true
+ },
+ {
+ "id": "a4f6f2ae-9bf5-4ed7-b904-06b2099c4bd7",
+ "name": "Enhanced Services",
+ "isPermitted": true
+ },
+ {
+ "id": "vTerrance",
+ "name": "vTerrance",
+ "isPermitted": true
+ },
+ {
+ "id": "323d69d9-2efe-4r45-ay0a-89ea7ard4e6f",
+ "name": "vSCP",
+ "isPermitted": true
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": true
+ },
+ {
+ "id": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
+ "name": "BVOIP",
+ "isPermitted": true
+ },
+ {
+ "id": "db171b8f-115c-4992-a2e3-ee04cae357e0",
+ "name": "LINDSEY",
+ "isPermitted": true
+ },
+ {
+ "id": "LRSI-OSPF",
+ "name": "LRSI-OSPF",
+ "isPermitted": true
+ },
+ {
+ "id": "vRosemarie",
+ "name": "HNGATEWAY",
+ "isPermitted": true
+ },
+ {
+ "id": "vHNPaas",
+ "name": "WILKINS",
+ "isPermitted": true
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "b6a3f28c-eebf-494c-a900-055cc7c874ce",
+ "name": "VROUTER",
+ "isPermitted": true
+ },
+ {
+ "id": "Cisneros",
+ "name": "vMuriel",
+ "isPermitted": true
+ },
+ {
+ "id": "0ee8c1bc-7cbd-4b0a-a1ac-e9999255abc1",
+ "name": "CARA Griffin",
+ "isPermitted": true
+ },
+ {
+ "id": "c7611ebe-c324-48f1-8085-94aef0c6ef3d",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ },
+ {
+ "id": "e30755dc-5673-4b6b-9dcf-9abdd96b93d1",
+ "name": "Transport",
+ "isPermitted": true
+ },
+ {
+ "id": "vSalvatore",
+ "name": "vSalvatore",
+ "isPermitted": true
+ },
+ {
+ "id": "d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4",
+ "name": "Josefina",
+ "isPermitted": true
+ },
+ {
+ "id": "vHubbard",
+ "name": "vHubbard",
+ "isPermitted": true
+ },
+ {
+ "id": "12a96a9d-4b4c-4349-a950-fe1159602621",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ }
+ ],
+ "serviceTypes": {
+ "e433710f-9217-458d-a79d-1c7aff376d89": [
+ {
+ "id": "0",
+ "name": "vRichardson",
+ "isPermitted": false
+ },
+ {
+ "id": "1",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "2",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "3",
+ "name": "vJamie",
+ "isPermitted": false
+ },
+ {
+ "id": "4",
+ "name": "vVoiceMail",
+ "isPermitted": false
+ },
+ {
+ "id": "5",
+ "name": "Kennedy",
+ "isPermitted": false
+ },
+ {
+ "id": "6",
+ "name": "vSEGW",
+ "isPermitted": false
+ },
+ {
+ "id": "7",
+ "name": "vVM",
+ "isPermitted": false
+ },
+ {
+ "id": "8",
+ "name": "vOTA",
+ "isPermitted": false
+ },
+ {
+ "id": "9",
+ "name": "vMME",
+ "isPermitted": false
+ },
+ {
+ "id": "10",
+ "name": "vMNS",
+ "isPermitted": false
+ },
+ {
+ "id": "11",
+ "name": "vSCP",
+ "isPermitted": false
+ },
+ {
+ "id": "12",
+ "name": "VPMS",
+ "isPermitted": false
+ },
+ {
+ "id": "13",
+ "name": "vMMSC",
+ "isPermitted": false
+ },
+ {
+ "id": "14",
+ "name": "SSD",
+ "isPermitted": false
+ },
+ {
+ "id": "15",
+ "name": "vMOG",
+ "isPermitted": false
+ },
+ {
+ "id": "16",
+ "name": "LINDSEY",
+ "isPermitted": false
+ },
+ {
+ "id": "17",
+ "name": "JOHANNA_SANTOS",
+ "isPermitted": false
+ },
+ {
+ "id": "18",
+ "name": "vCarroll",
+ "isPermitted": false
+ }
+ ]
+ },
+ "aicZones": [
+ {
+ "id": "NFT1",
+ "name": "NFTJSSSS-NFT1"
+ },
+ {
+ "id": "JAG1",
+ "name": "YUDFJULP-JAG1"
+ },
+ {
+ "id": "YYY1",
+ "name": "UUUAIAAI-YYY1"
+ },
+ {
+ "id": "BAN1",
+ "name": "VSDKYUTP-BAN1"
+ },
+ {
+ "id": "DKJ1",
+ "name": "DKJSJDKA-DKJ1"
+ },
+ {
+ "id": "MCS1",
+ "name": "ASACMAMS-MCS1"
+ },
+ {
+ "id": "UIO1",
+ "name": "uioclli1-UIO1"
+ },
+ {
+ "id": "RAJ1",
+ "name": "YGBIJNLQ-RAJ1"
+ },
+ {
+ "id": "OPA1",
+ "name": "opaclli1-OPA1"
+ },
+ {
+ "id": "SDE1",
+ "name": "ZXCVBNMA-SDE1"
+ },
+ {
+ "id": "VEN2",
+ "name": "FGHJUHIL-VEN2"
+ },
+ {
+ "id": "ORL1",
+ "name": "ORLDFLMA-ORL1"
+ },
+ {
+ "id": "JAD1",
+ "name": "JADECLLI-JAD1"
+ },
+ {
+ "id": "ZXL1",
+ "name": "LWLWCANN-ZXL1"
+ },
+ {
+ "id": "CKL1",
+ "name": "CLKSKCKK-CKL1"
+ },
+ {
+ "id": "SDF1",
+ "name": "sdfclli1-SDF1"
+ },
+ {
+ "id": "RAD1",
+ "name": "RADICAL1-RAD1"
+ },
+ {
+ "id": "KIT1",
+ "name": "BHYJFGLN-KIT1"
+ },
+ {
+ "id": "REL1",
+ "name": "INGERFGT-REL1"
+ },
+ {
+ "id": "JNL1",
+ "name": "CJALSDAC-JNL1"
+ },
+ {
+ "id": "OLK1",
+ "name": "OLKOLKLS-OLK1"
+ },
+ {
+ "id": "CHI1",
+ "name": "CHILLIWE-CHI1"
+ },
+ {
+ "id": "UUU4",
+ "name": "UUUAAAUU-UUU4"
+ },
+ {
+ "id": "TUF1",
+ "name": "TUFCLLI1-TUF1"
+ },
+ {
+ "id": "KJN1",
+ "name": "CKALDKSA-KJN1"
+ },
+ {
+ "id": "SAM1",
+ "name": "SNDGCA64-SAN1"
+ },
+ {
+ "id": "SCK1",
+ "name": "SCKSCKSK-SCK1"
+ },
+ {
+ "id": "HJH1",
+ "name": "AOEEQQQD-HJH1"
+ },
+ {
+ "id": "HGD1",
+ "name": "SDFQWHGD-HGD1"
+ },
+ {
+ "id": "KOR1",
+ "name": "HYFLNBVT-KOR1"
+ },
+ {
+ "id": "ATL43",
+ "name": "AICLOCID-ATL43"
+ },
+ {
+ "id": "ATL54",
+ "name": "AICFTAAI-ATL54"
+ },
+ {
+ "id": "ATL66",
+ "name": "CLLIAAII-ATL66"
+ },
+ {
+ "id": "VEL1",
+ "name": "BNMLKUIK-VEL1"
+ },
+ {
+ "id": "ICC1",
+ "name": "SANJITAT-ICC1"
+ },
+ {
+ "id": "MNT11",
+ "name": "WSXEFBTH-MNT11"
+ },
+ {
+ "id": "DEF2",
+ "name": "WSBHGTYL-DEF2"
+ },
+ {
+ "id": "MAD11",
+ "name": "SDFQWGKL-MAD11"
+ },
+ {
+ "id": "OLG1",
+ "name": "OLHOLHOL-OLG1"
+ },
+ {
+ "id": "GAR1",
+ "name": "NGFVSJKO-GAR1"
+ },
+ {
+ "id": "SAN22",
+ "name": "GNVLSCTL-SAN22"
+ },
+ {
+ "id": "HRG1",
+ "name": "HRGHRGGS-HRG1"
+ },
+ {
+ "id": "JCS1",
+ "name": "JCSJSCJS-JCS1"
+ },
+ {
+ "id": "DHA12",
+ "name": "WSXEDECF-DHA12"
+ },
+ {
+ "id": "HJE1",
+ "name": "AOEEWWWD-HJE1"
+ },
+ {
+ "id": "NCA1",
+ "name": "NCANCANN-NCA1"
+ },
+ {
+ "id": "IOP1",
+ "name": "iopclli1-IOP1"
+ },
+ {
+ "id": "RTY1",
+ "name": "rtyclli1-RTY1"
+ },
+ {
+ "id": "KAP1",
+ "name": "HIOUYTRQ-KAP1"
+ },
+ {
+ "id": "ZEN1",
+ "name": "ZENCLLI1-ZEN1"
+ },
+ {
+ "id": "HKA1",
+ "name": "JAKHLASS-HKA1"
+ },
+ {
+ "id": "CQK1",
+ "name": "CQKSCAKK-CQK1"
+ },
+ {
+ "id": "SAI1",
+ "name": "UBEKQLPD-SAI1"
+ },
+ {
+ "id": "ERT1",
+ "name": "ertclli1-ERT1"
+ },
+ {
+ "id": "IBB1",
+ "name": "PLMKOIJU-IBB1"
+ },
+ {
+ "id": "TIR2",
+ "name": "PLKINHYI-TIR2"
+ },
+ {
+ "id": "HSD1",
+ "name": "CHASKCDS-HSD1"
+ },
+ {
+ "id": "SLF78",
+ "name": "SDCTLFN1-SLF78"
+ },
+ {
+ "id": "SEE78",
+ "name": "SDCTEEE4-SEE78"
+ },
+ {
+ "id": "SAN13",
+ "name": "TOKYJPFA-SAN13"
+ },
+ {
+ "id": "SAA78",
+ "name": "SDCTAAA1-SAA78"
+ },
+ {
+ "id": "LUC1",
+ "name": "ATLDFGYC-LUC1"
+ },
+ {
+ "id": "AMD13",
+ "name": "MEMATLAN-AMD13"
+ },
+ {
+ "id": "TOR1",
+ "name": "TOROONXN-TOR1"
+ },
+ {
+ "id": "QWE1",
+ "name": "QWECLLI1-QWE1"
+ },
+ {
+ "id": "ZOG1",
+ "name": "ZOGASTRO-ZOG1"
+ },
+ {
+ "id": "CAL33",
+ "name": "CALIFORN-CAL33"
+ },
+ {
+ "id": "SHH78",
+ "name": "SDIT1HHH-SHH78"
+ },
+ {
+ "id": "DSA1",
+ "name": "LKJHGFDS-DSA1"
+ },
+ {
+ "id": "CLG1",
+ "name": "CLGRABAD-CLG1"
+ },
+ {
+ "id": "BNA1",
+ "name": "BNARAGBK-BNA1"
+ },
+ {
+ "id": "ATL84",
+ "name": "CANTTCOC-ATL84"
+ },
+ {
+ "id": "APP1",
+ "name": "WBHGTYUI-APP1"
+ },
+ {
+ "id": "RJN1",
+ "name": "RJNRBZAW-RJN1"
+ },
+ {
+ "id": "EHH78",
+ "name": "SDCSHHH5-EHH78"
+ },
+ {
+ "id": "mac10",
+ "name": "PKGTESTF-mac10"
+ },
+ {
+ "id": "SXB78",
+ "name": "SDCTGXB1-SXB78"
+ },
+ {
+ "id": "SAX78",
+ "name": "SDCTAXG1-SAX78"
+ },
+ {
+ "id": "SYD1",
+ "name": "SYDNAUBV-SYD1"
+ },
+ {
+ "id": "TOK1",
+ "name": "TOKYJPFA-TOK1"
+ },
+ {
+ "id": "KGM2",
+ "name": "KGMTNC20-KGM2"
+ },
+ {
+ "id": "DCC1b",
+ "name": "POIUYTGH-DCC1b"
+ },
+ {
+ "id": "SKK78",
+ "name": "SDCTKKK1-SKK78"
+ },
+ {
+ "id": "SGG78",
+ "name": "SDCTGGG1-SGG78"
+ },
+ {
+ "id": "SJJ78",
+ "name": "SDCTJJJ1-SJJ78"
+ },
+ {
+ "id": "SBX78",
+ "name": "SDCTBXG1-SBX78"
+ },
+ {
+ "id": "LAG1",
+ "name": "LARGIZON-LAG1"
+ },
+ {
+ "id": "IAA1",
+ "name": "QAZXSWED-IAA1"
+ },
+ {
+ "id": "POI1",
+ "name": "PLMNJKIU-POI1"
+ },
+ {
+ "id": "LAG1a",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "PBL1",
+ "name": "PBLAPBAI-PBL1"
+ },
+ {
+ "id": "LAG45",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "MAR1",
+ "name": "MNBVCXZM-MAR1"
+ },
+ {
+ "id": "HST70",
+ "name": "HSTNTX70-HST70"
+ },
+ {
+ "id": "DCC1a",
+ "name": "POIUYTGH-DCC1a"
+ },
+ {
+ "id": "TOL1",
+ "name": "TOLDOH21-TOL1"
+ },
+ {
+ "id": "LON1",
+ "name": "LONEENCO-LON1"
+ },
+ {
+ "id": "SJU78",
+ "name": "SDIT1JUB-SJU78"
+ },
+ {
+ "id": "STN27",
+ "name": "HSTNTX01-STN27"
+ },
+ {
+ "id": "SSW56",
+ "name": "ss8126GT-SSW56"
+ },
+ {
+ "id": "SBB78",
+ "name": "SDIT1BBB-SBB78"
+ },
+ {
+ "id": "DCC3",
+ "name": "POIUYTGH-DCC3"
+ },
+ {
+ "id": "GNV1",
+ "name": "GNVLSCTL-GNV1"
+ },
+ {
+ "id": "WAS1",
+ "name": "WASHDCSW-WAS1"
+ },
+ {
+ "id": "TOY1",
+ "name": "TORYONNZ-TOY1"
+ },
+ {
+ "id": "STT1",
+ "name": "STTLWA02-STT1"
+ },
+ {
+ "id": "STG1",
+ "name": "STTGGE62-STG1"
+ },
+ {
+ "id": "SLL78",
+ "name": "SDCTLLL1-SLL78"
+ },
+ {
+ "id": "SBU78",
+ "name": "SDIT1BUB-SBU78"
+ },
+ {
+ "id": "ATL2",
+ "name": "ATLNGANW-ATL2"
+ },
+ {
+ "id": "BOT1",
+ "name": "BOTHWAKY-BOT1"
+ },
+ {
+ "id": "SNG1",
+ "name": "SNGPSIAU-SNG1"
+ },
+ {
+ "id": "NYC1",
+ "name": "NYCMNY54-NYC1"
+ },
+ {
+ "id": "LAG1b",
+ "name": "LARGIZON-LAG1b"
+ },
+ {
+ "id": "AMD15",
+ "name": "AMDFAA01-AMD15"
+ },
+ {
+ "id": "SNA1",
+ "name": "SNANTXCA-SNA1"
+ },
+ {
+ "id": "PLT1",
+ "name": "PLTNCA60-PLT1"
+ },
+ {
+ "id": "TLP1",
+ "name": "TLPNXM18-TLP1"
+ },
+ {
+ "id": "SDD81",
+ "name": "SAIT1DD6-SDD81"
+ },
+ {
+ "id": "DCC1",
+ "name": "POIUYTGH-DCC1"
+ },
+ {
+ "id": "DCC2",
+ "name": "POIUYTGH-DCC2"
+ },
+ {
+ "id": "OKC1",
+ "name": "OKCBOK55-OKC1"
+ },
+ {
+ "id": "PAR1",
+ "name": "PARSFRCG-PAR1"
+ },
+ {
+ "id": "TES36",
+ "name": "ABCEETES-TES36"
+ },
+ {
+ "id": "COM1",
+ "name": "PLMKOPIU-COM1"
+ },
+ {
+ "id": "ANI1",
+ "name": "ATLNGTRE-ANI1"
+ },
+ {
+ "id": "SDG78",
+ "name": "SDIT1BDG-SDG78"
+ },
+ {
+ "id": "mac20",
+ "name": "PKGTESTF-mac20"
+ },
+ {
+ "id": "DSF45",
+ "name": "DSFBG123-DSF45"
+ },
+ {
+ "id": "HST25",
+ "name": "HSTNTX01-HST25"
+ },
+ {
+ "id": "AMD18",
+ "name": "AUDIMA01-AMD18"
+ },
+ {
+ "id": "SAA80",
+ "name": "SAIT9AA3-SAA80"
+ },
+ {
+ "id": "SSA56",
+ "name": "SSIT2AA7-SSA56"
+ },
+ {
+ "id": "SDD82",
+ "name": "SAIT1DD9-SDD82"
+ },
+ {
+ "id": "JCV1",
+ "name": "JCVLFLBW-JCV1"
+ },
+ {
+ "id": "SUL2",
+ "name": "WERTYUJK-SUL2"
+ },
+ {
+ "id": "PUR1",
+ "name": "purelyde-PUR1"
+ },
+ {
+ "id": "FDE55",
+ "name": "FDERT555-FDE55"
+ },
+ {
+ "id": "SITE",
+ "name": "LONEENCO-SITE"
+ },
+ {
+ "id": "ATL1",
+ "name": "ATLNGAMA-ATL1"
+ },
+ {
+ "id": "JUL1",
+ "name": "ZXCVBNMM-JUL1"
+ },
+ {
+ "id": "TAT34",
+ "name": "TESAAISB-TAT34"
+ },
+ {
+ "id": "XCP12",
+ "name": "CHKGH123-XCP12"
+ },
+ {
+ "id": "RAI1",
+ "name": "poiuytre-RAI1"
+ },
+ {
+ "id": "HPO1",
+ "name": "ATLNGAUP-HPO1"
+ },
+ {
+ "id": "KJF12",
+ "name": "KJFDH123-KJF12"
+ },
+ {
+ "id": "SCC80",
+ "name": "SAIT9CC3-SCC80"
+ },
+ {
+ "id": "SAA12",
+ "name": "SAIT9AF8-SAA12"
+ },
+ {
+ "id": "SAA14",
+ "name": "SAIT1AA9-SAA14"
+ },
+ {
+ "id": "ATL35",
+ "name": "TTESSAAI-ATL35"
+ },
+ {
+ "id": "CWY1",
+ "name": "CWYMOWBS-CWY1"
+ },
+ {
+ "id": "ATL76",
+ "name": "TELEPAAI-ATL76"
+ },
+ {
+ "id": "DSL12",
+ "name": "DSLFK242-DSL12"
+ },
+ {
+ "id": "ATL53",
+ "name": "AAIATLTE-ATL53"
+ },
+ {
+ "id": "SAA11",
+ "name": "SAIT9AA2-SAA11"
+ },
+ {
+ "id": "ATL62",
+ "name": "TESSASCH-ATL62"
+ },
+ {
+ "id": "AUG1",
+ "name": "ASDFGHJK-AUG1"
+ },
+ {
+ "id": "POI22",
+ "name": "POIUY123-POI22"
+ },
+ {
+ "id": "SAA13",
+ "name": "SAIT1AA9-SAA13"
+ },
+ {
+ "id": "BHY17",
+ "name": "BHYTFRF3-BHY17"
+ },
+ {
+ "id": "LIS1",
+ "name": "HOSTPROF-LIS1"
+ },
+ {
+ "id": "SIP1",
+ "name": "ZXCVBNMK-SIP1"
+ },
+ {
+ "id": "ATL99",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "ATL64",
+ "name": "FORLOAAJ-ATL64"
+ },
+ {
+ "id": "TAT33",
+ "name": "TESAAISA-TAT33"
+ },
+ {
+ "id": "RAD10",
+ "name": "INDIPUNE-RAD10"
+ },
+ {
+ "id": "RTW5",
+ "name": "BHYTFRY4-RTW5"
+ },
+ {
+ "id": "JGS1",
+ "name": "KSJKKKKK-JGS1"
+ },
+ {
+ "id": "ATL98",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "WAN1",
+ "name": "LEIWANGW-WAN1"
+ },
+ {
+ "id": "ATL44",
+ "name": "ATLSANAB-ATL44"
+ },
+ {
+ "id": "RTD2",
+ "name": "BHYTFRk4-RTD2"
+ },
+ {
+ "id": "NIR1",
+ "name": "ORFLMANA-NIR1"
+ },
+ {
+ "id": "ATL75",
+ "name": "SANAAIRE-ATL75"
+ },
+ {
+ "id": "NUM1",
+ "name": "QWERTYUI-NUM1"
+ },
+ {
+ "id": "MTN32",
+ "name": "MDTWNJ21-MTN32"
+ },
+ {
+ "id": "RTZ4",
+ "name": "BHYTFRZ6-RTZ4"
+ },
+ {
+ "id": "ATL56",
+ "name": "ATLSANAC-ATL56"
+ },
+ {
+ "id": "AMS1",
+ "name": "AMSTNLBW-AMS1"
+ },
+ {
+ "id": "RCT1",
+ "name": "AMSTERNL-RCT1"
+ },
+ {
+ "id": "JAN1",
+ "name": "ORFLMATT-JAN1"
+ },
+ {
+ "id": "ABC14",
+ "name": "TESAAISA-ABC14"
+ },
+ {
+ "id": "TAT37",
+ "name": "TESAAISD-TAT37"
+ },
+ {
+ "id": "MIC54",
+ "name": "MICHIGAN-MIC54"
+ },
+ {
+ "id": "ABC11",
+ "name": "ATLSANAI-ABC11"
+ },
+ {
+ "id": "AMF11",
+ "name": "AMDOCS01-AMF11"
+ },
+ {
+ "id": "ATL63",
+ "name": "ATLSANEW-ATL63"
+ },
+ {
+ "id": "ABC12",
+ "name": "ATLSECIA-ABC12"
+ },
+ {
+ "id": "MTN20",
+ "name": "MDTWNJ21-MTN20"
+ },
+ {
+ "id": "ABC15",
+ "name": "AAITESAN-ABC15"
+ },
+ {
+ "id": "AVT1",
+ "name": "AVTRFLHD-AVT1"
+ },
+ {
+ "id": "ATL34",
+ "name": "ATLSANAI-ATL34"
+ }
+ ],
+ "categoryParameters": {
+ "owningEntityList": [
+ {
+ "id": "aaa1",
+ "name": "aaa1"
+ },
+ {
+ "id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "name": "WayneHolland"
+ },
+ {
+ "id": "Melissa",
+ "name": "Melissa"
+ }
+ ],
+ "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"
+ }
+ ]
+ },
+ "type": "[LCP_REGIONS_AND_TENANTS] Update",
+ "subscribers": [
+ {
+ "id": "CAR_2020_ER",
+ "name": "CAR_2020_ER",
+ "isPermitted": true
+ },
+ {
+ "id": "21014aa2-526b-11e6-beb8-9e71128cae77",
+ "name": "JULIO ERICKSON",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-2",
+ "name": "DALE BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-1",
+ "name": "LLOYD BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example",
+ "name": "JimmyExampleCust-20161102",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example2",
+ "name": "JimmyExampleCust-20161103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-102",
+ "name": "ERICA5779-TestSub-PWT-102",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-101",
+ "name": "ERICA5779-TestSub-PWT-101",
+ "isPermitted": false
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-4",
+ "name": "ERICA5779-Subscriber-5",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-103",
+ "name": "ERICA5779-TestSub-PWT-103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-2",
+ "name": "ERICA5779-Subscriber-2",
+ "isPermitted": false
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "SILVIA ROBBINS",
+ "isPermitted": true
+ },
+ {
+ "id": "ERICA5779-Subscriber-3",
+ "name": "ERICA5779-Subscriber-3",
+ "isPermitted": false
+ },
+ {
+ "id": "31739f3e-526b-11e6-beb8-9e71128cae77",
+ "name": "CRAIG/ROBERTS",
+ "isPermitted": false
+ }
+ ]
+ }
+ }
+ }
+}
+
+class MockFeatureFlagsService {}
+
+describe('Service Control Generator', () => {
+ let injector;
+ let service: ServiceControlGenerator;
+ let httpMock: HttpTestingController;
+
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ imports: [HttpClientTestingModule],
+ providers: [ServiceControlGenerator,
+ GenericFormService,
+ BasicControlGenerator,
+ AaiService,
+ FormBuilder,
+ LogService,
+ {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
+ {provide: NgRedux, useClass: MockAppStore}]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ service = injector.get(ServiceControlGenerator);
+ httpMock = injector.get(HttpTestingController);
+
+ })().then(done).catch(done.fail));
+
+
+ test('ServiceControlGenerator should return the correct controls with correct order', () => {
+ const serviceId : string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const controls :FormControlModel[] = service.getMacroFormControls(serviceId);
+ const globalSubscriberIdControl : DropdownFormControl = <DropdownFormControl>controls.find(item => item.controlName === FormControlNames.GLOBAL_SUBSCRIBER_ID);
+
+ expect(globalSubscriberIdControl.validations.find(val => val.validatorName === ValidatorOptions.required)).toBeDefined();
+ expect(globalSubscriberIdControl.dataTestId).toEqual('subscriberName');
+ expect(globalSubscriberIdControl.type).toEqual(FormControlType.DROPDOWN);
+ expect(globalSubscriberIdControl.isDisabled).toBeFalsy();
+ expect(globalSubscriberIdControl.placeHolder).toEqual('Select Subscriber Name');
+ expect(globalSubscriberIdControl.displayName).toEqual('Subscriber name');
+ expect(globalSubscriberIdControl.onInit).toBeDefined();
+ expect(globalSubscriberIdControl.onChange).toBeDefined();
+
+ const serviceTypeControl : DropdownFormControl = <DropdownFormControl>controls.find(item => item.controlName === FormControlNames.SUBSCRIPTION_SERVICE_TYPE);
+ expect(serviceTypeControl.validations.find(val => val.validatorName === ValidatorOptions.required)).toBeDefined();
+ expect(serviceTypeControl.dataTestId).toEqual('serviceType');
+ expect(serviceTypeControl.type).toEqual(FormControlType.DROPDOWN);
+ expect(serviceTypeControl.isDisabled).toBeTruthy();
+ expect(serviceTypeControl.placeHolder).toEqual('Select Service Type');
+ expect(serviceTypeControl.displayName).toEqual('Service type');
+ expect(serviceTypeControl.onInit).toBeDefined();
+ expect(serviceTypeControl.onChange).toBeDefined();
+
+ const productFamilyControl : DropdownFormControl = <DropdownFormControl>controls.find(item => item.controlName === FormControlNames.PRODUCT_FAMILY_ID);
+ expect(productFamilyControl.validations.find(val => val.validatorName === ValidatorOptions.required)).toBeDefined();
+ expect(productFamilyControl.dataTestId).toEqual('productFamily');
+ expect(productFamilyControl.type).toEqual(FormControlType.DROPDOWN);
+ expect(productFamilyControl.isDisabled).toBeFalsy();
+ expect(productFamilyControl.placeHolder).toEqual('Select Product Family');
+ expect(productFamilyControl.displayName).toEqual('Product family');
+ expect(productFamilyControl.onInit).toBeDefined();
+
+ const lcpRegionControl : DropdownFormControl = <DropdownFormControl>controls.find(item => item.controlName === FormControlNames.LCPCLOUD_REGION_ID);
+ expect(lcpRegionControl.validations.find(val => val.validatorName === ValidatorOptions.required)).toBeDefined();
+ expect(lcpRegionControl.dataTestId).toEqual('lcpRegion');
+ expect(lcpRegionControl.type).toEqual(FormControlType.DROPDOWN);
+ expect(lcpRegionControl.isDisabled).toBeTruthy();
+ expect(lcpRegionControl.placeHolder).toEqual('Select LCP Region');
+ expect(lcpRegionControl.displayName).toEqual('LCP region');
+ expect(lcpRegionControl.onInit).toBeDefined();
+ expect(lcpRegionControl.onChange).toBeDefined();
+
+ const tenantControl : DropdownFormControl = <DropdownFormControl>controls.find(item => item.controlName === FormControlNames.TENANT_ID);
+ expect(tenantControl.validations.find(val => val.validatorName === ValidatorOptions.required)).toBeDefined();
+ expect(tenantControl.dataTestId).toEqual('tenant');
+ expect(tenantControl.type).toEqual(FormControlType.DROPDOWN);
+ expect(tenantControl.isDisabled).toBeTruthy();
+ expect(tenantControl.placeHolder).toEqual('Select Tenant');
+ expect(tenantControl.displayName).toEqual('Tenant');
+ expect(tenantControl.onInit).toBeDefined();
+ expect(tenantControl.onChange).toBeDefined();
+
+ const instanceNameControl: FormControlModel = <FormControlModel>controls.find(item => item.controlName === FormControlNames.INSTANCE_NAME);
+ const instanceNameValidator: ValidatorModel = instanceNameControl.validations.find(val => val.validatorName === ValidatorOptions.pattern);
+ expect(instanceNameValidator.validatorArg).toEqual(/^[a-zA-Z0-9._-]*$/);
+ });
+
+
+ test('getMacroFormControls should return the correct order of controls', () => {
+ // Order the fields
+ // 1. Instance name
+ // 2. Subscriber name
+ // 3. Service type
+ // 4. Owning entity (fix Entity to entity)
+ // 5. Product family
+ // 6. LCP region
+ // 7. Tenant
+ // 8. AIC zone (fix Zone to zone)
+ // 9. Pause on pause points
+ // 10. Project
+ // 11. Rollback on failure
+ const serviceId : string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const controls :FormControlModel[] = service.getMacroFormControls(serviceId);
+
+
+
+ const controlsOrderNames = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.GLOBAL_SUBSCRIBER_ID,
+ FormControlNames.SUBSCRIPTION_SERVICE_TYPE ,
+ FormControlNames.OWNING_ENTITY_ID ,
+ FormControlNames.PRODUCT_FAMILY_ID ,
+ FormControlNames.LCPCLOUD_REGION_ID ,
+ FormControlNames.TENANT_ID ,
+ FormControlNames.AICZONE_ID ,
+ FormControlNames.PAUSE,
+ FormControlNames.PROJECT_NAME ,
+ FormControlNames.ROLLBACK_ON_FAILURE];
+ expect(controls.length).toEqual(11);
+ for(let i = 0 ; i < controls.length ; i++){
+ expect(controls[i].controlName).toEqual(controlsOrderNames[i]);
+ }
+ });
+
+ test('getAlacartFormControls should return the correct order of controls', () => {
+ // Order the fields
+ // 1. Instance name
+ // 2. Subscriber name
+ // 3. Service type
+ // 4. Owning entity (fix Entity to entity)
+ // 5. Project
+ // 6. Rollback on failure
+ const serviceId : string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const controls :FormControlModel[] = service.getAlaCartControls(serviceId);
+ const controlsOrderNames = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.GLOBAL_SUBSCRIBER_ID,
+ FormControlNames.SUBSCRIPTION_SERVICE_TYPE ,
+ FormControlNames.OWNING_ENTITY_ID ,
+ FormControlNames.PROJECT_NAME ,
+ FormControlNames.ROLLBACK_ON_FAILURE];
+
+ expect(controls.length).toEqual(6);
+ for(let i = 0 ; i < controls.length ; i++){
+ expect(controls[i].controlName).toEqual(controlsOrderNames[i]);
+ }
+ });
+
+});
+
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/service.control.generator.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/service.control.generator.ts
new file mode 100644
index 000000000..539f848d5
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/service.control.generator.ts
@@ -0,0 +1,331 @@
+import {Injectable} from "@angular/core";
+import {GenericFormService} from "../generic-form.service";
+import {NgRedux} from "@angular-redux/store";
+import {AppState} from "../../../store/reducers";
+import {
+ FormControlModel,
+ ValidatorModel,
+ ValidatorOptions
+} from "../../../models/formControlModels/formControl.model";
+import {DropdownFormControl} from "../../../models/formControlModels/dropdownFormControl.model";
+import * as _ from 'lodash';
+import {BasicControlGenerator} from "./basic.control.generator";
+import {AaiService} from "../../../services/aaiService/aai.service";
+import {FormGroup} from "@angular/forms";
+import {FormControlType} from "../../../models/formControlModels/formControlTypes.enum";
+import {HttpClient} from "@angular/common/http";
+import {SelectOption} from "../../../models/selectOption";
+import {Observable} from "rxjs";
+import {LogService} from "../../../utils/log/log.service";
+import {ServiceModel} from "../../../models/serviceModel";
+import {of} from "rxjs";
+
+import {CheckboxFormControl} from "../../../models/formControlModels/checkboxFormControl.model";
+
+export enum FormControlNames {
+ INSTANCE_NAME = 'instanceName',
+ GLOBAL_SUBSCRIBER_ID = 'globalSubscriberId',
+ SUBSCRIPTION_SERVICE_TYPE = 'subscriptionServiceType',
+ PRODUCT_FAMILY_ID = 'productFamilyId',
+ LCPCLOUD_REGION_ID = 'lcpCloudRegionId',
+ TENANT_ID = 'tenantId',
+ AICZONE_ID = 'aicZoneId',
+ PROJECT_NAME = 'projectName',
+ OWNING_ENTITY_ID = 'owningEntityId',
+ ROLLBACK_ON_FAILURE = 'rollbackOnFailure',
+ PAUSE = 'pause'
+}
+
+@Injectable()
+export class ServiceControlGenerator {
+ aaiService : AaiService;
+ constructor(private genericFormService : GenericFormService,
+ private _basicControlGenerator : BasicControlGenerator,
+ private store: NgRedux<AppState>,
+ private http: HttpClient,
+ private _aaiService : AaiService,
+ private _logService : LogService){
+ this.aaiService = _aaiService;
+ }
+
+ getServiceInstance = (serviceId : string) : any => {
+ let serviceInstance = null;
+ if (_.has(this.store.getState().service.serviceInstance, serviceId)) {
+ serviceInstance = Object.assign({}, this.store.getState().service.serviceInstance[serviceId]);
+ }
+
+ return serviceInstance;
+ };
+
+ getAlaCartControls(serviceId: string, dynamicInputs?: any[]) : FormControlModel[] {
+ if(_.isNil(serviceId)){
+ this._logService.error('should provide serviceId', serviceId);
+ return [];
+ }
+ const serviceInstance = this.getServiceInstance(serviceId);
+
+ let result : FormControlModel[] = [];
+
+ const serviceModel = new ServiceModel(this.store.getState().service.serviceHierarchy[serviceId]);
+ if(!_.isNil(serviceModel)){
+ result.push(this._basicControlGenerator.getInstanceName(serviceInstance, serviceId, serviceModel.isEcompGeneratedNaming));
+ result.push(this.getGlobalSubscriberControl(serviceInstance, result));
+ result.push(this.getServiceTypeControl(serviceInstance, result, false));
+ result.push(this.getOwningEntityControl(serviceInstance, result));
+ result.push(this.getProjectControl(serviceInstance, result));
+ result.push(this.getRollbackOnFailureControl(serviceInstance, result));
+ }
+
+ this._logService.info('Generate dynamic service controls, is edit mode: ' + serviceInstance != null , result);
+ return result;
+ }
+
+ getMacroFormControls(serviceId: string, dynamicInputs?: any[]) : FormControlModel[] {
+ if(_.isNil(serviceId)){
+ this._logService.error('should provide serviceId', serviceId);
+ return [];
+ }
+
+ const serviceInstance = this.getServiceInstance(serviceId);
+
+ let result : FormControlModel[] = [];
+ const serviceModel = new ServiceModel(this.store.getState().service.serviceHierarchy[serviceId]);
+ if(!_.isNil(serviceModel)){
+ result.push(this._basicControlGenerator.getInstanceName(serviceInstance, serviceId, serviceModel.isEcompGeneratedNaming));
+ result.push(this.getGlobalSubscriberControl(serviceInstance, result));
+ result.push(this.getServiceTypeControl(serviceInstance, result, true));
+ result.push(this.getOwningEntityControl(serviceInstance, result));
+ result.push(this.getProductFamilyControl(serviceInstance, result));
+ result.push(this.getLcpRegionControl(serviceInstance, result));
+ result.push(this.getTenantControl(serviceInstance, result),);
+ result.push(this.getAICZoneControl(serviceInstance, result));
+
+ if(serviceModel.isMultiStepDesign){
+ result.push(new CheckboxFormControl({
+ controlName : FormControlNames.PAUSE,
+ displayName : 'Pause on pause points',
+ dataTestId : 'Pause',
+ isDisabled : false,
+ validations : [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ value : serviceInstance ? serviceInstance.pause : null,
+ }));
+ }
+
+ result.push(this.getProjectControl(serviceInstance, result));
+ result.push(this.getRollbackOnFailureControl(serviceInstance, result));
+ }
+
+
+ this._logService.info('Generate dynamic service controls, is edit mode: ' + serviceInstance != null , result);
+ return result;
+ }
+
+ getRollBackOnFailureOptions = () : Observable<SelectOption[]> =>{
+ return of([
+ new SelectOption({id: 'true', name: 'Rollback'}),
+ new SelectOption({id: 'false', name: 'Don\'t Rollback'})
+ ]);
+ };
+
+ getGlobalSubscriberControl = (serviceInstance : any, controls : FormControlModel[]) : DropdownFormControl => {
+ return new DropdownFormControl({
+ type : FormControlType.DROPDOWN,
+ controlName : FormControlNames.GLOBAL_SUBSCRIBER_ID,
+ displayName : 'Subscriber name',
+ dataTestId : 'subscriberName',
+ placeHolder : 'Select Subscriber Name',
+ isDisabled : false,
+ name : "subscriber-name-select",
+ value : serviceInstance ? serviceInstance.globalSubscriberId : null,
+ validations : [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ onInit : this._basicControlGenerator.getSubscribeInitResult.bind(this._aaiService, this.aaiService.getSubscribers),
+ onChange : (param: string, form : FormGroup) => {
+ form.controls[FormControlNames.SUBSCRIPTION_SERVICE_TYPE].reset();
+ if(!_.isNil(param)){
+ form.controls[FormControlNames.SUBSCRIPTION_SERVICE_TYPE].enable();
+ this._basicControlGenerator.getSubscribeResult.bind(this, this._aaiService.getServiceTypes(param).subscribe(res =>{
+ controls.find(item => item.controlName === FormControlNames.SUBSCRIPTION_SERVICE_TYPE)['options$'] = res;
+ }));
+ }
+ else {
+ form.controls[FormControlNames.SUBSCRIPTION_SERVICE_TYPE].disable();
+ }
+ }
+ })
+ };
+
+ getServiceTypeControl = (serviceInstance : any, controls : FormControlModel[], isMacro?: boolean) : DropdownFormControl => {
+ return new DropdownFormControl({
+ type : FormControlType.DROPDOWN,
+ controlName : FormControlNames.SUBSCRIPTION_SERVICE_TYPE,
+ displayName : 'Service type',
+ dataTestId : 'serviceType',
+ placeHolder : 'Select Service Type',
+ selectedField : 'name',
+ name : "service-type",
+ isDisabled : _.isNil(serviceInstance),
+ value : serviceInstance ? serviceInstance.subscriptionServiceType : null,
+ validations : [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ onInit : serviceInstance ? this._basicControlGenerator.getSubscribeInitResult.bind(
+ this._aaiService,
+ this.aaiService.getServiceTypes.bind(this, serviceInstance.globalSubscriberId)) : ()=>{},
+ onChange : (param: string, form : FormGroup) => {
+ if(isMacro){
+ form.controls[FormControlNames.LCPCLOUD_REGION_ID].reset();
+ if(!_.isNil(param)) {
+ form.controls[FormControlNames.LCPCLOUD_REGION_ID].enable();
+ const globalCustomerId: string = form.controls[FormControlNames.GLOBAL_SUBSCRIBER_ID].value;
+ if (!_.isNil(globalCustomerId)) {
+ this._basicControlGenerator.getSubscribeResult.bind(this, this._aaiService.getLcpRegionsAndTenants(globalCustomerId, param).subscribe(res => {
+ controls.find(item => item.controlName === FormControlNames.LCPCLOUD_REGION_ID)['options$'] = res.lcpRegionList;
+ }));
+ }
+ }
+ else {
+ form.controls[FormControlNames.LCPCLOUD_REGION_ID].disable();
+ }
+ }
+
+ }
+ })
+ };
+
+ getOwningEntityControl = (serviceInstance : any, controls : FormControlModel[]) : DropdownFormControl => {
+ return new DropdownFormControl({
+ type : FormControlType.DROPDOWN,
+ controlName : FormControlNames.OWNING_ENTITY_ID,
+ displayName : 'Owning entity',
+ dataTestId : 'owningEntity',
+ placeHolder : 'Select Owning Entity',
+ name :"owningEntity",
+ isDisabled : false,
+ validations : [new ValidatorModel(ValidatorOptions.required, 'is required'),],
+ onInitSelectedField : ['owningEntityList'],
+ value : serviceInstance ? serviceInstance.owningEntityId : null,
+ onInit : this._basicControlGenerator.getSubscribeInitResult.bind(null, this._aaiService.getCategoryParameters)
+ })
+ };
+
+ getProductFamilyControl = (serviceInstance : any, controls : FormControlModel[]) : DropdownFormControl => {
+ return new DropdownFormControl({
+ type : FormControlType.DROPDOWN,
+ controlName : FormControlNames.PRODUCT_FAMILY_ID,
+ displayName : 'Product family',
+ dataTestId : 'productFamily',
+ placeHolder : 'Select Product Family',
+ isDisabled : false,
+ name : "product-family-select",
+ value : serviceInstance ? serviceInstance.productFamilyId : null,
+ validations : [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ onInit : this._basicControlGenerator.getSubscribeResult.bind(this, this._aaiService.getProductFamilies),
+ })
+ };
+
+ getLcpRegionControl = (serviceInstance : any, controls : FormControlModel[]) : DropdownFormControl => {
+ return new DropdownFormControl({
+ type : FormControlType.DROPDOWN,
+ controlName : FormControlNames.LCPCLOUD_REGION_ID,
+ displayName : 'LCP region',
+ dataTestId : 'lcpRegion',
+ placeHolder : 'Select LCP Region',
+ name : "lcpRegion",
+ isDisabled : _.isNil(serviceInstance),
+ value : serviceInstance ? serviceInstance.lcpCloudRegionId : null,
+ validations : [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ onInitSelectedField : ['lcpRegionList'],
+ onInit : serviceInstance ? this._basicControlGenerator.getSubscribeInitResult.bind(
+ this._aaiService,
+ this.aaiService.getLcpRegionsAndTenants.bind(this, serviceInstance.globalSubscriberId, serviceInstance.subscriptionServiceType)) : ()=>{},
+ onChange : (param: string, form : FormGroup) => {
+ form.controls[FormControlNames.TENANT_ID].reset();
+ if(param) {
+ form.controls[FormControlNames.TENANT_ID].enable();
+ }
+ else {
+ form.controls[FormControlNames.TENANT_ID].disable();
+ }
+ const globalCustomerId : string = form.controls[FormControlNames.GLOBAL_SUBSCRIBER_ID].value;
+ const serviceType : string = form.controls[FormControlNames.SUBSCRIPTION_SERVICE_TYPE].value;
+ if(!_.isNil(globalCustomerId) && !_.isNil(serviceType)){
+ this._basicControlGenerator.getSubscribeResult.bind(this, this._aaiService.getLcpRegionsAndTenants(globalCustomerId, serviceType).subscribe(res =>{
+ controls.find(item => item.controlName === FormControlNames.TENANT_ID)['options$'] = res.lcpRegionsTenantsMap[param];
+ }));
+ }
+ }
+ })
+ };
+
+ getTenantControl = (serviceInstance : any, controls : FormControlModel[]) : DropdownFormControl => {
+ return new DropdownFormControl({
+ type : FormControlType.DROPDOWN,
+ controlName : FormControlNames.TENANT_ID,
+ displayName : 'Tenant',
+ dataTestId : 'tenant',
+ placeHolder : 'Select Tenant',
+ name : "tenant",
+ isDisabled : _.isNil(serviceInstance),
+ onInitSelectedField :serviceInstance ? ['lcpRegionsTenantsMap', serviceInstance.lcpCloudRegionId] : null,
+ onInit : serviceInstance ? this._basicControlGenerator.getSubscribeInitResult.bind(
+ this._aaiService,
+ this.aaiService.getLcpRegionsAndTenants.bind(this, serviceInstance.globalSubscriberId, serviceInstance.subscriptionServiceType)) : ()=>{},
+ value : serviceInstance ? serviceInstance.tenantId : null,
+ validations : [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ })
+ };
+
+ getAICZoneControl = (serviceInstance : any, controls : FormControlModel[]) : DropdownFormControl => {
+ return new DropdownFormControl({
+ type : FormControlType.DROPDOWN,
+ controlName : FormControlNames.AICZONE_ID,
+ displayName : 'AIC zone',
+ dataTestId : 'aic_zone',
+ placeHolder : 'Select AIC zone',
+ name : "aicZone",
+ value : serviceInstance ? serviceInstance.aicZoneId : null,
+ isDisabled : false,
+ validations : [],
+ onInit : this._basicControlGenerator.getSubscribeInitResult.bind(null, this._aaiService.getAicZones)
+ })
+ };
+
+ getPauseControl = (serviceInstance : any, controls : FormControlModel[]) :CheckboxFormControl => {
+ return new CheckboxFormControl({
+ controlName : FormControlNames.PAUSE,
+ displayName : 'Pause on pause points',
+ dataTestId : 'Pause',
+ isDisabled : false,
+ value : serviceInstance ? serviceInstance.pause : null,
+ })
+ };
+
+ getProjectControl = (serviceInstance : any, controls : FormControlModel[]) :DropdownFormControl =>{
+ return new DropdownFormControl({
+ type : FormControlType.DROPDOWN,
+ controlName : FormControlNames.PROJECT_NAME,
+ displayName : 'Project',
+ dataTestId : 'project',
+ placeHolder : 'Select Project',
+ name : "project",
+ isDisabled : false,
+ validations : [],
+ value : serviceInstance ? serviceInstance.projectName : null,
+ onInitSelectedField : ['projectList'],
+ onInit : this._basicControlGenerator.getSubscribeInitResult.bind(null, this._aaiService.getCategoryParameters)
+ })
+ };
+
+ getRollbackOnFailureControl = (serviceInstance : any, controls : FormControlModel[]) : DropdownFormControl => {
+ return new DropdownFormControl({
+ type : FormControlType.DROPDOWN,
+ controlName : FormControlNames.ROLLBACK_ON_FAILURE,
+ displayName : 'Rollback on failure',
+ dataTestId : 'rollback',
+ isDisabled : false,
+ validations : [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ value : serviceInstance ? serviceInstance.rollbackOnFailure : 'true',
+ onInit : this._basicControlGenerator.getSubscribeInitResult.bind(null, this.getRollBackOnFailureOptions)
+ })
+ };
+}
+
+
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator.spec.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator.spec.ts
new file mode 100644
index 000000000..36be1bdfa
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator.spec.ts
@@ -0,0 +1,2008 @@
+import {getTestBed, TestBed} from '@angular/core/testing';
+import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
+import {NgRedux} from '@angular-redux/store';
+import {BasicControlGenerator} from "../basic.control.generator";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {GenericFormService} from "../../generic-form.service";
+import {FormBuilder} from "@angular/forms";
+import {LogService} from "../../../../utils/log/log.service";
+import {
+ FormControlModel,
+ ValidatorModel,
+ ValidatorOptions
+} from "../../../../models/formControlModels/formControl.model";
+import {FormControlNames, VfModuleControlGenerator} from "./vfModule.control.generator";
+import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flags.service";
+
+class MockAppStore<T> {
+ getState() {
+ return {
+ "global": {
+ "name": null,
+ "flags": {
+ "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
+ "FLAG_SHOW_ASSIGNMENTS": true,
+ "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
+ "FLAG_UNASSIGN_SERVICE": true,
+ "FLAG_SHOW_VERIFY_SERVICE": false,
+ "FLAG_COLLECTION_RESOURCE_SUPPORT": true,
+ "FLAG_DUPLICATE_VNF": true,
+ "FLAG_SERVICE_MODEL_CACHE": true,
+ "CREATE_INSTANCE_TEST": false,
+ "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
+ "FLAG_ASYNC_INSTANTIATION": true,
+ "FLAG_ASYNC_JOBS": true,
+ "EMPTY_DRAWING_BOARD_TEST": false,
+ "FLAG_ADD_MSO_TESTAPI_FIELD": true
+ },
+ "type": "[FLAGS] Update"
+ },
+ "service": {
+ "serviceHierarchy": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "service": {
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "name": "ComplexService",
+ "version": "1.0",
+ "toscaModelURL": null,
+ "category": "Emanuel",
+ "serviceType": "",
+ "serviceRole": "",
+ "description": "ComplexService",
+ "serviceEcompNaming": "false",
+ "instantiationType": "Macro",
+ "inputs": {}
+ },
+ "vnfs": {
+ "VF_vMee 0": {
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "invariantUuid": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "description": "VSP_vMee",
+ "name": "VF_vMee",
+ "version": "2.0",
+ "customizationUuid": "91415b44-753d-494c-926a-456a9172bbb9",
+ "inputs": {},
+ "commands": {},
+ "serviceEcompNaming" : "true",
+ "properties": {
+ "ecomp_generated_naming": "false",
+ "max_instances": 10,
+ "min_instances": 1,
+ "gpb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_start_port": "0",
+ "sctp-a-ipv6-egress_rule_application": "any",
+ "Internal2_allow_transit": "true",
+ "sctp-b-IPv6_ethertype": "IPv6",
+ "sctp-a-egress_rule_application": "any",
+ "sctp-b-ingress_action": "pass",
+ "sctp-b-ingress_rule_protocol": "icmp",
+ "ncb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-ingress-src_start_port": "0.0",
+ "ncb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "fsb_volume_size_0": "320.0",
+ "sctp-b-egress_src_addresses": "local",
+ "sctp-a-ipv6-ingress_ethertype": "IPv4",
+ "sctp-a-ipv6-ingress-dst_start_port": "0",
+ "sctp-b-ipv6-ingress_rule_application": "any",
+ "domain_name": "default-domain",
+ "sctp-a-ingress_rule_protocol": "icmp",
+ "sctp-b-egress-src_start_port": "0.0",
+ "sctp-a-egress_src_addresses": "local",
+ "sctp-b-display_name": "epc-sctp-b-ipv4v6-sec-group",
+ "sctp-a-egress-src_start_port": "0.0",
+ "sctp-a-ingress_ethertype": "IPv4",
+ "sctp-b-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-dst_subnet_prefix_v6": "::",
+ "nf_naming": "{ecomp_generated_naming=true}",
+ "sctp-a-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-b-egress-dst_start_port": "0.0",
+ "ncb_flavor_name": "nv.c20r64d1",
+ "gpb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix_len": "0.0",
+ "Internal2_net_cidr": "10.0.0.10",
+ "sctp-a-ingress-dst_start_port": "0.0",
+ "sctp-a-egress-dst_start_port": "0.0",
+ "fsb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-egress_ethertype": "IPv4",
+ "vlc_st_service_mode": "in-network-nat",
+ "sctp-a-ipv6-egress_ethertype": "IPv4",
+ "sctp-a-egress-src_end_port": "65535.0",
+ "sctp-b-ipv6-egress_rule_application": "any",
+ "sctp-b-egress_action": "pass",
+ "sctp-a-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-b-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-b-name": "epc-sctp-b-ipv4v6-sec-group",
+ "fsb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ipv6-ingress-src_start_port": "0.0",
+ "sctp-b-ipv6-egress_ethertype": "IPv4",
+ "Internal1_net_cidr": "10.0.0.10",
+ "sctp-a-egress_dst_subnet_prefix": "0.0.0.0",
+ "fsb_flavor_name": "nv.c20r64d1",
+ "sctp_rule_protocol": "132",
+ "sctp-b-ipv6-ingress_src_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_rule_application": "any",
+ "sctp-a-IPv6_ethertype": "IPv6",
+ "vlc2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_virtualization_type": "virtual-machine",
+ "sctp-b-ingress-dst_start_port": "0.0",
+ "sctp-b-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-a-display_name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-b-ingress_rule_application": "any",
+ "int2_sec_group_name": "int2-sec-group",
+ "vlc_flavor_name": "nd.c16r64d1",
+ "sctp-b-ipv6-egress_src_addresses": "local",
+ "vlc_st_interface_type_int1": "other1",
+ "sctp-b-egress-src_end_port": "65535.0",
+ "sctp-a-ipv6-egress-dst_start_port": "0",
+ "vlc_st_interface_type_int2": "other2",
+ "sctp-a-ipv6-egress_rule_protocol": "any",
+ "Internal2_shared": "false",
+ "sctp-a-ipv6-egress_dst_subnet_prefix_len": "0",
+ "Internal2_rpf": "disable",
+ "vlc1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_end_port": "65535",
+ "sctp-a-ipv6-egress_src_addresses": "local",
+ "sctp-a-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-egress_src_end_port": "65535",
+ "Internal1_forwarding_mode": "l2",
+ "Internal2_dhcp": "false",
+ "sctp-a-dst_subnet_prefix_v6": "::",
+ "pxe_image_name": "MME_PXE-Boot_16ACP04_GA.qcow2",
+ "vlc_st_interface_type_gtp": "other0",
+ "ncb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-src_subnet_prefix_v6": "::",
+ "sctp-a-egress_dst_subnet_prefix_len": "0.0",
+ "int1_sec_group_name": "int1-sec-group",
+ "Internal1_dhcp": "false",
+ "sctp-a-ipv6-egress_dst_end_port": "65535",
+ "Internal2_forwarding_mode": "l2",
+ "fsb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix": "0.0.0.0",
+ "Internal1_net_cidr_len": "17",
+ "gpb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-a-ingress_dst_addresses": "local",
+ "sctp-a-egress_action": "pass",
+ "fsb_volume_type_0": "SF-Default-SSD",
+ "ncb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_sctp_a": "left",
+ "vlc_st_interface_type_sctp_b": "right",
+ "sctp-a-src_subnet_prefix_v6": "::",
+ "vlc_st_version": "2",
+ "sctp-b-egress_ethertype": "IPv4",
+ "sctp-a-ingress_rule_application": "any",
+ "gpb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "instance_ip_family_v6": "v6",
+ "sctp-a-ipv6-egress_src_start_port": "0",
+ "sctp-b-ingress-src_start_port": "0.0",
+ "sctp-b-ingress_dst_addresses": "local",
+ "fsb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_oam": "management",
+ "multi_stage_design": "true",
+ "oam_sec_group_name": "oam-sec-group",
+ "Internal2_net_gateway": "10.0.0.10",
+ "sctp-a-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-ipv6-egress-dst_start_port": "0",
+ "Internal1_net_gateway": "10.0.0.10",
+ "sctp-b-ipv6-egress_rule_protocol": "any",
+ "gtp_sec_group_name": "gtp-sec-group",
+ "sctp-a-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-egress_dst_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_dst_addresses": "local",
+ "sctp-a-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-egress_action": "pass",
+ "sctp-a-ipv6-egress_action": "pass",
+ "Internal1_shared": "false",
+ "sctp-b-ipv6-ingress_rule_protocol": "any",
+ "Internal2_net_cidr_len": "17",
+ "sctp-a-name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-a-ingress-src_end_port": "65535.0",
+ "sctp-b-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-a-egress-dst_end_port": "65535.0",
+ "sctp-a-ingress_action": "pass",
+ "sctp-b-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-ingress_action": "pass",
+ "vlc_st_service_type": "firewall",
+ "sctp-b-ipv6-egress_dst_end_port": "65535",
+ "sctp-b-ipv6-ingress-dst_start_port": "0",
+ "vlc2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_availability_zone": "true",
+ "fsb_volume_image_name_1": "MME_FSB2_16ACP04_GA.qcow2",
+ "sctp-b-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_src_subnet_prefix_len": "0",
+ "Internal1_allow_transit": "true",
+ "gpb_flavor_name": "nv.c20r64d1",
+ "availability_zone_max_count": "1",
+ "fsb_volume_image_name_0": "MME_FSB1_16ACP04_GA.qcow2",
+ "sctp-b-ipv6-ingress_dst_addresses": "local",
+ "sctp-b-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-ingress_ethertype": "IPv4",
+ "vlc1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_action": "pass",
+ "Internal1_rpf": "disable",
+ "sctp-b-ingress_ethertype": "IPv4",
+ "sctp-b-egress_rule_application": "any",
+ "sctp-b-ingress-src_end_port": "65535.0",
+ "sctp-a-ipv6-ingress_rule_protocol": "any",
+ "sctp-a-ingress-src_start_port": "0.0",
+ "sctp-b-egress-dst_end_port": "65535.0"
+ },
+ "type": "VF",
+ "modelCustomizationName": "VF_vMee 0",
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "ecomp_generated_naming": "false",
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {
+ "Port Mirroring Configuration By Policy 0": {
+ "uuid": "b4398538-e89d-4f13-b33d-ca323434ba50",
+ "invariantUuid": "6ef0ca40-f366-4897-951f-abd65d25f6f7",
+ "description": "A port mirroring configuration by policy object",
+ "name": "Port Mirroring Configuration By Policy",
+ "version": "27.0",
+ "customizationUuid": "3c3b7b8d-8669-4b3b-8664-61970041fad2",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Configuration",
+ "modelCustomizationName": "Port Mirroring Configuration By Policy 0",
+ "sourceNodes": [],
+ "collectorNodes": null,
+ "configurationByPolicy": false
+ }
+ },
+ "serviceProxies": {},
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ }
+ },
+ "serviceInstance": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "networks": {},
+ "vnfs": {
+ "VF_vMee 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "vf_vmee0..VfVmee..base_vmme..module-0vmvzo": {
+ "isMissingData": false,
+ "sdncPreReload": null,
+ "modelInfo": {
+ "modelType": "VFmodule",
+ "modelInvariantId": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "modelVersionId": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "modelName": "VfVmee..base_vmme..module-0",
+ "modelVersion": "2",
+ "modelCustomizationId": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0"
+ },
+ "instanceParams": [
+ {}
+ ],
+ "trackById": "wmtm6sy2uj"
+ }
+ }
+ },
+ "isMissingData": true,
+ "originalName": "VF_vMee 0",
+ "vnfStoreKey": "VF_vMee 0",
+ "trackById": "p3wk448m5do",
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": null,
+ "tenantId": null,
+ "lineOfBusiness": null,
+ "platformName": null,
+ "modelInfo": {
+ "modelType": "VF",
+ "modelInvariantId": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "VF_vMee",
+ "modelVersion": "2.0",
+ "modelCustomizationName": "VF_vMee 0"
+ }
+ }
+ },
+ "instanceParams": [
+ {}
+ ],
+ "validationCounter": 1,
+ "existingNames": {},
+ "existingVNFCounterMap": {
+ "d6557200-ecf2-4641-8094-5393ae3aae60": 1
+ },
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "aicZoneId": "JAG1",
+ "projectName": "x1",
+ "rollbackOnFailure": "true",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "ComplexService",
+ "modelVersion": "1.0",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44"
+ },
+ "isALaCarte": false,
+ "name": "ComplexService",
+ "version": "1.0",
+ "description": "ComplexService",
+ "category": "Emanuel",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isEcompGeneratedNaming": true,
+ "isMultiStepDesign": false
+ }
+ },
+ "lcpRegionsAndTenants": {
+ "lcpRegionList": [
+ {
+ "id": "JANET25",
+ "name": "JANET25",
+ "isPermitted": true
+ },
+ {
+ "id": "hvf6",
+ "name": "hvf6",
+ "isPermitted": true
+ }
+ ],
+ "lcpRegionsTenantsMap": {
+ "JANET25": [
+ {
+ "id": "092eb9e8e4b7412e8787dd091bc58e86",
+ "name": "USP-SIP-IC-24335-T-01",
+ "isPermitted": true
+ }
+ ],
+ "hvf6": [
+ {
+ "id": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "name": "AIN Web Tool-15-D-testalexandria",
+ "isPermitted": true
+ },
+ {
+ "id": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "name": "AIN Web Tool-15-D-STTest2",
+ "isPermitted": true
+ },
+ {
+ "id": "1178612d2b394be4834ad77f567c0af2",
+ "name": "AIN Web Tool-15-D-SSPtestcustome",
+ "isPermitted": true
+ },
+ {
+ "id": "19c5ade915eb461e8af52fb2fd8cd1f2",
+ "name": "AIN Web Tool-15-D-UncheckedEcopm",
+ "isPermitted": true
+ },
+ {
+ "id": "de007636e25249238447264a988a927b",
+ "name": "AIN Web Tool-15-D-dfsdf",
+ "isPermitted": true
+ },
+ {
+ "id": "62f29b3613634ca6a3065cbe0e020c44",
+ "name": "AIN/SMS-16-D-Multiservices1",
+ "isPermitted": true
+ },
+ {
+ "id": "649289e30d3244e0b48098114d63c2aa",
+ "name": "AIN Web Tool-15-D-SSPST66",
+ "isPermitted": true
+ },
+ {
+ "id": "3f21eeea6c2c486bba31dab816c05a32",
+ "name": "AIN Web Tool-15-D-ASSPST47",
+ "isPermitted": true
+ },
+ {
+ "id": "f60ce21d3ee6427586cff0d22b03b773",
+ "name": "CESAR-100-D-sspjg67246",
+ "isPermitted": true
+ },
+ {
+ "id": "8774659e425f479895ae091bb5d46560",
+ "name": "CESAR-100-D-sspjg68359",
+ "isPermitted": true
+ },
+ {
+ "id": "624eb554b0d147c19ff8885341760481",
+ "name": "AINWebTool-15-D-iftach",
+ "isPermitted": true
+ },
+ {
+ "id": "214f55f5fc414c678059c383b03e4962",
+ "name": "CESAR-100-D-sspjg612401",
+ "isPermitted": true
+ },
+ {
+ "id": "c90666c291664841bb98e4d981ff1db5",
+ "name": "CESAR-100-D-sspjg621340",
+ "isPermitted": true
+ },
+ {
+ "id": "ce5b6bc5c7b348e1bf4b91ac9a174278",
+ "name": "sspjg621351cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "b386b768a3f24c8e953abbe0b3488c02",
+ "name": "AINWebTool-15-D-eteancomp",
+ "isPermitted": true
+ },
+ {
+ "id": "dc6c4dbfd225474e9deaadd34968646c",
+ "name": "AINWebTool-15-T-SPFET",
+ "isPermitted": true
+ },
+ {
+ "id": "02cb5030e9914aa4be120bd9ed1e19eb",
+ "name": "AINWebTool-15-X-eeweww",
+ "isPermitted": true
+ },
+ {
+ "id": "f2f3830e4c984d45bcd00e1a04158a79",
+ "name": "CESAR-100-D-spjg61909",
+ "isPermitted": true
+ },
+ {
+ "id": "05b91bd5137f4929878edd965755c06d",
+ "name": "CESAR-100-D-sspjg621512cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "7002fbe8482d4a989ddf445b1ce336e0",
+ "name": "AINWebTool-15-X-vdr",
+ "isPermitted": true
+ },
+ {
+ "id": "4008522be43741dcb1f5422022a2aa0b",
+ "name": "AINWebTool-15-D-ssasa",
+ "isPermitted": true
+ },
+ {
+ "id": "f44e2e96a1b6476abfda2fa407b00169",
+ "name": "AINWebTool-15-D-PFNPT",
+ "isPermitted": true
+ },
+ {
+ "id": "b69a52bec8a84669a37a1e8b72708be7",
+ "name": "AINWebTool-15-X-vdre",
+ "isPermitted": true
+ },
+ {
+ "id": "fac7d9fd56154caeb9332202dcf2969f",
+ "name": "AINWebTool-15-X-NONPODECOMP",
+ "isPermitted": true
+ },
+ {
+ "id": "2d34d8396e194eb49969fd61ffbff961",
+ "name": "DN5242-Nov16-T5",
+ "isPermitted": true
+ },
+ {
+ "id": "cb42a77ff45b48a8b8deb83bb64acc74",
+ "name": "ro-T11",
+ "isPermitted": true
+ },
+ {
+ "id": "fa45ca53c80b492fa8be5477cd84fc2b",
+ "name": "ro-T112",
+ "isPermitted": true
+ },
+ {
+ "id": "4914ab0ab3a743e58f0eefdacc1dde77",
+ "name": "DN5242-Nov21-T1",
+ "isPermitted": true
+ },
+ {
+ "id": "d0a3e3f2964542259d155a81c41aadc3",
+ "name": "test-hvf6-09",
+ "isPermitted": true
+ },
+ {
+ "id": "cbb99fe4ada84631b7baf046b6fd2044",
+ "name": "DN5242-Nov16-T3",
+ "isPermitted": true
+ }
+ ]
+ }
+ },
+ "productFamilies": [
+ {
+ "id": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "name": "SCOTTIE",
+ "isPermitted": true
+ },
+ {
+ "id": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "name": "IGNACIO",
+ "isPermitted": true
+ },
+ {
+ "id": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "name": "Christie",
+ "isPermitted": true
+ },
+ {
+ "id": "a4f6f2ae-9bf5-4ed7-b904-06b2099c4bd7",
+ "name": "Enhanced Services",
+ "isPermitted": true
+ },
+ {
+ "id": "vTerrance",
+ "name": "vTerrance",
+ "isPermitted": true
+ },
+ {
+ "id": "323d69d9-2efe-4r45-ay0a-89ea7ard4e6f",
+ "name": "vSCP",
+ "isPermitted": true
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": true
+ },
+ {
+ "id": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
+ "name": "BVOIP",
+ "isPermitted": true
+ },
+ {
+ "id": "db171b8f-115c-4992-a2e3-ee04cae357e0",
+ "name": "LINDSEY",
+ "isPermitted": true
+ },
+ {
+ "id": "LRSI-OSPF",
+ "name": "LRSI-OSPF",
+ "isPermitted": true
+ },
+ {
+ "id": "vRosemarie",
+ "name": "HNGATEWAY",
+ "isPermitted": true
+ },
+ {
+ "id": "vHNPaas",
+ "name": "WILKINS",
+ "isPermitted": true
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "b6a3f28c-eebf-494c-a900-055cc7c874ce",
+ "name": "VROUTER",
+ "isPermitted": true
+ },
+ {
+ "id": "Cisneros",
+ "name": "vMuriel",
+ "isPermitted": true
+ },
+ {
+ "id": "0ee8c1bc-7cbd-4b0a-a1ac-e9999255abc1",
+ "name": "CARA Griffin",
+ "isPermitted": true
+ },
+ {
+ "id": "c7611ebe-c324-48f1-8085-94aef0c6ef3d",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ },
+ {
+ "id": "e30755dc-5673-4b6b-9dcf-9abdd96b93d1",
+ "name": "Transport",
+ "isPermitted": true
+ },
+ {
+ "id": "vSalvatore",
+ "name": "vSalvatore",
+ "isPermitted": true
+ },
+ {
+ "id": "d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4",
+ "name": "Josefina",
+ "isPermitted": true
+ },
+ {
+ "id": "vHubbard",
+ "name": "vHubbard",
+ "isPermitted": true
+ },
+ {
+ "id": "12a96a9d-4b4c-4349-a950-fe1159602621",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ }
+ ],
+ "serviceTypes": {
+ "e433710f-9217-458d-a79d-1c7aff376d89": [
+ {
+ "id": "0",
+ "name": "vRichardson",
+ "isPermitted": false
+ },
+ {
+ "id": "1",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "2",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "3",
+ "name": "vJamie",
+ "isPermitted": false
+ },
+ {
+ "id": "4",
+ "name": "vVoiceMail",
+ "isPermitted": false
+ },
+ {
+ "id": "5",
+ "name": "Kennedy",
+ "isPermitted": false
+ },
+ {
+ "id": "6",
+ "name": "vSEGW",
+ "isPermitted": false
+ },
+ {
+ "id": "7",
+ "name": "vVM",
+ "isPermitted": false
+ },
+ {
+ "id": "8",
+ "name": "vOTA",
+ "isPermitted": false
+ },
+ {
+ "id": "9",
+ "name": "vMME",
+ "isPermitted": false
+ },
+ {
+ "id": "10",
+ "name": "vMNS",
+ "isPermitted": false
+ },
+ {
+ "id": "11",
+ "name": "vSCP",
+ "isPermitted": false
+ },
+ {
+ "id": "12",
+ "name": "VPMS",
+ "isPermitted": false
+ },
+ {
+ "id": "13",
+ "name": "vMMSC",
+ "isPermitted": false
+ },
+ {
+ "id": "14",
+ "name": "SSD",
+ "isPermitted": false
+ },
+ {
+ "id": "15",
+ "name": "vMOG",
+ "isPermitted": false
+ },
+ {
+ "id": "16",
+ "name": "LINDSEY",
+ "isPermitted": false
+ },
+ {
+ "id": "17",
+ "name": "JOHANNA_SANTOS",
+ "isPermitted": false
+ },
+ {
+ "id": "18",
+ "name": "vCarroll",
+ "isPermitted": false
+ }
+ ]
+ },
+ "aicZones": [
+ {
+ "id": "NFT1",
+ "name": "NFTJSSSS-NFT1"
+ },
+ {
+ "id": "JAG1",
+ "name": "YUDFJULP-JAG1"
+ },
+ {
+ "id": "YYY1",
+ "name": "UUUAIAAI-YYY1"
+ },
+ {
+ "id": "BAN1",
+ "name": "VSDKYUTP-BAN1"
+ },
+ {
+ "id": "DKJ1",
+ "name": "DKJSJDKA-DKJ1"
+ },
+ {
+ "id": "MCS1",
+ "name": "ASACMAMS-MCS1"
+ },
+ {
+ "id": "UIO1",
+ "name": "uioclli1-UIO1"
+ },
+ {
+ "id": "RAJ1",
+ "name": "YGBIJNLQ-RAJ1"
+ },
+ {
+ "id": "OPA1",
+ "name": "opaclli1-OPA1"
+ },
+ {
+ "id": "SDE1",
+ "name": "ZXCVBNMA-SDE1"
+ },
+ {
+ "id": "VEN2",
+ "name": "FGHJUHIL-VEN2"
+ },
+ {
+ "id": "ORL1",
+ "name": "ORLDFLMA-ORL1"
+ },
+ {
+ "id": "JAD1",
+ "name": "JADECLLI-JAD1"
+ },
+ {
+ "id": "ZXL1",
+ "name": "LWLWCANN-ZXL1"
+ },
+ {
+ "id": "CKL1",
+ "name": "CLKSKCKK-CKL1"
+ },
+ {
+ "id": "SDF1",
+ "name": "sdfclli1-SDF1"
+ },
+ {
+ "id": "RAD1",
+ "name": "RADICAL1-RAD1"
+ },
+ {
+ "id": "KIT1",
+ "name": "BHYJFGLN-KIT1"
+ },
+ {
+ "id": "REL1",
+ "name": "INGERFGT-REL1"
+ },
+ {
+ "id": "JNL1",
+ "name": "CJALSDAC-JNL1"
+ },
+ {
+ "id": "OLK1",
+ "name": "OLKOLKLS-OLK1"
+ },
+ {
+ "id": "CHI1",
+ "name": "CHILLIWE-CHI1"
+ },
+ {
+ "id": "UUU4",
+ "name": "UUUAAAUU-UUU4"
+ },
+ {
+ "id": "TUF1",
+ "name": "TUFCLLI1-TUF1"
+ },
+ {
+ "id": "KJN1",
+ "name": "CKALDKSA-KJN1"
+ },
+ {
+ "id": "SAM1",
+ "name": "SNDGCA64-SAN1"
+ },
+ {
+ "id": "SCK1",
+ "name": "SCKSCKSK-SCK1"
+ },
+ {
+ "id": "HJH1",
+ "name": "AOEEQQQD-HJH1"
+ },
+ {
+ "id": "HGD1",
+ "name": "SDFQWHGD-HGD1"
+ },
+ {
+ "id": "KOR1",
+ "name": "HYFLNBVT-KOR1"
+ },
+ {
+ "id": "ATL43",
+ "name": "AICLOCID-ATL43"
+ },
+ {
+ "id": "ATL54",
+ "name": "AICFTAAI-ATL54"
+ },
+ {
+ "id": "ATL66",
+ "name": "CLLIAAII-ATL66"
+ },
+ {
+ "id": "VEL1",
+ "name": "BNMLKUIK-VEL1"
+ },
+ {
+ "id": "ICC1",
+ "name": "SANJITAT-ICC1"
+ },
+ {
+ "id": "MNT11",
+ "name": "WSXEFBTH-MNT11"
+ },
+ {
+ "id": "DEF2",
+ "name": "WSBHGTYL-DEF2"
+ },
+ {
+ "id": "MAD11",
+ "name": "SDFQWGKL-MAD11"
+ },
+ {
+ "id": "OLG1",
+ "name": "OLHOLHOL-OLG1"
+ },
+ {
+ "id": "GAR1",
+ "name": "NGFVSJKO-GAR1"
+ },
+ {
+ "id": "SAN22",
+ "name": "GNVLSCTL-SAN22"
+ },
+ {
+ "id": "HRG1",
+ "name": "HRGHRGGS-HRG1"
+ },
+ {
+ "id": "JCS1",
+ "name": "JCSJSCJS-JCS1"
+ },
+ {
+ "id": "DHA12",
+ "name": "WSXEDECF-DHA12"
+ },
+ {
+ "id": "HJE1",
+ "name": "AOEEWWWD-HJE1"
+ },
+ {
+ "id": "NCA1",
+ "name": "NCANCANN-NCA1"
+ },
+ {
+ "id": "IOP1",
+ "name": "iopclli1-IOP1"
+ },
+ {
+ "id": "RTY1",
+ "name": "rtyclli1-RTY1"
+ },
+ {
+ "id": "KAP1",
+ "name": "HIOUYTRQ-KAP1"
+ },
+ {
+ "id": "ZEN1",
+ "name": "ZENCLLI1-ZEN1"
+ },
+ {
+ "id": "HKA1",
+ "name": "JAKHLASS-HKA1"
+ },
+ {
+ "id": "CQK1",
+ "name": "CQKSCAKK-CQK1"
+ },
+ {
+ "id": "SAI1",
+ "name": "UBEKQLPD-SAI1"
+ },
+ {
+ "id": "ERT1",
+ "name": "ertclli1-ERT1"
+ },
+ {
+ "id": "IBB1",
+ "name": "PLMKOIJU-IBB1"
+ },
+ {
+ "id": "TIR2",
+ "name": "PLKINHYI-TIR2"
+ },
+ {
+ "id": "HSD1",
+ "name": "CHASKCDS-HSD1"
+ },
+ {
+ "id": "SLF78",
+ "name": "SDCTLFN1-SLF78"
+ },
+ {
+ "id": "SEE78",
+ "name": "SDCTEEE4-SEE78"
+ },
+ {
+ "id": "SAN13",
+ "name": "TOKYJPFA-SAN13"
+ },
+ {
+ "id": "SAA78",
+ "name": "SDCTAAA1-SAA78"
+ },
+ {
+ "id": "LUC1",
+ "name": "ATLDFGYC-LUC1"
+ },
+ {
+ "id": "AMD13",
+ "name": "MEMATLAN-AMD13"
+ },
+ {
+ "id": "TOR1",
+ "name": "TOROONXN-TOR1"
+ },
+ {
+ "id": "QWE1",
+ "name": "QWECLLI1-QWE1"
+ },
+ {
+ "id": "ZOG1",
+ "name": "ZOGASTRO-ZOG1"
+ },
+ {
+ "id": "CAL33",
+ "name": "CALIFORN-CAL33"
+ },
+ {
+ "id": "SHH78",
+ "name": "SDIT1HHH-SHH78"
+ },
+ {
+ "id": "DSA1",
+ "name": "LKJHGFDS-DSA1"
+ },
+ {
+ "id": "CLG1",
+ "name": "CLGRABAD-CLG1"
+ },
+ {
+ "id": "BNA1",
+ "name": "BNARAGBK-BNA1"
+ },
+ {
+ "id": "ATL84",
+ "name": "CANTTCOC-ATL84"
+ },
+ {
+ "id": "APP1",
+ "name": "WBHGTYUI-APP1"
+ },
+ {
+ "id": "RJN1",
+ "name": "RJNRBZAW-RJN1"
+ },
+ {
+ "id": "EHH78",
+ "name": "SDCSHHH5-EHH78"
+ },
+ {
+ "id": "mac10",
+ "name": "PKGTESTF-mac10"
+ },
+ {
+ "id": "SXB78",
+ "name": "SDCTGXB1-SXB78"
+ },
+ {
+ "id": "SAX78",
+ "name": "SDCTAXG1-SAX78"
+ },
+ {
+ "id": "SYD1",
+ "name": "SYDNAUBV-SYD1"
+ },
+ {
+ "id": "TOK1",
+ "name": "TOKYJPFA-TOK1"
+ },
+ {
+ "id": "KGM2",
+ "name": "KGMTNC20-KGM2"
+ },
+ {
+ "id": "DCC1b",
+ "name": "POIUYTGH-DCC1b"
+ },
+ {
+ "id": "SKK78",
+ "name": "SDCTKKK1-SKK78"
+ },
+ {
+ "id": "SGG78",
+ "name": "SDCTGGG1-SGG78"
+ },
+ {
+ "id": "SJJ78",
+ "name": "SDCTJJJ1-SJJ78"
+ },
+ {
+ "id": "SBX78",
+ "name": "SDCTBXG1-SBX78"
+ },
+ {
+ "id": "LAG1",
+ "name": "LARGIZON-LAG1"
+ },
+ {
+ "id": "IAA1",
+ "name": "QAZXSWED-IAA1"
+ },
+ {
+ "id": "POI1",
+ "name": "PLMNJKIU-POI1"
+ },
+ {
+ "id": "LAG1a",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "PBL1",
+ "name": "PBLAPBAI-PBL1"
+ },
+ {
+ "id": "LAG45",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "MAR1",
+ "name": "MNBVCXZM-MAR1"
+ },
+ {
+ "id": "HST70",
+ "name": "HSTNTX70-HST70"
+ },
+ {
+ "id": "DCC1a",
+ "name": "POIUYTGH-DCC1a"
+ },
+ {
+ "id": "TOL1",
+ "name": "TOLDOH21-TOL1"
+ },
+ {
+ "id": "LON1",
+ "name": "LONEENCO-LON1"
+ },
+ {
+ "id": "SJU78",
+ "name": "SDIT1JUB-SJU78"
+ },
+ {
+ "id": "STN27",
+ "name": "HSTNTX01-STN27"
+ },
+ {
+ "id": "SSW56",
+ "name": "ss8126GT-SSW56"
+ },
+ {
+ "id": "SBB78",
+ "name": "SDIT1BBB-SBB78"
+ },
+ {
+ "id": "DCC3",
+ "name": "POIUYTGH-DCC3"
+ },
+ {
+ "id": "GNV1",
+ "name": "GNVLSCTL-GNV1"
+ },
+ {
+ "id": "WAS1",
+ "name": "WASHDCSW-WAS1"
+ },
+ {
+ "id": "TOY1",
+ "name": "TORYONNZ-TOY1"
+ },
+ {
+ "id": "STT1",
+ "name": "STTLWA02-STT1"
+ },
+ {
+ "id": "STG1",
+ "name": "STTGGE62-STG1"
+ },
+ {
+ "id": "SLL78",
+ "name": "SDCTLLL1-SLL78"
+ },
+ {
+ "id": "SBU78",
+ "name": "SDIT1BUB-SBU78"
+ },
+ {
+ "id": "ATL2",
+ "name": "ATLNGANW-ATL2"
+ },
+ {
+ "id": "BOT1",
+ "name": "BOTHWAKY-BOT1"
+ },
+ {
+ "id": "SNG1",
+ "name": "SNGPSIAU-SNG1"
+ },
+ {
+ "id": "NYC1",
+ "name": "NYCMNY54-NYC1"
+ },
+ {
+ "id": "LAG1b",
+ "name": "LARGIZON-LAG1b"
+ },
+ {
+ "id": "AMD15",
+ "name": "AMDFAA01-AMD15"
+ },
+ {
+ "id": "SNA1",
+ "name": "SNANTXCA-SNA1"
+ },
+ {
+ "id": "PLT1",
+ "name": "PLTNCA60-PLT1"
+ },
+ {
+ "id": "TLP1",
+ "name": "TLPNXM18-TLP1"
+ },
+ {
+ "id": "SDD81",
+ "name": "SAIT1DD6-SDD81"
+ },
+ {
+ "id": "DCC1",
+ "name": "POIUYTGH-DCC1"
+ },
+ {
+ "id": "DCC2",
+ "name": "POIUYTGH-DCC2"
+ },
+ {
+ "id": "OKC1",
+ "name": "OKCBOK55-OKC1"
+ },
+ {
+ "id": "PAR1",
+ "name": "PARSFRCG-PAR1"
+ },
+ {
+ "id": "TES36",
+ "name": "ABCEETES-TES36"
+ },
+ {
+ "id": "COM1",
+ "name": "PLMKOPIU-COM1"
+ },
+ {
+ "id": "ANI1",
+ "name": "ATLNGTRE-ANI1"
+ },
+ {
+ "id": "SDG78",
+ "name": "SDIT1BDG-SDG78"
+ },
+ {
+ "id": "mac20",
+ "name": "PKGTESTF-mac20"
+ },
+ {
+ "id": "DSF45",
+ "name": "DSFBG123-DSF45"
+ },
+ {
+ "id": "HST25",
+ "name": "HSTNTX01-HST25"
+ },
+ {
+ "id": "AMD18",
+ "name": "AUDIMA01-AMD18"
+ },
+ {
+ "id": "SAA80",
+ "name": "SAIT9AA3-SAA80"
+ },
+ {
+ "id": "SSA56",
+ "name": "SSIT2AA7-SSA56"
+ },
+ {
+ "id": "SDD82",
+ "name": "SAIT1DD9-SDD82"
+ },
+ {
+ "id": "JCV1",
+ "name": "JCVLFLBW-JCV1"
+ },
+ {
+ "id": "SUL2",
+ "name": "WERTYUJK-SUL2"
+ },
+ {
+ "id": "PUR1",
+ "name": "purelyde-PUR1"
+ },
+ {
+ "id": "FDE55",
+ "name": "FDERT555-FDE55"
+ },
+ {
+ "id": "SITE",
+ "name": "LONEENCO-SITE"
+ },
+ {
+ "id": "ATL1",
+ "name": "ATLNGAMA-ATL1"
+ },
+ {
+ "id": "JUL1",
+ "name": "ZXCVBNMM-JUL1"
+ },
+ {
+ "id": "TAT34",
+ "name": "TESAAISB-TAT34"
+ },
+ {
+ "id": "XCP12",
+ "name": "CHKGH123-XCP12"
+ },
+ {
+ "id": "RAI1",
+ "name": "poiuytre-RAI1"
+ },
+ {
+ "id": "HPO1",
+ "name": "ATLNGAUP-HPO1"
+ },
+ {
+ "id": "KJF12",
+ "name": "KJFDH123-KJF12"
+ },
+ {
+ "id": "SCC80",
+ "name": "SAIT9CC3-SCC80"
+ },
+ {
+ "id": "SAA12",
+ "name": "SAIT9AF8-SAA12"
+ },
+ {
+ "id": "SAA14",
+ "name": "SAIT1AA9-SAA14"
+ },
+ {
+ "id": "ATL35",
+ "name": "TTESSAAI-ATL35"
+ },
+ {
+ "id": "CWY1",
+ "name": "CWYMOWBS-CWY1"
+ },
+ {
+ "id": "ATL76",
+ "name": "TELEPAAI-ATL76"
+ },
+ {
+ "id": "DSL12",
+ "name": "DSLFK242-DSL12"
+ },
+ {
+ "id": "ATL53",
+ "name": "AAIATLTE-ATL53"
+ },
+ {
+ "id": "SAA11",
+ "name": "SAIT9AA2-SAA11"
+ },
+ {
+ "id": "ATL62",
+ "name": "TESSASCH-ATL62"
+ },
+ {
+ "id": "AUG1",
+ "name": "ASDFGHJK-AUG1"
+ },
+ {
+ "id": "POI22",
+ "name": "POIUY123-POI22"
+ },
+ {
+ "id": "SAA13",
+ "name": "SAIT1AA9-SAA13"
+ },
+ {
+ "id": "BHY17",
+ "name": "BHYTFRF3-BHY17"
+ },
+ {
+ "id": "LIS1",
+ "name": "HOSTPROF-LIS1"
+ },
+ {
+ "id": "SIP1",
+ "name": "ZXCVBNMK-SIP1"
+ },
+ {
+ "id": "ATL99",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "ATL64",
+ "name": "FORLOAAJ-ATL64"
+ },
+ {
+ "id": "TAT33",
+ "name": "TESAAISA-TAT33"
+ },
+ {
+ "id": "RAD10",
+ "name": "INDIPUNE-RAD10"
+ },
+ {
+ "id": "RTW5",
+ "name": "BHYTFRY4-RTW5"
+ },
+ {
+ "id": "JGS1",
+ "name": "KSJKKKKK-JGS1"
+ },
+ {
+ "id": "ATL98",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "WAN1",
+ "name": "LEIWANGW-WAN1"
+ },
+ {
+ "id": "ATL44",
+ "name": "ATLSANAB-ATL44"
+ },
+ {
+ "id": "RTD2",
+ "name": "BHYTFRk4-RTD2"
+ },
+ {
+ "id": "NIR1",
+ "name": "ORFLMANA-NIR1"
+ },
+ {
+ "id": "ATL75",
+ "name": "SANAAIRE-ATL75"
+ },
+ {
+ "id": "NUM1",
+ "name": "QWERTYUI-NUM1"
+ },
+ {
+ "id": "MTN32",
+ "name": "MDTWNJ21-MTN32"
+ },
+ {
+ "id": "RTZ4",
+ "name": "BHYTFRZ6-RTZ4"
+ },
+ {
+ "id": "ATL56",
+ "name": "ATLSANAC-ATL56"
+ },
+ {
+ "id": "AMS1",
+ "name": "AMSTNLBW-AMS1"
+ },
+ {
+ "id": "RCT1",
+ "name": "AMSTERNL-RCT1"
+ },
+ {
+ "id": "JAN1",
+ "name": "ORFLMATT-JAN1"
+ },
+ {
+ "id": "ABC14",
+ "name": "TESAAISA-ABC14"
+ },
+ {
+ "id": "TAT37",
+ "name": "TESAAISD-TAT37"
+ },
+ {
+ "id": "MIC54",
+ "name": "MICHIGAN-MIC54"
+ },
+ {
+ "id": "ABC11",
+ "name": "ATLSANAI-ABC11"
+ },
+ {
+ "id": "AMF11",
+ "name": "AMDOCS01-AMF11"
+ },
+ {
+ "id": "ATL63",
+ "name": "ATLSANEW-ATL63"
+ },
+ {
+ "id": "ABC12",
+ "name": "ATLSECIA-ABC12"
+ },
+ {
+ "id": "MTN20",
+ "name": "MDTWNJ21-MTN20"
+ },
+ {
+ "id": "ABC15",
+ "name": "AAITESAN-ABC15"
+ },
+ {
+ "id": "AVT1",
+ "name": "AVTRFLHD-AVT1"
+ },
+ {
+ "id": "ATL34",
+ "name": "ATLSANAI-ATL34"
+ }
+ ],
+ "categoryParameters": {
+ "owningEntityList": [
+ {
+ "id": "aaa1",
+ "name": "aaa1"
+ },
+ {
+ "id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "name": "WayneHolland"
+ },
+ {
+ "id": "Melissa",
+ "name": "Melissa"
+ }
+ ],
+ "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"
+ }
+ ]
+ },
+ "type": "[LCP_REGIONS_AND_TENANTS] Update",
+ "subscribers": [
+ {
+ "id": "CAR_2020_ER",
+ "name": "CAR_2020_ER",
+ "isPermitted": true
+ },
+ {
+ "id": "21014aa2-526b-11e6-beb8-9e71128cae77",
+ "name": "JULIO ERICKSON",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-2",
+ "name": "DALE BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-1",
+ "name": "LLOYD BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example",
+ "name": "JimmyExampleCust-20161102",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example2",
+ "name": "JimmyExampleCust-20161103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-102",
+ "name": "ERICA5779-TestSub-PWT-102",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-101",
+ "name": "ERICA5779-TestSub-PWT-101",
+ "isPermitted": false
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-4",
+ "name": "ERICA5779-Subscriber-5",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-103",
+ "name": "ERICA5779-TestSub-PWT-103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-2",
+ "name": "ERICA5779-Subscriber-2",
+ "isPermitted": false
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "SILVIA ROBBINS",
+ "isPermitted": true
+ },
+ {
+ "id": "ERICA5779-Subscriber-3",
+ "name": "ERICA5779-Subscriber-3",
+ "isPermitted": false
+ },
+ {
+ "id": "31739f3e-526b-11e6-beb8-9e71128cae77",
+ "name": "CRAIG/ROBERTS",
+ "isPermitted": false
+ }
+ ]
+ }
+ }
+ }
+}
+
+class MockFeatureFlagsService {}
+
+describe('VFModule Control Generator', () => {
+ let injector;
+ let service: VfModuleControlGenerator;
+ let httpMock: HttpTestingController;
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ imports: [HttpClientTestingModule],
+ providers: [VfModuleControlGenerator,
+ GenericFormService,
+ BasicControlGenerator,
+ AaiService,
+ FormBuilder,
+ LogService,
+ {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
+ {provide: NgRedux, useClass: MockAppStore}]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ service = injector.get(VfModuleControlGenerator);
+ httpMock = injector.get(HttpTestingController);
+ jest.spyOn(console, 'error');
+
+ })().then(done).catch(done.fail));
+
+ test(' getMacroFormControls gets vnfStoreKey === null', () => {
+ const serviceId: string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const vnfStoreKey: string = null;
+ const vfModuleStoreKey: string = 'vf_vmee0..VfVmee..base_vmme..module-0';
+ const vfModuleUUID: string = "522159d5-d6e0-4c2a-aa44-5a542a12a830";
+ const controls: FormControlModel[] = service.getMacroFormControls(serviceId, vnfStoreKey, vfModuleStoreKey, vfModuleUUID, true);
+
+ expect(controls).toEqual([]);
+ expect(console.error).toHaveBeenCalled();
+ });
+
+ test('getAlaCarteFormControls check for mandatory controls', () => {
+ const serviceId: string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const vnfStoreKey: string = 'VF_vMee 0';
+ const vfModuleStoreKey: string = 'vf_vmee0..VfVmee..base_vmme..module-0';
+ const uuidData: Object = {
+ modelId : "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ modelName : "vf_vmee0..VfVmee..base_vmme..module-0",
+ serviceId : "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ type : "VFmodule",
+ vFModuleStoreKey : "vf_vmee0..VfVmee..base_vmme..module-0vmvzo",
+ vnfStoreKey : "VF_vMee 0"
+ };
+ const controls: FormControlModel[] = service.getAlaCarteFormControls(serviceId, vnfStoreKey, vfModuleStoreKey, uuidData, true);
+
+ const mandatoryControls : string[] = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.LCPCLOUD_REGION_ID,
+ FormControlNames.TENANT_ID,
+ FormControlNames.ROLLBACK_ON_FAILURE,
+ ];
+
+ for(let i = 0 ; i < mandatoryControls.length ; i++) {
+ let requiredExist = controls.find(ctrl => ctrl.controlName === mandatoryControls[i]).validations.find(item => item.validatorName === 'required');
+ expect(requiredExist).toBeDefined();
+ }
+ });
+
+ test('getMacroFormControls check for mandatory controls', () => {
+ const serviceId: string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const vnfStoreKey: string = 'VF_vMee 0';
+ const uuidData: Object = {
+ modelId : "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ modelName : "vf_vmee0..VfVmee..base_vmme..module-0",
+ serviceId : "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ type : "VFmodule",
+ vFModuleStoreKey : "vf_vmee0..VfVmee..base_vmme..module-0vmvzo",
+ vnfStoreKey : "VF_vMee 0"
+ };
+ const controls: FormControlModel[] = service.getMacroFormControls(serviceId, vnfStoreKey, vnfStoreKey, uuidData, true);
+
+ const mandatoryControls : string[] = [
+ 'instanceName'
+ ];
+
+ for(let i = 0 ; i < mandatoryControls.length ; i++) {
+ let requiredExist = controls.find(ctrl => ctrl.controlName === mandatoryControls[i]).validations.find(item => item.validatorName === 'required');
+ expect(requiredExist).toBeDefined();
+ }
+ });
+
+ test(' getMacroFormControls gets null vnfStoreKey', () => {
+ const serviceId: string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const vnfStoreKey: string = null;
+ const vfModuleUUID: string = "522159d5-d6e0-4c2a-aa44-5a542a12a830";
+ const uuidData: Object = {};
+ const controls: FormControlModel[] = service.getMacroFormControls(serviceId, vnfStoreKey, vfModuleUUID, uuidData,true);
+
+ expect(controls).toEqual([]);
+ expect(console.error).toHaveBeenCalled();
+ });
+
+ test('getAlaCarteFormControls should return the correct order of controls', () => {
+ const controls:FormControlModel[] = getAlaCarteFormControls();
+
+ const orderedControls : string[] = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.VOLUME_GROUP_NAME,
+ FormControlNames.LCPCLOUD_REGION_ID,
+ FormControlNames.LEGACY_REGION,
+ FormControlNames.TENANT_ID,
+ FormControlNames.ROLLBACK_ON_FAILURE,
+ FormControlNames.SDN_C_PRE_LOAD
+ ];
+
+ expect(controls.length).toEqual(7);
+ for(let i = 0 ; i < orderedControls.length ; i++) {
+ expect(controls[i].controlName).toEqual(orderedControls[i]);
+ }
+ });
+
+ function getAlaCarteFormControls():FormControlModel[] {
+ const serviceId: string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const vnfStoreKey: string = 'VF_vMee 0';
+ const vfModuleUUID: string = "522159d5-d6e0-4c2a-aa44-5a542a12a830";
+ const uuidData: Object = {
+ modelId: "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ modelName: "vf_vmee0..VfVmee..base_vmme..module-0",
+ serviceId: "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ type: "VFmodule",
+ vFModuleStoreKey: "vf_vmee0..VfVmee..base_vmme..module-0vmvzo",
+ vnfStoreKey: "VF_vMee 0"
+ };
+ const controls: FormControlModel[] = service.getAlaCarteFormControls(serviceId, vnfStoreKey, vfModuleUUID, uuidData, true);
+ return controls;
+ }
+
+ test('getAlaCarteFormControls responce with wrong order of controls', () => {
+ const controls:FormControlModel[] = getAlaCarteFormControls();
+
+ const orderedControls : string[] = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.VOLUME_GROUP_NAME,
+ FormControlNames.LCPCLOUD_REGION_ID,
+ FormControlNames.TENANT_ID, // TENANT_ID must be after LEGACY_REGION
+ FormControlNames.LEGACY_REGION,
+ FormControlNames.ROLLBACK_ON_FAILURE,
+ FormControlNames.SDN_C_PRE_LOAD
+ ];
+
+ for(let i = 0 ; i < orderedControls.length ; i++) {
+ if (controls[i].controlName === 'legacyRegion') {
+ expect(orderedControls[i]).toEqual('tenantId');
+ }
+ }
+ });
+
+ test('getMacroFormControls should return the correct order of controls', () => {
+ const serviceId: string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const vnfStoreKey: string = 'VF_vMee 0';
+ const vfModuleUUID: string = "522159d5-d6e0-4c2a-aa44-5a542a12a830";
+ const uuidData: Object = {
+ modelId : "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ modelName : "vf_vmee0..VfVmee..base_vmme..module-0",
+ serviceId : "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ type : "VFmodule",
+ vFModuleStoreKey : "vf_vmee0..VfVmee..base_vmme..module-0vmvzo",
+ vnfStoreKey : "VF_vMee 0"
+ };
+ const controls: FormControlModel[] = service.getMacroFormControls(serviceId, vnfStoreKey, vfModuleUUID, uuidData, true);
+
+ const orderedControls : string[] = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.VOLUME_GROUP_NAME
+ ];
+
+ for(let i = 0 ; i < orderedControls.length ; i++) {
+ expect(controls[i].controlName).toEqual(orderedControls[i]);
+ }
+ });
+
+ test.each`
+ controllerName
+ ${'instanceName'}
+ ${'volumeGroupName'}
+ `('getAlacartFormControls $controllerName control validator shall have the expected regex', ({controllerName}) => {
+ const controls:FormControlModel[] = getAlaCarteFormControls();
+
+ const instanceNameControl: FormControlModel = <FormControlModel>controls.find(item => item.controlName == controllerName);
+ const instanceNameValidator: ValidatorModel = instanceNameControl.validations.find(val => val.validatorName === ValidatorOptions.pattern);
+ expect(instanceNameValidator.validatorArg).toEqual(/^[a-zA-Z0-9._-]*$/);
+ });
+
+ test(' getAlaCarteFormControls gets null service', () => {
+ const controls:FormControlModel[] = getAlaCarteFormControls();
+ expect(controls.length).toEqual(7);
+
+ const orderedControls : string[] = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.VOLUME_GROUP_NAME,
+ FormControlNames.LCPCLOUD_REGION_ID,
+ FormControlNames.LEGACY_REGION,
+ FormControlNames.TENANT_ID,
+ FormControlNames.ROLLBACK_ON_FAILURE,
+ FormControlNames.SDN_C_PRE_LOAD
+ ];
+
+ for(let i = 0 ; i < orderedControls.length ; i++) {
+ expect(controls[i].controlName).toEqual(orderedControls[i]);
+ }
+ });
+});
+
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator.ts
new file mode 100644
index 000000000..3012c139c
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator.ts
@@ -0,0 +1,349 @@
+import {Injectable} from "@angular/core";
+import {GenericFormService} from "../../generic-form.service";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {NgRedux} from "@angular-redux/store";
+import {HttpClient} from "@angular/common/http";
+import {BasicControlGenerator} from "../basic.control.generator";
+import * as _ from 'lodash';
+import {Observable, of} from "rxjs";
+
+import {
+ CustomValidatorOptions,
+ FormControlModel,
+ ValidatorModel,
+ ValidatorOptions
+} from "../../../../models/formControlModels/formControl.model";
+import {LogService} from "../../../../utils/log/log.service";
+import {AppState} from "../../../../store/reducers";
+import {FormGroup} from "@angular/forms";
+import {DropdownFormControl} from "../../../../models/formControlModels/dropdownFormControl.model";
+import {FormControlType} from "../../../../models/formControlModels/formControlTypes.enum";
+import {InputFormControl} from "../../../../models/formControlModels/inputFormControl.model";
+import {SelectOption} from "../../../../models/selectOption";
+import {VfModuleInstance} from "../../../../models/vfModuleInstance";
+import {VfModule} from "../../../../models/vfModule";
+import {VNFModel} from "../../../../models/vnfModel";
+import {VnfInstance} from "../../../../models/vnfInstance";
+import {FileFormControl} from "../../../../models/formControlModels/fileFormControl.model";
+import {CheckboxFormControl} from "../../../../models/formControlModels/checkboxFormControl.model";
+import {FileUnit} from "../../../formControls/component/file/fileUnit.enum";
+import {Constants} from "../../../../utils/constants";
+
+
+export enum FormControlNames {
+ INSTANCE_NAME = 'instanceName',
+ VOLUME_GROUP_NAME = 'volumeGroupName',
+ LCPCLOUD_REGION_ID = 'lcpCloudRegionId',
+ LEGACY_REGION = 'legacyRegion',
+ TENANT_ID = 'tenantId',
+ ROLLBACK_ON_FAILURE = 'rollbackOnFailure',
+ SDN_C_PRE_LOAD = 'sdncPreLoad',
+ SUPPLEMENTARY_FILE = 'supplementaryFile'
+}
+
+
+@Injectable()
+export class VfModuleControlGenerator {
+ aaiService: AaiService;
+ vfModuleModel: VfModule;
+ vfModuleName : string;
+ isUpdateMode : boolean;
+
+ constructor(private genericFormService: GenericFormService,
+ private _basicControlGenerator: BasicControlGenerator,
+ private store: NgRedux<AppState>,
+ private http: HttpClient,
+ private _aaiService: AaiService,
+ private _logService: LogService) {
+ this.aaiService = _aaiService;
+ }
+
+ setVFModuleStoreKey = (serviceId: string, vfModuleUuid: string) => {
+ const vfModules = this.store.getState().service.serviceHierarchy[serviceId].vfModules;
+ const vfModulesKeys = Object.keys(vfModules);
+ for(let key of vfModulesKeys){
+ if(vfModules[key].uuid === vfModuleUuid){
+ this.vfModuleName = key;
+ return;
+ }
+ }
+ };
+
+
+ getVfModuleInstance = (serviceId: string, vnfStoreKey: string, UUIDData: Object, isUpdateMode: boolean): VfModuleInstance => {
+ let vfModuleInstance: VfModuleInstance = null;
+ if (isUpdateMode && this.store.getState().service.serviceInstance[serviceId] &&
+ _.has(this.store.getState().service.serviceInstance[serviceId].vnfs, vnfStoreKey) &&
+ _.has(this.store.getState().service.serviceInstance[serviceId].vnfs[vnfStoreKey].vfModules, UUIDData['modelName'])) {
+ vfModuleInstance = Object.assign({},this.store.getState().service.serviceInstance[serviceId].vnfs[vnfStoreKey].vfModules[UUIDData['modelName']][UUIDData['vFModuleStoreKey']]);
+ }
+ return vfModuleInstance;
+ };
+
+ extractVfAccordingToVfModuleUuid(serviceId: string, UUIDData: Object): VfModule {
+ const vfModule = this.store.getState().service.serviceHierarchy[serviceId].vfModules[UUIDData['modelName']];
+ this.vfModuleModel = vfModule;
+ return vfModule;
+ }
+
+ getMacroFormControls(serviceId: string, vnfStoreKey: string, vfModuleStoreKey: string, uuidData : Object, isUpdateMode: boolean): FormControlModel[] {
+ this.isUpdateMode = isUpdateMode;
+ this.extractVfAccordingToVfModuleUuid(serviceId, uuidData);
+ if (_.isNil(serviceId) || _.isNil(vnfStoreKey) || _.isNil(vfModuleStoreKey)) {
+ if(isUpdateMode){
+ this._logService.error('should provide serviceId, vfModuleStoreKey, vnfStoreKey', serviceId);
+ return [];
+ }
+ }
+
+ const vfModuleInstance = this.getVfModuleInstance(serviceId, vnfStoreKey, uuidData, isUpdateMode);
+ const vfModuleModel = this.vfModuleModel;
+ const vnf: VnfInstance = this.store.getState().service.serviceInstance[serviceId].vnfs[vnfStoreKey];
+ const vnfModelName: string = vnf.originalName;
+ const vnfModel = new VNFModel(this.store.getState().service.serviceHierarchy[serviceId].vnfs[vnfModelName]);
+
+ let result: FormControlModel[] = [];
+
+ if (!_.isNil(vfModuleModel)) {
+ result.push(this.getInstanceName(vfModuleInstance, serviceId, vnfModel.isEcompGeneratedNaming));
+ if (this.vfModuleModel.volumeGroupAllowed) {
+ result.push(this.getVolumeGroupName(vfModuleInstance, serviceId, vnfStoreKey, vfModuleInstance && vfModuleInstance.volumeGroupName, vnfModel.isEcompGeneratedNaming));
+ }
+ }
+ if(this.store.getState().global.flags['FLAG_SUPPLEMENTARY_FILE']) {
+ let suppFileInput:FileFormControl = <FileFormControl>(this.getSupplementaryFile(vfModuleInstance));
+ result.push(suppFileInput);
+ result = result.concat(suppFileInput.hiddenFile);
+ }
+ return result;
+ }
+
+ getAlaCarteFormControls(serviceId: string, vnfStoreKey: string, vfModuleStoreKey: string, uuidData : Object, isUpdateMode: boolean): FormControlModel[] {
+ this.isUpdateMode = isUpdateMode;
+ this.extractVfAccordingToVfModuleUuid(serviceId, uuidData);
+ if (_.isNil(serviceId) || _.isNil(vnfStoreKey) || _.isNil(vfModuleStoreKey)) {
+ if(isUpdateMode){
+ this._logService.error('should provide serviceId, vfModuleStoreKey, vnfStoreKey', serviceId);
+ return [];
+ }
+ }
+ const vnf: VnfInstance = this.store.getState().service.serviceInstance[serviceId].vnfs[vnfStoreKey];
+ const vnfModelName: string = vnf.originalName;
+ const vnfModel = new VNFModel(this.store.getState().service.serviceHierarchy[serviceId].vnfs[vnfModelName]);
+
+ const vfModuleInstance = this.getVfModuleInstance(serviceId, vnfStoreKey, uuidData, isUpdateMode);
+ let result: FormControlModel[] = [];
+ result.push(this.getInstanceName(vfModuleInstance, serviceId, vnfModel.isEcompGeneratedNaming));
+
+ if (this.vfModuleModel.volumeGroupAllowed) {
+ result.push(this.getVolumeGroupName(vfModuleInstance, serviceId, vnfStoreKey, this.vfModuleName, vnfModel.isEcompGeneratedNaming));
+ }
+ result.push(this.getLcpRegionControl(serviceId, vfModuleInstance, result));
+ result.push(this._basicControlGenerator.getLegacyRegion(vfModuleInstance));
+ result.push(this.getTenantControl(serviceId, vfModuleInstance, result));
+ result.push(this.getRollbackOnFailureControl(vfModuleInstance, result));
+ result.push(this.getSDNCControl(vfModuleInstance, result));
+ if(this.store.getState().global.flags['FLAG_SUPPLEMENTARY_FILE']) {
+ let suppFileInput:FileFormControl = <FileFormControl>(this.getSupplementaryFile(vfModuleInstance));
+ result.push(suppFileInput);
+ result = result.concat(suppFileInput.hiddenFile);
+ }
+ return result;
+
+ }
+
+ getInstanceName(instance: any, serviceId: string, isEcompGeneratedNaming: boolean): FormControlModel {
+ let formControlModel:FormControlModel = this._basicControlGenerator.getInstanceNameController(instance, serviceId, isEcompGeneratedNaming, this.vfModuleModel);
+ formControlModel.onBlur = (event, form : FormGroup) => {
+ if(!_.isNil(form.controls['volumeGroupName'])&& event.target.value.length > 0){
+ form.controls['volumeGroupName'].setValue(event.target.value + "_vol");
+ }
+ };
+
+ return formControlModel;
+ }
+
+ getDefaultVolumeGroupName(instance: any, vfModuleName: string, isEcompGeneratedNaming: boolean): string {
+ if ((!_.isNil(instance) && instance.volumeGroupName)) {
+ return instance.volumeGroupName;
+ }
+ if (isEcompGeneratedNaming) {
+ return null;
+ }
+ return this._basicControlGenerator.getDefaultInstanceName(instance, this.vfModuleModel) + "_vol";
+ }
+
+ getVolumeGroupName(instance: any, serviceId: string, vnfStoreKey: string, vfModuleName: string, isEcompGeneratedNaming: boolean): FormControlModel {
+ let validations: ValidatorModel[] = [
+ new ValidatorModel(ValidatorOptions.pattern, 'Instance name may include only alphanumeric characters and underscore.', BasicControlGenerator.INSTANCE_NAME_REG_EX),
+ new ValidatorModel(CustomValidatorOptions.uniqueInstanceNameValidator, 'Volume Group instance name is already in use, please pick another name', [this.store, serviceId, instance && instance.volumeGroupName])
+ ];
+ // comment out because if not provided vid won't create VG
+ // if (!isEcompGeneratedNaming) {
+ // validations.push(new ValidatorModel(ValidatorOptions.required, 'is required'));
+ // }
+ return new InputFormControl({
+ controlName: 'volumeGroupName',
+ displayName: 'Volume Group Name',
+ dataTestId: 'volumeGroupName',
+ // placeHolder: (!isEcompGeneratedNaming) ? 'Volume Group Name' : 'Automatically generated when not provided',
+ validations: validations,
+ tooltip : 'When filled, VID will create a Volume Group by this name and associate with this module.\n' +
+ 'When empty, the module is created without a Volume Group.',
+ isVisible: true,
+ value: this.getDefaultVolumeGroupName(instance, vfModuleName, isEcompGeneratedNaming),
+ onKeypress: (event) => {
+ const pattern:RegExp = BasicControlGenerator.INSTANCE_NAME_REG_EX;
+ if (pattern) {
+ if (!pattern.test(event['key'])) {
+ event.preventDefault();
+ }
+ }
+ return event;
+ }
+ });
+ }
+
+ getSupplementaryFile(instance: any): FormControlModel {
+ return new FileFormControl({
+ controlName: FormControlNames.SUPPLEMENTARY_FILE,
+ displayName: 'Supplementary Data File (JSON format)',
+ dataTestId: 'SupplementaryFile',
+ placeHolder: 'Choose file',
+ selectedFile: !_.isNil(instance) ? instance.supplementaryFileName: null,
+ isVisible: true,
+ acceptedExtentions: "application/json",
+ hiddenFile : [new InputFormControl({
+ controlName: FormControlNames.SUPPLEMENTARY_FILE + "_hidden",
+ isVisible: false,
+ validations: [new ValidatorModel(CustomValidatorOptions.isFileTooBig, "File size exceeds 5MB.", [FileUnit.MB, 5])]
+ }),
+ new InputFormControl({
+ controlName: FormControlNames.SUPPLEMENTARY_FILE + "_hidden_content",
+ isVisible: false,
+ validations: [new ValidatorModel(CustomValidatorOptions.isValidJson,
+ "File is invalid, please make sure a legal JSON file is uploaded using name:value pairs.",[]),
+ new ValidatorModel(CustomValidatorOptions.isStringContainTags,
+ "File is invalid, please remove tags <>.",[])],
+ value: !_.isNil(instance) ? (instance.supplementaryFile_hidden_content): null,
+ })
+ ],
+ onDelete : (form : FormGroup) => {
+ form.controls[FormControlNames.SUPPLEMENTARY_FILE + "_hidden"].setValue(null);
+ form.controls[FormControlNames.SUPPLEMENTARY_FILE + "_hidden_content"].setValue(null);
+ },
+ onChange : (files: FileList, form : FormGroup) => {
+ if (files.length > 0) {
+ const file = files.item(0);
+ let reader = new FileReader();
+ reader.onload = function(event) {
+ form.controls[FormControlNames.SUPPLEMENTARY_FILE + "_hidden_content"].setValue(reader.result);
+ form.controls[FormControlNames.SUPPLEMENTARY_FILE + "_hidden"].setValue(file);
+ };
+ reader.readAsText(file);
+ }
+ else {
+ form.controls[FormControlNames.SUPPLEMENTARY_FILE + "_hidden"].setValue(null);
+ form.controls[FormControlNames.SUPPLEMENTARY_FILE + "_hidden_content"].setValue(null);
+ }
+ }
+ })
+ };
+
+ getTenantControl = (serviceId: string, instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ const service = this.store.getState().service.serviceInstance[serviceId];
+ const globalCustomerId: string = service.globalSubscriberId;
+ const serviceType: string = service.subscriptionServiceType;
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: FormControlNames.TENANT_ID,
+ displayName: 'Tenant',
+ dataTestId: 'tenant',
+ placeHolder: 'Select Tenant',
+ name: "tenant",
+ isDisabled: _.isNil(instance) || _.isNil(instance.lcpCloudRegionId),
+ onInitSelectedField: instance ? ['lcpRegionsTenantsMap', instance.lcpCloudRegionId] : null,
+ value: instance ? instance.tenantId : null,
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ onInit: instance ? this._basicControlGenerator.getSubscribeInitResult.bind(
+ this._aaiService,
+ this.aaiService.getLcpRegionsAndTenants.bind(this, globalCustomerId, serviceType)) : () => {
+ },
+ })
+ };
+
+ getLcpRegionControl = (serviceId: string, instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ const service = this.store.getState().service.serviceInstance[serviceId];
+ const globalCustomerId: string = service.globalSubscriberId;
+ const serviceType: string = service.subscriptionServiceType;
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: 'lcpCloudRegionId',
+ displayName: 'LCP region',
+ dataTestId: 'lcpRegion',
+ placeHolder: 'Select LCP Region',
+ name: "lcpRegion",
+ isDisabled: false,
+ value: instance ? instance.lcpCloudRegionId : null,
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ onInitSelectedField: ['lcpRegionList'],
+ onInit: this._basicControlGenerator.getSubscribeInitResult.bind(
+ this._aaiService,
+ this._aaiService.getLcpRegionsAndTenants.bind(this, globalCustomerId, serviceType)),
+ onChange: (param: string, form: FormGroup) => {
+ form.controls[FormControlNames.TENANT_ID].enable();
+ form.controls[FormControlNames.TENANT_ID].reset();
+ if (!_.isNil(globalCustomerId) && !_.isNil(serviceType)) {
+ this._basicControlGenerator.getSubscribeResult.bind(this, this._aaiService.getLcpRegionsAndTenants(globalCustomerId, serviceType).subscribe(res => {
+ controls.find(item => item.controlName === FormControlNames.TENANT_ID)['options$'] = res.lcpRegionsTenantsMap[param];
+ if (res.lcpRegionsTenantsMap[param]) {
+ controls.find(item => item.controlName === FormControlNames.TENANT_ID)['hasEmptyOptions'] = res.lcpRegionsTenantsMap[param].length === 0;
+ }
+ }));
+ }
+
+ if (Constants.LegacyRegion.MEGA_REGION.indexOf(param) !== -1) {
+ form.controls['legacyRegion'].enable();
+ controls.find(item => item.controlName === 'legacyRegion').isVisible = true;
+
+ } else {
+ controls.find(item => item.controlName === 'legacyRegion').isVisible = false;
+ form.controls['legacyRegion'].setValue(null);
+ form.controls['legacyRegion'].reset();
+ form.controls['legacyRegion'].disable();
+ }
+ }
+ })
+ };
+
+ getSDNCControl = (instance: any, controls: FormControlModel[]): CheckboxFormControl => {
+ return new CheckboxFormControl({
+ type: FormControlType.CHECKBOX,
+ controlName: 'sdncPreLoad',
+ displayName: 'SDN-C pre-load',
+ dataTestId: 'sdncPreLoad',
+ value: instance ? instance.sdncPreLoad : false,
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')]
+ })
+ };
+
+ getRollbackOnFailureControl = (instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: FormControlNames.ROLLBACK_ON_FAILURE,
+ displayName: 'Rollback on failure',
+ dataTestId: 'rollback',
+ isDisabled: false,
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ value: instance ? instance.rollbackOnFailure : 'true',
+ onInit: this._basicControlGenerator.getSubscribeInitResult.bind(null, this.getRollBackOnFailureOptions)
+ })
+ };
+
+ getRollBackOnFailureOptions = (): Observable<SelectOption[]> => {
+ return of([
+ new SelectOption({id: 'true', name: 'Rollback'}),
+ new SelectOption({id: 'false', name: 'Don\'t Rollback'})
+ ]);
+ };
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator.spec.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator.spec.ts
new file mode 100644
index 000000000..d15a57bcf
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator.spec.ts
@@ -0,0 +1,1943 @@
+import {getTestBed, TestBed} from '@angular/core/testing';
+import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
+import {NgRedux} from '@angular-redux/store';
+import {FormControlNames} from "../service.control.generator";
+import {BasicControlGenerator} from "../basic.control.generator";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {GenericFormService} from "../../generic-form.service";
+import {FormBuilder} from "@angular/forms";
+import {
+ FormControlModel,
+ ValidatorModel,
+ ValidatorOptions
+} from "../../../../models/formControlModels/formControl.model";
+import {LogService} from "../../../../utils/log/log.service";
+import {VnfControlGenerator} from "./vnf.control.generator";
+import {Observable} from "rxjs";
+import {SelectOption} from "../../../../models/selectOption";
+import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flags.service";
+
+class MockAppStore<T> {
+ getState(){
+ return {
+ "global": {
+ "name": null,
+ "flags": {
+ "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
+ "FLAG_SHOW_ASSIGNMENTS": true,
+ "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
+ "FLAG_UNASSIGN_SERVICE": true,
+ "FLAG_SHOW_VERIFY_SERVICE": false,
+ "FLAG_COLLECTION_RESOURCE_SUPPORT": true,
+ "FLAG_DUPLICATE_VNF": true,
+ "FLAG_SERVICE_MODEL_CACHE": true,
+ "CREATE_INSTANCE_TEST": false,
+ "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
+ "FLAG_ASYNC_INSTANTIATION": true,
+ "FLAG_ASYNC_JOBS": true,
+ "EMPTY_DRAWING_BOARD_TEST": false,
+ "FLAG_ADD_MSO_TESTAPI_FIELD": true
+ },
+ "type": "[FLAGS] Update"
+ },
+ "service": {
+ "serviceHierarchy": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "service": {
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "name": "ComplexService",
+ "version": "1.0",
+ "toscaModelURL": null,
+ "category": "Emanuel",
+ "serviceType": "",
+ "serviceRole": "",
+ "description": "ComplexService",
+ "serviceEcompNaming": "false",
+ "instantiationType": "Macro",
+ "inputs": {}
+ },
+ "vnfs": {
+ "VF_vMee 0": {
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "invariantUuid": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "description": "VSP_vMee",
+ "name": "VF_vMee",
+ "version": "2.0",
+ "customizationUuid": "91415b44-753d-494c-926a-456a9172bbb9",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "max_instances": 10,
+ "min_instances": 1,
+ "gpb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_start_port": "0",
+ "sctp-a-ipv6-egress_rule_application": "any",
+ "Internal2_allow_transit": "true",
+ "sctp-b-IPv6_ethertype": "IPv6",
+ "sctp-a-egress_rule_application": "any",
+ "sctp-b-ingress_action": "pass",
+ "sctp-b-ingress_rule_protocol": "icmp",
+ "ncb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-ingress-src_start_port": "0.0",
+ "ncb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "fsb_volume_size_0": "320.0",
+ "sctp-b-egress_src_addresses": "local",
+ "sctp-a-ipv6-ingress_ethertype": "IPv4",
+ "sctp-a-ipv6-ingress-dst_start_port": "0",
+ "sctp-b-ipv6-ingress_rule_application": "any",
+ "domain_name": "default-domain",
+ "sctp-a-ingress_rule_protocol": "icmp",
+ "sctp-b-egress-src_start_port": "0.0",
+ "sctp-a-egress_src_addresses": "local",
+ "sctp-b-display_name": "epc-sctp-b-ipv4v6-sec-group",
+ "sctp-a-egress-src_start_port": "0.0",
+ "sctp-a-ingress_ethertype": "IPv4",
+ "sctp-b-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-dst_subnet_prefix_v6": "::",
+ "nf_naming": "{ecomp_generated_naming=true}",
+ "sctp-a-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-b-egress-dst_start_port": "0.0",
+ "ncb_flavor_name": "nv.c20r64d1",
+ "gpb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix_len": "0.0",
+ "Internal2_net_cidr": "10.0.0.10",
+ "sctp-a-ingress-dst_start_port": "0.0",
+ "sctp-a-egress-dst_start_port": "0.0",
+ "fsb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-egress_ethertype": "IPv4",
+ "vlc_st_service_mode": "in-network-nat",
+ "sctp-a-ipv6-egress_ethertype": "IPv4",
+ "sctp-a-egress-src_end_port": "65535.0",
+ "sctp-b-ipv6-egress_rule_application": "any",
+ "sctp-b-egress_action": "pass",
+ "sctp-a-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-b-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-b-name": "epc-sctp-b-ipv4v6-sec-group",
+ "fsb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ipv6-ingress-src_start_port": "0.0",
+ "sctp-b-ipv6-egress_ethertype": "IPv4",
+ "Internal1_net_cidr": "10.0.0.10",
+ "sctp-a-egress_dst_subnet_prefix": "0.0.0.0",
+ "fsb_flavor_name": "nv.c20r64d1",
+ "sctp_rule_protocol": "132",
+ "sctp-b-ipv6-ingress_src_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_rule_application": "any",
+ "ecomp_generated_naming": "false",
+ "sctp-a-IPv6_ethertype": "IPv6",
+ "vlc2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_virtualization_type": "virtual-machine",
+ "sctp-b-ingress-dst_start_port": "0.0",
+ "sctp-b-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-a-display_name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-b-ingress_rule_application": "any",
+ "int2_sec_group_name": "int2-sec-group",
+ "vlc_flavor_name": "nd.c16r64d1",
+ "sctp-b-ipv6-egress_src_addresses": "local",
+ "vlc_st_interface_type_int1": "other1",
+ "sctp-b-egress-src_end_port": "65535.0",
+ "sctp-a-ipv6-egress-dst_start_port": "0",
+ "vlc_st_interface_type_int2": "other2",
+ "sctp-a-ipv6-egress_rule_protocol": "any",
+ "Internal2_shared": "false",
+ "sctp-a-ipv6-egress_dst_subnet_prefix_len": "0",
+ "Internal2_rpf": "disable",
+ "vlc1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_end_port": "65535",
+ "sctp-a-ipv6-egress_src_addresses": "local",
+ "sctp-a-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-egress_src_end_port": "65535",
+ "Internal1_forwarding_mode": "l2",
+ "Internal2_dhcp": "false",
+ "sctp-a-dst_subnet_prefix_v6": "::",
+ "pxe_image_name": "MME_PXE-Boot_16ACP04_GA.qcow2",
+ "vlc_st_interface_type_gtp": "other0",
+ "ncb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-src_subnet_prefix_v6": "::",
+ "sctp-a-egress_dst_subnet_prefix_len": "0.0",
+ "int1_sec_group_name": "int1-sec-group",
+ "Internal1_dhcp": "false",
+ "sctp-a-ipv6-egress_dst_end_port": "65535",
+ "Internal2_forwarding_mode": "l2",
+ "fsb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix": "0.0.0.0",
+ "Internal1_net_cidr_len": "17",
+ "gpb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-a-ingress_dst_addresses": "local",
+ "sctp-a-egress_action": "pass",
+ "fsb_volume_type_0": "SF-Default-SSD",
+ "ncb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_sctp_a": "left",
+ "vlc_st_interface_type_sctp_b": "right",
+ "sctp-a-src_subnet_prefix_v6": "::",
+ "vlc_st_version": "2",
+ "sctp-b-egress_ethertype": "IPv4",
+ "sctp-a-ingress_rule_application": "any",
+ "gpb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "instance_ip_family_v6": "v6",
+ "sctp-a-ipv6-egress_src_start_port": "0",
+ "sctp-b-ingress-src_start_port": "0.0",
+ "sctp-b-ingress_dst_addresses": "local",
+ "fsb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_oam": "management",
+ "multi_stage_design": "true",
+ "oam_sec_group_name": "oam-sec-group",
+ "Internal2_net_gateway": "10.0.0.10",
+ "sctp-a-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-ipv6-egress-dst_start_port": "0",
+ "Internal1_net_gateway": "10.0.0.10",
+ "sctp-b-ipv6-egress_rule_protocol": "any",
+ "gtp_sec_group_name": "gtp-sec-group",
+ "sctp-a-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-egress_dst_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_dst_addresses": "local",
+ "sctp-a-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-egress_action": "pass",
+ "sctp-a-ipv6-egress_action": "pass",
+ "Internal1_shared": "false",
+ "sctp-b-ipv6-ingress_rule_protocol": "any",
+ "Internal2_net_cidr_len": "17",
+ "sctp-a-name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-a-ingress-src_end_port": "65535.0",
+ "sctp-b-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-a-egress-dst_end_port": "65535.0",
+ "sctp-a-ingress_action": "pass",
+ "sctp-b-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-ingress_action": "pass",
+ "vlc_st_service_type": "firewall",
+ "sctp-b-ipv6-egress_dst_end_port": "65535",
+ "sctp-b-ipv6-ingress-dst_start_port": "0",
+ "vlc2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_availability_zone": "true",
+ "fsb_volume_image_name_1": "MME_FSB2_16ACP04_GA.qcow2",
+ "sctp-b-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_src_subnet_prefix_len": "0",
+ "Internal1_allow_transit": "true",
+ "gpb_flavor_name": "nv.c20r64d1",
+ "availability_zone_max_count": "1",
+ "fsb_volume_image_name_0": "MME_FSB1_16ACP04_GA.qcow2",
+ "sctp-b-ipv6-ingress_dst_addresses": "local",
+ "sctp-b-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-ingress_ethertype": "IPv4",
+ "vlc1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_action": "pass",
+ "Internal1_rpf": "disable",
+ "sctp-b-ingress_ethertype": "IPv4",
+ "sctp-b-egress_rule_application": "any",
+ "sctp-b-ingress-src_end_port": "65535.0",
+ "sctp-a-ipv6-ingress_rule_protocol": "any",
+ "sctp-a-ingress-src_start_port": "0.0",
+ "sctp-b-egress-dst_end_port": "65535.0"
+ },
+ "type": "VF",
+ "modelCustomizationName": "VF_vMee 0",
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {
+ "Port Mirroring Configuration By Policy 0": {
+ "uuid": "b4398538-e89d-4f13-b33d-ca323434ba50",
+ "invariantUuid": "6ef0ca40-f366-4897-951f-abd65d25f6f7",
+ "description": "A port mirroring configuration by policy object",
+ "name": "Port Mirroring Configuration By Policy",
+ "version": "27.0",
+ "customizationUuid": "3c3b7b8d-8669-4b3b-8664-61970041fad2",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Configuration",
+ "modelCustomizationName": "Port Mirroring Configuration By Policy 0",
+ "sourceNodes": [],
+ "collectorNodes": null,
+ "configurationByPolicy": false
+ }
+ },
+ "serviceProxies": {},
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ }
+ },
+ "serviceInstance": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "vnfs": {
+ "VF_vMee 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "vf_vmee0..VfVmee..base_vmme..module-0vmvzo": {
+ "isMissingData": false,
+ "sdncPreReload": null,
+ "modelInfo": {
+ "modelType": "VFmodule",
+ "modelInvariantId": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "modelVersionId": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "modelName": "VfVmee..base_vmme..module-0",
+ "modelVersion": "2",
+ "modelCustomizationId": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0"
+ },
+ "instanceParams": [
+ {}
+ ],
+ "trackById": "wmtm6sy2uj"
+ }
+ }
+ },
+ "isMissingData": true,
+ "originalName": "VF_vMee 0",
+ "vnfStoreKey": "VF_vMee 0",
+ "trackById": "p3wk448m5do",
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": null,
+ "tenantId": null,
+ "lineOfBusiness": null,
+ "platformName": null,
+ "modelInfo": {
+ "modelType": "VF",
+ "modelInvariantId": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "VF_vMee",
+ "modelVersion": "2.0",
+ "modelCustomizationName": "VF_vMee 0"
+ }
+ }
+ },
+ "instanceParams": [
+ {}
+ ],
+ "validationCounter": 1,
+ "existingNames": {},
+ "existingVNFCounterMap": {
+ "d6557200-ecf2-4641-8094-5393ae3aae60": 1
+ },
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "aicZoneId": "JAG1",
+ "projectName": "x1",
+ "rollbackOnFailure": "true",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "ComplexService",
+ "modelVersion": "1.0",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44"
+ },
+ "isALaCarte": false,
+ "name": "ComplexService",
+ "version": "1.0",
+ "description": "ComplexService",
+ "category": "Emanuel",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isMultiStepDesign": false
+ }
+ },
+ "lcpRegionsAndTenants": {
+ "lcpRegionList": [
+ {
+ "id": "JANET25",
+ "name": "JANET25",
+ "isPermitted": true
+ },
+ {
+ "id": "hvf6",
+ "name": "hvf6",
+ "isPermitted": true
+ }
+ ],
+ "lcpRegionsTenantsMap": {
+ "JANET25": [
+ {
+ "id": "092eb9e8e4b7412e8787dd091bc58e86",
+ "name": "USP-SIP-IC-24335-T-01",
+ "isPermitted": true
+ }
+ ],
+ "hvf6": [
+ {
+ "id": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "name": "AIN Web Tool-15-D-testalexandria",
+ "isPermitted": true
+ },
+ {
+ "id": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "name": "AIN Web Tool-15-D-STTest2",
+ "isPermitted": true
+ },
+ {
+ "id": "1178612d2b394be4834ad77f567c0af2",
+ "name": "AIN Web Tool-15-D-SSPtestcustome",
+ "isPermitted": true
+ },
+ {
+ "id": "19c5ade915eb461e8af52fb2fd8cd1f2",
+ "name": "AIN Web Tool-15-D-UncheckedEcopm",
+ "isPermitted": true
+ },
+ {
+ "id": "de007636e25249238447264a988a927b",
+ "name": "AIN Web Tool-15-D-dfsdf",
+ "isPermitted": true
+ },
+ {
+ "id": "62f29b3613634ca6a3065cbe0e020c44",
+ "name": "AIN/SMS-16-D-Multiservices1",
+ "isPermitted": true
+ },
+ {
+ "id": "649289e30d3244e0b48098114d63c2aa",
+ "name": "AIN Web Tool-15-D-SSPST66",
+ "isPermitted": true
+ },
+ {
+ "id": "3f21eeea6c2c486bba31dab816c05a32",
+ "name": "AIN Web Tool-15-D-ASSPST47",
+ "isPermitted": true
+ },
+ {
+ "id": "f60ce21d3ee6427586cff0d22b03b773",
+ "name": "CESAR-100-D-sspjg67246",
+ "isPermitted": true
+ },
+ {
+ "id": "8774659e425f479895ae091bb5d46560",
+ "name": "CESAR-100-D-sspjg68359",
+ "isPermitted": true
+ },
+ {
+ "id": "624eb554b0d147c19ff8885341760481",
+ "name": "AINWebTool-15-D-iftach",
+ "isPermitted": true
+ },
+ {
+ "id": "214f55f5fc414c678059c383b03e4962",
+ "name": "CESAR-100-D-sspjg612401",
+ "isPermitted": true
+ },
+ {
+ "id": "c90666c291664841bb98e4d981ff1db5",
+ "name": "CESAR-100-D-sspjg621340",
+ "isPermitted": true
+ },
+ {
+ "id": "ce5b6bc5c7b348e1bf4b91ac9a174278",
+ "name": "sspjg621351cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "b386b768a3f24c8e953abbe0b3488c02",
+ "name": "AINWebTool-15-D-eteancomp",
+ "isPermitted": true
+ },
+ {
+ "id": "dc6c4dbfd225474e9deaadd34968646c",
+ "name": "AINWebTool-15-T-SPFET",
+ "isPermitted": true
+ },
+ {
+ "id": "02cb5030e9914aa4be120bd9ed1e19eb",
+ "name": "AINWebTool-15-X-eeweww",
+ "isPermitted": true
+ },
+ {
+ "id": "f2f3830e4c984d45bcd00e1a04158a79",
+ "name": "CESAR-100-D-spjg61909",
+ "isPermitted": true
+ },
+ {
+ "id": "05b91bd5137f4929878edd965755c06d",
+ "name": "CESAR-100-D-sspjg621512cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "7002fbe8482d4a989ddf445b1ce336e0",
+ "name": "AINWebTool-15-X-vdr",
+ "isPermitted": true
+ },
+ {
+ "id": "4008522be43741dcb1f5422022a2aa0b",
+ "name": "AINWebTool-15-D-ssasa",
+ "isPermitted": true
+ },
+ {
+ "id": "f44e2e96a1b6476abfda2fa407b00169",
+ "name": "AINWebTool-15-D-PFNPT",
+ "isPermitted": true
+ },
+ {
+ "id": "b69a52bec8a84669a37a1e8b72708be7",
+ "name": "AINWebTool-15-X-vdre",
+ "isPermitted": true
+ },
+ {
+ "id": "fac7d9fd56154caeb9332202dcf2969f",
+ "name": "AINWebTool-15-X-NONPODECOMP",
+ "isPermitted": true
+ },
+ {
+ "id": "2d34d8396e194eb49969fd61ffbff961",
+ "name": "DN5242-Nov16-T5",
+ "isPermitted": true
+ },
+ {
+ "id": "cb42a77ff45b48a8b8deb83bb64acc74",
+ "name": "ro-T11",
+ "isPermitted": true
+ },
+ {
+ "id": "fa45ca53c80b492fa8be5477cd84fc2b",
+ "name": "ro-T112",
+ "isPermitted": true
+ },
+ {
+ "id": "4914ab0ab3a743e58f0eefdacc1dde77",
+ "name": "DN5242-Nov21-T1",
+ "isPermitted": true
+ },
+ {
+ "id": "d0a3e3f2964542259d155a81c41aadc3",
+ "name": "test-hvf6-09",
+ "isPermitted": true
+ },
+ {
+ "id": "cbb99fe4ada84631b7baf046b6fd2044",
+ "name": "DN5242-Nov16-T3",
+ "isPermitted": true
+ }
+ ]
+ }
+ },
+ "productFamilies": [
+ {
+ "id": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "name": "SCOTTIE",
+ "isPermitted": true
+ },
+ {
+ "id": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "name": "IGNACIO",
+ "isPermitted": true
+ },
+ {
+ "id": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "name": "Christie",
+ "isPermitted": true
+ },
+ {
+ "id": "a4f6f2ae-9bf5-4ed7-b904-06b2099c4bd7",
+ "name": "Enhanced Services",
+ "isPermitted": true
+ },
+ {
+ "id": "vTerrance",
+ "name": "vTerrance",
+ "isPermitted": true
+ },
+ {
+ "id": "323d69d9-2efe-4r45-ay0a-89ea7ard4e6f",
+ "name": "vSCP",
+ "isPermitted": true
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": true
+ },
+ {
+ "id": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
+ "name": "BVOIP",
+ "isPermitted": true
+ },
+ {
+ "id": "db171b8f-115c-4992-a2e3-ee04cae357e0",
+ "name": "LINDSEY",
+ "isPermitted": true
+ },
+ {
+ "id": "LRSI-OSPF",
+ "name": "LRSI-OSPF",
+ "isPermitted": true
+ },
+ {
+ "id": "vRosemarie",
+ "name": "HNGATEWAY",
+ "isPermitted": true
+ },
+ {
+ "id": "vHNPaas",
+ "name": "WILKINS",
+ "isPermitted": true
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "b6a3f28c-eebf-494c-a900-055cc7c874ce",
+ "name": "VROUTER",
+ "isPermitted": true
+ },
+ {
+ "id": "Cisneros",
+ "name": "vMuriel",
+ "isPermitted": true
+ },
+ {
+ "id": "0ee8c1bc-7cbd-4b0a-a1ac-e9999255abc1",
+ "name": "CARA Griffin",
+ "isPermitted": true
+ },
+ {
+ "id": "c7611ebe-c324-48f1-8085-94aef0c6ef3d",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ },
+ {
+ "id": "e30755dc-5673-4b6b-9dcf-9abdd96b93d1",
+ "name": "Transport",
+ "isPermitted": true
+ },
+ {
+ "id": "vSalvatore",
+ "name": "vSalvatore",
+ "isPermitted": true
+ },
+ {
+ "id": "d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4",
+ "name": "Josefina",
+ "isPermitted": true
+ },
+ {
+ "id": "vHubbard",
+ "name": "vHubbard",
+ "isPermitted": true
+ },
+ {
+ "id": "12a96a9d-4b4c-4349-a950-fe1159602621",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ }
+ ],
+ "serviceTypes": {
+ "e433710f-9217-458d-a79d-1c7aff376d89": [
+ {
+ "id": "0",
+ "name": "vRichardson",
+ "isPermitted": false
+ },
+ {
+ "id": "1",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "2",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "3",
+ "name": "vJamie",
+ "isPermitted": false
+ },
+ {
+ "id": "4",
+ "name": "vVoiceMail",
+ "isPermitted": false
+ },
+ {
+ "id": "5",
+ "name": "Kennedy",
+ "isPermitted": false
+ },
+ {
+ "id": "6",
+ "name": "vSEGW",
+ "isPermitted": false
+ },
+ {
+ "id": "7",
+ "name": "vVM",
+ "isPermitted": false
+ },
+ {
+ "id": "8",
+ "name": "vOTA",
+ "isPermitted": false
+ },
+ {
+ "id": "9",
+ "name": "vMME",
+ "isPermitted": false
+ },
+ {
+ "id": "10",
+ "name": "vMNS",
+ "isPermitted": false
+ },
+ {
+ "id": "11",
+ "name": "vSCP",
+ "isPermitted": false
+ },
+ {
+ "id": "12",
+ "name": "VPMS",
+ "isPermitted": false
+ },
+ {
+ "id": "13",
+ "name": "vMMSC",
+ "isPermitted": false
+ },
+ {
+ "id": "14",
+ "name": "SSD",
+ "isPermitted": false
+ },
+ {
+ "id": "15",
+ "name": "vMOG",
+ "isPermitted": false
+ },
+ {
+ "id": "16",
+ "name": "LINDSEY",
+ "isPermitted": false
+ },
+ {
+ "id": "17",
+ "name": "JOHANNA_SANTOS",
+ "isPermitted": false
+ },
+ {
+ "id": "18",
+ "name": "vCarroll",
+ "isPermitted": false
+ }
+ ]
+ },
+ "aicZones": [
+ {
+ "id": "NFT1",
+ "name": "NFTJSSSS-NFT1"
+ },
+ {
+ "id": "JAG1",
+ "name": "YUDFJULP-JAG1"
+ },
+ {
+ "id": "YYY1",
+ "name": "UUUAIAAI-YYY1"
+ },
+ {
+ "id": "BAN1",
+ "name": "VSDKYUTP-BAN1"
+ },
+ {
+ "id": "DKJ1",
+ "name": "DKJSJDKA-DKJ1"
+ },
+ {
+ "id": "MCS1",
+ "name": "ASACMAMS-MCS1"
+ },
+ {
+ "id": "UIO1",
+ "name": "uioclli1-UIO1"
+ },
+ {
+ "id": "RAJ1",
+ "name": "YGBIJNLQ-RAJ1"
+ },
+ {
+ "id": "OPA1",
+ "name": "opaclli1-OPA1"
+ },
+ {
+ "id": "SDE1",
+ "name": "ZXCVBNMA-SDE1"
+ },
+ {
+ "id": "VEN2",
+ "name": "FGHJUHIL-VEN2"
+ },
+ {
+ "id": "ORL1",
+ "name": "ORLDFLMA-ORL1"
+ },
+ {
+ "id": "JAD1",
+ "name": "JADECLLI-JAD1"
+ },
+ {
+ "id": "ZXL1",
+ "name": "LWLWCANN-ZXL1"
+ },
+ {
+ "id": "CKL1",
+ "name": "CLKSKCKK-CKL1"
+ },
+ {
+ "id": "SDF1",
+ "name": "sdfclli1-SDF1"
+ },
+ {
+ "id": "RAD1",
+ "name": "RADICAL1-RAD1"
+ },
+ {
+ "id": "KIT1",
+ "name": "BHYJFGLN-KIT1"
+ },
+ {
+ "id": "REL1",
+ "name": "INGERFGT-REL1"
+ },
+ {
+ "id": "JNL1",
+ "name": "CJALSDAC-JNL1"
+ },
+ {
+ "id": "OLK1",
+ "name": "OLKOLKLS-OLK1"
+ },
+ {
+ "id": "CHI1",
+ "name": "CHILLIWE-CHI1"
+ },
+ {
+ "id": "UUU4",
+ "name": "UUUAAAUU-UUU4"
+ },
+ {
+ "id": "TUF1",
+ "name": "TUFCLLI1-TUF1"
+ },
+ {
+ "id": "KJN1",
+ "name": "CKALDKSA-KJN1"
+ },
+ {
+ "id": "SAM1",
+ "name": "SNDGCA64-SAN1"
+ },
+ {
+ "id": "SCK1",
+ "name": "SCKSCKSK-SCK1"
+ },
+ {
+ "id": "HJH1",
+ "name": "AOEEQQQD-HJH1"
+ },
+ {
+ "id": "HGD1",
+ "name": "SDFQWHGD-HGD1"
+ },
+ {
+ "id": "KOR1",
+ "name": "HYFLNBVT-KOR1"
+ },
+ {
+ "id": "ATL43",
+ "name": "AICLOCID-ATL43"
+ },
+ {
+ "id": "ATL54",
+ "name": "AICFTAAI-ATL54"
+ },
+ {
+ "id": "ATL66",
+ "name": "CLLIAAII-ATL66"
+ },
+ {
+ "id": "VEL1",
+ "name": "BNMLKUIK-VEL1"
+ },
+ {
+ "id": "ICC1",
+ "name": "SANJITAT-ICC1"
+ },
+ {
+ "id": "MNT11",
+ "name": "WSXEFBTH-MNT11"
+ },
+ {
+ "id": "DEF2",
+ "name": "WSBHGTYL-DEF2"
+ },
+ {
+ "id": "MAD11",
+ "name": "SDFQWGKL-MAD11"
+ },
+ {
+ "id": "OLG1",
+ "name": "OLHOLHOL-OLG1"
+ },
+ {
+ "id": "GAR1",
+ "name": "NGFVSJKO-GAR1"
+ },
+ {
+ "id": "SAN22",
+ "name": "GNVLSCTL-SAN22"
+ },
+ {
+ "id": "HRG1",
+ "name": "HRGHRGGS-HRG1"
+ },
+ {
+ "id": "JCS1",
+ "name": "JCSJSCJS-JCS1"
+ },
+ {
+ "id": "DHA12",
+ "name": "WSXEDECF-DHA12"
+ },
+ {
+ "id": "HJE1",
+ "name": "AOEEWWWD-HJE1"
+ },
+ {
+ "id": "NCA1",
+ "name": "NCANCANN-NCA1"
+ },
+ {
+ "id": "IOP1",
+ "name": "iopclli1-IOP1"
+ },
+ {
+ "id": "RTY1",
+ "name": "rtyclli1-RTY1"
+ },
+ {
+ "id": "KAP1",
+ "name": "HIOUYTRQ-KAP1"
+ },
+ {
+ "id": "ZEN1",
+ "name": "ZENCLLI1-ZEN1"
+ },
+ {
+ "id": "HKA1",
+ "name": "JAKHLASS-HKA1"
+ },
+ {
+ "id": "CQK1",
+ "name": "CQKSCAKK-CQK1"
+ },
+ {
+ "id": "SAI1",
+ "name": "UBEKQLPD-SAI1"
+ },
+ {
+ "id": "ERT1",
+ "name": "ertclli1-ERT1"
+ },
+ {
+ "id": "IBB1",
+ "name": "PLMKOIJU-IBB1"
+ },
+ {
+ "id": "TIR2",
+ "name": "PLKINHYI-TIR2"
+ },
+ {
+ "id": "HSD1",
+ "name": "CHASKCDS-HSD1"
+ },
+ {
+ "id": "SLF78",
+ "name": "SDCTLFN1-SLF78"
+ },
+ {
+ "id": "SEE78",
+ "name": "SDCTEEE4-SEE78"
+ },
+ {
+ "id": "SAN13",
+ "name": "TOKYJPFA-SAN13"
+ },
+ {
+ "id": "SAA78",
+ "name": "SDCTAAA1-SAA78"
+ },
+ {
+ "id": "LUC1",
+ "name": "ATLDFGYC-LUC1"
+ },
+ {
+ "id": "AMD13",
+ "name": "MEMATLAN-AMD13"
+ },
+ {
+ "id": "TOR1",
+ "name": "TOROONXN-TOR1"
+ },
+ {
+ "id": "QWE1",
+ "name": "QWECLLI1-QWE1"
+ },
+ {
+ "id": "ZOG1",
+ "name": "ZOGASTRO-ZOG1"
+ },
+ {
+ "id": "CAL33",
+ "name": "CALIFORN-CAL33"
+ },
+ {
+ "id": "SHH78",
+ "name": "SDIT1HHH-SHH78"
+ },
+ {
+ "id": "DSA1",
+ "name": "LKJHGFDS-DSA1"
+ },
+ {
+ "id": "CLG1",
+ "name": "CLGRABAD-CLG1"
+ },
+ {
+ "id": "BNA1",
+ "name": "BNARAGBK-BNA1"
+ },
+ {
+ "id": "ATL84",
+ "name": "CANTTCOC-ATL84"
+ },
+ {
+ "id": "APP1",
+ "name": "WBHGTYUI-APP1"
+ },
+ {
+ "id": "RJN1",
+ "name": "RJNRBZAW-RJN1"
+ },
+ {
+ "id": "EHH78",
+ "name": "SDCSHHH5-EHH78"
+ },
+ {
+ "id": "mac10",
+ "name": "PKGTESTF-mac10"
+ },
+ {
+ "id": "SXB78",
+ "name": "SDCTGXB1-SXB78"
+ },
+ {
+ "id": "SAX78",
+ "name": "SDCTAXG1-SAX78"
+ },
+ {
+ "id": "SYD1",
+ "name": "SYDNAUBV-SYD1"
+ },
+ {
+ "id": "TOK1",
+ "name": "TOKYJPFA-TOK1"
+ },
+ {
+ "id": "KGM2",
+ "name": "KGMTNC20-KGM2"
+ },
+ {
+ "id": "DCC1b",
+ "name": "POIUYTGH-DCC1b"
+ },
+ {
+ "id": "SKK78",
+ "name": "SDCTKKK1-SKK78"
+ },
+ {
+ "id": "SGG78",
+ "name": "SDCTGGG1-SGG78"
+ },
+ {
+ "id": "SJJ78",
+ "name": "SDCTJJJ1-SJJ78"
+ },
+ {
+ "id": "SBX78",
+ "name": "SDCTBXG1-SBX78"
+ },
+ {
+ "id": "LAG1",
+ "name": "LARGIZON-LAG1"
+ },
+ {
+ "id": "IAA1",
+ "name": "QAZXSWED-IAA1"
+ },
+ {
+ "id": "POI1",
+ "name": "PLMNJKIU-POI1"
+ },
+ {
+ "id": "LAG1a",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "PBL1",
+ "name": "PBLAPBAI-PBL1"
+ },
+ {
+ "id": "LAG45",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "MAR1",
+ "name": "MNBVCXZM-MAR1"
+ },
+ {
+ "id": "HST70",
+ "name": "HSTNTX70-HST70"
+ },
+ {
+ "id": "DCC1a",
+ "name": "POIUYTGH-DCC1a"
+ },
+ {
+ "id": "TOL1",
+ "name": "TOLDOH21-TOL1"
+ },
+ {
+ "id": "LON1",
+ "name": "LONEENCO-LON1"
+ },
+ {
+ "id": "SJU78",
+ "name": "SDIT1JUB-SJU78"
+ },
+ {
+ "id": "STN27",
+ "name": "HSTNTX01-STN27"
+ },
+ {
+ "id": "SSW56",
+ "name": "ss8126GT-SSW56"
+ },
+ {
+ "id": "SBB78",
+ "name": "SDIT1BBB-SBB78"
+ },
+ {
+ "id": "DCC3",
+ "name": "POIUYTGH-DCC3"
+ },
+ {
+ "id": "GNV1",
+ "name": "GNVLSCTL-GNV1"
+ },
+ {
+ "id": "WAS1",
+ "name": "WASHDCSW-WAS1"
+ },
+ {
+ "id": "TOY1",
+ "name": "TORYONNZ-TOY1"
+ },
+ {
+ "id": "STT1",
+ "name": "STTLWA02-STT1"
+ },
+ {
+ "id": "STG1",
+ "name": "STTGGE62-STG1"
+ },
+ {
+ "id": "SLL78",
+ "name": "SDCTLLL1-SLL78"
+ },
+ {
+ "id": "SBU78",
+ "name": "SDIT1BUB-SBU78"
+ },
+ {
+ "id": "ATL2",
+ "name": "ATLNGANW-ATL2"
+ },
+ {
+ "id": "BOT1",
+ "name": "BOTHWAKY-BOT1"
+ },
+ {
+ "id": "SNG1",
+ "name": "SNGPSIAU-SNG1"
+ },
+ {
+ "id": "NYC1",
+ "name": "NYCMNY54-NYC1"
+ },
+ {
+ "id": "LAG1b",
+ "name": "LARGIZON-LAG1b"
+ },
+ {
+ "id": "AMD15",
+ "name": "AMDFAA01-AMD15"
+ },
+ {
+ "id": "SNA1",
+ "name": "SNANTXCA-SNA1"
+ },
+ {
+ "id": "PLT1",
+ "name": "PLTNCA60-PLT1"
+ },
+ {
+ "id": "TLP1",
+ "name": "TLPNXM18-TLP1"
+ },
+ {
+ "id": "SDD81",
+ "name": "SAIT1DD6-SDD81"
+ },
+ {
+ "id": "DCC1",
+ "name": "POIUYTGH-DCC1"
+ },
+ {
+ "id": "DCC2",
+ "name": "POIUYTGH-DCC2"
+ },
+ {
+ "id": "OKC1",
+ "name": "OKCBOK55-OKC1"
+ },
+ {
+ "id": "PAR1",
+ "name": "PARSFRCG-PAR1"
+ },
+ {
+ "id": "TES36",
+ "name": "ABCEETES-TES36"
+ },
+ {
+ "id": "COM1",
+ "name": "PLMKOPIU-COM1"
+ },
+ {
+ "id": "ANI1",
+ "name": "ATLNGTRE-ANI1"
+ },
+ {
+ "id": "SDG78",
+ "name": "SDIT1BDG-SDG78"
+ },
+ {
+ "id": "mac20",
+ "name": "PKGTESTF-mac20"
+ },
+ {
+ "id": "DSF45",
+ "name": "DSFBG123-DSF45"
+ },
+ {
+ "id": "HST25",
+ "name": "HSTNTX01-HST25"
+ },
+ {
+ "id": "AMD18",
+ "name": "AUDIMA01-AMD18"
+ },
+ {
+ "id": "SAA80",
+ "name": "SAIT9AA3-SAA80"
+ },
+ {
+ "id": "SSA56",
+ "name": "SSIT2AA7-SSA56"
+ },
+ {
+ "id": "SDD82",
+ "name": "SAIT1DD9-SDD82"
+ },
+ {
+ "id": "JCV1",
+ "name": "JCVLFLBW-JCV1"
+ },
+ {
+ "id": "SUL2",
+ "name": "WERTYUJK-SUL2"
+ },
+ {
+ "id": "PUR1",
+ "name": "purelyde-PUR1"
+ },
+ {
+ "id": "FDE55",
+ "name": "FDERT555-FDE55"
+ },
+ {
+ "id": "SITE",
+ "name": "LONEENCO-SITE"
+ },
+ {
+ "id": "ATL1",
+ "name": "ATLNGAMA-ATL1"
+ },
+ {
+ "id": "JUL1",
+ "name": "ZXCVBNMM-JUL1"
+ },
+ {
+ "id": "TAT34",
+ "name": "TESAAISB-TAT34"
+ },
+ {
+ "id": "XCP12",
+ "name": "CHKGH123-XCP12"
+ },
+ {
+ "id": "RAI1",
+ "name": "poiuytre-RAI1"
+ },
+ {
+ "id": "HPO1",
+ "name": "ATLNGAUP-HPO1"
+ },
+ {
+ "id": "KJF12",
+ "name": "KJFDH123-KJF12"
+ },
+ {
+ "id": "SCC80",
+ "name": "SAIT9CC3-SCC80"
+ },
+ {
+ "id": "SAA12",
+ "name": "SAIT9AF8-SAA12"
+ },
+ {
+ "id": "SAA14",
+ "name": "SAIT1AA9-SAA14"
+ },
+ {
+ "id": "ATL35",
+ "name": "TTESSAAI-ATL35"
+ },
+ {
+ "id": "CWY1",
+ "name": "CWYMOWBS-CWY1"
+ },
+ {
+ "id": "ATL76",
+ "name": "TELEPAAI-ATL76"
+ },
+ {
+ "id": "DSL12",
+ "name": "DSLFK242-DSL12"
+ },
+ {
+ "id": "ATL53",
+ "name": "AAIATLTE-ATL53"
+ },
+ {
+ "id": "SAA11",
+ "name": "SAIT9AA2-SAA11"
+ },
+ {
+ "id": "ATL62",
+ "name": "TESSASCH-ATL62"
+ },
+ {
+ "id": "AUG1",
+ "name": "ASDFGHJK-AUG1"
+ },
+ {
+ "id": "POI22",
+ "name": "POIUY123-POI22"
+ },
+ {
+ "id": "SAA13",
+ "name": "SAIT1AA9-SAA13"
+ },
+ {
+ "id": "BHY17",
+ "name": "BHYTFRF3-BHY17"
+ },
+ {
+ "id": "LIS1",
+ "name": "HOSTPROF-LIS1"
+ },
+ {
+ "id": "SIP1",
+ "name": "ZXCVBNMK-SIP1"
+ },
+ {
+ "id": "ATL99",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "ATL64",
+ "name": "FORLOAAJ-ATL64"
+ },
+ {
+ "id": "TAT33",
+ "name": "TESAAISA-TAT33"
+ },
+ {
+ "id": "RAD10",
+ "name": "INDIPUNE-RAD10"
+ },
+ {
+ "id": "RTW5",
+ "name": "BHYTFRY4-RTW5"
+ },
+ {
+ "id": "JGS1",
+ "name": "KSJKKKKK-JGS1"
+ },
+ {
+ "id": "ATL98",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "WAN1",
+ "name": "LEIWANGW-WAN1"
+ },
+ {
+ "id": "ATL44",
+ "name": "ATLSANAB-ATL44"
+ },
+ {
+ "id": "RTD2",
+ "name": "BHYTFRk4-RTD2"
+ },
+ {
+ "id": "NIR1",
+ "name": "ORFLMANA-NIR1"
+ },
+ {
+ "id": "ATL75",
+ "name": "SANAAIRE-ATL75"
+ },
+ {
+ "id": "NUM1",
+ "name": "QWERTYUI-NUM1"
+ },
+ {
+ "id": "MTN32",
+ "name": "MDTWNJ21-MTN32"
+ },
+ {
+ "id": "RTZ4",
+ "name": "BHYTFRZ6-RTZ4"
+ },
+ {
+ "id": "ATL56",
+ "name": "ATLSANAC-ATL56"
+ },
+ {
+ "id": "AMS1",
+ "name": "AMSTNLBW-AMS1"
+ },
+ {
+ "id": "RCT1",
+ "name": "AMSTERNL-RCT1"
+ },
+ {
+ "id": "JAN1",
+ "name": "ORFLMATT-JAN1"
+ },
+ {
+ "id": "ABC14",
+ "name": "TESAAISA-ABC14"
+ },
+ {
+ "id": "TAT37",
+ "name": "TESAAISD-TAT37"
+ },
+ {
+ "id": "MIC54",
+ "name": "MICHIGAN-MIC54"
+ },
+ {
+ "id": "ABC11",
+ "name": "ATLSANAI-ABC11"
+ },
+ {
+ "id": "AMF11",
+ "name": "AMDOCS01-AMF11"
+ },
+ {
+ "id": "ATL63",
+ "name": "ATLSANEW-ATL63"
+ },
+ {
+ "id": "ABC12",
+ "name": "ATLSECIA-ABC12"
+ },
+ {
+ "id": "MTN20",
+ "name": "MDTWNJ21-MTN20"
+ },
+ {
+ "id": "ABC15",
+ "name": "AAITESAN-ABC15"
+ },
+ {
+ "id": "AVT1",
+ "name": "AVTRFLHD-AVT1"
+ },
+ {
+ "id": "ATL34",
+ "name": "ATLSANAI-ATL34"
+ }
+ ],
+ "categoryParameters": {
+ "owningEntityList": [
+ {
+ "id": "aaa1",
+ "name": "aaa1"
+ },
+ {
+ "id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "name": "WayneHolland"
+ },
+ {
+ "id": "Melissa",
+ "name": "Melissa"
+ }
+ ],
+ "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"
+ }
+ ]
+ },
+ "type": "[LCP_REGIONS_AND_TENANTS] Update",
+ "subscribers": [
+ {
+ "id": "CAR_2020_ER",
+ "name": "CAR_2020_ER",
+ "isPermitted": true
+ },
+ {
+ "id": "21014aa2-526b-11e6-beb8-9e71128cae77",
+ "name": "JULIO ERICKSON",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-2",
+ "name": "DALE BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-1",
+ "name": "LLOYD BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example",
+ "name": "JimmyExampleCust-20161102",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example2",
+ "name": "JimmyExampleCust-20161103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-102",
+ "name": "ERICA5779-TestSub-PWT-102",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-101",
+ "name": "ERICA5779-TestSub-PWT-101",
+ "isPermitted": false
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-4",
+ "name": "ERICA5779-Subscriber-5",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-103",
+ "name": "ERICA5779-TestSub-PWT-103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-2",
+ "name": "ERICA5779-Subscriber-2",
+ "isPermitted": false
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "SILVIA ROBBINS",
+ "isPermitted": true
+ },
+ {
+ "id": "ERICA5779-Subscriber-3",
+ "name": "ERICA5779-Subscriber-3",
+ "isPermitted": false
+ },
+ {
+ "id": "31739f3e-526b-11e6-beb8-9e71128cae77",
+ "name": "CRAIG/ROBERTS",
+ "isPermitted": false
+ }
+ ]
+ }
+ }
+ }
+}
+
+class MockFeatureFlagsService {}
+
+describe('VNF Control Generator', () => {
+ let injector;
+ let service: VnfControlGenerator;
+ let httpMock: HttpTestingController;
+
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ imports: [HttpClientTestingModule],
+ providers: [VnfControlGenerator,
+ GenericFormService,
+ BasicControlGenerator,
+ AaiService,
+ FormBuilder,
+ LogService,
+ {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
+ {provide: NgRedux, useClass: MockAppStore}]
+ });
+ await TestBed.compileComponents();
+
+
+ injector = getTestBed();
+ service = injector.get(VnfControlGenerator);
+ httpMock = injector.get(HttpTestingController);
+
+ })().then(done).catch(done.fail));
+
+
+ test('getMacroFormControls check for mandatory controls', () => {
+ const serviceId : string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const vnfName : string = "VF_vMee 0";
+ const vnfStoreKey : string = "VF_vMee 0";
+ const controls :FormControlModel[] = service.getMacroFormControls(serviceId, vnfStoreKey, vnfName, []);
+
+ const mandatoryControls : string[] = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.LCPCLOUD_REGION_ID,
+ FormControlNames.TENANT_ID,
+ 'platformName'
+ ];
+
+ for(let i = 0 ; i < mandatoryControls.length ; i++){
+ let requiredExist = controls.find(ctrl => ctrl.controlName === mandatoryControls[i]).validations.find(item => item.validatorName === 'required');
+ expect(requiredExist).toBeDefined();
+ }
+ });
+
+ test('should provide empty array on getMacroFormControls when serviceId, vnfName and vnfStoreKey equals to null', () => {
+
+ let vnfStoreKey = null;
+ const serviceId = null;
+ const vnfName : string = null;
+ const result:FormControlModel[] = service.getMacroFormControls(serviceId, vnfStoreKey, vnfName, []);
+ expect(result).toEqual([]);
+ });
+
+ test('should provide empty array on getAlaCarteFormControls when serviceId, vnfName and vnfStoreKey equals to null', () => {
+ let vnfStoreKey = null;
+ const serviceId = null;
+ const vnfName : string = null;
+ const result:FormControlModel[] = service.getAlaCarteFormControls(serviceId, vnfStoreKey, vnfName, []);
+ expect(result).toEqual([]);
+ });
+
+ function getALaCarteFormControls(vnfStoreKey: string): FormControlModel[] {
+ const serviceId: string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const vnfName: string = "VF_vMee 0";
+ const controls: FormControlModel[] = service.getAlaCarteFormControls(serviceId, vnfStoreKey, vnfName, []);
+ return controls;
+ }
+
+ test('getMacroFormControls should return the correct order of controls', () => {
+ const serviceId : string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ const vnfName : string = "VF_vMee 0";
+ const vnfStoreKey : string = null;
+ const controls :FormControlModel[] = service.getMacroFormControls(serviceId, vnfStoreKey, vnfName, []);
+
+ const controlsOrderNames = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.PRODUCT_FAMILY_ID,
+ FormControlNames.LCPCLOUD_REGION_ID ,
+ 'legacyRegion',
+ 'tenantId',
+ 'platformName',
+ 'lineOfBusiness'];
+
+ expect(controls.length).toEqual(7);
+ for(let i = 0 ; i < controls.length ; i++){
+ expect(controls[i].controlName).toEqual(controlsOrderNames[i]);
+ }
+ });
+
+ test('getAlacartFormControls should return the correct order of controls', () => {
+ const controls = getALaCarteFormControls(null);
+
+ const controlsOrderNames = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.PRODUCT_FAMILY_ID,
+ FormControlNames.LCPCLOUD_REGION_ID,
+ 'legacyRegion',
+ 'tenantId',
+ 'platformName',
+ 'lineOfBusiness',
+ 'rollbackOnFailure'];
+ expect(controls.length).toEqual(8);
+ for(let i = 0 ; i < controls.length ; i++) {
+ expect(controls[i].controlName).toEqual(controlsOrderNames[i]);
+ }
+ });
+
+
+ test('getAlacartFormControls check for mandatory controls', () => {
+ const controls = getALaCarteFormControls("VF_vMee 0");
+ const mandatoryControls : string[] = [
+ FormControlNames.INSTANCE_NAME,
+ FormControlNames.LCPCLOUD_REGION_ID,
+ 'tenantId',
+ 'platformName',
+ 'rollbackOnFailure'
+ ];
+ for(let i = 0 ; i < mandatoryControls.length ; i++){
+ let requiredExist = controls.find(ctrl => ctrl.controlName === mandatoryControls[i]).validations.find(item => item.validatorName === 'required');
+ expect(requiredExist).toBeDefined();
+ }
+ });
+
+ test('getAlacartFormControls instance name control validator shall have the expected regex', () => {
+ const controls:FormControlModel[] = getALaCarteFormControls("VF_vMee 0");
+
+ const instanceNameControl: FormControlModel = <FormControlModel>controls.find(item => item.controlName === FormControlNames.INSTANCE_NAME);
+ const instanceNameValidator: ValidatorModel = instanceNameControl.validations.find(val => val.validatorName === ValidatorOptions.pattern);
+ expect(instanceNameValidator.validatorArg).toEqual(/^[a-zA-Z0-9._-]*$/);
+ });
+
+ test('rollback should return observable of true, false', () => {
+ let result : Observable<SelectOption[]> = service.getRollBackOnFailureOptions();
+ result.subscribe((val)=>{
+ expect(val).toEqual([
+ new SelectOption({id: 'true', name: 'Rollback'}),
+ new SelectOption({id: 'false', name: 'Don\'t Rollback'})
+ ]);
+ });
+ });
+});
+
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator.ts
new file mode 100644
index 000000000..3484038b1
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator.ts
@@ -0,0 +1,243 @@
+import {Injectable} from "@angular/core";
+import {GenericFormService} from "../../generic-form.service";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {NgRedux} from "@angular-redux/store";
+import {HttpClient} from "@angular/common/http";
+import {BasicControlGenerator} from "../basic.control.generator";
+import {
+ FormControlModel,
+ ValidatorModel,
+ ValidatorOptions
+} from "../../../../models/formControlModels/formControl.model";
+import {LogService} from "../../../../utils/log/log.service";
+import {VNFModel} from "../../../../models/vnfModel";
+import {AppState} from "../../../../store/reducers";
+import {FormGroup} from "@angular/forms";
+import {DropdownFormControl} from "../../../../models/formControlModels/dropdownFormControl.model";
+import {FormControlType} from "../../../../models/formControlModels/formControlTypes.enum";
+import {InputFormControl} from "../../../../models/formControlModels/inputFormControl.model";
+import {Observable, of} from "rxjs";
+import {SelectOption} from "../../../../models/selectOption";
+import * as _ from 'lodash';
+import {Constants} from "../../../../utils/constants";
+
+export enum FormControlNames {
+ INSTANCE_NAME = 'instanceName',
+ GLOBAL_SUBSCRIBER_ID = 'globalSubscriberId',
+ SUBSCRIPTION_SERVICE_TYPE = 'subscriptionServiceType',
+ PRODUCT_FAMILY_ID = 'productFamilyId',
+ LCPCLOUD_REGION_ID = 'lcpCloudRegionId',
+ TENANT_ID = 'tenantId',
+ AICZONE_ID = 'aicZoneId',
+ PROJECT_NAME = 'projectName',
+ OWNING_ENTITY_ID = 'owningEntityId',
+ ROLLBACK_ON_FAILURE = 'rollbackOnFailure',
+ PAUSE = 'pause'
+}
+
+enum InputType {
+ LCP_REGION = "lcpCloudRegionId",
+ TENANT = "tenantId",
+ LOB = "lineOfBusiness",
+ PLATFORM = "platformName",
+ ROLLBACK = "rollbackOnFailure",
+ PRODUCT_FAMILY = "productFamilyId",
+ VG = "volumeGroupName"
+}
+
+@Injectable()
+export class VnfControlGenerator {
+ aaiService: AaiService;
+ constructor(private genericFormService: GenericFormService,
+ private _basicControlGenerator: BasicControlGenerator,
+ private store: NgRedux<AppState>,
+ private http: HttpClient,
+ private _aaiService: AaiService,
+ private _logService: LogService) {
+ this.aaiService = _aaiService;
+ }
+
+ getVnfInstance = (serviceId: string, vnfStoreKey: string): any => {
+ let vnfInstance = null;
+ if (this.store.getState().service.serviceInstance[serviceId] && _.has(this.store.getState().service.serviceInstance[serviceId].vnfs, vnfStoreKey)) {
+ vnfInstance = Object.assign({}, this.store.getState().service.serviceInstance[serviceId].vnfs[vnfStoreKey]);
+ }
+ return vnfInstance;
+ };
+
+ getMacroFormControls(serviceId: string, vnfStoreKey: string, vnfName: string, dynamicInputs?: any[]): FormControlModel[] {
+ vnfStoreKey = _.isNil(vnfStoreKey) ? vnfName : vnfStoreKey;
+
+ if (_.isNil(serviceId) || _.isNil(vnfStoreKey) || _.isNil(vnfName)) {
+ this._logService.error('should provide serviceId, vnfName, vnfStoreKey', serviceId);
+ return [];
+ }
+
+ const vnfInstance = this.getVnfInstance(serviceId, vnfStoreKey);
+ const vnfModel = new VNFModel(this.store.getState().service.serviceHierarchy[serviceId].vnfs[vnfName]);
+ let result: FormControlModel[] = [];
+
+ if (!_.isNil(vnfModel)) {
+ result.push(this.getInstanceName(vnfInstance, serviceId, vnfName, vnfModel.isEcompGeneratedNaming));
+ result.push(this._basicControlGenerator.getProductFamilyControl(vnfInstance, result, false));
+ result.push(this.getLcpRegionControl(serviceId, vnfInstance, result));
+ result.push(this._basicControlGenerator.getLegacyRegion(vnfInstance));
+ result.push(this.getTenantControl(serviceId, vnfInstance, result));
+ result.push(this.getPlatformControl(vnfInstance, result));
+ result.push(this.getLineOfBusinessControl(vnfInstance, result));
+ }
+ return result;
+ }
+
+ getAlaCarteFormControls(serviceId: string, vnfStoreKey: string, vnfName: string, dynamicInputs?: any[]): FormControlModel[] {
+ vnfStoreKey = _.isNil(vnfStoreKey) ? vnfName : vnfStoreKey;
+ if (_.isNil(serviceId) || _.isNil(vnfStoreKey) || _.isNil(vnfName)) {
+ this._logService.error('should provide serviceId, vnfName, vnfStoreKey', serviceId);
+ return [];
+ }
+
+ let result: FormControlModel[] = [];
+ const vnfInstance = this.getVnfInstance(serviceId, vnfStoreKey);
+ const vnfModel = new VNFModel(this.store.getState().service.serviceHierarchy[serviceId].vnfs[vnfName]);
+
+ if (!_.isNil(vnfModel)) {
+ result.push(this.getInstanceName(vnfInstance, serviceId, vnfName, vnfModel.isEcompGeneratedNaming));
+ result.push(this._basicControlGenerator.getProductFamilyControl(vnfInstance, result, false));
+ result.push(this.getLcpRegionControl(serviceId, vnfInstance, result));
+ result.push(this._basicControlGenerator.getLegacyRegion(vnfInstance));
+ result.push(this.getTenantControl(serviceId, vnfInstance, result));
+ result.push(this.getPlatformControl(vnfInstance, result));
+ result.push(this.getLineOfBusinessControl(vnfInstance, result));
+ result.push(this.getRollbackOnFailureControl(vnfInstance, result));
+ }
+ return result;
+ }
+
+ isInputShouldBeShown = (inputType: any): boolean => {
+ let vnfInputs = [InputType.LCP_REGION, InputType.LOB, InputType.TENANT, InputType.PRODUCT_FAMILY, InputType.PLATFORM, InputType.ROLLBACK];
+ return vnfInputs.indexOf(inputType) > -1;
+ };
+
+ getInstanceName(instance : any, serviceId : string, vnfName : string, isEcompGeneratedNaming: boolean): FormControlModel {
+ const vnfModel : VNFModel = this.store.getState().service.serviceHierarchy[serviceId].vnfs[vnfName];
+ return this._basicControlGenerator.getInstanceNameController(instance, serviceId, isEcompGeneratedNaming, vnfModel);
+ }
+
+ getLineOfBusinessControl = (instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: 'lineOfBusiness',
+ displayName: 'Line of business',
+ dataTestId: 'lineOfBusiness',
+ placeHolder: 'Select Line Of Business',
+ isDisabled: false,
+ name: "lineOfBusiness",
+ value: instance ? instance.lineOfBusiness : null,
+ validations: [],
+ onInitSelectedField: ['lineOfBusinessList'],
+ onInit: this._basicControlGenerator.getSubscribeInitResult.bind(null, this._aaiService.getCategoryParameters)
+ })
+ };
+
+ getPlatformControl = (instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: 'platformName',
+ displayName: 'Platform',
+ dataTestId: 'platform',
+ placeHolder: 'Select Platform',
+ isDisabled: false,
+ name: "platform",
+ value: instance ? instance.platformName : null,
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ onInitSelectedField: ['platformList'],
+ onInit: this._basicControlGenerator.getSubscribeInitResult.bind(null, this._aaiService.getCategoryParameters)
+ })
+ };
+
+ getTenantControl = (serviceId: string, instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ const service = this.store.getState().service.serviceInstance[serviceId];
+ const globalCustomerId: string = service.globalSubscriberId;
+ const serviceType: string = service.subscriptionServiceType;
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: FormControlNames.TENANT_ID,
+ displayName: 'Tenant',
+ dataTestId: 'tenant',
+ placeHolder: 'Select Tenant',
+ name: "tenant",
+ isDisabled: _.isNil(instance) || _.isNil(instance.lcpCloudRegionId),
+ onInitSelectedField: instance ? ['lcpRegionsTenantsMap', instance.lcpCloudRegionId] : null,
+ value: instance ? instance.tenantId : null,
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ onInit : instance ? this._basicControlGenerator.getSubscribeInitResult.bind(
+ this._aaiService,
+ this.aaiService.getLcpRegionsAndTenants.bind(this, globalCustomerId, serviceType)) : ()=>{},
+ })
+ };
+
+ getLcpRegionControl = (serviceId: string, instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ const service = this.store.getState().service.serviceInstance[serviceId];
+ const globalCustomerId: string = service.globalSubscriberId;
+ const serviceType: string = service.subscriptionServiceType;
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: 'lcpCloudRegionId',
+ displayName: 'LCP region',
+ dataTestId: 'lcpRegion',
+ placeHolder: 'Select LCP Region',
+ name: "lcpRegion",
+ isDisabled: false,
+ value: instance ? instance.lcpCloudRegionId : null,
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ onInitSelectedField: ['lcpRegionList'],
+ onInit: this._basicControlGenerator.getSubscribeInitResult.bind(
+ this._aaiService,
+ this._aaiService.getLcpRegionsAndTenants.bind(this, globalCustomerId, serviceType)),
+ onChange: (param: string, form: FormGroup) => {
+ form.controls[FormControlNames.TENANT_ID].enable();
+ form.controls[FormControlNames.TENANT_ID].reset();
+ if (!_.isNil(globalCustomerId) && !_.isNil(serviceType)) {
+ this._basicControlGenerator.getSubscribeResult.bind(this, this._aaiService.getLcpRegionsAndTenants(globalCustomerId, serviceType).subscribe(res => {
+ controls.find(item => item.controlName === FormControlNames.TENANT_ID)['options$'] = res.lcpRegionsTenantsMap[param];
+ if(res.lcpRegionsTenantsMap[param]){
+ controls.find(item => item.controlName === FormControlNames.TENANT_ID)['hasEmptyOptions'] = res.lcpRegionsTenantsMap[param].length === 0;
+ }
+ }));
+ }
+
+ if (Constants.LegacyRegion.MEGA_REGION.indexOf(param) !== -1) {
+ form.controls['legacyRegion'].enable();
+ controls.find(item => item.controlName === 'legacyRegion').isVisible = true;
+
+ } else {
+ controls.find(item => item.controlName === 'legacyRegion').isVisible = false;
+ form.controls['legacyRegion'].setValue(null);
+ form.controls['legacyRegion'].reset();
+ form.controls['legacyRegion'].disable();
+ }
+ }
+ })
+ };
+
+ getRollbackOnFailureControl = (instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: FormControlNames.ROLLBACK_ON_FAILURE,
+ displayName: 'Rollback on failure',
+ dataTestId: 'rollback',
+ placeHolder: 'Rollback on failure',
+ isDisabled: false,
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ value: instance ? instance.rollbackOnFailure : 'true',
+ onInit: this._basicControlGenerator.getSubscribeInitResult.bind(null, this.getRollBackOnFailureOptions)
+ })
+ };
+
+ getRollBackOnFailureOptions = (): Observable<SelectOption[]> => {
+ return of([
+ new SelectOption({id: 'true', name: 'Rollback'}),
+ new SelectOption({id: 'false', name: 'Don\'t Rollback'})
+ ]);
+ };
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator.spec.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator.spec.ts
new file mode 100644
index 000000000..6dcaa8235
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator.spec.ts
@@ -0,0 +1,364 @@
+import {getTestBed, TestBed} from '@angular/core/testing';
+import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
+import {NgRedux} from '@angular-redux/store';
+import {FormControlNames} from "../service.control.generator";
+import {BasicControlGenerator} from "../basic.control.generator";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {GenericFormService} from "../../generic-form.service";
+import {FormBuilder} from "@angular/forms";
+import {
+ FormControlModel,
+ ValidatorModel,
+ ValidatorOptions
+} from "../../../../models/formControlModels/formControl.model";
+import {LogService} from "../../../../utils/log/log.service";
+import {VnfGroupControlGenerator} from "./vnfGroup.control.generator";
+import {Observable} from "rxjs";
+import {SelectOption} from "../../../../models/selectOption";
+import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flags.service";
+
+class MockAppStore<T> {
+ getState(){
+ return {
+ "global": {
+ "name": null,
+ "type": "UPDATE_DRAWING_BOARD_STATUS",
+ "drawingBoardStatus": "CREATE",
+ "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_COLLECTION_RESOURCE_SUPPORT": true,
+ "FLAG_SHOW_ASSIGNMENTS": true,
+ "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
+ "FLAG_DUPLICATE_VNF": true,
+ "FLAG_DEFAULT_VNF": true,
+ "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": true,
+ "FLAG_A_LA_CARTE_AUDIT_INFO": true,
+ "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
+ }
+ },
+ "service": {
+ "serviceHierarchy": {
+ "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc": {
+ "service": {
+ "vidNotions": {
+ "instantiationUI": "serviceWithVnfGrouping",
+ "modelCategory": "other",
+ "viewEditUI": "serviceWithVnfGrouping"
+ },
+ "uuid": "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc",
+ "invariantUuid": "7ee41ce4-4827-44b0-a48e-2707a59905d2",
+ "name": "Grouping Service for Test",
+ "version": "1.0",
+ "toscaModelURL": null,
+ "category": "Network L4+",
+ "serviceType": "INFRASTRUCTURE",
+ "serviceRole": "GROUPING",
+ "description": "xxx",
+ "serviceEcompNaming": "false",
+ "instantiationType": "A-La-Carte",
+ "inputs": {}
+ },
+ "vnfs": {},
+ "networks": {},
+ "collectionResource": {},
+ "configurations": {},
+ "fabricConfigurations": {},
+ "serviceProxies": {
+ "vdbe_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",
+ "version": "1.0",
+ "customizationUuid": "bdb63d23-e132-4ce7-af2c-a493b4cafac9",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Service Proxy",
+ "sourceModelUuid": "da7827a2-366d-4be6-8c68-a69153c61274",
+ "sourceModelInvariant": "24632e6b-584b-4f45-80d4-fefd75fd9f14",
+ "sourceModelName": "vDBE_Svc_vPRS"
+ },
+ "tsbc0001vm001_svc_proxy 0": {
+ "uuid": "65fadfa8-a0d9-443f-95ad-836cd044e26c",
+ "invariantUuid": "f4baae0c-b3a5-4ca1-a777-afbffe7010bc",
+ "description": "A Proxy for Service tsbc0001vm001_Svc",
+ "name": "tsbc0001vm001_Svc Service Proxy",
+ "version": "1.0",
+ "customizationUuid": "3d814462-30fb-4c62-b997-9aa360d27ead",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Service Proxy",
+ "sourceModelUuid": "28aeb8f6-5620-4148-8bfb-a5fb406f0309",
+ "sourceModelInvariant": "c989ab9a-33c7-46ec-b521-1b2daef5f047",
+ "sourceModelName": "tsbc0001vm001_Svc"
+ }
+ },
+ "vfModules": {},
+ "volumeGroups": {},
+ "pnfs": {},
+ "vnfGroups": {
+ "groupingservicefortest..ResourceInstanceGroup..0": {
+ "type": "VnfGroup",
+ "invariantUuid": "4bb2e27e-ddab-4790-9c6d-1f731bc14a45",
+ "uuid": "daeb6568-cef8-417f-9075-ed259ce59f48",
+ "version": "1",
+ "name": "groupingservicefortest..ResourceInstanceGroup..0",
+ "modelCustomizationName": "groupingservicefortest..ResourceInstanceGroup..0",
+ "properties": {
+ "ecomp_generated_naming": "false",
+ "contained_resource_type": "VF",
+ "role": "SERVICE-ACCESS",
+ "function": "DATA",
+ "description": "DDD0",
+ "type": "LOAD-GROUP"
+ },
+ "members": {
+ "vdbe_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",
+ "version": "1.0",
+ "customizationUuid": "bdb63d23-e132-4ce7-af2c-a493b4cafac9",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Service Proxy",
+ "sourceModelUuid": "da7827a2-366d-4be6-8c68-a69153c61274",
+ "sourceModelInvariant": "24632e6b-584b-4f45-80d4-fefd75fd9f14",
+ "sourceModelName": "vDBE_Svc_vPRS"
+ }
+ }
+ },
+ "groupingservicefortest..ResourceInstanceGroup..1": {
+ "type": "VnfGroup",
+ "invariantUuid": "a704112d-dbc6-4e56-8d4e-aec57e95ef9a",
+ "uuid": "c2b300e6-45de-4e5e-abda-3032bee2de56",
+ "version": "1",
+ "name": "groupingservicefortest..ResourceInstanceGroup..1",
+ "modelCustomizationName": "groupingservicefortest..ResourceInstanceGroup..1",
+ "properties": {
+ "ecomp_generated_naming": "true",
+ "contained_resource_type": "VF",
+ "role": "SERVICE-ACCESS",
+ "function": "SIGNALING",
+ "description": "DDD1",
+ "type": "LOAD-GROUP"
+ },
+ "members": {
+ "tsbc0001vm001_svc_proxy 0": {
+ "uuid": "65fadfa8-a0d9-443f-95ad-836cd044e26c",
+ "invariantUuid": "f4baae0c-b3a5-4ca1-a777-afbffe7010bc",
+ "description": "A Proxy for Service tsbc0001vm001_Svc",
+ "name": "tsbc0001vm001_Svc Service Proxy",
+ "version": "1.0",
+ "customizationUuid": "3d814462-30fb-4c62-b997-9aa360d27ead",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Service Proxy",
+ "sourceModelUuid": "28aeb8f6-5620-4148-8bfb-a5fb406f0309",
+ "sourceModelInvariant": "c989ab9a-33c7-46ec-b521-1b2daef5f047",
+ "sourceModelName": "tsbc0001vm001_Svc"
+ }
+ }
+ }
+ }
+ }
+ },
+ "serviceInstance": {
+ "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc": {
+ "existingVNFCounterMap": {},
+ "existingVnfGroupCounterMap": {
+ "daeb6568-cef8-417f-9075-ed259ce59f48": 1,
+ "c2b300e6-45de-4e5e-abda-3032bee2de56": 0
+ },
+ "existingNetworksCounterMap": {},
+ "vnfs": {},
+ "vnfGroups": {
+ "groupingservicefortest..ResourceInstanceGroup..0": {
+ "inMaint": false,
+ "rollbackOnFailure": "true",
+ "originalName": "groupingservicefortest..ResourceInstanceGroup..0",
+ "isMissingData": false,
+ "trackById": "johjmxpmrlk",
+ "vnfGroupStoreKey": "groupingservicefortest..ResourceInstanceGroup..0",
+ "instanceName": "groupingservicefortestResourceInstanceGroup0",
+ "instanceParams": [
+ {}
+ ],
+ "modelInfo": {
+ "modelInvariantId": "4bb2e27e-ddab-4790-9c6d-1f731bc14a45",
+ "modelVersionId": "daeb6568-cef8-417f-9075-ed259ce59f48",
+ "modelName": "groupingservicefortest..ResourceInstanceGroup..0",
+ "modelVersion": "1",
+ "modelCustomizationName": "groupingservicefortest..ResourceInstanceGroup..0",
+ "uuid": "daeb6568-cef8-417f-9075-ed259ce59f48"
+ },
+ "uuid": "daeb6568-cef8-417f-9075-ed259ce59f48"
+ }
+ },
+ "isEcompGeneratedNaming": false,
+ "existingNames": {}
+ }
+ }
+ }
+ }
+ }
+}
+
+class MockFeatureFlagsService {}
+
+describe('VNF Group Control Generator', () => {
+ let injector;
+ let service: VnfGroupControlGenerator;
+ let httpMock: HttpTestingController;
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ imports: [HttpClientTestingModule],
+ providers: [VnfGroupControlGenerator,
+ GenericFormService,
+ BasicControlGenerator,
+ AaiService,
+ FormBuilder,
+ LogService,
+ {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
+ {provide: NgRedux, useClass: MockAppStore}]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ service = injector.get(VnfGroupControlGenerator);
+ httpMock = injector.get(HttpTestingController);
+
+ })().then(done).catch(done.fail));
+
+
+
+ test('getMacroFormControls check for mandatory controls', () => {
+ const serviceId : string = "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc";
+ const vnfGroupName : string = "groupingservicefortest..ResourceInstanceGroup..0";
+ const vnfGroupStoreKey : string = "groupingservicefortest..ResourceInstanceGroup..0";
+ const controls :FormControlModel[] = service.getMacroFormControls(serviceId, vnfGroupStoreKey, vnfGroupName, []);
+
+ const mandatoryControls : string[] = [
+ FormControlNames.INSTANCE_NAME
+ ];
+
+ for(let i = 0 ; i < mandatoryControls.length ; i++){
+ let requiredExist = controls.find(ctrl => ctrl.controlName === mandatoryControls[i]).validations.find(item => item.validatorName === 'required');
+ expect(requiredExist).toBeDefined();
+ }
+ });
+
+ test('getMacroFormControls should return the correct order of controls', () => {
+ const serviceId : string = "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc";
+ const vnfGroupName : string = "groupingservicefortest..ResourceInstanceGroup..0";
+ const vnfGroupStoreKey : string = "groupingservicefortest..ResourceInstanceGroup..0";
+ const controls :FormControlModel[] = service.getMacroFormControls(serviceId, vnfGroupStoreKey, vnfGroupName, []);
+
+ const controlsOrderNames = [
+ FormControlNames.INSTANCE_NAME,
+ 'rollbackOnFailure'];
+
+ expect(controls.length).toEqual(1);
+ for(let i = 0 ; i < controls.length ; i++){
+ expect(controls[i].controlName).toEqual(controlsOrderNames[i]);
+ }
+ });
+
+ test('getMacroFormControls check for mandatory controls when ecomp naming = true', () => {
+ const serviceId : string = "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc";
+ const vnfGroupName : string = "groupingservicefortest..ResourceInstanceGroup..1";
+ const vnfGroupStoreKey : string = "groupingservicefortest..ResourceInstanceGroup..1";
+ const controls :FormControlModel[] = service.getMacroFormControls(serviceId, vnfGroupStoreKey, vnfGroupName, []);
+
+ let isOptional = controls.find(ctrl => ctrl.controlName === 'instanceName').validations.find(item => item.validatorName !== 'required');
+ expect(isOptional).toBeTruthy();
+ });
+
+ test('getAlacartFormControls should return the correct order of controls', () => {
+ const controls:FormControlModel[] = getALaCarteFormControls();
+
+ const controlsOrderNames = [
+ FormControlNames.INSTANCE_NAME,
+ 'rollbackOnFailure'];
+ expect(controls.length).toEqual(2);
+ for(let i = 0 ; i < controls.length ; i++) {
+ expect(controls[i].controlName).toEqual(controlsOrderNames[i]);
+ }
+ });
+
+
+ test('getAlacartFormControls check for mandatory controls', () => {
+ const controls:FormControlModel[] = getALaCarteFormControls();
+
+ const mandatoryControls : string[] = [
+ FormControlNames.INSTANCE_NAME,
+ 'rollbackOnFailure'
+ ];
+ for(let i = 0 ; i < mandatoryControls.length ; i++){
+ let requiredExist = controls.find(ctrl => ctrl.controlName === mandatoryControls[i]).validations.find(item => item.validatorName === 'required');
+ expect(requiredExist).toBeDefined();
+ }
+ });
+
+ test('getAlacartFormControls with ecomp_naming true check for mandatory controls', () => {
+ const controls:FormControlModel[] = getALaCarteFormControls();
+
+ const mandatoryControls : string[] = [
+ 'rollbackOnFailure'
+ ];
+ for(let i = 0 ; i < mandatoryControls.length ; i++){
+ let requiredExist = controls.find(ctrl => ctrl.controlName === mandatoryControls[i]).validations.find(item => item.validatorName === 'required');
+ expect(requiredExist).toBeDefined();
+ }
+ });
+
+ test('default instanceName', () => {
+ const serviceId : string = "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc";
+ const vnfGroupName : string = "groupingservicefortest..ResourceInstanceGroup..0";
+ let result:FormControlModel = service.getInstanceName(null, serviceId, vnfGroupName, false);
+ expect(result.value).toEqual("groupingservicefortest..ResourceInstanceGroup..0");
+ });
+
+ test('rollbackOnFailure', () => {
+ let result : Observable<SelectOption[]> = service.getRollBackOnFailureOptions();
+ result.subscribe((val)=>{
+ expect(val).toEqual([
+ new SelectOption({id: 'true', name: 'Rollback'}),
+ new SelectOption({id: 'false', name: 'Don\'t Rollback'})
+ ]);
+ });
+ });
+
+ test('getAlacartFormControls instance name control validator shall have the expected regex', () => {
+ const controls:FormControlModel[] = getALaCarteFormControls();
+
+ const instanceNameControl: FormControlModel = <FormControlModel>controls.find(item => item.controlName === FormControlNames.INSTANCE_NAME);
+ const instanceNameValidator: ValidatorModel = instanceNameControl.validations.find(val => val.validatorName === ValidatorOptions.pattern);
+ expect(instanceNameValidator.validatorArg).toEqual(/^[a-zA-Z0-9._-]*$/);
+ });
+
+ function getALaCarteFormControls():FormControlModel[] {
+ const serviceId: string = "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc";
+ const vnfGroupName: string = "groupingservicefortest..ResourceInstanceGroup..0";
+ const vnfGroupStoreKey: string = "groupingservicefortest..ResourceInstanceGroup..0";
+ const controls: FormControlModel[] = service.getAlaCarteFormControls(serviceId, vnfGroupStoreKey, vnfGroupName, []);
+ return controls;
+ }
+});
+
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator.ts b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator.ts
new file mode 100644
index 000000000..e503f4d2a
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator.ts
@@ -0,0 +1,118 @@
+import {Injectable} from "@angular/core";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {NgRedux} from "@angular-redux/store";
+import {BasicControlGenerator} from "../basic.control.generator";
+import {
+ FormControlModel,
+ ValidatorModel,
+ ValidatorOptions
+} from "../../../../models/formControlModels/formControl.model";
+import {LogService} from "../../../../utils/log/log.service";
+import {AppState} from "../../../../store/reducers";
+import {DropdownFormControl} from "../../../../models/formControlModels/dropdownFormControl.model";
+import {FormControlType} from "../../../../models/formControlModels/formControlTypes.enum";
+import {SelectOption} from "../../../../models/selectOption";
+import {VnfGroupModel} from "../../../../models/vnfGroupModel";
+import * as _ from 'lodash';
+import {Observable, of} from "rxjs";
+
+
+export enum FormControlNames {
+ INSTANCE_NAME = 'instanceName',
+ ROLLBACK_ON_FAILURE = 'rollbackOnFailure',
+}
+
+enum InputType {
+ ROLLBACK = "rollbackOnFailure"
+}
+
+@Injectable()
+export class VnfGroupControlGenerator {
+ aaiService: AaiService;
+ constructor(private _basicControlGenerator: BasicControlGenerator,
+ private store: NgRedux<AppState>,
+ private _aaiService: AaiService,
+ private _logService: LogService) {
+ this.aaiService = _aaiService;
+ }
+
+ getVnfGroupInstance = (serviceId: string, vnfGroupStoreKey: string): any => {
+ let vnfGroupInstance = null;
+ if (this.store.getState().service.serviceInstance[serviceId] && _.has(this.store.getState().service.serviceInstance[serviceId].vnfGroups, vnfGroupStoreKey)) {
+ vnfGroupInstance = Object.assign({}, this.store.getState().service.serviceInstance[serviceId].vnfGroups[vnfGroupStoreKey]);
+ }
+ return vnfGroupInstance;
+ };
+
+ getMacroFormControls(serviceId: string, vnfGroupStoreKey: string, vnfGroupName: string, dynamicInputs?: Array<any>): Array<FormControlModel> {
+ vnfGroupStoreKey = _.isNil(vnfGroupStoreKey) ? vnfGroupName : vnfGroupStoreKey;
+
+ if (_.isNil(serviceId) || _.isNil(vnfGroupStoreKey) || _.isNil(vnfGroupName)) {
+ this._logService.error('should provide serviceId, vnfGroupName, vnfGroupStoreKey', serviceId);
+ return [];
+ }
+
+ const vnfGroupInstance = this.getVnfGroupInstance(serviceId, vnfGroupStoreKey);
+ const vnfGroupModel = new VnfGroupModel(this.store.getState().service.serviceHierarchy[serviceId].vnfGroups[vnfGroupName]);
+ let result: FormControlModel[] = [];
+
+ if (!_.isNil(vnfGroupModel)) {
+ result.push(this.getInstanceName(vnfGroupInstance, serviceId, vnfGroupName, vnfGroupModel.isEcompGeneratedNaming));
+ }
+ return result;
+ }
+
+ getAlaCarteFormControls(serviceId: string, vnfGroupStoreKey: string, vnfGroupName: string, dynamicInputs?: any[]): FormControlModel[] {
+ vnfGroupStoreKey = _.isNil(vnfGroupStoreKey) ? vnfGroupName : vnfGroupStoreKey;
+ if (_.isNil(serviceId) || _.isNil(vnfGroupStoreKey) || _.isNil(vnfGroupName)) {
+ this._logService.error('should provide serviceId, vnfGroupName, vnfGroupStoreKey', serviceId);
+ return [];
+ }
+
+ let result: FormControlModel[] = [];
+ const vnfGroupInstance = this.getVnfGroupInstance(serviceId, vnfGroupStoreKey);
+ const vnfGroupModel = new VnfGroupModel(this.store.getState().service.serviceHierarchy[serviceId].vnfGroups[vnfGroupName]);
+
+ if (!_.isNil(vnfGroupModel)) {
+ result.push(this.getInstanceName(vnfGroupInstance, serviceId, vnfGroupName, vnfGroupModel.isEcompGeneratedNaming));
+ result.push(this.getRollbackOnFailureControl(vnfGroupInstance, result));
+ }
+ return result;
+ }
+
+ isInputShouldBeShown = (inputType: any): boolean => {
+ let vnfGroupInputs = [InputType.ROLLBACK];
+ return vnfGroupInputs.indexOf(inputType) > -1;
+ };
+
+ getDefaultInstanceName(instance : any, serviceId : string, vnfGroupName : string) : string {
+ const vnfGroupModel: VnfGroupModel = this.store.getState().service.serviceHierarchy[serviceId].vnfGroups[vnfGroupName];
+ return this._basicControlGenerator.getDefaultInstanceName(instance, vnfGroupModel);
+ }
+
+ getInstanceName(instance : any, serviceId : string, vnfGroupName : string, isEcompGeneratedNaming: boolean): FormControlModel {
+ const vnfGroupModel : VnfGroupModel = this.store.getState().service.serviceHierarchy[serviceId].vnfGroups[vnfGroupName];
+ return this._basicControlGenerator.getInstanceNameController(instance, serviceId, isEcompGeneratedNaming, vnfGroupModel);
+ }
+
+ getRollbackOnFailureControl = (instance: any, controls: FormControlModel[]): DropdownFormControl => {
+ return new DropdownFormControl({
+ type: FormControlType.DROPDOWN,
+ controlName: FormControlNames.ROLLBACK_ON_FAILURE,
+ displayName: 'Rollback on failure',
+ dataTestId: 'rollback',
+ placeHolder: 'Rollback on failure',
+ isDisabled: false,
+ validations: [new ValidatorModel(ValidatorOptions.required, 'is required')],
+ value: instance ? instance.rollbackOnFailure : 'true',
+ onInit: this._basicControlGenerator.getSubscribeInitResult.bind(null, this.getRollBackOnFailureOptions)
+ })
+ };
+
+ getRollBackOnFailureOptions = (): Observable<SelectOption[]> => {
+ return of([
+ new SelectOption({id: 'true', name: 'Rollback'}),
+ new SelectOption({id: 'false', name: 'Don\'t Rollback'})
+ ]);
+ };
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/generic-form.component.html b/vid-webpack-master/src/app/shared/components/genericForm/generic-form.component.html
new file mode 100644
index 000000000..d4c5118b3
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/generic-form.component.html
@@ -0,0 +1,29 @@
+<div id="form-details" *ngIf="formControls != null && dynamicFormGroup != null">
+ <form [formGroup]="dynamicFormGroup">
+ <div *ngFor="let formControl of formControls" class="form-conrtols">
+ <div [ngSwitch]="formControl.type">
+ <form-control-input *ngSwitchCase="'INPUT'" [data]="formControl" [form]="dynamicFormGroup"></form-control-input>
+ <checkbox-form-control *ngSwitchCase="'CHECKBOX'" [data]="formControl" [form]="dynamicFormGroup" ></checkbox-form-control>
+ <dropdown-form-control *ngSwitchCase="'DROPDOWN'" [data]="formControl" [form]="dynamicFormGroup" ></dropdown-form-control>
+ <file-form-control *ngSwitchCase="'FILE'" [data]="formControl" [form]="dynamicFormGroup"></file-form-control>
+ </div>
+ <div *ngIf="dynamicFormGroup != null && formControl != null && dynamicFormGroup.controls[formControl.controlName]?.errors">
+ <div *ngFor="let validatorModel of formControl?.validations">
+ <form-control-error *ngIf="validatorModel?.validatorName != 'required' && dynamicFormGroup.controls[formControl?.controlName]?.errors[validatorModel?.validatorName]" [message]="validatorModel?.errorMsg"></form-control-error>
+ </div>
+ </div>
+ </div>
+ <div *ngFor="let dynamicInputs of dynamicInputs" class="form-conrtols">
+ <div [ngSwitch]="dynamicInputs.type">
+ <form-control-input *ngSwitchCase="'INPUT'" [data]="dynamicInputs" [form]="dynamicFormGroup.controls['instanceParams']"></form-control-input>
+ <checkbox-form-control *ngSwitchCase="'CHECKBOX'" [data]="dynamicInputs" [form]="dynamicFormGroup.controls['instanceParams']" ></checkbox-form-control>
+ <dropdown-form-control *ngSwitchCase="'DROPDOWN'" [data]="dynamicInputs" [form]="dynamicFormGroup.controls['instanceParams']" ></dropdown-form-control>
+ </div>
+ <div *ngIf="dynamicFormGroup?.controls['instanceParams'] != null && dynamicInputs != null && dynamicFormGroup.controls['instanceParams'].controls[dynamicInputs.controlName]?.errors">
+ <div *ngFor="let validatorModel of dynamicInputs?.validations">
+ <form-control-error *ngIf="validatorModel?.validatorName != 'required' && dynamicFormGroup.controls['instanceParams'].controls[dynamicInputs?.controlName]?.errors[validatorModel?.validatorName]" [message]="validatorModel?.errorMsg"></form-control-error>
+ </div>
+ </div>
+ </div>
+ </form>
+</div>
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/generic-form.component.scss b/vid-webpack-master/src/app/shared/components/genericForm/generic-form.component.scss
new file mode 100644
index 000000000..b8f26d8b3
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/generic-form.component.scss
@@ -0,0 +1,68 @@
+#form-details {
+ position: relative;
+
+ #notification-area {
+ color: #959595;
+ font-size: 12px;
+ position: absolute;
+ top: 3px;
+ left: 30px;
+ }
+
+ height: 100%;
+ overflow: auto;
+ padding: 30px;
+
+ /deep/ {
+ .form-control {
+ border-radius: 2px;
+ box-shadow: none;
+ border-color: #D2D2D2;
+ }
+
+ label {
+ font-family: OpenSans-Semibold;
+ font-size: 12px;
+ }
+
+ select {
+ @extend .form-control;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background: url('../../../../assets/img/chevron.svg') 0 0 no-repeat;
+ background-size: 24px;
+ background-position-x: right;
+ background-position-y: center;
+ font-family: OpenSans-Italic;
+ font-size: 14px;
+ color: #959595;
+ height: 38px;
+ }
+
+ input:not([type='checkbox']) {
+ @extend .form-control;
+ height: 38px;
+ }
+
+ .form-control[disabled], fieldset[disabled] .form-control {
+ opacity: 0.5;
+ }
+ .input-text {
+ border: 1px solid #D2D2D2;
+ border-radius: 2px;
+ color: black;
+ }
+
+ .form-conrtols {
+ margin-top: 20px;
+ &:first-child{
+ margin-top: 0px;
+ }
+ }
+ }
+
+ .checkbox-label {
+ font-family: OpenSans-Regular;
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/generic-form.component.ts b/vid-webpack-master/src/app/shared/components/genericForm/generic-form.component.ts
new file mode 100644
index 000000000..6febd66d6
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/generic-form.component.ts
@@ -0,0 +1,45 @@
+import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';
+import {GenericFormService} from "./generic-form.service";
+import {FormControlModel} from "../../models/formControlModels/formControl.model";
+import {FormGroup} from "@angular/forms";
+import * as _ from 'lodash';
+
+@Component({
+ selector : 'generic-form',
+ templateUrl : './generic-form.component.html',
+ styleUrls : ['./generic-form.component.scss']
+})
+
+export class GenericFormComponent implements OnChanges{
+ genericFormService: GenericFormService = null;
+ dynamicFormGroup: FormGroup = null;
+
+ @Input() formControls : FormControlModel[] = null;
+ @Input() dynamicInputs : FormControlModel[] = null;
+ @Input() isValidForm : boolean = false;
+ @Output() onFormChanged = new EventEmitter();
+
+ constructor(private _genericFormService: GenericFormService){
+ this.genericFormService = _genericFormService;
+ }
+
+ ngOnChanges(changes: SimpleChanges): void {
+ if (changes["formControls"] !== undefined && changes["formControls"].currentValue !== changes["formControls"].previousValue) {
+ this.dynamicFormGroup = this._genericFormService.generateFormBuilder(this.formControls, this.dynamicInputs);
+ this.onFormChanged.next(this.dynamicFormGroup);
+ this.dynamicFormGroup.valueChanges.subscribe(() => {
+ this.onFormChanged.next(this.dynamicFormGroup);
+ })
+ }
+ }
+
+ hasApiError(controlName: string, data: any[], form: FormGroup) {
+ if (!_.isNil(data)) {
+ if (!form.controls[controlName].disabled && data.length === 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
+
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/generic-form.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericForm/generic-form.service.spec.ts
new file mode 100644
index 000000000..7a993cfa1
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/generic-form.service.spec.ts
@@ -0,0 +1,140 @@
+
+import { TestBed, getTestBed} from '@angular/core/testing';
+import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
+import {GenericFormService} from './generic-form.service';
+import {FormBuilder, FormGroup} from '@angular/forms';
+import {FormControlModel, ValidatorModel, ValidatorOptions} from "../../models/formControlModels/formControl.model";
+import {FormControlType} from "../../models/formControlModels/formControlTypes.enum";
+
+describe('Generic Form Service', () => {
+
+ let injector;
+ let service: GenericFormService;
+ let httpMock: HttpTestingController;
+ let form : FormGroup;
+ let fb : FormBuilder;
+
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ imports: [HttpClientTestingModule],
+ providers: [GenericFormService, FormBuilder]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ service = injector.get(GenericFormService);
+ httpMock = injector.get(HttpTestingController);
+ fb = injector.get(FormBuilder);
+
+ })().then(done).catch(done.fail));
+
+ let controls : FormControlModel[] = [
+ generateFormControlModel(FormControlType.INPUT, 'InputControlName','Test Value', false, generateFormValidators([ValidatorOptions.required])),
+ generateFormControlModel(FormControlType.INPUT, 'InputControlName_1', 'Test InputControlName_1', true, generateFormValidators([ValidatorOptions.required])),
+ generateFormControlModel(FormControlType.INPUT, 'InputControlName_2', 'Test InputControlName_2', false, [generateFormValidatorWithArg(ValidatorOptions.minLength, 4)]),
+ generateFormControlModel(FormControlType.INPUT, 'InputControlName_3', 'Exact 14 chars', false, [generateFormValidatorWithArg(ValidatorOptions.maxLength, 14)]),
+ generateFormControlModel(FormControlType.INPUT, 'InputControlName_4', 'Test pattern', false, [generateFormValidatorWithArg(ValidatorOptions.pattern, '^[a-zA-Z]+$')])
+ ];
+
+ describe('generateFormBuilder', ()=> {
+ test('validators should work correct', () => {
+ const controlName: string = 'InputControlName';
+ let form : FormGroup = service.generateFormBuilder(controls, []);
+
+ expect(form instanceof FormGroup).toBeTruthy();
+ expect(form.controls[controlName]).toBeDefined();
+ expect(form.controls[controlName].value).toEqual('Test Value');
+ expect(form.controls[controlName].disabled).toBeFalsy();
+ expect(form.controls[controlName].valid).toBeTruthy();
+ expect(form.controls[controlName].errors).toBeNull();
+
+ form.controls[controlName].setValue('');
+ expect(form.controls[controlName].valid).toBeFalsy();
+ expect(form.controls[controlName].errors.required).toBeTruthy();
+ });
+
+ test('validators should prevent the value to appear', () => {
+ const controlName: string = 'InputControlName_1';
+ let form : FormGroup = service.generateFormBuilder(controls, []);
+
+ expect(form instanceof FormGroup).toBeTruthy();
+ expect(form.controls[controlName]).toBeDefined();
+ expect(form.controls[controlName].disabled).toBeTruthy();
+ expect(form.controls[controlName].value).toEqual('Test InputControlName_1');
+ expect(form.controls[controlName].errors).toBeNull();
+ });
+
+ test('validators with minimum length args', () => {
+ const controlName: string = 'InputControlName_2';
+ let form : FormGroup = service.generateFormBuilder(controls, []);
+
+ expect(form instanceof FormGroup).toBeTruthy();
+ expect(form.controls[controlName]).toBeDefined();
+ expect(form.controls[controlName].disabled).toBeFalsy();
+ expect(form.controls[controlName].value).toEqual('Test InputControlName_2');
+ expect(form.controls[controlName].errors).toBeNull();
+
+ form.controls[controlName].setValue('123'); // less then 4 characters. -> error
+ expect(form.controls[controlName].errors.minlength).toBeDefined();
+ form.controls[controlName].setValue('1234');
+ expect(form.controls[controlName].errors).toBeNull();
+ });
+
+ test('validators with maximum length args', () => {
+ const controlName: string = 'InputControlName_3';
+ let form : FormGroup = service.generateFormBuilder(controls, []);
+
+ expect(form instanceof FormGroup).toBeTruthy();
+ expect(form.controls[controlName]).toBeDefined();
+ expect(form.controls[controlName].disabled).toBeFalsy();
+ expect(form.controls[controlName].value).toEqual('Exact 14 chars');
+ expect(form.controls[controlName].errors).toBeNull();
+
+ form.controls[controlName].setValue('More than max length'); // more than max characters. -> error
+ expect(form.controls[controlName].errors.maxlength).toBeDefined();
+ form.controls[controlName].setValue('Exact 14 chars');
+ expect(form.controls[controlName].errors).toBeNull();
+ });
+
+ test('pattern validator letters only', () => {
+ const controlName: string = 'InputControlName_4';
+ let form : FormGroup = service.generateFormBuilder(controls, []);
+
+
+ expect(form.controls[controlName].errors.pattern).toBeDefined();
+ form.controls[controlName].setValue('AAAAAAAA');
+ expect(form.controls[controlName].errors).toBeNull();
+ });
+ });
+
+
+
+ function generateFormValidators(validatorsNames :ValidatorOptions[]){
+ let validators : ValidatorModel[] = [];
+ for(let validatorName of validatorsNames){
+ validators.push(new ValidatorModel(validatorName, 'error ' + validatorName));
+ }
+ return validators;
+ }
+
+ function generateFormValidatorWithArg(validatorName :ValidatorOptions, arg : any){
+ return new ValidatorModel(validatorName, 'error ' + validatorName, arg);
+ }
+
+ function generateFormControlModel(type : FormControlType,
+ controlName: string,
+ value: any,
+ isDisabled: boolean,
+ validations: ValidatorModel[]){
+ let data : any = {
+ type : type,
+ isDisabled : isDisabled,
+ validations : validations,
+ value : value,
+ controlName :controlName
+ };
+
+ return new FormControlModel(data);
+ }
+});
diff --git a/vid-webpack-master/src/app/shared/components/genericForm/generic-form.service.ts b/vid-webpack-master/src/app/shared/components/genericForm/generic-form.service.ts
new file mode 100644
index 000000000..15089cafe
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericForm/generic-form.service.ts
@@ -0,0 +1,54 @@
+import {Injectable} from '@angular/core';
+import {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';
+import {FormControlModel} from "../../models/formControlModels/formControl.model";
+import * as _ from 'lodash';
+
+@Injectable()
+export class GenericFormService {
+ constructor(private _formBuilder: FormBuilder){}
+
+ generateFormBuilder(controls : FormControlModel[], dynamicInputs : FormControlModel[]) : FormGroup {
+ let controlsList = {};
+ if(!_.isNil(controls)){
+ for(let control of controls){
+ controlsList[control.controlName] = new FormControl(
+ {
+ value: _.isNil(control.value) ? null :control.value,
+ disabled: control.isDisabled
+ }, Validators.compose(control.validations.map(item => item.validator)));
+ }
+ }
+
+ if(!_.isNil(dynamicInputs)){
+ let dynamicControlsList = {};
+ if(!_.isNil(dynamicInputs)){
+ for(let control of dynamicInputs){
+ dynamicControlsList[control.controlName] = new FormControl(
+ {
+ value: control.value ? control.value : null,
+ disabled: control.isDisabled
+ }, Validators.compose(control.validations.map(item => item.validator)));
+ }
+ }
+ controlsList['instanceParams'] = this._formBuilder.group(dynamicControlsList);
+ }
+
+
+ return this._formBuilder.group(controlsList);
+ }
+
+ shouldDisplayValidationError(form: FormGroup, controlName : string): boolean{
+ if(!_.isNil(form) && !_.isNil(form.controls[controlName])){
+ if(!form.controls[controlName].touched){
+ return false;
+ } else if(form.controls[controlName].disabled) {
+ return false
+ }else if(_.isNil(form.controls[controlName].errors)){
+ return false;
+ }else {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.component.html b/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.component.html
new file mode 100644
index 000000000..57064f658
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.component.html
@@ -0,0 +1,70 @@
+<div id="instance-popup" class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button"
+ class="close"
+ (click)="formPopupDetails?.onCancel(formPopupDetails.that,dynamicForm)" >&times;
+ </button>
+ <span [attr.data-tests-id]="'create-modal-title'"
+ class="modal-title">{{formPopupDetails?.title}}
+ </span>
+ </div>
+ <div class="modal-body popup-content">
+
+ <div class="header-left">
+ <div>MODEL: <span>"{{formPopupDetails?.leftSubTitle}}"</span></div>
+ </div>
+
+ <div class="header-right">
+ {{formPopupDetails?.rightSubTitle}}
+ </div>
+
+
+ <label class="quantity-label" *ngIf="formPopupDetails?.UUIDData['type'] == 'service'">Qty:</label>
+ <div class="quantity" *ngIf="formPopupDetails?.UUIDData['type'] == 'service'">
+ <select [disabled]="formPopupDetails?.UUIDData['isMacro'] !== true"
+ class="quantity-select"
+ [(ngModel)]="formPopupDetails.UUIDData['bulkSize']"
+ name="quantity"
+ id="quantity-select"
+ required>
+ <option *ngFor="let qty of quantityOptions" [value]="qty">{{qty}}</option>
+ </select>
+ </div>
+
+ <div class="model-information">
+ <model-information [modelInformationItems]="formPopupDetails?.modelInformationItems"></model-information>
+ </div>
+
+ <div class="instance-form">
+ <div style="position: relative;height: 100%;overflow: auto;">
+ <label id="notification-area" *ngIf="shouldShowNotification() == true" style="color: #959595;font-size: 12px;left: 30px;margin-left: 30px;">Data entered will apply to all service instances</label>
+ <generic-form [formControls]="formPopupDetails?.formControlList"
+ [dynamicInputs]="formPopupDetails?.dynamicInputsControlList"
+ (onFormChanged)="dynamicForm = $event" ></generic-form>
+ </div>
+ </div>
+
+ </div>
+ <div class="modal-footer row" style="padding: 0">
+ <div class="col-md-6">
+ <div *ngIf="hasSomeError(formPopupDetails, dynamicForm) == true">
+ <form-general-error [message]="errorMsg"></form-general-error>
+ </div>
+ </div>
+ <div class="col-md-6" style="padding: 15px;padding-right: 35px;">
+ <button
+ [attr.data-tests-id]="'cancelButton'"
+ type="button" class="btn btn-default cancel"
+ (click)="formPopupDetails.onCancel(formPopupDetails.that, dynamicForm)"><span>Cancel</span></button>
+
+ <input type="submit"
+ value="Set"
+ data-tests-id="form-set"
+ class="btn btn-success submit"
+ [disabled]="!dynamicForm?.valid"
+ (click)="formPopupDetails.onSubmit(formPopupDetails.that, dynamicForm, servicesQty)">
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.component.scss b/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.component.scss
new file mode 100644
index 000000000..5057b44a5
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.component.scss
@@ -0,0 +1,182 @@
+$grid-border: 1px #d2d2d2 solid;
+
+#instance-popup {
+ color: #191919;
+
+ .left-panel {
+ background: #f2f2f2;
+ border-right: $grid-border;
+ }
+
+ .header-common {
+ height: 100%;
+ align-items: center;
+ display: flex;
+ font-family: OpenSans-Semibold;
+ font-size: 12px;
+ }
+
+ .header-text {
+ padding-left: 30px;
+ @extend .header-common;
+ }
+
+ .header-left {
+ grid-area: header-left;
+ @extend .header-text;
+ @extend .left-panel;
+ border-bottom: $grid-border;
+
+ span {
+ font-family: OpenSans-Regular;
+ font-size: 14px;
+ };
+ }
+
+ .header-right {
+ grid-area: header-right;
+
+ @extend .header-text;
+ }
+
+ .quantity-label {
+ grid-area: quantity-label;
+ @extend .header-common;
+ height: 100%;
+ font-family: OpenSans-Regular;
+ }
+ .quantity {
+ grid-area: quantity;
+ border-left: $grid-border;
+ border-top-style: none;
+ font-family: OpenSans-Semibold;
+ text-align: start;
+ text-indent: 10px;
+ .quantity-select {
+ width: 78px;
+ height: 100%;
+ border: 0;
+ background: white;
+ outline: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background: url('../../../../assets/img/chevron.svg') 0 0 no-repeat;
+ background-size: 24px;
+ background-position-x: right;
+ background-position-y: center;
+ }
+ }
+
+ input[type="number"]:hover::-webkit-inner-spin-button {
+ height: 20px;
+ }
+
+ .model-information {
+ grid-area: model-information;
+ border-top: $grid-border;
+ padding: 30px;
+ overflow: auto;
+ @extend .left-panel;
+ }
+
+ .instance-form {
+ border-top: $grid-border;
+ grid-area: instance-form;
+ }
+
+ .popup-content {
+ display: grid;
+ grid-template-columns: 400px auto 30px 93px;
+ grid-template-rows: 50px calc(100vh - 180px);
+ grid-template-areas:
+ "header-left header-right quantity-label quantity"
+ "model-information instance-form instance-form instance-form";
+ padding: 0;
+ }
+}
+
+.modal {
+ background-color: #191919;
+ opacity: 0.8;
+}
+
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: 0;
+}
+@media (min-width: 1150px) {
+ .popup-content {
+ grid-template-rows: 30px 680px;
+ }
+}
+
+.modal-content {
+ border-radius: 0;
+ box-shadow: none;
+ border: none;
+}
+
+.modal-footer {
+ .cancel {
+ width: 120px;
+ height: 36px;
+ background: #ffffff;
+ border: 1px solid #009fdb;
+ border-radius: 2px;
+ span {
+ font-family: OpenSans-Regular;
+ font-size: 14px;
+ color: #009fdb;
+ line-height: 16px;
+ }
+ }
+
+ .submit {
+ width: 120px;
+ height: 36px;
+ background: #009fdb;
+ border-radius: 2px;
+ border-color: #009fdb;
+ span {
+ font-family: OpenSans-Regular;
+ font-size: 14px;
+ color: #FFFFFF;
+ line-height: 16px;
+ }
+ }
+}
+
+.modal-header {
+ background-color: #009fdb;
+
+ padding-bottom: 13px;
+ padding-top: 13px;
+ padding-left: 29px;
+ padding-right: 21px;
+
+ .close {
+ font-size: 32px;
+ font-weight: 200;
+ color: #d8d8d8;
+ text-shadow: none;
+ filter: none;
+ opacity: 1;
+ }
+
+ .modal-title {
+ font-family: OpenSans-Regular;
+ font-size: 24px;
+ color: #fff;
+ line-height: 34px;
+ }
+}
+//
+//@media (min-width: 1200px) {
+// .service-model,
+// .service-instance {
+// width: 1050px;
+// margin: 30px auto;
+// }
+//}
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.component.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.component.ts
new file mode 100644
index 000000000..2b6417e33
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.component.ts
@@ -0,0 +1,145 @@
+import {Component, OnChanges, OnDestroy, OnInit} from '@angular/core';
+import {FormPopupDetails} from "../../models/formControlModels/formPopupDetails.model";
+import {DialogComponent, DialogService} from "ng2-bootstrap-modal";
+import {FormGroup} from "@angular/forms";
+import {IframeService} from "../../utils/iframe.service";
+import {ITreeNode} from "angular-tree-component/dist/defs/api";
+import * as _ from "lodash";
+import {NgRedux} from "@angular-redux/store";
+import {AppState} from "../../store/reducers";
+import {ServicePopupService} from "./genericFormServices/service/service.popup.service";
+import {ActivatedRoute} from "@angular/router";
+import {AaiService} from "../../services/aaiService/aai.service";
+import {GenericFormPopupService} from "./generic-form-popup.service";
+import {FormControlModel} from "../../models/formControlModels/formControl.model";
+import {FormGeneralErrorsService} from "../formGeneralErrors/formGeneralErrors.service";
+
+
+export interface PopupModel {
+ type : PopupType;
+ uuidData : UUIDData;
+ node : ITreeNode;
+ isUpdateMode : boolean;
+}
+
+export enum PopupType{
+ SERVICE = 'service',
+ VNF = 'vnf',
+ NETWORK = 'network',
+ VF_MODULE = 'vf_module',
+ VNF_GROUP = 'vnf_group'
+}
+
+
+@Component({
+ selector : 'generic-form-popup',
+ templateUrl : 'generic-form-popup.component.html',
+ styleUrls : ['generic-form-popup.component.scss']
+})
+
+export class GenericFormPopupComponent extends DialogComponent<PopupModel, boolean> implements OnInit, OnDestroy{
+ formPopupDetails : FormPopupDetails = null;
+ dynamicForm : FormGroup;
+ type : PopupType;
+ uuidData : UUIDData;
+ isUpdateMode : boolean;
+ node : ITreeNode = null;
+ hasGeneralApiError : boolean = false;
+ parentElementClassName = 'content';
+ errorMsg = 'Page contains errors. Please see details next to the relevant fields.';
+
+ servicesQty = 1;
+ quantityOptions = _.range(1, 51)
+ constructor(dialogService: DialogService ,
+ private _iframeService : IframeService,
+ private _store: NgRedux<AppState>,
+ private _servicePopupService : ServicePopupService,
+ private _activatedRoute : ActivatedRoute,
+ private _aaiService : AaiService,
+ private _route: ActivatedRoute,
+ private _genericFormPopupService : GenericFormPopupService){
+ super(dialogService);
+ }
+
+ closeDialog(that) : void{
+ this._iframeService.removeClassCloseModal(that.parentElementClassName);
+ this.dialogService.removeDialog(this);
+ setTimeout(() => {
+ window.parent.postMessage("closeIframe", "*");
+ }, 15);
+ }
+
+ shouldShowNotification() : boolean {
+ return this.formPopupDetails && this.formPopupDetails.UUIDData['bulkSize'] > 1
+ }
+
+ ngOnInit(): void {
+ this._route
+ .queryParams
+ .subscribe(params => {
+ console.log('changed');
+ if(params['serviceModelId'] && params['isCreate']=="true"){
+ this._genericFormPopupService.initReduxOnCreateNewService().then((serviceModelId : string)=>{
+ this.uuidData = <any>{
+ bulkSize : 1,
+ isMacro : this._store.getState().service.serviceHierarchy[serviceModelId].service.instantiationType === 'Macro',
+ type : PopupType.SERVICE,
+ serviceId: serviceModelId,
+ popupService: this._servicePopupService,
+ };
+
+ this.uuidData.popupService.closeDialogEvent.subscribe((that)=>{
+ this.closeDialog(that);
+ });
+
+ this.formPopupDetails = this.uuidData.popupService.getGenericFormPopupDetails(
+ this.uuidData['serviceId'],
+ null,
+ null,
+ this.node,
+ this.uuidData,
+ false
+ );
+ });
+ }
+ });
+
+ FormGeneralErrorsService.checkForErrorTrigger.subscribe(()=>{
+ this.hasSomeError(this.formPopupDetails, this.dynamicForm);
+ });
+
+ if(!_.isNil(this.uuidData)){
+ this.uuidData.popupService.closeDialogEvent.subscribe((that)=>{
+ this.closeDialog(that);
+ });
+
+ this.uuidData['isMacro'] = this._store.getState().service.serviceHierarchy[this.uuidData['serviceId']].service.instantiationType === 'Macro';
+ this.formPopupDetails = this._genericFormPopupService.getGenericFormDetails(this.uuidData, this.node, this.isUpdateMode);
+ }
+ }
+
+ hasSomeError(formPopupDetails : FormPopupDetails, form : FormGroup) : boolean{
+ if(_.isNil(formPopupDetails)) return false;
+ else {
+ for(let controlName in form.controls){
+ if(form.controls[controlName].errors){
+ let error: string[] = Object.keys(form.controls[controlName].errors);
+ if(error.length === 1 && error[0] === 'required'){
+ continue;
+ }else if(Object.keys(form.controls[controlName].errors).length > 0 ){
+ return true;
+ }
+ }
+ }
+ }
+
+ return formPopupDetails.formControlList.filter((item : FormControlModel) =>item.type === 'DROPDOWN' && item['hasEmptyOptions']).length > 0
+ }
+}
+
+
+export class UUIDData extends Object{
+ type : string;
+ popupService : any;
+}
+
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.service.spec.ts
new file mode 100644
index 000000000..02e545569
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.service.spec.ts
@@ -0,0 +1,1938 @@
+import {getTestBed, TestBed} from '@angular/core/testing';
+import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
+import {FormBuilder, FormGroup} from '@angular/forms';
+import {GenericFormPopupService} from "./generic-form-popup.service";
+import {IframeService} from "../../utils/iframe.service";
+import {NgRedux} from "@angular-redux/store";
+import {ServicePopupService} from "./genericFormServices/service/service.popup.service";
+import {BasicControlGenerator} from "../genericForm/formControlsServices/basic.control.generator";
+import {AaiService} from "../../services/aaiService/aai.service";
+import {ServiceControlGenerator} from "../genericForm/formControlsServices/service.control.generator";
+import {GenericFormService} from "../genericForm/generic-form.service";
+import {LogService} from "../../utils/log/log.service";
+import {DefaultDataGeneratorService} from "../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {BasicPopupService} from "./genericFormServices/basic.popup.service";
+import {ActivatedRoute} from "@angular/router";
+import {UUIDData} from "./generic-form-popup.component";
+import {ITreeNode} from "angular-tree-component/dist/defs/api";
+import {NetworkPopupService} from "./genericFormServices/network/network.popup.service";
+import {NetworkControlGenerator} from "../genericForm/formControlsServices/networkGenerator/network.control.generator";
+import {VfModulePopuopService} from "./genericFormServices/vfModule/vfModule.popuop.service";
+import {VfModuleControlGenerator} from "../genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
+import {FeatureFlagsService} from "../../services/featureFlag/feature-flags.service";
+
+class MockAppStore<T>{
+ getState() {
+ return {
+ "global": {
+ "name": null,
+ "flags": {
+ "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
+ "FLAG_SHOW_ASSIGNMENTS": true,
+ "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
+ "FLAG_UNASSIGN_SERVICE": true,
+ "FLAG_SHOW_VERIFY_SERVICE": false,
+ "FLAG_COLLECTION_RESOURCE_SUPPORT": true,
+ "FLAG_DUPLICATE_VNF": true,
+ "FLAG_SERVICE_MODEL_CACHE": true,
+ "CREATE_INSTANCE_TEST": false,
+ "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
+ "FLAG_ASYNC_INSTANTIATION": true,
+ "FLAG_ASYNC_JOBS": true,
+ "EMPTY_DRAWING_BOARD_TEST": false,
+ "FLAG_ADD_MSO_TESTAPI_FIELD": true
+ },
+ "type": "[FLAGS] Update"
+ },
+ "service": {
+ "serviceHierarchy": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "service": {
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "name": "ComplexService",
+ "version": "1.0",
+ "toscaModelURL": null,
+ "category": "Emanuel",
+ "serviceType": "",
+ "serviceRole": "",
+ "description": "ComplexService",
+ "serviceEcompNaming": "false",
+ "instantiationType": "Macro",
+ "inputs": {}
+ },
+ "vnfs": {
+ "VF_vMee 0": {
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "invariantUuid": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "description": "VSP_vMee",
+ "name": "VF_vMee",
+ "version": "2.0",
+ "customizationUuid": "91415b44-753d-494c-926a-456a9172bbb9",
+ "inputs": {},
+ "commands": {},
+ "serviceEcompNaming" : "true",
+ "properties": {
+ "ecomp_generated_naming": "false",
+ "max_instances": 10,
+ "min_instances": 1,
+ "gpb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_start_port": "0",
+ "sctp-a-ipv6-egress_rule_application": "any",
+ "Internal2_allow_transit": "true",
+ "sctp-b-IPv6_ethertype": "IPv6",
+ "sctp-a-egress_rule_application": "any",
+ "sctp-b-ingress_action": "pass",
+ "sctp-b-ingress_rule_protocol": "icmp",
+ "ncb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-ingress-src_start_port": "0.0",
+ "ncb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "fsb_volume_size_0": "320.0",
+ "sctp-b-egress_src_addresses": "local",
+ "sctp-a-ipv6-ingress_ethertype": "IPv4",
+ "sctp-a-ipv6-ingress-dst_start_port": "0",
+ "sctp-b-ipv6-ingress_rule_application": "any",
+ "domain_name": "default-domain",
+ "sctp-a-ingress_rule_protocol": "icmp",
+ "sctp-b-egress-src_start_port": "0.0",
+ "sctp-a-egress_src_addresses": "local",
+ "sctp-b-display_name": "epc-sctp-b-ipv4v6-sec-group",
+ "sctp-a-egress-src_start_port": "0.0",
+ "sctp-a-ingress_ethertype": "IPv4",
+ "sctp-b-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-dst_subnet_prefix_v6": "::",
+ "nf_naming": "{ecomp_generated_naming=true}",
+ "sctp-a-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-b-egress-dst_start_port": "0.0",
+ "ncb_flavor_name": "nv.c20r64d1",
+ "gpb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix_len": "0.0",
+ "Internal2_net_cidr": "10.0.0.10",
+ "sctp-a-ingress-dst_start_port": "0.0",
+ "sctp-a-egress-dst_start_port": "0.0",
+ "fsb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-egress_ethertype": "IPv4",
+ "vlc_st_service_mode": "in-network-nat",
+ "sctp-a-ipv6-egress_ethertype": "IPv4",
+ "sctp-a-egress-src_end_port": "65535.0",
+ "sctp-b-ipv6-egress_rule_application": "any",
+ "sctp-b-egress_action": "pass",
+ "sctp-a-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-b-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-b-name": "epc-sctp-b-ipv4v6-sec-group",
+ "fsb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ipv6-ingress-src_start_port": "0.0",
+ "sctp-b-ipv6-egress_ethertype": "IPv4",
+ "Internal1_net_cidr": "10.0.0.10",
+ "sctp-a-egress_dst_subnet_prefix": "0.0.0.0",
+ "fsb_flavor_name": "nv.c20r64d1",
+ "sctp_rule_protocol": "132",
+ "sctp-b-ipv6-ingress_src_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_rule_application": "any",
+ "sctp-a-IPv6_ethertype": "IPv6",
+ "vlc2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_virtualization_type": "virtual-machine",
+ "sctp-b-ingress-dst_start_port": "0.0",
+ "sctp-b-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-a-display_name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-b-ingress_rule_application": "any",
+ "int2_sec_group_name": "int2-sec-group",
+ "vlc_flavor_name": "nd.c16r64d1",
+ "sctp-b-ipv6-egress_src_addresses": "local",
+ "vlc_st_interface_type_int1": "other1",
+ "sctp-b-egress-src_end_port": "65535.0",
+ "sctp-a-ipv6-egress-dst_start_port": "0",
+ "vlc_st_interface_type_int2": "other2",
+ "sctp-a-ipv6-egress_rule_protocol": "any",
+ "Internal2_shared": "false",
+ "sctp-a-ipv6-egress_dst_subnet_prefix_len": "0",
+ "Internal2_rpf": "disable",
+ "vlc1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_end_port": "65535",
+ "sctp-a-ipv6-egress_src_addresses": "local",
+ "sctp-a-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-egress_src_end_port": "65535",
+ "Internal1_forwarding_mode": "l2",
+ "Internal2_dhcp": "false",
+ "sctp-a-dst_subnet_prefix_v6": "::",
+ "pxe_image_name": "MME_PXE-Boot_16ACP04_GA.qcow2",
+ "vlc_st_interface_type_gtp": "other0",
+ "ncb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-src_subnet_prefix_v6": "::",
+ "sctp-a-egress_dst_subnet_prefix_len": "0.0",
+ "int1_sec_group_name": "int1-sec-group",
+ "Internal1_dhcp": "false",
+ "sctp-a-ipv6-egress_dst_end_port": "65535",
+ "Internal2_forwarding_mode": "l2",
+ "fsb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix": "0.0.0.0",
+ "Internal1_net_cidr_len": "17",
+ "gpb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-a-ingress_dst_addresses": "local",
+ "sctp-a-egress_action": "pass",
+ "fsb_volume_type_0": "SF-Default-SSD",
+ "ncb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_sctp_a": "left",
+ "vlc_st_interface_type_sctp_b": "right",
+ "sctp-a-src_subnet_prefix_v6": "::",
+ "vlc_st_version": "2",
+ "sctp-b-egress_ethertype": "IPv4",
+ "sctp-a-ingress_rule_application": "any",
+ "gpb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "instance_ip_family_v6": "v6",
+ "sctp-a-ipv6-egress_src_start_port": "0",
+ "sctp-b-ingress-src_start_port": "0.0",
+ "sctp-b-ingress_dst_addresses": "local",
+ "fsb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_oam": "management",
+ "multi_stage_design": "true",
+ "oam_sec_group_name": "oam-sec-group",
+ "Internal2_net_gateway": "10.0.0.10",
+ "sctp-a-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-ipv6-egress-dst_start_port": "0",
+ "Internal1_net_gateway": "10.0.0.10",
+ "sctp-b-ipv6-egress_rule_protocol": "any",
+ "gtp_sec_group_name": "gtp-sec-group",
+ "sctp-a-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-egress_dst_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_dst_addresses": "local",
+ "sctp-a-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-egress_action": "pass",
+ "sctp-a-ipv6-egress_action": "pass",
+ "Internal1_shared": "false",
+ "sctp-b-ipv6-ingress_rule_protocol": "any",
+ "Internal2_net_cidr_len": "17",
+ "sctp-a-name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-a-ingress-src_end_port": "65535.0",
+ "sctp-b-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-a-egress-dst_end_port": "65535.0",
+ "sctp-a-ingress_action": "pass",
+ "sctp-b-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-ingress_action": "pass",
+ "vlc_st_service_type": "firewall",
+ "sctp-b-ipv6-egress_dst_end_port": "65535",
+ "sctp-b-ipv6-ingress-dst_start_port": "0",
+ "vlc2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_availability_zone": "true",
+ "fsb_volume_image_name_1": "MME_FSB2_16ACP04_GA.qcow2",
+ "sctp-b-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_src_subnet_prefix_len": "0",
+ "Internal1_allow_transit": "true",
+ "gpb_flavor_name": "nv.c20r64d1",
+ "availability_zone_max_count": "1",
+ "fsb_volume_image_name_0": "MME_FSB1_16ACP04_GA.qcow2",
+ "sctp-b-ipv6-ingress_dst_addresses": "local",
+ "sctp-b-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-ingress_ethertype": "IPv4",
+ "vlc1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_action": "pass",
+ "Internal1_rpf": "disable",
+ "sctp-b-ingress_ethertype": "IPv4",
+ "sctp-b-egress_rule_application": "any",
+ "sctp-b-ingress-src_end_port": "65535.0",
+ "sctp-a-ipv6-ingress_rule_protocol": "any",
+ "sctp-a-ingress-src_start_port": "0.0",
+ "sctp-b-egress-dst_end_port": "65535.0"
+ },
+ "type": "VF",
+ "modelCustomizationName": "VF_vMee 0",
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "ecomp_generated_naming": "false",
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {
+ "Port Mirroring Configuration By Policy 0": {
+ "uuid": "b4398538-e89d-4f13-b33d-ca323434ba50",
+ "invariantUuid": "6ef0ca40-f366-4897-951f-abd65d25f6f7",
+ "description": "A port mirroring configuration by policy object",
+ "name": "Port Mirroring Configuration By Policy",
+ "version": "27.0",
+ "customizationUuid": "3c3b7b8d-8669-4b3b-8664-61970041fad2",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Configuration",
+ "modelCustomizationName": "Port Mirroring Configuration By Policy 0",
+ "sourceNodes": [],
+ "collectorNodes": null,
+ "configurationByPolicy": false
+ }
+ },
+ "serviceProxies": {},
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ }
+ },
+ "serviceInstance": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "networks": {},
+ "vnfs": {
+ "VF_vMee 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "vf_vmee0..VfVmee..base_vmme..module-0vmvzo": {
+ "isMissingData": false,
+ "sdncPreReload": null,
+ "modelInfo": {
+ "modelType": "VFmodule",
+ "modelInvariantId": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "modelVersionId": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "modelName": "VfVmee..base_vmme..module-0",
+ "modelVersion": "2",
+ "modelCustomizationId": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0"
+ },
+ "instanceParams": [
+ {}
+ ],
+ "trackById": "wmtm6sy2uj"
+ }
+ }
+ },
+ "isMissingData": true,
+ "originalName": "VF_vMee 0",
+ "vnfStoreKey": "VF_vMee 0",
+ "trackById": "p3wk448m5do",
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": null,
+ "tenantId": null,
+ "lineOfBusiness": null,
+ "platformName": null,
+ "modelInfo": {
+ "modelType": "VF",
+ "modelInvariantId": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "VF_vMee",
+ "modelVersion": "2.0",
+ "modelCustomizationName": "VF_vMee 0"
+ }
+ }
+ },
+ "instanceParams": [
+ {}
+ ],
+ "validationCounter": 1,
+ "existingNames": {},
+ "existingVNFCounterMap": {
+ "d6557200-ecf2-4641-8094-5393ae3aae60": 1
+ },
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "aicZoneId": "JAG1",
+ "projectName": "x1",
+ "rollbackOnFailure": "true",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "ComplexService",
+ "modelVersion": "1.0",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44"
+ },
+ "isALaCarte": false,
+ "name": "ComplexService",
+ "version": "1.0",
+ "description": "ComplexService",
+ "category": "Emanuel",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isEcompGeneratedNaming": true,
+ "isMultiStepDesign": false
+ }
+ },
+ "lcpRegionsAndTenants": {
+ "lcpRegionList": [
+ {
+ "id": "JANET25",
+ "name": "JANET25",
+ "isPermitted": true
+ },
+ {
+ "id": "hvf6",
+ "name": "hvf6",
+ "isPermitted": true
+ }
+ ],
+ "lcpRegionsTenantsMap": {
+ "JANET25": [
+ {
+ "id": "092eb9e8e4b7412e8787dd091bc58e86",
+ "name": "USP-SIP-IC-24335-T-01",
+ "isPermitted": true
+ }
+ ],
+ "hvf6": [
+ {
+ "id": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "name": "AIN Web Tool-15-D-testalexandria",
+ "isPermitted": true
+ },
+ {
+ "id": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "name": "AIN Web Tool-15-D-STTest2",
+ "isPermitted": true
+ },
+ {
+ "id": "1178612d2b394be4834ad77f567c0af2",
+ "name": "AIN Web Tool-15-D-SSPtestcustome",
+ "isPermitted": true
+ },
+ {
+ "id": "19c5ade915eb461e8af52fb2fd8cd1f2",
+ "name": "AIN Web Tool-15-D-UncheckedEcopm",
+ "isPermitted": true
+ },
+ {
+ "id": "de007636e25249238447264a988a927b",
+ "name": "AIN Web Tool-15-D-dfsdf",
+ "isPermitted": true
+ },
+ {
+ "id": "62f29b3613634ca6a3065cbe0e020c44",
+ "name": "AIN/SMS-16-D-Multiservices1",
+ "isPermitted": true
+ },
+ {
+ "id": "649289e30d3244e0b48098114d63c2aa",
+ "name": "AIN Web Tool-15-D-SSPST66",
+ "isPermitted": true
+ },
+ {
+ "id": "3f21eeea6c2c486bba31dab816c05a32",
+ "name": "AIN Web Tool-15-D-ASSPST47",
+ "isPermitted": true
+ },
+ {
+ "id": "f60ce21d3ee6427586cff0d22b03b773",
+ "name": "CESAR-100-D-sspjg67246",
+ "isPermitted": true
+ },
+ {
+ "id": "8774659e425f479895ae091bb5d46560",
+ "name": "CESAR-100-D-sspjg68359",
+ "isPermitted": true
+ },
+ {
+ "id": "624eb554b0d147c19ff8885341760481",
+ "name": "AINWebTool-15-D-iftach",
+ "isPermitted": true
+ },
+ {
+ "id": "214f55f5fc414c678059c383b03e4962",
+ "name": "CESAR-100-D-sspjg612401",
+ "isPermitted": true
+ },
+ {
+ "id": "c90666c291664841bb98e4d981ff1db5",
+ "name": "CESAR-100-D-sspjg621340",
+ "isPermitted": true
+ },
+ {
+ "id": "ce5b6bc5c7b348e1bf4b91ac9a174278",
+ "name": "sspjg621351cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "b386b768a3f24c8e953abbe0b3488c02",
+ "name": "AINWebTool-15-D-eteancomp",
+ "isPermitted": true
+ },
+ {
+ "id": "dc6c4dbfd225474e9deaadd34968646c",
+ "name": "AINWebTool-15-T-SPFET",
+ "isPermitted": true
+ },
+ {
+ "id": "02cb5030e9914aa4be120bd9ed1e19eb",
+ "name": "AINWebTool-15-X-eeweww",
+ "isPermitted": true
+ },
+ {
+ "id": "f2f3830e4c984d45bcd00e1a04158a79",
+ "name": "CESAR-100-D-spjg61909",
+ "isPermitted": true
+ },
+ {
+ "id": "05b91bd5137f4929878edd965755c06d",
+ "name": "CESAR-100-D-sspjg621512cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "7002fbe8482d4a989ddf445b1ce336e0",
+ "name": "AINWebTool-15-X-vdr",
+ "isPermitted": true
+ },
+ {
+ "id": "4008522be43741dcb1f5422022a2aa0b",
+ "name": "AINWebTool-15-D-ssasa",
+ "isPermitted": true
+ },
+ {
+ "id": "f44e2e96a1b6476abfda2fa407b00169",
+ "name": "AINWebTool-15-D-PFNPT",
+ "isPermitted": true
+ },
+ {
+ "id": "b69a52bec8a84669a37a1e8b72708be7",
+ "name": "AINWebTool-15-X-vdre",
+ "isPermitted": true
+ },
+ {
+ "id": "fac7d9fd56154caeb9332202dcf2969f",
+ "name": "AINWebTool-15-X-NONPODECOMP",
+ "isPermitted": true
+ },
+ {
+ "id": "2d34d8396e194eb49969fd61ffbff961",
+ "name": "DN5242-Nov16-T5",
+ "isPermitted": true
+ },
+ {
+ "id": "cb42a77ff45b48a8b8deb83bb64acc74",
+ "name": "ro-T11",
+ "isPermitted": true
+ },
+ {
+ "id": "fa45ca53c80b492fa8be5477cd84fc2b",
+ "name": "ro-T112",
+ "isPermitted": true
+ },
+ {
+ "id": "4914ab0ab3a743e58f0eefdacc1dde77",
+ "name": "DN5242-Nov21-T1",
+ "isPermitted": true
+ },
+ {
+ "id": "d0a3e3f2964542259d155a81c41aadc3",
+ "name": "test-hvf6-09",
+ "isPermitted": true
+ },
+ {
+ "id": "cbb99fe4ada84631b7baf046b6fd2044",
+ "name": "DN5242-Nov16-T3",
+ "isPermitted": true
+ }
+ ]
+ }
+ },
+ "productFamilies": [
+ {
+ "id": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "name": "SCOTTIE",
+ "isPermitted": true
+ },
+ {
+ "id": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "name": "IGNACIO",
+ "isPermitted": true
+ },
+ {
+ "id": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "name": "Christie",
+ "isPermitted": true
+ },
+ {
+ "id": "a4f6f2ae-9bf5-4ed7-b904-06b2099c4bd7",
+ "name": "Enhanced Services",
+ "isPermitted": true
+ },
+ {
+ "id": "vTerrance",
+ "name": "vTerrance",
+ "isPermitted": true
+ },
+ {
+ "id": "323d69d9-2efe-4r45-ay0a-89ea7ard4e6f",
+ "name": "vSCP",
+ "isPermitted": true
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": true
+ },
+ {
+ "id": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
+ "name": "BVOIP",
+ "isPermitted": true
+ },
+ {
+ "id": "db171b8f-115c-4992-a2e3-ee04cae357e0",
+ "name": "LINDSEY",
+ "isPermitted": true
+ },
+ {
+ "id": "LRSI-OSPF",
+ "name": "LRSI-OSPF",
+ "isPermitted": true
+ },
+ {
+ "id": "vRosemarie",
+ "name": "HNGATEWAY",
+ "isPermitted": true
+ },
+ {
+ "id": "vHNPaas",
+ "name": "WILKINS",
+ "isPermitted": true
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "b6a3f28c-eebf-494c-a900-055cc7c874ce",
+ "name": "VROUTER",
+ "isPermitted": true
+ },
+ {
+ "id": "Cisneros",
+ "name": "vMuriel",
+ "isPermitted": true
+ },
+ {
+ "id": "0ee8c1bc-7cbd-4b0a-a1ac-e9999255abc1",
+ "name": "CARA Griffin",
+ "isPermitted": true
+ },
+ {
+ "id": "c7611ebe-c324-48f1-8085-94aef0c6ef3d",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ },
+ {
+ "id": "e30755dc-5673-4b6b-9dcf-9abdd96b93d1",
+ "name": "Transport",
+ "isPermitted": true
+ },
+ {
+ "id": "vSalvatore",
+ "name": "vSalvatore",
+ "isPermitted": true
+ },
+ {
+ "id": "d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4",
+ "name": "Josefina",
+ "isPermitted": true
+ },
+ {
+ "id": "vHubbard",
+ "name": "vHubbard",
+ "isPermitted": true
+ },
+ {
+ "id": "12a96a9d-4b4c-4349-a950-fe1159602621",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ }
+ ],
+ "serviceTypes": {
+ "e433710f-9217-458d-a79d-1c7aff376d89": [
+ {
+ "id": "0",
+ "name": "vRichardson",
+ "isPermitted": false
+ },
+ {
+ "id": "1",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "2",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "3",
+ "name": "vJamie",
+ "isPermitted": false
+ },
+ {
+ "id": "4",
+ "name": "vVoiceMail",
+ "isPermitted": false
+ },
+ {
+ "id": "5",
+ "name": "Kennedy",
+ "isPermitted": false
+ },
+ {
+ "id": "6",
+ "name": "vSEGW",
+ "isPermitted": false
+ },
+ {
+ "id": "7",
+ "name": "vVM",
+ "isPermitted": false
+ },
+ {
+ "id": "8",
+ "name": "vOTA",
+ "isPermitted": false
+ },
+ {
+ "id": "9",
+ "name": "vMME",
+ "isPermitted": false
+ },
+ {
+ "id": "10",
+ "name": "vMNS",
+ "isPermitted": false
+ },
+ {
+ "id": "11",
+ "name": "vSCP",
+ "isPermitted": false
+ },
+ {
+ "id": "12",
+ "name": "VPMS",
+ "isPermitted": false
+ },
+ {
+ "id": "13",
+ "name": "vMMSC",
+ "isPermitted": false
+ },
+ {
+ "id": "14",
+ "name": "SSD",
+ "isPermitted": false
+ },
+ {
+ "id": "15",
+ "name": "vMOG",
+ "isPermitted": false
+ },
+ {
+ "id": "16",
+ "name": "LINDSEY",
+ "isPermitted": false
+ },
+ {
+ "id": "17",
+ "name": "JOHANNA_SANTOS",
+ "isPermitted": false
+ },
+ {
+ "id": "18",
+ "name": "vCarroll",
+ "isPermitted": false
+ }
+ ]
+ },
+ "aicZones": [
+ {
+ "id": "NFT1",
+ "name": "NFTJSSSS-NFT1"
+ },
+ {
+ "id": "JAG1",
+ "name": "YUDFJULP-JAG1"
+ },
+ {
+ "id": "YYY1",
+ "name": "UUUAIAAI-YYY1"
+ },
+ {
+ "id": "BAN1",
+ "name": "VSDKYUTP-BAN1"
+ },
+ {
+ "id": "DKJ1",
+ "name": "DKJSJDKA-DKJ1"
+ },
+ {
+ "id": "MCS1",
+ "name": "ASACMAMS-MCS1"
+ },
+ {
+ "id": "UIO1",
+ "name": "uioclli1-UIO1"
+ },
+ {
+ "id": "RAJ1",
+ "name": "YGBIJNLQ-RAJ1"
+ },
+ {
+ "id": "OPA1",
+ "name": "opaclli1-OPA1"
+ },
+ {
+ "id": "SDE1",
+ "name": "ZXCVBNMA-SDE1"
+ },
+ {
+ "id": "VEN2",
+ "name": "FGHJUHIL-VEN2"
+ },
+ {
+ "id": "ORL1",
+ "name": "ORLDFLMA-ORL1"
+ },
+ {
+ "id": "JAD1",
+ "name": "JADECLLI-JAD1"
+ },
+ {
+ "id": "ZXL1",
+ "name": "LWLWCANN-ZXL1"
+ },
+ {
+ "id": "CKL1",
+ "name": "CLKSKCKK-CKL1"
+ },
+ {
+ "id": "SDF1",
+ "name": "sdfclli1-SDF1"
+ },
+ {
+ "id": "RAD1",
+ "name": "RADICAL1-RAD1"
+ },
+ {
+ "id": "KIT1",
+ "name": "BHYJFGLN-KIT1"
+ },
+ {
+ "id": "REL1",
+ "name": "INGERFGT-REL1"
+ },
+ {
+ "id": "JNL1",
+ "name": "CJALSDAC-JNL1"
+ },
+ {
+ "id": "OLK1",
+ "name": "OLKOLKLS-OLK1"
+ },
+ {
+ "id": "CHI1",
+ "name": "CHILLIWE-CHI1"
+ },
+ {
+ "id": "UUU4",
+ "name": "UUUAAAUU-UUU4"
+ },
+ {
+ "id": "TUF1",
+ "name": "TUFCLLI1-TUF1"
+ },
+ {
+ "id": "KJN1",
+ "name": "CKALDKSA-KJN1"
+ },
+ {
+ "id": "SAM1",
+ "name": "SNDGCA64-SAN1"
+ },
+ {
+ "id": "SCK1",
+ "name": "SCKSCKSK-SCK1"
+ },
+ {
+ "id": "HJH1",
+ "name": "AOEEQQQD-HJH1"
+ },
+ {
+ "id": "HGD1",
+ "name": "SDFQWHGD-HGD1"
+ },
+ {
+ "id": "KOR1",
+ "name": "HYFLNBVT-KOR1"
+ },
+ {
+ "id": "ATL43",
+ "name": "AICLOCID-ATL43"
+ },
+ {
+ "id": "ATL54",
+ "name": "AICFTAAI-ATL54"
+ },
+ {
+ "id": "ATL66",
+ "name": "CLLIAAII-ATL66"
+ },
+ {
+ "id": "VEL1",
+ "name": "BNMLKUIK-VEL1"
+ },
+ {
+ "id": "ICC1",
+ "name": "SANJITAT-ICC1"
+ },
+ {
+ "id": "MNT11",
+ "name": "WSXEFBTH-MNT11"
+ },
+ {
+ "id": "DEF2",
+ "name": "WSBHGTYL-DEF2"
+ },
+ {
+ "id": "MAD11",
+ "name": "SDFQWGKL-MAD11"
+ },
+ {
+ "id": "OLG1",
+ "name": "OLHOLHOL-OLG1"
+ },
+ {
+ "id": "GAR1",
+ "name": "NGFVSJKO-GAR1"
+ },
+ {
+ "id": "SAN22",
+ "name": "GNVLSCTL-SAN22"
+ },
+ {
+ "id": "HRG1",
+ "name": "HRGHRGGS-HRG1"
+ },
+ {
+ "id": "JCS1",
+ "name": "JCSJSCJS-JCS1"
+ },
+ {
+ "id": "DHA12",
+ "name": "WSXEDECF-DHA12"
+ },
+ {
+ "id": "HJE1",
+ "name": "AOEEWWWD-HJE1"
+ },
+ {
+ "id": "NCA1",
+ "name": "NCANCANN-NCA1"
+ },
+ {
+ "id": "IOP1",
+ "name": "iopclli1-IOP1"
+ },
+ {
+ "id": "RTY1",
+ "name": "rtyclli1-RTY1"
+ },
+ {
+ "id": "KAP1",
+ "name": "HIOUYTRQ-KAP1"
+ },
+ {
+ "id": "ZEN1",
+ "name": "ZENCLLI1-ZEN1"
+ },
+ {
+ "id": "HKA1",
+ "name": "JAKHLASS-HKA1"
+ },
+ {
+ "id": "CQK1",
+ "name": "CQKSCAKK-CQK1"
+ },
+ {
+ "id": "SAI1",
+ "name": "UBEKQLPD-SAI1"
+ },
+ {
+ "id": "ERT1",
+ "name": "ertclli1-ERT1"
+ },
+ {
+ "id": "IBB1",
+ "name": "PLMKOIJU-IBB1"
+ },
+ {
+ "id": "TIR2",
+ "name": "PLKINHYI-TIR2"
+ },
+ {
+ "id": "HSD1",
+ "name": "CHASKCDS-HSD1"
+ },
+ {
+ "id": "SLF78",
+ "name": "SDCTLFN1-SLF78"
+ },
+ {
+ "id": "SEE78",
+ "name": "SDCTEEE4-SEE78"
+ },
+ {
+ "id": "SAN13",
+ "name": "TOKYJPFA-SAN13"
+ },
+ {
+ "id": "SAA78",
+ "name": "SDCTAAA1-SAA78"
+ },
+ {
+ "id": "LUC1",
+ "name": "ATLDFGYC-LUC1"
+ },
+ {
+ "id": "AMD13",
+ "name": "MEMATLAN-AMD13"
+ },
+ {
+ "id": "TOR1",
+ "name": "TOROONXN-TOR1"
+ },
+ {
+ "id": "QWE1",
+ "name": "QWECLLI1-QWE1"
+ },
+ {
+ "id": "ZOG1",
+ "name": "ZOGASTRO-ZOG1"
+ },
+ {
+ "id": "CAL33",
+ "name": "CALIFORN-CAL33"
+ },
+ {
+ "id": "SHH78",
+ "name": "SDIT1HHH-SHH78"
+ },
+ {
+ "id": "DSA1",
+ "name": "LKJHGFDS-DSA1"
+ },
+ {
+ "id": "CLG1",
+ "name": "CLGRABAD-CLG1"
+ },
+ {
+ "id": "BNA1",
+ "name": "BNARAGBK-BNA1"
+ },
+ {
+ "id": "ATL84",
+ "name": "CANTTCOC-ATL84"
+ },
+ {
+ "id": "APP1",
+ "name": "WBHGTYUI-APP1"
+ },
+ {
+ "id": "RJN1",
+ "name": "RJNRBZAW-RJN1"
+ },
+ {
+ "id": "EHH78",
+ "name": "SDCSHHH5-EHH78"
+ },
+ {
+ "id": "mac10",
+ "name": "PKGTESTF-mac10"
+ },
+ {
+ "id": "SXB78",
+ "name": "SDCTGXB1-SXB78"
+ },
+ {
+ "id": "SAX78",
+ "name": "SDCTAXG1-SAX78"
+ },
+ {
+ "id": "SYD1",
+ "name": "SYDNAUBV-SYD1"
+ },
+ {
+ "id": "TOK1",
+ "name": "TOKYJPFA-TOK1"
+ },
+ {
+ "id": "KGM2",
+ "name": "KGMTNC20-KGM2"
+ },
+ {
+ "id": "DCC1b",
+ "name": "POIUYTGH-DCC1b"
+ },
+ {
+ "id": "SKK78",
+ "name": "SDCTKKK1-SKK78"
+ },
+ {
+ "id": "SGG78",
+ "name": "SDCTGGG1-SGG78"
+ },
+ {
+ "id": "SJJ78",
+ "name": "SDCTJJJ1-SJJ78"
+ },
+ {
+ "id": "SBX78",
+ "name": "SDCTBXG1-SBX78"
+ },
+ {
+ "id": "LAG1",
+ "name": "LARGIZON-LAG1"
+ },
+ {
+ "id": "IAA1",
+ "name": "QAZXSWED-IAA1"
+ },
+ {
+ "id": "POI1",
+ "name": "PLMNJKIU-POI1"
+ },
+ {
+ "id": "LAG1a",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "PBL1",
+ "name": "PBLAPBAI-PBL1"
+ },
+ {
+ "id": "LAG45",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "MAR1",
+ "name": "MNBVCXZM-MAR1"
+ },
+ {
+ "id": "HST70",
+ "name": "HSTNTX70-HST70"
+ },
+ {
+ "id": "DCC1a",
+ "name": "POIUYTGH-DCC1a"
+ },
+ {
+ "id": "TOL1",
+ "name": "TOLDOH21-TOL1"
+ },
+ {
+ "id": "LON1",
+ "name": "LONEENCO-LON1"
+ },
+ {
+ "id": "SJU78",
+ "name": "SDIT1JUB-SJU78"
+ },
+ {
+ "id": "STN27",
+ "name": "HSTNTX01-STN27"
+ },
+ {
+ "id": "SSW56",
+ "name": "ss8126GT-SSW56"
+ },
+ {
+ "id": "SBB78",
+ "name": "SDIT1BBB-SBB78"
+ },
+ {
+ "id": "DCC3",
+ "name": "POIUYTGH-DCC3"
+ },
+ {
+ "id": "GNV1",
+ "name": "GNVLSCTL-GNV1"
+ },
+ {
+ "id": "WAS1",
+ "name": "WASHDCSW-WAS1"
+ },
+ {
+ "id": "TOY1",
+ "name": "TORYONNZ-TOY1"
+ },
+ {
+ "id": "STT1",
+ "name": "STTLWA02-STT1"
+ },
+ {
+ "id": "STG1",
+ "name": "STTGGE62-STG1"
+ },
+ {
+ "id": "SLL78",
+ "name": "SDCTLLL1-SLL78"
+ },
+ {
+ "id": "SBU78",
+ "name": "SDIT1BUB-SBU78"
+ },
+ {
+ "id": "ATL2",
+ "name": "ATLNGANW-ATL2"
+ },
+ {
+ "id": "BOT1",
+ "name": "BOTHWAKY-BOT1"
+ },
+ {
+ "id": "SNG1",
+ "name": "SNGPSIAU-SNG1"
+ },
+ {
+ "id": "NYC1",
+ "name": "NYCMNY54-NYC1"
+ },
+ {
+ "id": "LAG1b",
+ "name": "LARGIZON-LAG1b"
+ },
+ {
+ "id": "AMD15",
+ "name": "AMDFAA01-AMD15"
+ },
+ {
+ "id": "SNA1",
+ "name": "SNANTXCA-SNA1"
+ },
+ {
+ "id": "PLT1",
+ "name": "PLTNCA60-PLT1"
+ },
+ {
+ "id": "TLP1",
+ "name": "TLPNXM18-TLP1"
+ },
+ {
+ "id": "SDD81",
+ "name": "SAIT1DD6-SDD81"
+ },
+ {
+ "id": "DCC1",
+ "name": "POIUYTGH-DCC1"
+ },
+ {
+ "id": "DCC2",
+ "name": "POIUYTGH-DCC2"
+ },
+ {
+ "id": "OKC1",
+ "name": "OKCBOK55-OKC1"
+ },
+ {
+ "id": "PAR1",
+ "name": "PARSFRCG-PAR1"
+ },
+ {
+ "id": "TES36",
+ "name": "ABCEETES-TES36"
+ },
+ {
+ "id": "COM1",
+ "name": "PLMKOPIU-COM1"
+ },
+ {
+ "id": "ANI1",
+ "name": "ATLNGTRE-ANI1"
+ },
+ {
+ "id": "SDG78",
+ "name": "SDIT1BDG-SDG78"
+ },
+ {
+ "id": "mac20",
+ "name": "PKGTESTF-mac20"
+ },
+ {
+ "id": "DSF45",
+ "name": "DSFBG123-DSF45"
+ },
+ {
+ "id": "HST25",
+ "name": "HSTNTX01-HST25"
+ },
+ {
+ "id": "AMD18",
+ "name": "AUDIMA01-AMD18"
+ },
+ {
+ "id": "SAA80",
+ "name": "SAIT9AA3-SAA80"
+ },
+ {
+ "id": "SSA56",
+ "name": "SSIT2AA7-SSA56"
+ },
+ {
+ "id": "SDD82",
+ "name": "SAIT1DD9-SDD82"
+ },
+ {
+ "id": "JCV1",
+ "name": "JCVLFLBW-JCV1"
+ },
+ {
+ "id": "SUL2",
+ "name": "WERTYUJK-SUL2"
+ },
+ {
+ "id": "PUR1",
+ "name": "purelyde-PUR1"
+ },
+ {
+ "id": "FDE55",
+ "name": "FDERT555-FDE55"
+ },
+ {
+ "id": "SITE",
+ "name": "LONEENCO-SITE"
+ },
+ {
+ "id": "ATL1",
+ "name": "ATLNGAMA-ATL1"
+ },
+ {
+ "id": "JUL1",
+ "name": "ZXCVBNMM-JUL1"
+ },
+ {
+ "id": "TAT34",
+ "name": "TESAAISB-TAT34"
+ },
+ {
+ "id": "XCP12",
+ "name": "CHKGH123-XCP12"
+ },
+ {
+ "id": "RAI1",
+ "name": "poiuytre-RAI1"
+ },
+ {
+ "id": "HPO1",
+ "name": "ATLNGAUP-HPO1"
+ },
+ {
+ "id": "KJF12",
+ "name": "KJFDH123-KJF12"
+ },
+ {
+ "id": "SCC80",
+ "name": "SAIT9CC3-SCC80"
+ },
+ {
+ "id": "SAA12",
+ "name": "SAIT9AF8-SAA12"
+ },
+ {
+ "id": "SAA14",
+ "name": "SAIT1AA9-SAA14"
+ },
+ {
+ "id": "ATL35",
+ "name": "TTESSAAI-ATL35"
+ },
+ {
+ "id": "CWY1",
+ "name": "CWYMOWBS-CWY1"
+ },
+ {
+ "id": "ATL76",
+ "name": "TELEPAAI-ATL76"
+ },
+ {
+ "id": "DSL12",
+ "name": "DSLFK242-DSL12"
+ },
+ {
+ "id": "ATL53",
+ "name": "AAIATLTE-ATL53"
+ },
+ {
+ "id": "SAA11",
+ "name": "SAIT9AA2-SAA11"
+ },
+ {
+ "id": "ATL62",
+ "name": "TESSASCH-ATL62"
+ },
+ {
+ "id": "AUG1",
+ "name": "ASDFGHJK-AUG1"
+ },
+ {
+ "id": "POI22",
+ "name": "POIUY123-POI22"
+ },
+ {
+ "id": "SAA13",
+ "name": "SAIT1AA9-SAA13"
+ },
+ {
+ "id": "BHY17",
+ "name": "BHYTFRF3-BHY17"
+ },
+ {
+ "id": "LIS1",
+ "name": "HOSTPROF-LIS1"
+ },
+ {
+ "id": "SIP1",
+ "name": "ZXCVBNMK-SIP1"
+ },
+ {
+ "id": "ATL99",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "ATL64",
+ "name": "FORLOAAJ-ATL64"
+ },
+ {
+ "id": "TAT33",
+ "name": "TESAAISA-TAT33"
+ },
+ {
+ "id": "RAD10",
+ "name": "INDIPUNE-RAD10"
+ },
+ {
+ "id": "RTW5",
+ "name": "BHYTFRY4-RTW5"
+ },
+ {
+ "id": "JGS1",
+ "name": "KSJKKKKK-JGS1"
+ },
+ {
+ "id": "ATL98",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "WAN1",
+ "name": "LEIWANGW-WAN1"
+ },
+ {
+ "id": "ATL44",
+ "name": "ATLSANAB-ATL44"
+ },
+ {
+ "id": "RTD2",
+ "name": "BHYTFRk4-RTD2"
+ },
+ {
+ "id": "NIR1",
+ "name": "ORFLMANA-NIR1"
+ },
+ {
+ "id": "ATL75",
+ "name": "SANAAIRE-ATL75"
+ },
+ {
+ "id": "NUM1",
+ "name": "QWERTYUI-NUM1"
+ },
+ {
+ "id": "MTN32",
+ "name": "MDTWNJ21-MTN32"
+ },
+ {
+ "id": "RTZ4",
+ "name": "BHYTFRZ6-RTZ4"
+ },
+ {
+ "id": "ATL56",
+ "name": "ATLSANAC-ATL56"
+ },
+ {
+ "id": "AMS1",
+ "name": "AMSTNLBW-AMS1"
+ },
+ {
+ "id": "RCT1",
+ "name": "AMSTERNL-RCT1"
+ },
+ {
+ "id": "JAN1",
+ "name": "ORFLMATT-JAN1"
+ },
+ {
+ "id": "ABC14",
+ "name": "TESAAISA-ABC14"
+ },
+ {
+ "id": "TAT37",
+ "name": "TESAAISD-TAT37"
+ },
+ {
+ "id": "MIC54",
+ "name": "MICHIGAN-MIC54"
+ },
+ {
+ "id": "ABC11",
+ "name": "ATLSANAI-ABC11"
+ },
+ {
+ "id": "AMF11",
+ "name": "AMDOCS01-AMF11"
+ },
+ {
+ "id": "ATL63",
+ "name": "ATLSANEW-ATL63"
+ },
+ {
+ "id": "ABC12",
+ "name": "ATLSECIA-ABC12"
+ },
+ {
+ "id": "MTN20",
+ "name": "MDTWNJ21-MTN20"
+ },
+ {
+ "id": "ABC15",
+ "name": "AAITESAN-ABC15"
+ },
+ {
+ "id": "AVT1",
+ "name": "AVTRFLHD-AVT1"
+ },
+ {
+ "id": "ATL34",
+ "name": "ATLSANAI-ATL34"
+ }
+ ],
+ "categoryParameters": {
+ "owningEntityList": [
+ {
+ "id": "aaa1",
+ "name": "aaa1"
+ },
+ {
+ "id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "name": "WayneHolland"
+ },
+ {
+ "id": "Melissa",
+ "name": "Melissa"
+ }
+ ],
+ "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"
+ }
+ ]
+ },
+ "type": "[LCP_REGIONS_AND_TENANTS] Update",
+ "subscribers": [
+ {
+ "id": "CAR_2020_ER",
+ "name": "CAR_2020_ER",
+ "isPermitted": true
+ },
+ {
+ "id": "21014aa2-526b-11e6-beb8-9e71128cae77",
+ "name": "JULIO ERICKSON",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-2",
+ "name": "DALE BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-1",
+ "name": "LLOYD BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example",
+ "name": "JimmyExampleCust-20161102",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example2",
+ "name": "JimmyExampleCust-20161103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-102",
+ "name": "ERICA5779-TestSub-PWT-102",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-101",
+ "name": "ERICA5779-TestSub-PWT-101",
+ "isPermitted": false
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-4",
+ "name": "ERICA5779-Subscriber-5",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-103",
+ "name": "ERICA5779-TestSub-PWT-103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-2",
+ "name": "ERICA5779-Subscriber-2",
+ "isPermitted": false
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "SILVIA ROBBINS",
+ "isPermitted": true
+ },
+ {
+ "id": "ERICA5779-Subscriber-3",
+ "name": "ERICA5779-Subscriber-3",
+ "isPermitted": false
+ },
+ {
+ "id": "31739f3e-526b-11e6-beb8-9e71128cae77",
+ "name": "CRAIG/ROBERTS",
+ "isPermitted": false
+ }
+ ]
+ }
+ }
+ }
+}
+class ActivatedRouteMock<T>{
+ queryParams() {
+ return {
+ serviceModelId : '6e59c5de-f052-46fa-aa7e-2fca9d674c44'
+ }
+ }
+}
+
+class MockFeatureFlagsService {}
+
+describe('Generic Form popup Service', () => {
+ let injector;
+ let service: GenericFormPopupService;
+ let httpMock: HttpTestingController;
+ let form : FormGroup;
+ let fb : FormBuilder;
+ let netwokPopupService : NetworkPopupService;
+ let vfModulePopupService : VfModulePopuopService;
+ let servicePopupService : ServicePopupService;
+ let _aaiService : AaiService;
+ let _activatedRoute : ActivatedRoute;
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ imports: [HttpClientTestingModule],
+ providers: [GenericFormPopupService,
+ FormBuilder,
+ IframeService,
+ ServicePopupService,
+ BasicControlGenerator,
+ ServiceControlGenerator,
+ GenericFormService,
+ LogService,
+ DefaultDataGeneratorService,
+ BasicPopupService,
+ AaiService,
+ NetworkPopupService,
+ NetworkControlGenerator,
+ VfModulePopuopService,
+ VfModuleControlGenerator,
+ {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
+ {provide: ActivatedRoute, useClass: ActivatedRouteMock},
+ {provide: NgRedux, useClass: MockAppStore}]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ service = injector.get(GenericFormPopupService);
+ httpMock = injector.get(HttpTestingController);
+ fb = injector.get(FormBuilder);
+ netwokPopupService = injector.get(NetworkPopupService);
+ vfModulePopupService = injector.get(VfModulePopuopService);
+ servicePopupService = injector.get(ServicePopupService);
+ _aaiService = injector.get(AaiService);
+ _activatedRoute = injector.get(ActivatedRoute);
+
+ })().then(done).catch(done.fail));
+
+
+ test('VL: getGenericFormDetails should return FormPopupDetails', () => {
+ let uuidData : UUIDData = <any>{
+ type : 'VL',
+ serviceId : '6e59c5de-f052-46fa-aa7e-2fca9d674c44',
+ networkId : 'ExtVL 0',
+ networkStoreKey : 'ExtVL 0',
+ popupService : netwokPopupService
+ };
+ let node : ITreeNode = <any>{data : {} };
+
+ jest.spyOn(uuidData.popupService ,'getGenericFormPopupDetails');
+ service.getGenericFormDetails(uuidData, node,true);
+
+ expect(uuidData.popupService.getGenericFormPopupDetails).toHaveBeenCalledTimes(1);
+ expect(uuidData.popupService.getGenericFormPopupDetails).toHaveBeenCalledWith(uuidData['serviceId'],
+ uuidData['networkId'],
+ uuidData['networkStoreKey'],
+ node,
+ uuidData,
+ true
+ );
+ });
+
+ test('VFmodule: getGenericFormDetails should return FormPopupDetails', () => {
+ let uuidData : UUIDData = <any>{
+ type : 'VFmodule',
+ serviceId : '6e59c5de-f052-46fa-aa7e-2fca9d674c44',
+ vnfStoreKey : 'VF_vMee 0',
+ vFModuleStoreKey : 'vf_vmee0..VfVmee..vmme_vlc..module-1',
+ popupService : vfModulePopupService
+ };
+ let node : ITreeNode = <any>{data : {}};
+
+ spyOn(uuidData.popupService ,'getGenericFormPopupDetails');
+ service.getGenericFormDetails(uuidData, node,true);
+
+ expect(uuidData.popupService.getGenericFormPopupDetails).toHaveBeenCalledTimes(1)
+ expect(uuidData.popupService.getGenericFormPopupDetails).toHaveBeenCalledWith(
+ uuidData['serviceId'],
+ uuidData['vnfStoreKey'],
+ uuidData['vFModuleStoreKey'],
+ node,
+ uuidData,
+ true
+ );
+ });
+
+
+ test('service: getGenericFormDetails should return FormPopupDetails', () => {
+ let uuidData : UUIDData = <any>{
+ type : 'service',
+ serviceId : '6e59c5de-f052-46fa-aa7e-2fca9d674c44',
+ popupService : servicePopupService
+ };
+ let node : ITreeNode = <any>{data : {}};
+
+ jest.spyOn(uuidData.popupService ,'getGenericFormPopupDetails');
+ service.getGenericFormDetails(uuidData, node,true);
+
+ expect(uuidData.popupService.getGenericFormPopupDetails).toHaveBeenCalledTimes(1);
+ expect(uuidData.popupService.getGenericFormPopupDetails).toHaveBeenCalledWith(
+ uuidData['serviceId'],
+ null,
+ null,
+ node,
+ uuidData,
+ true
+ );
+ });
+
+
+ test('initReduxOnCreateNewService',() => {
+ jest.spyOn(_aaiService, 'getServiceModelById');
+ service.initReduxOnCreateNewService();
+ })
+});
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.service.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.service.ts
new file mode 100644
index 000000000..6636a54f2
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/generic-form-popup.service.ts
@@ -0,0 +1,93 @@
+import {Injectable} from "@angular/core";
+import {IframeService} from "../../utils/iframe.service";
+import {NgRedux} from "@angular-redux/store";
+import {AppState} from "../../store/reducers";
+import {ServicePopupService} from "./genericFormServices/service/service.popup.service";
+import {ActivatedRoute} from "@angular/router";
+import {AaiService} from "../../services/aaiService/aai.service";
+import {ITreeNode} from "angular-tree-component/dist/defs/api";
+import {UUIDData} from "./generic-form-popup.component";
+import {FormPopupDetails} from "../../models/formControlModels/formPopupDetails.model";
+import {Subject} from "rxjs";
+import {deleteAllServiceInstances} from "../../storeUtil/utils/service/service.actions";
+
+@Injectable()
+export class GenericFormPopupService {
+ constructor(private _iframeService : IframeService,
+ private _store: NgRedux<AppState>,
+ private _servicePopupService : ServicePopupService,
+ public _activatedRoute : ActivatedRoute,
+ private _aaiService : AaiService){
+
+ }
+ getGenericFormDetails(uuidData : UUIDData, node : ITreeNode, isUpdateMode : boolean) : FormPopupDetails {
+ switch (uuidData.type){
+ case 'VL' : {
+ return uuidData.popupService.getGenericFormPopupDetails(
+ uuidData['serviceId'],
+ uuidData['networkId'],
+ uuidData['networkStoreKey'],
+ node,
+ uuidData,
+ isUpdateMode
+ );
+ }
+ case 'VFmodule' : {
+ return uuidData.popupService.getGenericFormPopupDetails(
+ uuidData['serviceId'],
+ uuidData['vnfStoreKey'],
+ uuidData['vFModuleStoreKey'],
+ node,
+ uuidData,
+ isUpdateMode
+ );
+ }
+ case 'VF' : {
+ return uuidData.popupService.getGenericFormPopupDetails(
+ uuidData['serviceId'],
+ uuidData['modelName'],
+ uuidData['vnfStoreKey'],
+ node,
+ uuidData,
+ isUpdateMode
+ );
+ }
+ case 'VnfGroup' : {
+ return uuidData.popupService.getGenericFormPopupDetails(
+ uuidData['serviceId'],
+ uuidData['modelName'],
+ uuidData['vnfGroupStoreKey'],
+ node,
+ uuidData,
+ isUpdateMode
+ );
+ }
+ case 'service' : {
+ uuidData['bulkSize'] = this._store.getState().service.serviceInstance[uuidData['serviceId']].bulkSize || 1;
+ return uuidData.popupService.getGenericFormPopupDetails(
+ uuidData['serviceId'],
+ null,
+ null,
+ node,
+ uuidData,
+ isUpdateMode
+ );
+ }
+ }
+ }
+
+ initReduxOnCreateNewService() : Promise<string> {
+ return new Promise((resolve, reject) => {
+ this._activatedRoute
+ .queryParams
+ .subscribe(params => {
+ this._store.dispatch(deleteAllServiceInstances());
+ this._aaiService.getServiceModelById(params.serviceModelId).subscribe(()=>{
+ resolve(params.serviceModelId);
+ });
+ });
+ });
+ }
+
+ refreshModalCheckForGeneralErrorTrigger : Subject<boolean> = new Subject<boolean>();
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/basic.popup.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/basic.popup.service.spec.ts
new file mode 100644
index 000000000..521e5fb59
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/basic.popup.service.spec.ts
@@ -0,0 +1,92 @@
+import {NetworkPopupService} from "./network/network.popup.service";
+import {LogService} from "../../../utils/log/log.service";
+import {ReflectiveInjector} from "@angular/core";
+import {NgRedux} from "@angular-redux/store";
+import {BasicControlGenerator} from "../../genericForm/formControlsServices/basic.control.generator";
+import {AaiService} from "../../../services/aaiService/aai.service";
+import {HttpClient} from "@angular/common/http";
+import {NetworkControlGenerator} from "../../genericForm/formControlsServices/networkGenerator/network.control.generator";
+import {GenericFormService} from "../../genericForm/generic-form.service";
+import {FormBuilder} from "@angular/forms";
+import {IframeService} from "../../../utils/iframe.service";
+import {DefaultDataGeneratorService} from "../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {FormControlModel} from "../../../models/formControlModels/formControl.model";
+import {BasicPopupService} from "./basic.popup.service";
+import {SdcUiServices} from "onap-ui-angular";
+import {FeatureFlagsService} from "../../../services/featureFlag/feature-flags.service";
+import {getTestBed, TestBed} from "@angular/core/testing";
+
+class MockAppStore<T> {}
+
+class MockModalService<T> {}
+
+class MockFeatureFlagsService {}
+
+class MockReduxStore<T> {
+ getState() {
+ return {"global":{"name":null,"flags":{"FLAG_NETWORK_TO_ASYNC_INSTANTIATION":false,"FLAG_SHOW_ASSIGNMENTS":true,"FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS":true,"FLAG_UNASSIGN_SERVICE":true,"FLAG_SHOW_VERIFY_SERVICE":false,"FLAG_COLLECTION_RESOURCE_SUPPORT":true,"FLAG_DUPLICATE_VNF":true,"FLAG_SERVICE_MODEL_CACHE":true,"FLAG_ADVANCED_PORTS_FILTER":true,"CREATE_INSTANCE_TEST":false,"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD":false,"FLAG_REGION_ID_FROM_REMOTE":true,"FLAG_ASYNC_INSTANTIATION":true,"FLAG_ASYNC_JOBS":true,"EMPTY_DRAWING_BOARD_TEST":false,"FLAG_ADD_MSO_TESTAPI_FIELD":true},"type":"[FLAGS] Update"},"service":{"serviceHierarchy":{"6e59c5de-f052-46fa-aa7e-2fca9d674c44":{"service":{"uuid":"6e59c5de-f052-46fa-aa7e-2fca9d674c44","invariantUuid":"e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0","name":"ComplexService","version":"1.0","toscaModelURL":null,"category":"Emanuel","serviceType":"","serviceRole":"","description":"ComplexService","serviceEcompNaming":"false","instantiationType":"Macro","inputs":{}},"vnfs":{"VF_vMee 0":{"uuid":"d6557200-ecf2-4641-8094-5393ae3aae60","invariantUuid":"4160458e-f648-4b30-a176-43881ffffe9e","description":"VSP_vMee","name":"VF_vMee","version":"2.0","customizationUuid":"91415b44-753d-494c-926a-456a9172bbb9","inputs":{},"commands":{},"properties":{"max_instances":10,"min_instances":1,"gpb2_Internal2_mac":"00:11:22:EF:AC:DF","sctp-b-ipv6-egress_src_start_port":"0","sctp-a-ipv6-egress_rule_application":"any","Internal2_allow_transit":"true","sctp-b-IPv6_ethertype":"IPv6","sctp-a-egress_rule_application":"any","sctp-b-ingress_action":"pass","sctp-b-ingress_rule_protocol":"icmp","ncb2_Internal1_mac":"00:11:22:EF:AC:DF","sctp-b-ipv6-ingress-src_start_port":"0.0","ncb1_Internal2_mac":"00:11:22:EF:AC:DF","fsb_volume_size_0":"320.0","sctp-b-egress_src_addresses":"local","sctp-a-ipv6-ingress_ethertype":"IPv4","sctp-a-ipv6-ingress-dst_start_port":"0","sctp-b-ipv6-ingress_rule_application":"any","domain_name":"default-domain","sctp-a-ingress_rule_protocol":"icmp","sctp-b-egress-src_start_port":"0.0","sctp-a-egress_src_addresses":"local","sctp-b-display_name":"epc-sctp-b-ipv4v6-sec-group","sctp-a-egress-src_start_port":"0.0","sctp-a-ingress_ethertype":"IPv4","sctp-b-ipv6-ingress-dst_end_port":"65535","sctp-b-dst_subnet_prefix_v6":"::","nf_naming":"{ecomp_generated_naming=true}","sctp-a-ipv6-ingress_src_subnet_prefix":"0.0.0.0","sctp-b-egress-dst_start_port":"0.0","ncb_flavor_name":"nv.c20r64d1","gpb1_Internal1_mac":"00:11:22:EF:AC:DF","sctp-b-egress_dst_subnet_prefix_len":"0.0","Internal2_net_cidr":"10.0.0.10","sctp-a-ingress-dst_start_port":"0.0","sctp-a-egress-dst_start_port":"0.0","fsb1_Internal2_mac":"00:11:22:EF:AC:DF","sctp-a-egress_ethertype":"IPv4","vlc_st_service_mode":"in-network-nat","sctp-a-ipv6-egress_ethertype":"IPv4","sctp-a-egress-src_end_port":"65535.0","sctp-b-ipv6-egress_rule_application":"any","sctp-b-egress_action":"pass","sctp-a-ingress-src_subnet_prefix_len":"0.0","sctp-b-ipv6-ingress-src_end_port":"65535.0","sctp-b-name":"epc-sctp-b-ipv4v6-sec-group","fsb2_Internal1_mac":"00:11:22:EF:AC:DF","sctp-a-ipv6-ingress-src_start_port":"0.0","sctp-b-ipv6-egress_ethertype":"IPv4","Internal1_net_cidr":"10.0.0.10","sctp-a-egress_dst_subnet_prefix":"0.0.0.0","fsb_flavor_name":"nv.c20r64d1","sctp_rule_protocol":"132","sctp-b-ipv6-ingress_src_subnet_prefix_len":"0","sctp-a-ipv6-ingress_rule_application":"any","ecomp_generated_naming":"false","sctp-a-IPv6_ethertype":"IPv6","vlc2_Internal1_mac":"00:11:22:EF:AC:DF","vlc_st_virtualization_type":"virtual-machine","sctp-b-ingress-dst_start_port":"0.0","sctp-b-ingress-dst_end_port":"65535.0","sctp-a-ipv6-ingress-src_end_port":"65535.0","sctp-a-display_name":"epc-sctp-a-ipv4v6-sec-group","sctp-b-ingress_rule_application":"any","int2_sec_group_name":"int2-sec-group","vlc_flavor_name":"nd.c16r64d1","sctp-b-ipv6-egress_src_addresses":"local","vlc_st_interface_type_int1":"other1","sctp-b-egress-src_end_port":"65535.0","sctp-a-ipv6-egress-dst_start_port":"0","vlc_st_interface_type_int2":"other2","sctp-a-ipv6-egress_rule_protocol":"any","Internal2_shared":"false","sctp-a-ipv6-egress_dst_subnet_prefix_len":"0","Internal2_rpf":"disable","vlc1_Internal1_mac":"00:11:22:EF:AC:DF","sctp-b-ipv6-egress_src_end_port":"65535","sctp-a-ipv6-egress_src_addresses":"local","sctp-a-ingress-dst_end_port":"65535.0","sctp-a-ipv6-egress_src_end_port":"65535","Internal1_forwarding_mode":"l2","Internal2_dhcp":"false","sctp-a-dst_subnet_prefix_v6":"::","pxe_image_name":"MME_PXE-Boot_16ACP04_GA.qcow2","vlc_st_interface_type_gtp":"other0","ncb1_Internal1_mac":"00:11:22:EF:AC:DF","sctp-b-src_subnet_prefix_v6":"::","sctp-a-egress_dst_subnet_prefix_len":"0.0","int1_sec_group_name":"int1-sec-group","Internal1_dhcp":"false","sctp-a-ipv6-egress_dst_end_port":"65535","Internal2_forwarding_mode":"l2","fsb2_Internal2_mac":"00:11:22:EF:AC:DF","sctp-b-egress_dst_subnet_prefix":"0.0.0.0","Internal1_net_cidr_len":"17","gpb2_Internal1_mac":"00:11:22:EF:AC:DF","sctp-b-ingress-src_subnet_prefix_len":"0.0","sctp-a-ingress_dst_addresses":"local","sctp-a-egress_action":"pass","fsb_volume_type_0":"SF-Default-SSD","ncb2_Internal2_mac":"00:11:22:EF:AC:DF","vlc_st_interface_type_sctp_a":"left","vlc_st_interface_type_sctp_b":"right","sctp-a-src_subnet_prefix_v6":"::","vlc_st_version":"2","sctp-b-egress_ethertype":"IPv4","sctp-a-ingress_rule_application":"any","gpb1_Internal2_mac":"00:11:22:EF:AC:DF","instance_ip_family_v6":"v6","sctp-a-ipv6-egress_src_start_port":"0","sctp-b-ingress-src_start_port":"0.0","sctp-b-ingress_dst_addresses":"local","fsb1_Internal1_mac":"00:11:22:EF:AC:DF","vlc_st_interface_type_oam":"management","multi_stage_design":"true","oam_sec_group_name":"oam-sec-group","Internal2_net_gateway":"10.0.0.10","sctp-a-ipv6-ingress-dst_end_port":"65535","sctp-b-ipv6-egress-dst_start_port":"0","Internal1_net_gateway":"10.0.0.10","sctp-b-ipv6-egress_rule_protocol":"any","gtp_sec_group_name":"gtp-sec-group","sctp-a-ipv6-egress_dst_subnet_prefix":"0.0.0.0","sctp-b-ipv6-egress_dst_subnet_prefix_len":"0","sctp-a-ipv6-ingress_dst_addresses":"local","sctp-a-egress_rule_protocol":"icmp","sctp-b-ipv6-egress_action":"pass","sctp-a-ipv6-egress_action":"pass","Internal1_shared":"false","sctp-b-ipv6-ingress_rule_protocol":"any","Internal2_net_cidr_len":"17","sctp-a-name":"epc-sctp-a-ipv4v6-sec-group","sctp-a-ingress-src_end_port":"65535.0","sctp-b-ipv6-ingress_src_subnet_prefix":"0.0.0.0","sctp-a-egress-dst_end_port":"65535.0","sctp-a-ingress_action":"pass","sctp-b-egress_rule_protocol":"icmp","sctp-b-ipv6-ingress_action":"pass","vlc_st_service_type":"firewall","sctp-b-ipv6-egress_dst_end_port":"65535","sctp-b-ipv6-ingress-dst_start_port":"0","vlc2_Internal2_mac":"00:11:22:EF:AC:DF","vlc_st_availability_zone":"true","fsb_volume_image_name_1":"MME_FSB2_16ACP04_GA.qcow2","sctp-b-ingress-src_subnet_prefix":"0.0.0.0","sctp-a-ipv6-ingress_src_subnet_prefix_len":"0","Internal1_allow_transit":"true","gpb_flavor_name":"nv.c20r64d1","availability_zone_max_count":"1","fsb_volume_image_name_0":"MME_FSB1_16ACP04_GA.qcow2","sctp-b-ipv6-ingress_dst_addresses":"local","sctp-b-ipv6-egress_dst_subnet_prefix":"0.0.0.0","sctp-b-ipv6-ingress_ethertype":"IPv4","vlc1_Internal2_mac":"00:11:22:EF:AC:DF","sctp-a-ingress-src_subnet_prefix":"0.0.0.0","sctp-a-ipv6-ingress_action":"pass","Internal1_rpf":"disable","sctp-b-ingress_ethertype":"IPv4","sctp-b-egress_rule_application":"any","sctp-b-ingress-src_end_port":"65535.0","sctp-a-ipv6-ingress_rule_protocol":"any","sctp-a-ingress-src_start_port":"0.0","sctp-b-egress-dst_end_port":"65535.0"},"type":"VF","modelCustomizationName":"VF_vMee 0","vfModules":{"vf_vmee0..VfVmee..vmme_vlc..module-1":{"uuid":"522159d5-d6e0-4c2a-aa44-5a542a12a830","invariantUuid":"98a7c88b-b577-476a-90e4-e25a5871e02b","customizationUuid":"55b1be94-671a-403e-a26c-667e9c47d091","description":null,"name":"VfVmee..vmme_vlc..module-1","version":"2","modelCustomizationName":"VfVmee..vmme_vlc..module-1","properties":{"minCountInstances":0,"maxCountInstances":null,"initialCount":0,"vfModuleLabel":"vmme_vlc"},"inputs":{},"volumeGroupAllowed":true},"vf_vmee0..VfVmee..vmme_gpb..module-2":{"uuid":"41708296-e443-4c71-953f-d9a010f059e1","invariantUuid":"1cca90b8-3490-495e-87da-3f3e4c57d5b9","customizationUuid":"6add59e0-7fe1-4bc4-af48-f8812422ae7c","description":null,"name":"VfVmee..vmme_gpb..module-2","version":"2","modelCustomizationName":"VfVmee..vmme_gpb..module-2","properties":{"minCountInstances":0,"maxCountInstances":null,"initialCount":0,"vfModuleLabel":"vmme_gpb"},"inputs":{},"volumeGroupAllowed":false},"vf_vmee0..VfVmee..base_vmme..module-0":{"uuid":"a27f5cfc-7f12-4f99-af08-0af9c3885c87","invariantUuid":"a6f9e51a-2b35-416a-ae15-15e58d61f36d","customizationUuid":"f8c040f1-7e51-4a11-aca8-acf256cfd861","description":null,"name":"VfVmee..base_vmme..module-0","version":"2","modelCustomizationName":"VfVmee..base_vmme..module-0","properties":{"minCountInstances":1,"maxCountInstances":1,"initialCount":1,"vfModuleLabel":"base_vmme"},"inputs":{},"volumeGroupAllowed":true}},"volumeGroups":{"vf_vmee0..VfVmee..base_vmme..module-0":{"uuid":"a27f5cfc-7f12-4f99-af08-0af9c3885c87","invariantUuid":"a6f9e51a-2b35-416a-ae15-15e58d61f36d","customizationUuid":"f8c040f1-7e51-4a11-aca8-acf256cfd861","description":null,"name":"VfVmee..base_vmme..module-0","version":"2","modelCustomizationName":"VfVmee..base_vmme..module-0","properties":{"minCountInstances":1,"maxCountInstances":1,"initialCount":1,"vfModuleLabel":"base_vmme"},"inputs":{}}},"vfcInstanceGroups":{}}},"networks":{"ExtVL 0":{"uuid":"ddc3f20c-08b5-40fd-af72-c6d14636b986","invariantUuid":"379f816b-a7aa-422f-be30-17114ff50b7c","description":"ECOMP generic virtual link (network) base type for all other service-level and global networks","name":"ExtVL","version":"37.0","customizationUuid":"94fdd893-4a36-4d70-b16a-ec29c54c184f","inputs":{},"commands":{},"properties":{"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}"},"type":"VL","modelCustomizationName":"ExtVL 0"}},"collectionResource":{},"configurations":{"Port Mirroring Configuration By Policy 0":{"uuid":"b4398538-e89d-4f13-b33d-ca323434ba50","invariantUuid":"6ef0ca40-f366-4897-951f-abd65d25f6f7","description":"A port mirroring configuration by policy object","name":"Port Mirroring Configuration By Policy","version":"27.0","customizationUuid":"3c3b7b8d-8669-4b3b-8664-61970041fad2","inputs":{},"commands":{},"properties":{},"type":"Configuration","modelCustomizationName":"Port Mirroring Configuration By Policy 0","sourceNodes":[],"collectorNodes":null,"configurationByPolicy":false}},"serviceProxies":{},"vfModules":{"vf_vmee0..VfVmee..vmme_vlc..module-1":{"uuid":"522159d5-d6e0-4c2a-aa44-5a542a12a830","invariantUuid":"98a7c88b-b577-476a-90e4-e25a5871e02b","customizationUuid":"55b1be94-671a-403e-a26c-667e9c47d091","description":null,"name":"VfVmee..vmme_vlc..module-1","version":"2","modelCustomizationName":"VfVmee..vmme_vlc..module-1","properties":{"minCountInstances":0,"maxCountInstances":null,"initialCount":0,"vfModuleLabel":"vmme_vlc"},"inputs":{},"volumeGroupAllowed":true},"vf_vmee0..VfVmee..vmme_gpb..module-2":{"uuid":"41708296-e443-4c71-953f-d9a010f059e1","invariantUuid":"1cca90b8-3490-495e-87da-3f3e4c57d5b9","customizationUuid":"6add59e0-7fe1-4bc4-af48-f8812422ae7c","description":null,"name":"VfVmee..vmme_gpb..module-2","version":"2","modelCustomizationName":"VfVmee..vmme_gpb..module-2","properties":{"minCountInstances":0,"maxCountInstances":null,"initialCount":0,"vfModuleLabel":"vmme_gpb"},"inputs":{},"volumeGroupAllowed":false},"vf_vmee0..VfVmee..base_vmme..module-0":{"uuid":"a27f5cfc-7f12-4f99-af08-0af9c3885c87","invariantUuid":"a6f9e51a-2b35-416a-ae15-15e58d61f36d","customizationUuid":"f8c040f1-7e51-4a11-aca8-acf256cfd861","description":null,"name":"VfVmee..base_vmme..module-0","version":"2","modelCustomizationName":"VfVmee..base_vmme..module-0","properties":{"minCountInstances":1,"maxCountInstances":1,"initialCount":1,"vfModuleLabel":"base_vmme"},"inputs":{},"volumeGroupAllowed":true}},"volumeGroups":{"vf_vmee0..VfVmee..base_vmme..module-0":{"uuid":"a27f5cfc-7f12-4f99-af08-0af9c3885c87","invariantUuid":"a6f9e51a-2b35-416a-ae15-15e58d61f36d","customizationUuid":"f8c040f1-7e51-4a11-aca8-acf256cfd861","description":null,"name":"VfVmee..base_vmme..module-0","version":"2","modelCustomizationName":"VfVmee..base_vmme..module-0","properties":{"minCountInstances":1,"maxCountInstances":1,"initialCount":1,"vfModuleLabel":"base_vmme"},"inputs":{}}},"pnfs":{}},"6b528779-44a3-4472-bdff-9cd15ec93450":{"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":"A-La-Carte","inputs":{"2017488_adiodvpe0_ASN":{"type":"string","description":"AV/PE","entry_schema":null,"inputProperties":null,"constraints":[],"required":true,"default":"AV_vPE"}}},"vnfs":{"2017-388_ADIOD-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","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_adiodvpe0_vnf_config_template_version"},"bandwidth_units":{"displayName":"bandwidth_units","command":"get_input","inputName":"adiodvpe0_bandwidth_units"},"bandwidth":{"displayName":"bandwidth","command":"get_input","inputName":"adiodvpe0_bandwidth"},"AIC_CLLI":{"displayName":"AIC_CLLI","command":"get_input","inputName":"2017488_adiodvpe0_AIC_CLLI"},"ASN":{"displayName":"ASN","command":"get_input","inputName":"2017488_adiodvpe0_ASN"},"vnf_instance_name":{"displayName":"vnf_instance_name","command":"get_input","inputName":"2017488_adiodvpe0_vnf_instance_name"}},"properties":{"vmxvre_retype":"RE-VMX","vnf_config_template_version":"get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units","vnf_id":"123","vmxvre_oam_prefix":"24","availability_zone_0":"mtpocfo-kvm-az01","ASN":"get_input:2017488_adiodvpe0_ASN","vmxvre_chassis_i2cid":"161","vmxvpfe_name_0":"vPFEXI","bandwidth":"get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 1","vfModules":{},"volumeGroups":{},"vfcInstanceGroups":{}},"2017-388_ADIOD-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","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_adiodvpe0_vnf_config_template_version"},"bandwidth_units":{"displayName":"bandwidth_units","command":"get_input","inputName":"adiodvpe0_bandwidth_units"},"bandwidth":{"displayName":"bandwidth","command":"get_input","inputName":"adiodvpe0_bandwidth"},"AIC_CLLI":{"displayName":"AIC_CLLI","command":"get_input","inputName":"2017488_adiodvpe0_AIC_CLLI"},"ASN":{"displayName":"ASN","command":"get_input","inputName":"2017488_adiodvpe0_ASN"},"vnf_instance_name":{"displayName":"vnf_instance_name","command":"get_input","inputName":"2017488_adiodvpe0_vnf_instance_name"}},"properties":{"vmxvre_retype":"RE-VMX","vnf_config_template_version":"get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units","vnf_id":"123","vmxvre_oam_prefix":"24","availability_zone_0":"mtpocfo-kvm-az01","ASN":"get_input:2017488_adiodvpe0_ASN","vmxvre_chassis_i2cid":"161","vmxvpfe_name_0":"vPFEXI","bandwidth":"get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 0","vfModules":{},"volumeGroups":{},"vfcInstanceGroups":{}},"2017-488_ADIOD-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","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_adiodvpe0_vnf_config_template_version"},"bandwidth_units":{"displayName":"bandwidth_units","command":"get_input","inputName":"adiodvpe0_bandwidth_units"},"bandwidth":{"displayName":"bandwidth","command":"get_input","inputName":"adiodvpe0_bandwidth"},"AIC_CLLI":{"displayName":"AIC_CLLI","command":"get_input","inputName":"2017488_adiodvpe0_AIC_CLLI"},"ASN":{"displayName":"ASN","command":"get_input","inputName":"2017488_adiodvpe0_ASN"},"vnf_instance_name":{"displayName":"vnf_instance_name","command":"get_input","inputName":"2017488_adiodvpe0_vnf_instance_name"}},"properties":{"vmxvre_retype":"RE-VMX","vnf_config_template_version":"get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units","vnf_id":"123","vmxvre_oam_prefix":"24","availability_zone_0":"mtpocfo-kvm-az01","ASN":"get_input:2017488_adiodvpe0_ASN","vmxvre_chassis_i2cid":"161","vmxvpfe_name_0":"vPFEXI","bandwidth":"get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 0","vfModules":{"2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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","version":"6","modelCustomizationName":"2017488AdiodVpe..ADIOD_vRE_BV..module-1","properties":{"minCountInstances":0,"maxCountInstances":null,"initialCount":0,"vfModuleLabel":"ADIOD_vRE_BV"},"inputs":{"adiodvpe0_bandwidth":{"type":"string","description":"Requested VPE bandwidth","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"bandwidth"},"constraints":null,"required":true,"default":"10"},"2017488_adiodvpe0_vnf_instance_name":{"type":"string","description":"The hostname assigned to the vpe.","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"vnf_instance_name"},"constraints":null,"required":true,"default":"mtnj309me6"},"2017488_adiodvpe0_vnf_config_template_version":{"type":"string","description":"VPE Software Version","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"vnf_config_template_version"},"constraints":null,"required":true,"default":"17.2"},"2017488_adiodvpe0_AIC_CLLI":{"type":"string","description":"AIC Site CLLI","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"AIC_CLLI"},"constraints":null,"required":true,"default":"ATLMY8GA"},"adiodvpe0_bandwidth_units":{"type":"string","description":"Units of bandwidth","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"bandwidth_units"},"constraints":null,"required":true,"default":"Gbps"}},"volumeGroupAllowed":true},"2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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","version":"5","modelCustomizationName":"2017488AdiodVpe..ADIOD_base_vPE_BV..module-0","properties":{"minCountInstances":1,"maxCountInstances":1,"initialCount":1,"vfModuleLabel":"ADIOD_base_vPE_BV"},"inputs":{},"volumeGroupAllowed":false},"2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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","version":"6","modelCustomizationName":"2017488AdiodVpe..ADIOD_vPFE_BV..module-2","properties":{"minCountInstances":0,"maxCountInstances":null,"initialCount":0,"vfModuleLabel":"ADIOD_vPFE_BV"},"inputs":{},"volumeGroupAllowed":true}},"volumeGroups":{"2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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","version":"6","modelCustomizationName":"2017488AdiodVpe..ADIOD_vRE_BV..module-1","properties":{"minCountInstances":0,"maxCountInstances":null,"initialCount":0,"vfModuleLabel":"ADIOD_vRE_BV"},"inputs":{"adiodvpe0_bandwidth":{"type":"string","description":"Requested VPE bandwidth","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"bandwidth"},"constraints":null,"required":true,"default":"10"},"2017488_adiodvpe0_vnf_instance_name":{"type":"string","description":"The hostname assigned to the vpe.","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"vnf_instance_name"},"constraints":null,"required":true,"default":"mtnj309me6"},"2017488_adiodvpe0_vnf_config_template_version":{"type":"string","description":"VPE Software Version","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"vnf_config_template_version"},"constraints":null,"required":true,"default":"17.2"},"2017488_adiodvpe0_AIC_CLLI":{"type":"string","description":"AIC Site CLLI","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"AIC_CLLI"},"constraints":null,"required":true,"default":"ATLMY8GA"},"adiodvpe0_bandwidth_units":{"type":"string","description":"Units of bandwidth","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"bandwidth_units"},"constraints":null,"required":true,"default":"Gbps"}}},"2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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","version":"6","modelCustomizationName":"2017488AdiodVpe..ADIOD_vPFE_BV..module-2","properties":{"minCountInstances":0,"maxCountInstances":null,"initialCount":0,"vfModuleLabel":"ADIOD_vPFE_BV"},"inputs":{}}},"vfcInstanceGroups":{}}},"networks":{"ExtVL 0":{"uuid":"ddc3f20c-08b5-40fd-af72-c6d14636b986","invariantUuid":"379f816b-a7aa-422f-be30-17114ff50b7c","description":"ECOMP generic virtual link (network) base type for all other service-level and global networks","name":"ExtVL","version":"37.0","customizationUuid":"94fdd893-4a36-4d70-b16a-ec29c54c184f","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":{},"properties":{"min_instances":1,"max_instances":10,"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}"},"type":"VL","modelCustomizationName":"ExtVL 0"}},"collectionResource":{},"configurations":{},"fabricConfigurations":{},"serviceProxies":{},"vfModules":{"2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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","version":"6","modelCustomizationName":"2017488AdiodVpe..ADIOD_vRE_BV..module-1","properties":{"minCountInstances":0,"maxCountInstances":null,"initialCount":0,"vfModuleLabel":"ADIOD_vRE_BV"},"inputs":{"adiodvpe0_bandwidth":{"type":"string","description":"Requested VPE bandwidth","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"bandwidth"},"constraints":null,"required":true,"default":"10"},"2017488_adiodvpe0_vnf_instance_name":{"type":"string","description":"The hostname assigned to the vpe.","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"vnf_instance_name"},"constraints":null,"required":true,"default":"mtnj309me6"},"2017488_adiodvpe0_vnf_config_template_version":{"type":"string","description":"VPE Software Version","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"vnf_config_template_version"},"constraints":null,"required":true,"default":"17.2"},"2017488_adiodvpe0_AIC_CLLI":{"type":"string","description":"AIC Site CLLI","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"AIC_CLLI"},"constraints":null,"required":true,"default":"ATLMY8GA"},"adiodvpe0_bandwidth_units":{"type":"string","description":"Units of bandwidth","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"bandwidth_units"},"constraints":null,"required":true,"default":"Gbps"}},"volumeGroupAllowed":true},"2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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","version":"5","modelCustomizationName":"2017488AdiodVpe..ADIOD_base_vPE_BV..module-0","properties":{"minCountInstances":1,"maxCountInstances":1,"initialCount":1,"vfModuleLabel":"ADIOD_base_vPE_BV"},"inputs":{},"volumeGroupAllowed":false},"2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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","version":"6","modelCustomizationName":"2017488AdiodVpe..ADIOD_vPFE_BV..module-2","properties":{"minCountInstances":0,"maxCountInstances":null,"initialCount":0,"vfModuleLabel":"ADIOD_vPFE_BV"},"inputs":{},"volumeGroupAllowed":true}},"volumeGroups":{"2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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","version":"6","modelCustomizationName":"2017488AdiodVpe..ADIOD_vRE_BV..module-1","properties":{"minCountInstances":0,"maxCountInstances":null,"initialCount":0,"vfModuleLabel":"ADIOD_vRE_BV"},"inputs":{"adiodvpe0_bandwidth":{"type":"string","description":"Requested VPE bandwidth","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"bandwidth"},"constraints":null,"required":true,"default":"10"},"2017488_adiodvpe0_vnf_instance_name":{"type":"string","description":"The hostname assigned to the vpe.","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"vnf_instance_name"},"constraints":null,"required":true,"default":"mtnj309me6"},"2017488_adiodvpe0_vnf_config_template_version":{"type":"string","description":"VPE Software Version","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"vnf_config_template_version"},"constraints":null,"required":true,"default":"17.2"},"2017488_adiodvpe0_AIC_CLLI":{"type":"string","description":"AIC Site CLLI","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"AIC_CLLI"},"constraints":null,"required":true,"default":"ATLMY8GA"},"adiodvpe0_bandwidth_units":{"type":"string","description":"Units of bandwidth","entry_schema":null,"inputProperties":{"sourceType":"HEAT","vfModuleLabel":"ADIOD_vRE_BV","paramName":"bandwidth_units"},"constraints":null,"required":true,"default":"Gbps"}}},"2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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","version":"6","modelCustomizationName":"2017488AdiodVpe..ADIOD_vPFE_BV..module-2","properties":{"minCountInstances":0,"maxCountInstances":null,"initialCount":0,"vfModuleLabel":"ADIOD_vPFE_BV"},"inputs":{}}},"pnfs":{}}},"serviceInstance":{"6e59c5de-f052-46fa-aa7e-2fca9d674c44":{"vnfs":{"VF_vMee 0":{"rollbackOnFailure":"true","vfModules":{"vf_vmee0..VfVmee..base_vmme..module-0":{"vf_vmee0..VfVmee..base_vmme..module-0vmvzo":{"isMissingData":false,"sdncPreReload":null,"modelInfo":{"modelType":"VFmodule","modelInvariantId":"a6f9e51a-2b35-416a-ae15-15e58d61f36d","modelVersionId":"a27f5cfc-7f12-4f99-af08-0af9c3885c87","modelName":"VfVmee..base_vmme..module-0","modelVersion":"2","modelCustomizationId":"f8c040f1-7e51-4a11-aca8-acf256cfd861","modelCustomizationName":"VfVmee..base_vmme..module-0"},"instanceParams":[{}],"trackById":"wmtm6sy2uj"}}},"isMissingData":true,"originalName":"VF_vMee 0","vnfStoreKey":"VF_vMee 0","trackById":"p3wk448m5do","uuid":"d6557200-ecf2-4641-8094-5393ae3aae60","productFamilyId":"36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e","lcpCloudRegionId":null,"tenantId":null,"lineOfBusiness":null,"platformName":null,"modelInfo":{"modelType":"VF","modelInvariantId":"4160458e-f648-4b30-a176-43881ffffe9e","modelVersionId":"6e59c5de-f052-46fa-aa7e-2fca9d674c44","modelName":"VF_vMee","modelVersion":"2.0","modelCustomizationName":"VF_vMee 0"}}},"networks":{},"instanceParams":[{}],"validationCounter":1,"existingNames":{},"existingVNFCounterMap":{"d6557200-ecf2-4641-8094-5393ae3aae60":1},"globalSubscriberId":"e433710f-9217-458d-a79d-1c7aff376d89","subscriptionServiceType":"TYLER SILVIA","owningEntityId":"d61e6f2d-12fa-4cc2-91df-7c244011d6fc","productFamilyId":"36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e","lcpCloudRegionId":"hvf6","tenantId":"229bcdc6eaeb4ca59d55221141d01f8e","aicZoneId":"JAG1","projectName":"x1","rollbackOnFailure":"true","bulkSize":1,"modelInfo":{"modelInvariantId":"e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0","modelVersionId":"6e59c5de-f052-46fa-aa7e-2fca9d674c44","modelName":"ComplexService","modelVersion":"1.0","uuid":"6e59c5de-f052-46fa-aa7e-2fca9d674c44"},"isALaCarte":false,"name":"ComplexService","version":"1.0","description":"ComplexService","category":"Emanuel","uuid":"6e59c5de-f052-46fa-aa7e-2fca9d674c44","invariantUuid":"e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0","serviceType":"","serviceRole":"","isEcompGeneratedNaming":true,"isMultiStepDesign":false},"6b528779-44a3-4472-bdff-9cd15ec93450":{"networks":{"ExtVL 0":{"rollbackOnFailure":"true","isMissingData":false,"originalName":"ExtVL 0","networkStoreKey":"ExtVL 0","trackById":"sf3zth68xjf","productFamilyId":"ebc3bc3d-62fd-4a3f-a037-f619df4ff034","lcpCloudRegionId":"hvf6","tenantId":"229bcdc6eaeb4ca59d55221141d01f8e","platformName":"xxx1","lineOfBusiness":"ONAP","instanceParams":[{}],"modelInfo":{"modelInvariantId":"379f816b-a7aa-422f-be30-17114ff50b7c","modelVersionId":"ddc3f20c-08b5-40fd-af72-c6d14636b986","modelName":"ExtVL","modelVersion":"37.0","modelCustomizationId":"94fdd893-4a36-4d70-b16a-ec29c54c184f","modelCustomizationName":"ExtVL 0","uuid":"ddc3f20c-08b5-40fd-af72-c6d14636b986"},"uuid":"ddc3f20c-08b5-40fd-af72-c6d14636b986"},"ExtVL 0:0001":{"rollbackOnFailure":"true","isMissingData":false,"originalName":"ExtVL 0","networkStoreKey":"ExtVL 0","trackById":"2mdxioxca9h","productFamilyId":"ebc3bc3d-62fd-4a3f-a037-f619df4ff034","lcpCloudRegionId":"hvf6","tenantId":"229bcdc6eaeb4ca59d55221141d01f8e","platformName":"xxx1","lineOfBusiness":"ONAP","instanceParams":[{}],"modelInfo":{"modelInvariantId":"379f816b-a7aa-422f-be30-17114ff50b7c","modelVersionId":"ddc3f20c-08b5-40fd-af72-c6d14636b986","modelName":"ExtVL","modelVersion":"37.0","modelCustomizationId":"94fdd893-4a36-4d70-b16a-ec29c54c184f","modelCustomizationName":"ExtVL 0","uuid":"ddc3f20c-08b5-40fd-af72-c6d14636b986"},"uuid":"ddc3f20c-08b5-40fd-af72-c6d14636b986"},"ExtVL 0_1":{"rollbackOnFailure":"true","isMissingData":false,"originalName":"ExtVL 0","networkStoreKey":"ExtVL 0_1","trackById":"z7vd1gmpbs","instanceName":"ExtVL","productFamilyId":"17cc1042-527b-11e6-beb8-9e71128cae77","lcpCloudRegionId":"hvf6","tenantId":"229bcdc6eaeb4ca59d55221141d01f8e","platformName":"xxx1","lineOfBusiness":"zzz1","instanceParams":[{"vnf_config_template_version":"17.2","bandwidth_units":"Gbps","bandwidth":"10","AIC_CLLI":"ATLMY8GA","ASN":"AV_vPE","vnf_instance_name":"yoav"}],"modelInfo":{"modelInvariantId":"379f816b-a7aa-422f-be30-17114ff50b7c","modelVersionId":"ddc3f20c-08b5-40fd-af72-c6d14636b986","modelName":"ExtVL","modelVersion":"37.0","modelCustomizationId":"94fdd893-4a36-4d70-b16a-ec29c54c184f","modelCustomizationName":"ExtVL 0","uuid":"ddc3f20c-08b5-40fd-af72-c6d14636b986"},"uuid":"ddc3f20c-08b5-40fd-af72-c6d14636b986"}},"vnfs":{"2017-488_ADIOD-vPE 0":{"rollbackOnFailure":"true","vfModules":{"2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1":{"2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1sgoqi":{"instanceName":"yoav","volumeGroupName":"123","modelInfo":{"modelInvariantId":"7253ff5c-97f0-4b8b-937c-77aeb4d79aa1","modelVersionId":"25284168-24bb-4698-8cb4-3f509146eca5","modelName":"2017488AdiodVpe..ADIOD_vRE_BV..module-1","modelVersion":"6","modelCustomizationId":"f7e7c365-60cf-49a9-9ebf-a1aa11b9d401","modelCustomizationName":"2017488AdiodVpe..ADIOD_vRE_BV..module-1","uuid":"25284168-24bb-4698-8cb4-3f509146eca5"},"uuid":"25284168-24bb-4698-8cb4-3f509146eca5","isMissingData":false,"instanceParams":[{"adiodvpe0_bandwidth":"10","2017488_adiodvpe0_vnf_instance_name":"mtnj309me6","2017488_adiodvpe0_vnf_config_template_version":"17.2","2017488_adiodvpe0_AIC_CLLI":"ATLMY8GA","adiodvpe0_bandwidth_units":"Gbps"}]}}},"isMissingData":false,"originalName":"2017-488_ADIOD-vPE 0","vnfStoreKey":"2017-488_ADIOD-vPE 0","trackById":"o65b26t2thj","instanceName":"2017488_ADIODvPE","productFamilyId":"ebc3bc3d-62fd-4a3f-a037-f619df4ff034","lcpCloudRegionId":"hvf6","tenantId":"bae71557c5bb4d5aac6743a4e5f1d054","platformName":"platform","lineOfBusiness":"ONAP","instanceParams":[{}],"modelInfo":{"modelInvariantId":"72e465fe-71b1-4e7b-b5ed-9496118ff7a8","modelVersionId":"69e09f68-8b63-4cc9-b9ff-860960b5db09","modelName":"2017-488_ADIOD-vPE","modelVersion":"5.0","modelCustomizationId":"1da7b585-5e61-4993-b95e-8e6606c81e45","modelCustomizationName":"2017-488_ADIOD-vPE 0","uuid":"69e09f68-8b63-4cc9-b9ff-860960b5db09"},"uuid":"69e09f68-8b63-4cc9-b9ff-860960b5db09"}},"instanceParams":[{"2017488_adiodvpe0_ASN":"AV_vPE"}],"validationCounter":0,"existingNames":{"123":"","instancename":"","yoav":"","extvl":""},"existingVNFCounterMap":{"69e09f68-8b63-4cc9-b9ff-860960b5db09":1},"existingNetworksCounterMap":{"ddc3f20c-08b5-40fd-af72-c6d14636b986":3},"instanceName":"InstanceName","globalSubscriberId":"e433710f-9217-458d-a79d-1c7aff376d89","subscriptionServiceType":"TYLER SILVIA","owningEntityId":"d61e6f2d-12fa-4cc2-91df-7c244011d6fc","productFamilyId":"17cc1042-527b-11e6-beb8-9e71128cae77","lcpCloudRegionId":"JANET25","tenantId":"092eb9e8e4b7412e8787dd091bc58e86","aicZoneId":"JAG1","projectName":null,"rollbackOnFailure":"true","aicZoneName":"YUDFJULP-JAG1","owningEntityName":"WayneHolland","testApi":"GR_API","isEcompGeneratedNaming":false,"tenantName":"USP-SIP-IC-24335-T-01","bulkSize":1,"modelInfo":{"modelInvariantId":"e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0","modelVersionId":"6b528779-44a3-4472-bdff-9cd15ec93450","modelName":"action-data","modelVersion":"1.0","uuid":"6b528779-44a3-4472-bdff-9cd15ec93450"},"isALaCarte":false,"name":"action-data","version":"1.0","description":"","category":"","uuid":"6b528779-44a3-4472-bdff-9cd15ec93450","invariantUuid":"e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0","serviceType":"","serviceRole":"","isMultiStepDesign":false}},"lcpRegionsAndTenants":{"lcpRegionList":[{"id":"JANET25","name":"JANET25","isPermitted":true},{"id":"hvf6","name":"hvf6","isPermitted":true}],"lcpRegionsTenantsMap":{"JANET25":[{"id":"092eb9e8e4b7412e8787dd091bc58e86","name":"USP-SIP-IC-24335-T-01","isPermitted":true}],"hvf6":[{"id":"bae71557c5bb4d5aac6743a4e5f1d054","name":"AIN Web Tool-15-D-testalexandria","isPermitted":true},{"id":"229bcdc6eaeb4ca59d55221141d01f8e","name":"AIN Web Tool-15-D-STTest2","isPermitted":true},{"id":"1178612d2b394be4834ad77f567c0af2","name":"AIN Web Tool-15-D-SSPtestcustome","isPermitted":true},{"id":"19c5ade915eb461e8af52fb2fd8cd1f2","name":"AIN Web Tool-15-D-UncheckedEcopm","isPermitted":true},{"id":"de007636e25249238447264a988a927b","name":"AIN Web Tool-15-D-dfsdf","isPermitted":true},{"id":"62f29b3613634ca6a3065cbe0e020c44","name":"AIN/SMS-16-D-Multiservices1","isPermitted":true},{"id":"649289e30d3244e0b48098114d63c2aa","name":"AIN Web Tool-15-D-SSPST66","isPermitted":true},{"id":"3f21eeea6c2c486bba31dab816c05a32","name":"AIN Web Tool-15-D-ASSPST47","isPermitted":true},{"id":"f60ce21d3ee6427586cff0d22b03b773","name":"CESAR-100-D-sspjg67246","isPermitted":true},{"id":"8774659e425f479895ae091bb5d46560","name":"CESAR-100-D-sspjg68359","isPermitted":true},{"id":"624eb554b0d147c19ff8885341760481","name":"AINWebTool-15-D-iftach","isPermitted":true},{"id":"214f55f5fc414c678059c383b03e4962","name":"CESAR-100-D-sspjg612401","isPermitted":true},{"id":"c90666c291664841bb98e4d981ff1db5","name":"CESAR-100-D-sspjg621340","isPermitted":true},{"id":"ce5b6bc5c7b348e1bf4b91ac9a174278","name":"sspjg621351cloned","isPermitted":true},{"id":"b386b768a3f24c8e953abbe0b3488c02","name":"AINWebTool-15-D-eteancomp","isPermitted":true},{"id":"dc6c4dbfd225474e9deaadd34968646c","name":"AINWebTool-15-T-SPFET","isPermitted":true},{"id":"02cb5030e9914aa4be120bd9ed1e19eb","name":"AINWebTool-15-X-eeweww","isPermitted":true},{"id":"f2f3830e4c984d45bcd00e1a04158a79","name":"CESAR-100-D-spjg61909","isPermitted":true},{"id":"05b91bd5137f4929878edd965755c06d","name":"CESAR-100-D-sspjg621512cloned","isPermitted":true},{"id":"7002fbe8482d4a989ddf445b1ce336e0","name":"AINWebTool-15-X-vdr","isPermitted":true},{"id":"4008522be43741dcb1f5422022a2aa0b","name":"AINWebTool-15-D-ssasa","isPermitted":true},{"id":"f44e2e96a1b6476abfda2fa407b00169","name":"AINWebTool-15-D-PFNPT","isPermitted":true},{"id":"b69a52bec8a84669a37a1e8b72708be7","name":"AINWebTool-15-X-vdre","isPermitted":true},{"id":"fac7d9fd56154caeb9332202dcf2969f","name":"AINWebTool-15-X-NONPODECOMP","isPermitted":true},{"id":"2d34d8396e194eb49969fd61ffbff961","name":"DN5242-Nov16-T5","isPermitted":true},{"id":"cb42a77ff45b48a8b8deb83bb64acc74","name":"ro-T11","isPermitted":true},{"id":"fa45ca53c80b492fa8be5477cd84fc2b","name":"ro-T112","isPermitted":true},{"id":"4914ab0ab3a743e58f0eefdacc1dde77","name":"DN5242-Nov21-T1","isPermitted":true},{"id":"d0a3e3f2964542259d155a81c41aadc3","name":"test-hvf6-09","isPermitted":true},{"id":"cbb99fe4ada84631b7baf046b6fd2044","name":"DN5242-Nov16-T3","isPermitted":true}]}},"productFamilies":[{"id":"ebc3bc3d-62fd-4a3f-a037-f619df4ff034","name":"SCOTTIE","isPermitted":true},{"id":"17cc1042-527b-11e6-beb8-9e71128cae77","name":"IGNACIO","isPermitted":true},{"id":"36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e","name":"Christie","isPermitted":true},{"id":"a4f6f2ae-9bf5-4ed7-b904-06b2099c4bd7","name":"Enhanced Services","isPermitted":true},{"id":"vTerrance","name":"vTerrance","isPermitted":true},{"id":"323d69d9-2efe-4r45-ay0a-89ea7ard4e6f","name":"vSCP","isPermitted":true},{"id":"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb","name":"Emanuel","isPermitted":true},{"id":"d8a6ed93-251c-47ca-adc9-86671fd19f4c","name":"BVOIP","isPermitted":true},{"id":"db171b8f-115c-4992-a2e3-ee04cae357e0","name":"LINDSEY","isPermitted":true},{"id":"LRSI-OSPF","name":"LRSI-OSPF","isPermitted":true},{"id":"vRosemarie","name":"HNGATEWAY","isPermitted":true},{"id":"vHNPaas","name":"WILKINS","isPermitted":true},{"id":"e433710f-9217-458d-a79d-1c7aff376d89","name":"TYLER SILVIA","isPermitted":true},{"id":"b6a3f28c-eebf-494c-a900-055cc7c874ce","name":"VROUTER","isPermitted":true},{"id":"Cisneros","name":"vMuriel","isPermitted":true},{"id":"0ee8c1bc-7cbd-4b0a-a1ac-e9999255abc1","name":"CARA Griffin","isPermitted":true},{"id":"c7611ebe-c324-48f1-8085-94aef0c6ef3d","name":"DARREN MCGEE","isPermitted":true},{"id":"e30755dc-5673-4b6b-9dcf-9abdd96b93d1","name":"Transport","isPermitted":true},{"id":"vSalvatore","name":"vSalvatore","isPermitted":true},{"id":"d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4","name":"Josefina","isPermitted":true},{"id":"vHubbard","name":"vHubbard","isPermitted":true},{"id":"12a96a9d-4b4c-4349-a950-fe1159602621","name":"DARREN MCGEE","isPermitted":true}],"serviceTypes":{"e433710f-9217-458d-a79d-1c7aff376d89":[{"id":"0","name":"vRichardson","isPermitted":false},{"id":"1","name":"TYLER SILVIA","isPermitted":true},{"id":"2","name":"Emanuel","isPermitted":false},{"id":"3","name":"vJamie","isPermitted":false},{"id":"4","name":"vVoiceMail","isPermitted":false},{"id":"5","name":"Kennedy","isPermitted":false},{"id":"6","name":"vSEGW","isPermitted":false},{"id":"7","name":"vVM","isPermitted":false},{"id":"8","name":"vOTA","isPermitted":false},{"id":"9","name":"vMME","isPermitted":false},{"id":"10","name":"vMNS","isPermitted":false},{"id":"11","name":"vSCP","isPermitted":false},{"id":"12","name":"VPMS","isPermitted":false},{"id":"13","name":"vMMSC","isPermitted":false},{"id":"14","name":"SSD","isPermitted":false},{"id":"15","name":"vMOG","isPermitted":false},{"id":"16","name":"LINDSEY","isPermitted":false},{"id":"17","name":"JOHANNA_SANTOS","isPermitted":false},{"id":"18","name":"vCarroll","isPermitted":false}]},"aicZones":[{"id":"NFT1","name":"NFTJSSSS-NFT1"},{"id":"JAG1","name":"YUDFJULP-JAG1"},{"id":"YYY1","name":"UUUAIAAI-YYY1"},{"id":"BAN1","name":"VSDKYUTP-BAN1"},{"id":"DKJ1","name":"DKJSJDKA-DKJ1"},{"id":"MCS1","name":"ASACMAMS-MCS1"},{"id":"UIO1","name":"uioclli1-UIO1"},{"id":"RAJ1","name":"YGBIJNLQ-RAJ1"},{"id":"OPA1","name":"opaclli1-OPA1"},{"id":"SDE1","name":"ZXCVBNMA-SDE1"},{"id":"VEN2","name":"FGHJUHIL-VEN2"},{"id":"ORL1","name":"ORLDFLMA-ORL1"},{"id":"JAD1","name":"JADECLLI-JAD1"},{"id":"ZXL1","name":"LWLWCANN-ZXL1"},{"id":"CKL1","name":"CLKSKCKK-CKL1"},{"id":"SDF1","name":"sdfclli1-SDF1"},{"id":"RAD1","name":"RADICAL1-RAD1"},{"id":"KIT1","name":"BHYJFGLN-KIT1"},{"id":"REL1","name":"INGERFGT-REL1"},{"id":"JNL1","name":"CJALSDAC-JNL1"},{"id":"OLK1","name":"OLKOLKLS-OLK1"},{"id":"CHI1","name":"CHILLIWE-CHI1"},{"id":"UUU4","name":"UUUAAAUU-UUU4"},{"id":"TUF1","name":"TUFCLLI1-TUF1"},{"id":"KJN1","name":"CKALDKSA-KJN1"},{"id":"SAM1","name":"SNDGCA64-SAN1"},{"id":"SCK1","name":"SCKSCKSK-SCK1"},{"id":"HJH1","name":"AOEEQQQD-HJH1"},{"id":"HGD1","name":"SDFQWHGD-HGD1"},{"id":"KOR1","name":"HYFLNBVT-KOR1"},{"id":"ATL43","name":"AICLOCID-ATL43"},{"id":"ATL54","name":"AICFTAAI-ATL54"},{"id":"ATL66","name":"CLLIAAII-ATL66"},{"id":"VEL1","name":"BNMLKUIK-VEL1"},{"id":"ICC1","name":"SANJITAT-ICC1"},{"id":"MNT11","name":"WSXEFBTH-MNT11"},{"id":"DEF2","name":"WSBHGTYL-DEF2"},{"id":"MAD11","name":"SDFQWGKL-MAD11"},{"id":"OLG1","name":"OLHOLHOL-OLG1"},{"id":"GAR1","name":"NGFVSJKO-GAR1"},{"id":"SAN22","name":"GNVLSCTL-SAN22"},{"id":"HRG1","name":"HRGHRGGS-HRG1"},{"id":"JCS1","name":"JCSJSCJS-JCS1"},{"id":"DHA12","name":"WSXEDECF-DHA12"},{"id":"HJE1","name":"AOEEWWWD-HJE1"},{"id":"NCA1","name":"NCANCANN-NCA1"},{"id":"IOP1","name":"iopclli1-IOP1"},{"id":"RTY1","name":"rtyclli1-RTY1"},{"id":"KAP1","name":"HIOUYTRQ-KAP1"},{"id":"ZEN1","name":"ZENCLLI1-ZEN1"},{"id":"HKA1","name":"JAKHLASS-HKA1"},{"id":"CQK1","name":"CQKSCAKK-CQK1"},{"id":"SAI1","name":"UBEKQLPD-SAI1"},{"id":"ERT1","name":"ertclli1-ERT1"},{"id":"IBB1","name":"PLMKOIJU-IBB1"},{"id":"TIR2","name":"PLKINHYI-TIR2"},{"id":"HSD1","name":"CHASKCDS-HSD1"},{"id":"SLF78","name":"SDCTLFN1-SLF78"},{"id":"SEE78","name":"SDCTEEE4-SEE78"},{"id":"SAN13","name":"TOKYJPFA-SAN13"},{"id":"SAA78","name":"SDCTAAA1-SAA78"},{"id":"LUC1","name":"ATLDFGYC-LUC1"},{"id":"AMD13","name":"MEMATLAN-AMD13"},{"id":"TOR1","name":"TOROONXN-TOR1"},{"id":"QWE1","name":"QWECLLI1-QWE1"},{"id":"ZOG1","name":"ZOGASTRO-ZOG1"},{"id":"CAL33","name":"CALIFORN-CAL33"},{"id":"SHH78","name":"SDIT1HHH-SHH78"},{"id":"DSA1","name":"LKJHGFDS-DSA1"},{"id":"CLG1","name":"CLGRABAD-CLG1"},{"id":"BNA1","name":"BNARAGBK-BNA1"},{"id":"ATL84","name":"CANTTCOC-ATL84"},{"id":"APP1","name":"WBHGTYUI-APP1"},{"id":"RJN1","name":"RJNRBZAW-RJN1"},{"id":"EHH78","name":"SDCSHHH5-EHH78"},{"id":"mac10","name":"PKGTESTF-mac10"},{"id":"SXB78","name":"SDCTGXB1-SXB78"},{"id":"SAX78","name":"SDCTAXG1-SAX78"},{"id":"SYD1","name":"SYDNAUBV-SYD1"},{"id":"TOK1","name":"TOKYJPFA-TOK1"},{"id":"KGM2","name":"KGMTNC20-KGM2"},{"id":"DCC1b","name":"POIUYTGH-DCC1b"},{"id":"SKK78","name":"SDCTKKK1-SKK78"},{"id":"SGG78","name":"SDCTGGG1-SGG78"},{"id":"SJJ78","name":"SDCTJJJ1-SJJ78"},{"id":"SBX78","name":"SDCTBXG1-SBX78"},{"id":"LAG1","name":"LARGIZON-LAG1"},{"id":"IAA1","name":"QAZXSWED-IAA1"},{"id":"POI1","name":"PLMNJKIU-POI1"},{"id":"LAG1a","name":"LARGIZON-LAG1a"},{"id":"PBL1","name":"PBLAPBAI-PBL1"},{"id":"LAG45","name":"LARGIZON-LAG1a"},{"id":"MAR1","name":"MNBVCXZM-MAR1"},{"id":"HST70","name":"HSTNTX70-HST70"},{"id":"DCC1a","name":"POIUYTGH-DCC1a"},{"id":"TOL1","name":"TOLDOH21-TOL1"},{"id":"LON1","name":"LONEENCO-LON1"},{"id":"SJU78","name":"SDIT1JUB-SJU78"},{"id":"STN27","name":"HSTNTX01-STN27"},{"id":"SSW56","name":"ss8126GT-SSW56"},{"id":"SBB78","name":"SDIT1BBB-SBB78"},{"id":"DCC3","name":"POIUYTGH-DCC3"},{"id":"GNV1","name":"GNVLSCTL-GNV1"},{"id":"WAS1","name":"WASHDCSW-WAS1"},{"id":"TOY1","name":"TORYONNZ-TOY1"},{"id":"STT1","name":"STTLWA02-STT1"},{"id":"STG1","name":"STTGGE62-STG1"},{"id":"SLL78","name":"SDCTLLL1-SLL78"},{"id":"SBU78","name":"SDIT1BUB-SBU78"},{"id":"ATL2","name":"ATLNGANW-ATL2"},{"id":"BOT1","name":"BOTHWAKY-BOT1"},{"id":"SNG1","name":"SNGPSIAU-SNG1"},{"id":"NYC1","name":"NYCMNY54-NYC1"},{"id":"LAG1b","name":"LARGIZON-LAG1b"},{"id":"AMD15","name":"AMDFAA01-AMD15"},{"id":"SNA1","name":"SNANTXCA-SNA1"},{"id":"PLT1","name":"PLTNCA60-PLT1"},{"id":"TLP1","name":"TLPNXM18-TLP1"},{"id":"SDD81","name":"SAIT1DD6-SDD81"},{"id":"DCC1","name":"POIUYTGH-DCC1"},{"id":"DCC2","name":"POIUYTGH-DCC2"},{"id":"OKC1","name":"OKCBOK55-OKC1"},{"id":"PAR1","name":"PARSFRCG-PAR1"},{"id":"TES36","name":"ABCEETES-TES36"},{"id":"COM1","name":"PLMKOPIU-COM1"},{"id":"ANI1","name":"ATLNGTRE-ANI1"},{"id":"SDG78","name":"SDIT1BDG-SDG78"},{"id":"mac20","name":"PKGTESTF-mac20"},{"id":"DSF45","name":"DSFBG123-DSF45"},{"id":"HST25","name":"HSTNTX01-HST25"},{"id":"AMD18","name":"AUDIMA01-AMD18"},{"id":"SAA80","name":"SAIT9AA3-SAA80"},{"id":"SSA56","name":"SSIT2AA7-SSA56"},{"id":"SDD82","name":"SAIT1DD9-SDD82"},{"id":"JCV1","name":"JCVLFLBW-JCV1"},{"id":"SUL2","name":"WERTYUJK-SUL2"},{"id":"PUR1","name":"purelyde-PUR1"},{"id":"FDE55","name":"FDERT555-FDE55"},{"id":"SITE","name":"LONEENCO-SITE"},{"id":"ATL1","name":"ATLNGAMA-ATL1"},{"id":"JUL1","name":"ZXCVBNMM-JUL1"},{"id":"TAT34","name":"TESAAISB-TAT34"},{"id":"XCP12","name":"CHKGH123-XCP12"},{"id":"RAI1","name":"poiuytre-RAI1"},{"id":"HPO1","name":"ATLNGAUP-HPO1"},{"id":"KJF12","name":"KJFDH123-KJF12"},{"id":"SCC80","name":"SAIT9CC3-SCC80"},{"id":"SAA12","name":"SAIT9AF8-SAA12"},{"id":"SAA14","name":"SAIT1AA9-SAA14"},{"id":"ATL35","name":"TTESSAAI-ATL35"},{"id":"CWY1","name":"CWYMOWBS-CWY1"},{"id":"ATL76","name":"TELEPAAI-ATL76"},{"id":"DSL12","name":"DSLFK242-DSL12"},{"id":"ATL53","name":"AAIATLTE-ATL53"},{"id":"SAA11","name":"SAIT9AA2-SAA11"},{"id":"ATL62","name":"TESSASCH-ATL62"},{"id":"AUG1","name":"ASDFGHJK-AUG1"},{"id":"POI22","name":"POIUY123-POI22"},{"id":"SAA13","name":"SAIT1AA9-SAA13"},{"id":"BHY17","name":"BHYTFRF3-BHY17"},{"id":"LIS1","name":"HOSTPROF-LIS1"},{"id":"SIP1","name":"ZXCVBNMK-SIP1"},{"id":"ATL99","name":"TEESTAAI-ATL43"},{"id":"ATL64","name":"FORLOAAJ-ATL64"},{"id":"TAT33","name":"TESAAISA-TAT33"},{"id":"RAD10","name":"INDIPUNE-RAD10"},{"id":"RTW5","name":"BHYTFRY4-RTW5"},{"id":"JGS1","name":"KSJKKKKK-JGS1"},{"id":"ATL98","name":"TEESTAAI-ATL43"},{"id":"WAN1","name":"LEIWANGW-WAN1"},{"id":"ATL44","name":"ATLSANAB-ATL44"},{"id":"RTD2","name":"BHYTFRk4-RTD2"},{"id":"NIR1","name":"ORFLMANA-NIR1"},{"id":"ATL75","name":"SANAAIRE-ATL75"},{"id":"NUM1","name":"QWERTYUI-NUM1"},{"id":"MTN32","name":"MDTWNJ21-MTN32"},{"id":"RTZ4","name":"BHYTFRZ6-RTZ4"},{"id":"ATL56","name":"ATLSANAC-ATL56"},{"id":"AMS1","name":"AMSTNLBW-AMS1"},{"id":"RCT1","name":"AMSTERNL-RCT1"},{"id":"JAN1","name":"ORFLMATT-JAN1"},{"id":"ABC14","name":"TESAAISA-ABC14"},{"id":"TAT37","name":"TESAAISD-TAT37"},{"id":"MIC54","name":"MICHIGAN-MIC54"},{"id":"ABC11","name":"ATLSANAI-ABC11"},{"id":"AMF11","name":"AMDOCS01-AMF11"},{"id":"ATL63","name":"ATLSANEW-ATL63"},{"id":"ABC12","name":"ATLSECIA-ABC12"},{"id":"MTN20","name":"MDTWNJ21-MTN20"},{"id":"ABC15","name":"AAITESAN-ABC15"},{"id":"AVT1","name":"AVTRFLHD-AVT1"},{"id":"ATL34","name":"ATLSANAI-ATL34"}],"categoryParameters":{"owningEntityList":[{"id":"aaa1","name":"aaa1"},{"id":"d61e6f2d-12fa-4cc2-91df-7c244011d6fc","name":"WayneHolland"},{"id":"Melissa","name":"Melissa"}],"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"}]},"type":"[LCP_REGIONS_AND_TENANTS] Update","subscribers":[{"id":"CAR_2020_ER","name":"CAR_2020_ER","isPermitted":true},{"id":"21014aa2-526b-11e6-beb8-9e71128cae77","name":"JULIO ERICKSON","isPermitted":false},{"id":"DHV1707-TestSubscriber-2","name":"DALE BRIDGES","isPermitted":false},{"id":"DHV1707-TestSubscriber-1","name":"LLOYD BRIDGES","isPermitted":false},{"id":"jimmy-example","name":"JimmyExampleCust-20161102","isPermitted":false},{"id":"jimmy-example2","name":"JimmyExampleCust-20161103","isPermitted":false},{"id":"ERICA5779-TestSub-PWT-102","name":"ERICA5779-TestSub-PWT-102","isPermitted":false},{"id":"ERICA5779-TestSub-PWT-101","name":"ERICA5779-TestSub-PWT-101","isPermitted":false},{"id":"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb","name":"Emanuel","isPermitted":false},{"id":"ERICA5779-Subscriber-4","name":"ERICA5779-Subscriber-5","isPermitted":false},{"id":"ERICA5779-TestSub-PWT-103","name":"ERICA5779-TestSub-PWT-103","isPermitted":false},{"id":"ERICA5779-Subscriber-2","name":"ERICA5779-Subscriber-2","isPermitted":false},{"id":"e433710f-9217-458d-a79d-1c7aff376d89","name":"SILVIA ROBBINS","isPermitted":true},{"id":"ERICA5779-Subscriber-3","name":"ERICA5779-Subscriber-3","isPermitted":false},{"id":"31739f3e-526b-11e6-beb8-9e71128cae77","name":"CRAIG/ROBERTS","isPermitted":false}]}};
+ }
+}
+
+describe('Basic popup service', () => {
+ let injector;
+ let service: BasicPopupService;
+ let genericFormService : GenericFormService;
+ let defaultDataGeneratorService : DefaultDataGeneratorService;
+ let fb : FormBuilder;
+ let iframeService : IframeService;
+
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ providers : [
+ NetworkPopupService,
+ BasicControlGenerator,
+ NetworkControlGenerator,
+ DefaultDataGeneratorService,
+ GenericFormService,
+ FormBuilder,
+ IframeService,
+ AaiService,
+ LogService,
+ BasicPopupService,
+ {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
+ {provide: NgRedux, useClass: MockReduxStore},
+ {provide: HttpClient, useClass: MockAppStore},
+ {provide: SdcUiServices.ModalService, useClass: MockModalService}
+ ]
+ });
+ await TestBed.compileComponents();
+ injector = getTestBed();
+ service = injector.get(BasicPopupService);
+ genericFormService = injector.get(GenericFormService);
+ defaultDataGeneratorService = injector.get(DefaultDataGeneratorService);
+ fb = injector.get(FormBuilder);
+ iframeService = injector.get(IframeService);
+
+ })().then(done).catch(done.fail));
+
+
+
+
+ test('getDynamicInputs should list of formControl model', () => {
+ const serviceId: string = '6b528779-44a3-4472-bdff-9cd15ec93450';
+ const networkModel : string = 'ExtVL 0';
+ const networkStoreKey : string = null;
+ const controls : FormControlModel[] = service.getDynamicInputs(serviceId, networkModel, networkStoreKey, 'networks');
+ expect(controls.length).toEqual(6);
+ for(let i = 0 ; i < controls.length ; i++){
+ expect(controls[i].type).toEqual('INPUT');
+ expect(controls[i].isVisible).toBeTruthy();
+ }
+ });
+
+ test('getModelFromResponse should return undefined if raw model not exist', () => {
+ const result= service.getModelFromResponse({
+ "modelType" : {
+ "modelName" : null
+ }
+ }, 'modelType', 'modelName');
+ expect(result).toBeUndefined();
+ });
+});
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/basic.popup.service.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/basic.popup.service.ts
new file mode 100644
index 000000000..5d4d16567
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/basic.popup.service.ts
@@ -0,0 +1,54 @@
+import {Injectable} from "@angular/core";
+import {Subscriber} from "../../../models/subscriber";
+import {NetworkModel} from "../../../models/networkModel";
+import {AppState} from "../../../store/reducers";
+import {NgRedux} from "@angular-redux/store";
+import {FormControlModel} from "../../../models/formControlModels/formControl.model";
+import {DefaultDataGeneratorService} from "../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {BasicControlGenerator} from "../../genericForm/formControlsServices/basic.control.generator";
+import * as _ from 'lodash';
+import {VfModule} from "../../../models/vfModule";
+import {VNFModel} from "../../../models/vnfModel";
+import {VnfGroupModel} from "../../../models/vnfGroupModel";
+
+@Injectable()
+export class BasicPopupService {
+ constructor(private _store: NgRedux<AppState>,
+ private _defaultDataGeneratorService : DefaultDataGeneratorService,
+ private _basicControlGenerator : BasicControlGenerator){}
+
+ extractSubscriberNameBySubscriberId(subsriberId: string) {
+ let result: string = null;
+ let filteredArray: any = _.filter(this._store.getState().service.subscribers, function (o: Subscriber) {
+ return o.id === subsriberId
+ });
+ if (filteredArray.length > 0) {
+ result = filteredArray[0].name;
+ }
+ return result;
+ }
+
+ getModelFromResponse(result: any, modelType: string, modelName: string) {
+ let rawModel = result[modelType][modelName];
+ if (!rawModel) return;
+ switch (modelType){
+ case 'vnfs' : {
+ return new VNFModel(rawModel);
+ }
+ case 'vfModules' : {
+ return new VfModule(rawModel);
+ }
+ case 'networks' : {
+ return new NetworkModel(rawModel);
+ }
+ case 'vnfGroups' : {
+ return new VnfGroupModel(rawModel);
+ }
+ }
+ }
+
+ getDynamicInputs(serviceId : string, modelName : string, storeKey : string, type : string) : FormControlModel[]{
+ let dynamic = this._defaultDataGeneratorService.getArbitraryInputs(this._store.getState().service.serviceHierarchy[serviceId][type][modelName].inputs);
+ return this._basicControlGenerator.getDynamicInputsByType(dynamic, serviceId, storeKey, type );
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/generic-popup.interface.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/generic-popup.interface.ts
new file mode 100644
index 000000000..7324c64a7
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/generic-popup.interface.ts
@@ -0,0 +1,25 @@
+/***********************************************************
+ onSubmit : action when set button is clicked
+ onCancel : action when cancel/X button is clicked
+ getModelInformation : should generate the model information
+ getGenericFormPopupDetails : returns list of controls
+ getInstance : returns exists instance (if exist)
+ getTitle : returns generic popup title
+ getSubLeftTitle : returns generic popup left sub title
+ getSubRightTitle : returns generic popup right sub title
+ ***********************************************************/
+
+import {FormGroup} from "@angular/forms";
+import {ITreeNode} from "angular-tree-component/dist/defs/api";
+import {FormPopupDetails} from "../../../models/formControlModels/formPopupDetails.model";
+
+export interface GenericPopupInterface {
+ onSubmit(that, form: FormGroup, ...args) : void;
+ onCancel(that, form) : void;
+ getModelInformation(serviceId : string, modelName : string) : void;
+ getGenericFormPopupDetails(serviceId : string, modelName : string , storeKey : string, node : ITreeNode, uuidData : Object, isUpdateMode : boolean) : FormPopupDetails;
+ getInstance(serviceId : string, modelName : string , storeKey : string) : any;
+ getTitle(isUpdateMode : boolean) : string;
+ getSubLeftTitle() : string;
+ getSubRightTitle() : string;
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/network/network.popup.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/network/network.popup.service.spec.ts
new file mode 100644
index 000000000..30164b8b6
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/network/network.popup.service.spec.ts
@@ -0,0 +1,2395 @@
+import {NetworkPopupService} from "./network.popup.service";
+import {LogService} from "../../../../utils/log/log.service";
+import {SdcUiServices} from "onap-ui-angular";
+import {ReflectiveInjector} from "@angular/core";
+import {NgRedux} from "@angular-redux/store";
+import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {HttpClient} from "@angular/common/http";
+import {NetworkControlGenerator} from "../../../genericForm/formControlsServices/networkGenerator/network.control.generator";
+import {GenericFormService} from "../../../genericForm/generic-form.service";
+import {FormBuilder} from "@angular/forms";
+import {IframeService} from "../../../../utils/iframe.service";
+import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {BasicPopupService} from "../basic.popup.service";
+import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flags.service";
+import {getTestBed, TestBed} from "@angular/core/testing";
+
+class MockAppStore<T> {}
+
+class MockModalService<T> {}
+
+class MockReduxStore<T> {
+ getState() {
+ return {
+ "global": {
+ "name": null,
+ "flags": {
+ "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
+ "FLAG_SHOW_ASSIGNMENTS": true,
+ "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
+ "FLAG_UNASSIGN_SERVICE": true,
+ "FLAG_SHOW_VERIFY_SERVICE": false,
+ "FLAG_COLLECTION_RESOURCE_SUPPORT": true,
+ "FLAG_DUPLICATE_VNF": true,
+ "FLAG_SERVICE_MODEL_CACHE": true,
+ "FLAG_ADVANCED_PORTS_FILTER": true,
+ "CREATE_INSTANCE_TEST": false,
+ "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
+ "FLAG_REGION_ID_FROM_REMOTE": true,
+ "FLAG_ASYNC_INSTANTIATION": true,
+ "FLAG_ASYNC_JOBS": true,
+ "EMPTY_DRAWING_BOARD_TEST": false,
+ "FLAG_ADD_MSO_TESTAPI_FIELD": true
+ },
+ "type": "[FLAGS] Update"
+ },
+ "service": {
+ "serviceHierarchy": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "service": {
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "name": "ComplexService",
+ "version": "1.0",
+ "toscaModelURL": null,
+ "category": "Emanuel",
+ "serviceType": "",
+ "serviceRole": "",
+ "description": "ComplexService",
+ "serviceEcompNaming": "false",
+ "instantiationType": "Macro",
+ "inputs": {}
+ },
+ "vnfs": {
+ "VF_vMee 0": {
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "invariantUuid": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "description": "VSP_vMee",
+ "name": "VF_vMee",
+ "version": "2.0",
+ "customizationUuid": "91415b44-753d-494c-926a-456a9172bbb9",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "max_instances": 10,
+ "min_instances": 1,
+ "gpb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_start_port": "0",
+ "sctp-a-ipv6-egress_rule_application": "any",
+ "Internal2_allow_transit": "true",
+ "sctp-b-IPv6_ethertype": "IPv6",
+ "sctp-a-egress_rule_application": "any",
+ "sctp-b-ingress_action": "pass",
+ "sctp-b-ingress_rule_protocol": "icmp",
+ "ncb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-ingress-src_start_port": "0.0",
+ "ncb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "fsb_volume_size_0": "320.0",
+ "sctp-b-egress_src_addresses": "local",
+ "sctp-a-ipv6-ingress_ethertype": "IPv4",
+ "sctp-a-ipv6-ingress-dst_start_port": "0",
+ "sctp-b-ipv6-ingress_rule_application": "any",
+ "domain_name": "default-domain",
+ "sctp-a-ingress_rule_protocol": "icmp",
+ "sctp-b-egress-src_start_port": "0.0",
+ "sctp-a-egress_src_addresses": "local",
+ "sctp-b-display_name": "epc-sctp-b-ipv4v6-sec-group",
+ "sctp-a-egress-src_start_port": "0.0",
+ "sctp-a-ingress_ethertype": "IPv4",
+ "sctp-b-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-dst_subnet_prefix_v6": "::",
+ "nf_naming": "{ecomp_generated_naming=true}",
+ "sctp-a-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-b-egress-dst_start_port": "0.0",
+ "ncb_flavor_name": "nv.c20r64d1",
+ "gpb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix_len": "0.0",
+ "Internal2_net_cidr": "10.0.0.10",
+ "sctp-a-ingress-dst_start_port": "0.0",
+ "sctp-a-egress-dst_start_port": "0.0",
+ "fsb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-egress_ethertype": "IPv4",
+ "vlc_st_service_mode": "in-network-nat",
+ "sctp-a-ipv6-egress_ethertype": "IPv4",
+ "sctp-a-egress-src_end_port": "65535.0",
+ "sctp-b-ipv6-egress_rule_application": "any",
+ "sctp-b-egress_action": "pass",
+ "sctp-a-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-b-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-b-name": "epc-sctp-b-ipv4v6-sec-group",
+ "fsb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ipv6-ingress-src_start_port": "0.0",
+ "sctp-b-ipv6-egress_ethertype": "IPv4",
+ "Internal1_net_cidr": "10.0.0.10",
+ "sctp-a-egress_dst_subnet_prefix": "0.0.0.0",
+ "fsb_flavor_name": "nv.c20r64d1",
+ "sctp_rule_protocol": "132",
+ "sctp-b-ipv6-ingress_src_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_rule_application": "any",
+ "ecomp_generated_naming": "false",
+ "sctp-a-IPv6_ethertype": "IPv6",
+ "vlc2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_virtualization_type": "virtual-machine",
+ "sctp-b-ingress-dst_start_port": "0.0",
+ "sctp-b-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-a-display_name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-b-ingress_rule_application": "any",
+ "int2_sec_group_name": "int2-sec-group",
+ "vlc_flavor_name": "nd.c16r64d1",
+ "sctp-b-ipv6-egress_src_addresses": "local",
+ "vlc_st_interface_type_int1": "other1",
+ "sctp-b-egress-src_end_port": "65535.0",
+ "sctp-a-ipv6-egress-dst_start_port": "0",
+ "vlc_st_interface_type_int2": "other2",
+ "sctp-a-ipv6-egress_rule_protocol": "any",
+ "Internal2_shared": "false",
+ "sctp-a-ipv6-egress_dst_subnet_prefix_len": "0",
+ "Internal2_rpf": "disable",
+ "vlc1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_end_port": "65535",
+ "sctp-a-ipv6-egress_src_addresses": "local",
+ "sctp-a-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-egress_src_end_port": "65535",
+ "Internal1_forwarding_mode": "l2",
+ "Internal2_dhcp": "false",
+ "sctp-a-dst_subnet_prefix_v6": "::",
+ "pxe_image_name": "MME_PXE-Boot_16ACP04_GA.qcow2",
+ "vlc_st_interface_type_gtp": "other0",
+ "ncb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-src_subnet_prefix_v6": "::",
+ "sctp-a-egress_dst_subnet_prefix_len": "0.0",
+ "int1_sec_group_name": "int1-sec-group",
+ "Internal1_dhcp": "false",
+ "sctp-a-ipv6-egress_dst_end_port": "65535",
+ "Internal2_forwarding_mode": "l2",
+ "fsb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix": "0.0.0.0",
+ "Internal1_net_cidr_len": "17",
+ "gpb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-a-ingress_dst_addresses": "local",
+ "sctp-a-egress_action": "pass",
+ "fsb_volume_type_0": "SF-Default-SSD",
+ "ncb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_sctp_a": "left",
+ "vlc_st_interface_type_sctp_b": "right",
+ "sctp-a-src_subnet_prefix_v6": "::",
+ "vlc_st_version": "2",
+ "sctp-b-egress_ethertype": "IPv4",
+ "sctp-a-ingress_rule_application": "any",
+ "gpb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "instance_ip_family_v6": "v6",
+ "sctp-a-ipv6-egress_src_start_port": "0",
+ "sctp-b-ingress-src_start_port": "0.0",
+ "sctp-b-ingress_dst_addresses": "local",
+ "fsb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_oam": "management",
+ "multi_stage_design": "true",
+ "oam_sec_group_name": "oam-sec-group",
+ "Internal2_net_gateway": "10.0.0.10",
+ "sctp-a-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-ipv6-egress-dst_start_port": "0",
+ "Internal1_net_gateway": "10.0.0.10",
+ "sctp-b-ipv6-egress_rule_protocol": "any",
+ "gtp_sec_group_name": "gtp-sec-group",
+ "sctp-a-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-egress_dst_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_dst_addresses": "local",
+ "sctp-a-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-egress_action": "pass",
+ "sctp-a-ipv6-egress_action": "pass",
+ "Internal1_shared": "false",
+ "sctp-b-ipv6-ingress_rule_protocol": "any",
+ "Internal2_net_cidr_len": "17",
+ "sctp-a-name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-a-ingress-src_end_port": "65535.0",
+ "sctp-b-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-a-egress-dst_end_port": "65535.0",
+ "sctp-a-ingress_action": "pass",
+ "sctp-b-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-ingress_action": "pass",
+ "vlc_st_service_type": "firewall",
+ "sctp-b-ipv6-egress_dst_end_port": "65535",
+ "sctp-b-ipv6-ingress-dst_start_port": "0",
+ "vlc2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_availability_zone": "true",
+ "fsb_volume_image_name_1": "MME_FSB2_16ACP04_GA.qcow2",
+ "sctp-b-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_src_subnet_prefix_len": "0",
+ "Internal1_allow_transit": "true",
+ "gpb_flavor_name": "nv.c20r64d1",
+ "availability_zone_max_count": "1",
+ "fsb_volume_image_name_0": "MME_FSB1_16ACP04_GA.qcow2",
+ "sctp-b-ipv6-ingress_dst_addresses": "local",
+ "sctp-b-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-ingress_ethertype": "IPv4",
+ "vlc1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_action": "pass",
+ "Internal1_rpf": "disable",
+ "sctp-b-ingress_ethertype": "IPv4",
+ "sctp-b-egress_rule_application": "any",
+ "sctp-b-ingress-src_end_port": "65535.0",
+ "sctp-a-ipv6-ingress_rule_protocol": "any",
+ "sctp-a-ingress-src_start_port": "0.0",
+ "sctp-b-egress-dst_end_port": "65535.0"
+ },
+ "type": "VF",
+ "modelCustomizationName": "VF_vMee 0",
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "netowrk_role": "role 1, role 2, role 3",
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {
+ "Port Mirroring Configuration By Policy 0": {
+ "uuid": "b4398538-e89d-4f13-b33d-ca323434ba50",
+ "invariantUuid": "6ef0ca40-f366-4897-951f-abd65d25f6f7",
+ "description": "A port mirroring configuration by policy object",
+ "name": "Port Mirroring Configuration By Policy",
+ "version": "27.0",
+ "customizationUuid": "3c3b7b8d-8669-4b3b-8664-61970041fad2",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Configuration",
+ "modelCustomizationName": "Port Mirroring Configuration By Policy 0",
+ "sourceNodes": [],
+ "collectorNodes": null,
+ "configurationByPolicy": false
+ }
+ },
+ "serviceProxies": {},
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ },
+ "6b528779-44a3-4472-bdff-9cd15ec93450": {
+ "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": "A-La-Carte",
+ "inputs": {
+ "2017488_adiodvpe0_ASN": {
+ "type": "string",
+ "description": "AV/PE",
+ "entry_schema": null,
+ "inputProperties": null,
+ "constraints": [],
+ "required": true,
+ "default": "AV_vPE"
+ }
+ }
+ },
+ "vnfs": {
+ "2017-388_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {"displayName": "bandwidth", "command": "get_input", "inputName": "adiodvpe0_bandwidth"},
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {"displayName": "ASN", "command": "get_input", "inputName": "2017488_adiodvpe0_ASN"},
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 1",
+ "vfModules": {},
+ "volumeGroups": {},
+ "vfcInstanceGroups": {}
+ },
+ "2017-388_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {"displayName": "bandwidth", "command": "get_input", "inputName": "adiodvpe0_bandwidth"},
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {"displayName": "ASN", "command": "get_input", "inputName": "2017488_adiodvpe0_ASN"},
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 0",
+ "vfModules": {},
+ "volumeGroups": {},
+ "vfcInstanceGroups": {}
+ },
+ "2017-488_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {"displayName": "bandwidth", "command": "get_input", "inputName": "adiodvpe0_bandwidth"},
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {"displayName": "ASN", "command": "get_input", "inputName": "2017488_adiodvpe0_ASN"},
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 0",
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ },
+ "volumeGroupAllowed": true
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "5",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "ADIOD_base_vPE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ }
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "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": {},
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {},
+ "fabricConfigurations": {},
+ "serviceProxies": {},
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {"sourceType": "HEAT", "vfModuleLabel": "ADIOD_vRE_BV", "paramName": "AIC_CLLI"},
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ },
+ "volumeGroupAllowed": true
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "5",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "ADIOD_base_vPE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {"sourceType": "HEAT", "vfModuleLabel": "ADIOD_vRE_BV", "paramName": "AIC_CLLI"},
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ }
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ }
+ },
+ "serviceInstance": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "vnfs": {
+ "VF_vMee 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "vf_vmee0..VfVmee..base_vmme..module-0vmvzo": {
+ "isMissingData": false,
+ "sdncPreReload": null,
+ "modelInfo": {
+ "modelType": "VFmodule",
+ "modelInvariantId": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "modelVersionId": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "modelName": "VfVmee..base_vmme..module-0",
+ "modelVersion": "2",
+ "modelCustomizationId": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0"
+ },
+ "instanceParams": [{}],
+ "trackById": "wmtm6sy2uj"
+ }
+ }
+ },
+ "isMissingData": true,
+ "originalName": "VF_vMee 0",
+ "vnfStoreKey": "VF_vMee 0",
+ "trackById": "p3wk448m5do",
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": null,
+ "tenantId": null,
+ "lineOfBusiness": null,
+ "platformName": null,
+ "modelInfo": {
+ "modelType": "VF",
+ "modelInvariantId": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "VF_vMee",
+ "modelVersion": "2.0",
+ "modelCustomizationName": "VF_vMee 0"
+ }
+ }
+ },
+ "networks": {},
+ "instanceParams": [{}],
+ "validationCounter": 1,
+ "existingNames": {},
+ "existingVNFCounterMap": {"d6557200-ecf2-4641-8094-5393ae3aae60": 1},
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "aicZoneId": "JAG1",
+ "projectName": "x1",
+ "rollbackOnFailure": "true",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "ComplexService",
+ "modelVersion": "1.0",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44"
+ },
+ "isALaCarte": false,
+ "name": "ComplexService",
+ "version": "1.0",
+ "description": "ComplexService",
+ "category": "Emanuel",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isMultiStepDesign": false
+ },
+ "6b528779-44a3-4472-bdff-9cd15ec93450": {
+ "networks": {
+ "ExtVL 0": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0",
+ "trackById": "sf3zth68xjf",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [{}],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "ExtVL 0:0001": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0",
+ "trackById": "2mdxioxca9h",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [{}],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "ExtVL 0_1": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0_1",
+ "trackById": "z7vd1gmpbs",
+ "instanceName": "ExtVL",
+ "productFamilyId": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "zzz1",
+ "instanceParams": [{
+ "vnf_config_template_version": "17.2",
+ "bandwidth_units": "Gbps",
+ "bandwidth": "10",
+ "AIC_CLLI": "ATLMY8GA",
+ "ASN": "AV_vPE",
+ "vnf_instance_name": "yoav"
+ }],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ }
+ },
+ "vnfs": {
+ "2017-488_ADIOD-vPE 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1sgoqi": {
+ "instanceName": "yoav",
+ "volumeGroupName": "123",
+ "modelInfo": {
+ "modelInvariantId": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
+ "modelVersionId": "25284168-24bb-4698-8cb4-3f509146eca5",
+ "modelName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "modelVersion": "6",
+ "modelCustomizationId": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "uuid": "25284168-24bb-4698-8cb4-3f509146eca5"
+ },
+ "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
+ "isMissingData": false,
+ "instanceParams": [{
+ "adiodvpe0_bandwidth": "10",
+ "2017488_adiodvpe0_vnf_instance_name": "mtnj309me6",
+ "2017488_adiodvpe0_vnf_config_template_version": "17.2",
+ "2017488_adiodvpe0_AIC_CLLI": "ATLMY8GA",
+ "adiodvpe0_bandwidth_units": "Gbps"
+ }]
+ }
+ }
+ },
+ "isMissingData": false,
+ "originalName": "2017-488_ADIOD-vPE 0",
+ "vnfStoreKey": "2017-488_ADIOD-vPE 0",
+ "trackById": "o65b26t2thj",
+ "instanceName": "2017488_ADIODvPE",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "platformName": "platform",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [{}],
+ "modelInfo": {
+ "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8",
+ "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09",
+ "modelName": "2017-488_ADIOD-vPE",
+ "modelVersion": "5.0",
+ "modelCustomizationId": "1da7b585-5e61-4993-b95e-8e6606c81e45",
+ "modelCustomizationName": "2017-488_ADIOD-vPE 0",
+ "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09"
+ },
+ "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09"
+ }
+ },
+ "instanceParams": [{"2017488_adiodvpe0_ASN": "AV_vPE"}],
+ "validationCounter": 0,
+ "existingNames": {"123": "", "instancename": "", "yoav": "", "extvl": ""},
+ "existingVNFCounterMap": {"69e09f68-8b63-4cc9-b9ff-860960b5db09": 1},
+ "existingNetworksCounterMap": {"ddc3f20c-08b5-40fd-af72-c6d14636b986": 3},
+ "instanceName": "InstanceName",
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "lcpCloudRegionId": "JANET25",
+ "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
+ "aicZoneId": "JAG1",
+ "projectName": null,
+ "rollbackOnFailure": "true",
+ "aicZoneName": "YUDFJULP-JAG1",
+ "owningEntityName": "WayneHolland",
+ "testApi": "GR_API",
+ "tenantName": "USP-SIP-IC-24335-T-01",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6b528779-44a3-4472-bdff-9cd15ec93450",
+ "modelName": "action-data",
+ "modelVersion": "1.0",
+ "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450"
+ },
+ "isALaCarte": false,
+ "name": "action-data",
+ "version": "1.0",
+ "description": "",
+ "category": "",
+ "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isMultiStepDesign": false
+ }
+ },
+ "lcpRegionsAndTenants": {
+ "lcpRegionList": [{
+ "id": "JANET25",
+ "name": "JANET25",
+ "isPermitted": true
+ }, {"id": "hvf6", "name": "hvf6", "isPermitted": true}],
+ "lcpRegionsTenantsMap": {
+ "JANET25": [{
+ "id": "092eb9e8e4b7412e8787dd091bc58e86",
+ "name": "USP-SIP-IC-24335-T-01",
+ "isPermitted": true
+ }],
+ "hvf6": [{
+ "id": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "name": "AIN Web Tool-15-D-testalexandria",
+ "isPermitted": true
+ }, {
+ "id": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "name": "AIN Web Tool-15-D-STTest2",
+ "isPermitted": true
+ }, {
+ "id": "1178612d2b394be4834ad77f567c0af2",
+ "name": "AIN Web Tool-15-D-SSPtestcustome",
+ "isPermitted": true
+ }, {
+ "id": "19c5ade915eb461e8af52fb2fd8cd1f2",
+ "name": "AIN Web Tool-15-D-UncheckedEcopm",
+ "isPermitted": true
+ }, {
+ "id": "de007636e25249238447264a988a927b",
+ "name": "AIN Web Tool-15-D-dfsdf",
+ "isPermitted": true
+ }, {
+ "id": "62f29b3613634ca6a3065cbe0e020c44",
+ "name": "AIN/SMS-16-D-Multiservices1",
+ "isPermitted": true
+ }, {
+ "id": "649289e30d3244e0b48098114d63c2aa",
+ "name": "AIN Web Tool-15-D-SSPST66",
+ "isPermitted": true
+ }, {
+ "id": "3f21eeea6c2c486bba31dab816c05a32",
+ "name": "AIN Web Tool-15-D-ASSPST47",
+ "isPermitted": true
+ }, {
+ "id": "f60ce21d3ee6427586cff0d22b03b773",
+ "name": "CESAR-100-D-sspjg67246",
+ "isPermitted": true
+ }, {
+ "id": "8774659e425f479895ae091bb5d46560",
+ "name": "CESAR-100-D-sspjg68359",
+ "isPermitted": true
+ }, {
+ "id": "624eb554b0d147c19ff8885341760481",
+ "name": "AINWebTool-15-D-iftach",
+ "isPermitted": true
+ }, {
+ "id": "214f55f5fc414c678059c383b03e4962",
+ "name": "CESAR-100-D-sspjg612401",
+ "isPermitted": true
+ }, {
+ "id": "c90666c291664841bb98e4d981ff1db5",
+ "name": "CESAR-100-D-sspjg621340",
+ "isPermitted": true
+ }, {
+ "id": "ce5b6bc5c7b348e1bf4b91ac9a174278",
+ "name": "sspjg621351cloned",
+ "isPermitted": true
+ }, {
+ "id": "b386b768a3f24c8e953abbe0b3488c02",
+ "name": "AINWebTool-15-D-eteancomp",
+ "isPermitted": true
+ }, {
+ "id": "dc6c4dbfd225474e9deaadd34968646c",
+ "name": "AINWebTool-15-T-SPFET",
+ "isPermitted": true
+ }, {
+ "id": "02cb5030e9914aa4be120bd9ed1e19eb",
+ "name": "AINWebTool-15-X-eeweww",
+ "isPermitted": true
+ }, {
+ "id": "f2f3830e4c984d45bcd00e1a04158a79",
+ "name": "CESAR-100-D-spjg61909",
+ "isPermitted": true
+ }, {
+ "id": "05b91bd5137f4929878edd965755c06d",
+ "name": "CESAR-100-D-sspjg621512cloned",
+ "isPermitted": true
+ }, {
+ "id": "7002fbe8482d4a989ddf445b1ce336e0",
+ "name": "AINWebTool-15-X-vdr",
+ "isPermitted": true
+ }, {
+ "id": "4008522be43741dcb1f5422022a2aa0b",
+ "name": "AINWebTool-15-D-ssasa",
+ "isPermitted": true
+ }, {
+ "id": "f44e2e96a1b6476abfda2fa407b00169",
+ "name": "AINWebTool-15-D-PFNPT",
+ "isPermitted": true
+ }, {
+ "id": "b69a52bec8a84669a37a1e8b72708be7",
+ "name": "AINWebTool-15-X-vdre",
+ "isPermitted": true
+ }, {
+ "id": "fac7d9fd56154caeb9332202dcf2969f",
+ "name": "AINWebTool-15-X-NONPODECOMP",
+ "isPermitted": true
+ }, {
+ "id": "2d34d8396e194eb49969fd61ffbff961",
+ "name": "DN5242-Nov16-T5",
+ "isPermitted": true
+ }, {
+ "id": "cb42a77ff45b48a8b8deb83bb64acc74",
+ "name": "ro-T11",
+ "isPermitted": true
+ }, {
+ "id": "fa45ca53c80b492fa8be5477cd84fc2b",
+ "name": "ro-T112",
+ "isPermitted": true
+ }, {
+ "id": "4914ab0ab3a743e58f0eefdacc1dde77",
+ "name": "DN5242-Nov21-T1",
+ "isPermitted": true
+ }, {
+ "id": "d0a3e3f2964542259d155a81c41aadc3",
+ "name": "test-hvf6-09",
+ "isPermitted": true
+ }, {"id": "cbb99fe4ada84631b7baf046b6fd2044", "name": "DN5242-Nov16-T3", "isPermitted": true}]
+ }
+ },
+ "productFamilies": [{
+ "id": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "name": "SCOTTIE",
+ "isPermitted": true
+ }, {
+ "id": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "name": "IGNACIO",
+ "isPermitted": true
+ }, {
+ "id": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "name": "Christie",
+ "isPermitted": true
+ }, {
+ "id": "a4f6f2ae-9bf5-4ed7-b904-06b2099c4bd7",
+ "name": "Enhanced Services",
+ "isPermitted": true
+ }, {"id": "vTerrance", "name": "vTerrance", "isPermitted": true}, {
+ "id": "323d69d9-2efe-4r45-ay0a-89ea7ard4e6f",
+ "name": "vSCP",
+ "isPermitted": true
+ }, {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": true
+ }, {
+ "id": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
+ "name": "BVOIP",
+ "isPermitted": true
+ }, {"id": "db171b8f-115c-4992-a2e3-ee04cae357e0", "name": "LINDSEY", "isPermitted": true}, {
+ "id": "LRSI-OSPF",
+ "name": "LRSI-OSPF",
+ "isPermitted": true
+ }, {"id": "vRosemarie", "name": "HNGATEWAY", "isPermitted": true}, {
+ "id": "vHNPaas",
+ "name": "WILKINS",
+ "isPermitted": true
+ }, {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ }, {"id": "b6a3f28c-eebf-494c-a900-055cc7c874ce", "name": "VROUTER", "isPermitted": true}, {
+ "id": "Cisneros",
+ "name": "vMuriel",
+ "isPermitted": true
+ }, {
+ "id": "0ee8c1bc-7cbd-4b0a-a1ac-e9999255abc1",
+ "name": "CARA Griffin",
+ "isPermitted": true
+ }, {
+ "id": "c7611ebe-c324-48f1-8085-94aef0c6ef3d",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ }, {"id": "e30755dc-5673-4b6b-9dcf-9abdd96b93d1", "name": "Transport", "isPermitted": true}, {
+ "id": "vSalvatore",
+ "name": "vSalvatore",
+ "isPermitted": true
+ }, {"id": "d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4", "name": "Josefina", "isPermitted": true}, {
+ "id": "vHubbard",
+ "name": "vHubbard",
+ "isPermitted": true
+ }, {"id": "12a96a9d-4b4c-4349-a950-fe1159602621", "name": "DARREN MCGEE", "isPermitted": true}],
+ "serviceTypes": {
+ "e433710f-9217-458d-a79d-1c7aff376d89": [{
+ "id": "0",
+ "name": "vRichardson",
+ "isPermitted": false
+ }, {"id": "1", "name": "TYLER SILVIA", "isPermitted": true}, {
+ "id": "2",
+ "name": "Emanuel",
+ "isPermitted": false
+ }, {"id": "3", "name": "vJamie", "isPermitted": false}, {
+ "id": "4",
+ "name": "vVoiceMail",
+ "isPermitted": false
+ }, {"id": "5", "name": "Kennedy", "isPermitted": false}, {
+ "id": "6",
+ "name": "vSEGW",
+ "isPermitted": false
+ }, {"id": "7", "name": "vVM", "isPermitted": false}, {
+ "id": "8",
+ "name": "vOTA",
+ "isPermitted": false
+ }, {"id": "9", "name": "vMME", "isPermitted": false}, {
+ "id": "10",
+ "name": "vMNS",
+ "isPermitted": false
+ }, {"id": "11", "name": "vSCP", "isPermitted": false}, {
+ "id": "12",
+ "name": "VPMS",
+ "isPermitted": false
+ }, {"id": "13", "name": "vMMSC", "isPermitted": false}, {
+ "id": "14",
+ "name": "SSD",
+ "isPermitted": false
+ }, {"id": "15", "name": "vMOG", "isPermitted": false}, {
+ "id": "16",
+ "name": "LINDSEY",
+ "isPermitted": false
+ }, {"id": "17", "name": "JOHANNA_SANTOS", "isPermitted": false}, {
+ "id": "18",
+ "name": "vCarroll",
+ "isPermitted": false
+ }]
+ },
+ "aicZones": [{"id": "NFT1", "name": "NFTJSSSS-NFT1"}, {"id": "JAG1", "name": "YUDFJULP-JAG1"}, {
+ "id": "YYY1",
+ "name": "UUUAIAAI-YYY1"
+ }, {"id": "BAN1", "name": "VSDKYUTP-BAN1"}, {"id": "DKJ1", "name": "DKJSJDKA-DKJ1"}, {
+ "id": "MCS1",
+ "name": "ASACMAMS-MCS1"
+ }, {"id": "UIO1", "name": "uioclli1-UIO1"}, {"id": "RAJ1", "name": "YGBIJNLQ-RAJ1"}, {
+ "id": "OPA1",
+ "name": "opaclli1-OPA1"
+ }, {"id": "SDE1", "name": "ZXCVBNMA-SDE1"}, {"id": "VEN2", "name": "FGHJUHIL-VEN2"}, {
+ "id": "ORL1",
+ "name": "ORLDFLMA-ORL1"
+ }, {"id": "JAD1", "name": "JADECLLI-JAD1"}, {"id": "ZXL1", "name": "LWLWCANN-ZXL1"}, {
+ "id": "CKL1",
+ "name": "CLKSKCKK-CKL1"
+ }, {"id": "SDF1", "name": "sdfclli1-SDF1"}, {"id": "RAD1", "name": "RADICAL1-RAD1"}, {
+ "id": "KIT1",
+ "name": "BHYJFGLN-KIT1"
+ }, {"id": "REL1", "name": "INGERFGT-REL1"}, {"id": "JNL1", "name": "CJALSDAC-JNL1"}, {
+ "id": "OLK1",
+ "name": "OLKOLKLS-OLK1"
+ }, {"id": "CHI1", "name": "CHILLIWE-CHI1"}, {"id": "UUU4", "name": "UUUAAAUU-UUU4"}, {
+ "id": "TUF1",
+ "name": "TUFCLLI1-TUF1"
+ }, {"id": "KJN1", "name": "CKALDKSA-KJN1"}, {"id": "SAM1", "name": "SNDGCA64-SAN1"}, {
+ "id": "SCK1",
+ "name": "SCKSCKSK-SCK1"
+ }, {"id": "HJH1", "name": "AOEEQQQD-HJH1"}, {"id": "HGD1", "name": "SDFQWHGD-HGD1"}, {
+ "id": "KOR1",
+ "name": "HYFLNBVT-KOR1"
+ }, {"id": "ATL43", "name": "AICLOCID-ATL43"}, {"id": "ATL54", "name": "AICFTAAI-ATL54"}, {
+ "id": "ATL66",
+ "name": "CLLIAAII-ATL66"
+ }, {"id": "VEL1", "name": "BNMLKUIK-VEL1"}, {"id": "ICC1", "name": "SANJITAT-ICC1"}, {
+ "id": "MNT11",
+ "name": "WSXEFBTH-MNT11"
+ }, {"id": "DEF2", "name": "WSBHGTYL-DEF2"}, {"id": "MAD11", "name": "SDFQWGKL-MAD11"}, {
+ "id": "OLG1",
+ "name": "OLHOLHOL-OLG1"
+ }, {"id": "GAR1", "name": "NGFVSJKO-GAR1"}, {"id": "SAN22", "name": "GNVLSCTL-SAN22"}, {
+ "id": "HRG1",
+ "name": "HRGHRGGS-HRG1"
+ }, {"id": "JCS1", "name": "JCSJSCJS-JCS1"}, {"id": "DHA12", "name": "WSXEDECF-DHA12"}, {
+ "id": "HJE1",
+ "name": "AOEEWWWD-HJE1"
+ }, {"id": "NCA1", "name": "NCANCANN-NCA1"}, {"id": "IOP1", "name": "iopclli1-IOP1"}, {
+ "id": "RTY1",
+ "name": "rtyclli1-RTY1"
+ }, {"id": "KAP1", "name": "HIOUYTRQ-KAP1"}, {"id": "ZEN1", "name": "ZENCLLI1-ZEN1"}, {
+ "id": "HKA1",
+ "name": "JAKHLASS-HKA1"
+ }, {"id": "CQK1", "name": "CQKSCAKK-CQK1"}, {"id": "SAI1", "name": "UBEKQLPD-SAI1"}, {
+ "id": "ERT1",
+ "name": "ertclli1-ERT1"
+ }, {"id": "IBB1", "name": "PLMKOIJU-IBB1"}, {"id": "TIR2", "name": "PLKINHYI-TIR2"}, {
+ "id": "HSD1",
+ "name": "CHASKCDS-HSD1"
+ }, {"id": "SLF78", "name": "SDCTLFN1-SLF78"}, {"id": "SEE78", "name": "SDCTEEE4-SEE78"}, {
+ "id": "SAN13",
+ "name": "TOKYJPFA-SAN13"
+ }, {"id": "SAA78", "name": "SDCTAAA1-SAA78"}, {"id": "LUC1", "name": "ATLDFGYC-LUC1"}, {
+ "id": "AMD13",
+ "name": "MEMATLAN-AMD13"
+ }, {"id": "TOR1", "name": "TOROONXN-TOR1"}, {"id": "QWE1", "name": "QWECLLI1-QWE1"}, {
+ "id": "ZOG1",
+ "name": "ZOGASTRO-ZOG1"
+ }, {"id": "CAL33", "name": "CALIFORN-CAL33"}, {"id": "SHH78", "name": "SDIT1HHH-SHH78"}, {
+ "id": "DSA1",
+ "name": "LKJHGFDS-DSA1"
+ }, {"id": "CLG1", "name": "CLGRABAD-CLG1"}, {"id": "BNA1", "name": "BNARAGBK-BNA1"}, {
+ "id": "ATL84",
+ "name": "CANTTCOC-ATL84"
+ }, {"id": "APP1", "name": "WBHGTYUI-APP1"}, {"id": "RJN1", "name": "RJNRBZAW-RJN1"}, {
+ "id": "EHH78",
+ "name": "SDCSHHH5-EHH78"
+ }, {"id": "mac10", "name": "PKGTESTF-mac10"}, {"id": "SXB78", "name": "SDCTGXB1-SXB78"}, {
+ "id": "SAX78",
+ "name": "SDCTAXG1-SAX78"
+ }, {"id": "SYD1", "name": "SYDNAUBV-SYD1"}, {"id": "TOK1", "name": "TOKYJPFA-TOK1"}, {
+ "id": "KGM2",
+ "name": "KGMTNC20-KGM2"
+ }, {"id": "DCC1b", "name": "POIUYTGH-DCC1b"}, {"id": "SKK78", "name": "SDCTKKK1-SKK78"}, {
+ "id": "SGG78",
+ "name": "SDCTGGG1-SGG78"
+ }, {"id": "SJJ78", "name": "SDCTJJJ1-SJJ78"}, {"id": "SBX78", "name": "SDCTBXG1-SBX78"}, {
+ "id": "LAG1",
+ "name": "LARGIZON-LAG1"
+ }, {"id": "IAA1", "name": "QAZXSWED-IAA1"}, {"id": "POI1", "name": "PLMNJKIU-POI1"}, {
+ "id": "LAG1a",
+ "name": "LARGIZON-LAG1a"
+ }, {"id": "PBL1", "name": "PBLAPBAI-PBL1"}, {"id": "LAG45", "name": "LARGIZON-LAG1a"}, {
+ "id": "MAR1",
+ "name": "MNBVCXZM-MAR1"
+ }, {"id": "HST70", "name": "HSTNTX70-HST70"}, {"id": "DCC1a", "name": "POIUYTGH-DCC1a"}, {
+ "id": "TOL1",
+ "name": "TOLDOH21-TOL1"
+ }, {"id": "LON1", "name": "LONEENCO-LON1"}, {"id": "SJU78", "name": "SDIT1JUB-SJU78"}, {
+ "id": "STN27",
+ "name": "HSTNTX01-STN27"
+ }, {"id": "SSW56", "name": "ss8126GT-SSW56"}, {"id": "SBB78", "name": "SDIT1BBB-SBB78"}, {
+ "id": "DCC3",
+ "name": "POIUYTGH-DCC3"
+ }, {"id": "GNV1", "name": "GNVLSCTL-GNV1"}, {"id": "WAS1", "name": "WASHDCSW-WAS1"}, {
+ "id": "TOY1",
+ "name": "TORYONNZ-TOY1"
+ }, {"id": "STT1", "name": "STTLWA02-STT1"}, {"id": "STG1", "name": "STTGGE62-STG1"}, {
+ "id": "SLL78",
+ "name": "SDCTLLL1-SLL78"
+ }, {"id": "SBU78", "name": "SDIT1BUB-SBU78"}, {"id": "ATL2", "name": "ATLNGANW-ATL2"}, {
+ "id": "BOT1",
+ "name": "BOTHWAKY-BOT1"
+ }, {"id": "SNG1", "name": "SNGPSIAU-SNG1"}, {"id": "NYC1", "name": "NYCMNY54-NYC1"}, {
+ "id": "LAG1b",
+ "name": "LARGIZON-LAG1b"
+ }, {"id": "AMD15", "name": "AMDFAA01-AMD15"}, {"id": "SNA1", "name": "SNANTXCA-SNA1"}, {
+ "id": "PLT1",
+ "name": "PLTNCA60-PLT1"
+ }, {"id": "TLP1", "name": "TLPNXM18-TLP1"}, {"id": "SDD81", "name": "SAIT1DD6-SDD81"}, {
+ "id": "DCC1",
+ "name": "POIUYTGH-DCC1"
+ }, {"id": "DCC2", "name": "POIUYTGH-DCC2"}, {"id": "OKC1", "name": "OKCBOK55-OKC1"}, {
+ "id": "PAR1",
+ "name": "PARSFRCG-PAR1"
+ }, {"id": "TES36", "name": "ABCEETES-TES36"}, {"id": "COM1", "name": "PLMKOPIU-COM1"}, {
+ "id": "ANI1",
+ "name": "ATLNGTRE-ANI1"
+ }, {"id": "SDG78", "name": "SDIT1BDG-SDG78"}, {"id": "mac20", "name": "PKGTESTF-mac20"}, {
+ "id": "DSF45",
+ "name": "DSFBG123-DSF45"
+ }, {"id": "HST25", "name": "HSTNTX01-HST25"}, {"id": "AMD18", "name": "AUDIMA01-AMD18"}, {
+ "id": "SAA80",
+ "name": "SAIT9AA3-SAA80"
+ }, {"id": "SSA56", "name": "SSIT2AA7-SSA56"}, {"id": "SDD82", "name": "SAIT1DD9-SDD82"}, {
+ "id": "JCV1",
+ "name": "JCVLFLBW-JCV1"
+ }, {"id": "SUL2", "name": "WERTYUJK-SUL2"}, {"id": "PUR1", "name": "purelyde-PUR1"}, {
+ "id": "FDE55",
+ "name": "FDERT555-FDE55"
+ }, {"id": "SITE", "name": "LONEENCO-SITE"}, {"id": "ATL1", "name": "ATLNGAMA-ATL1"}, {
+ "id": "JUL1",
+ "name": "ZXCVBNMM-JUL1"
+ }, {"id": "TAT34", "name": "TESAAISB-TAT34"}, {"id": "XCP12", "name": "CHKGH123-XCP12"}, {
+ "id": "RAI1",
+ "name": "poiuytre-RAI1"
+ }, {"id": "HPO1", "name": "ATLNGAUP-HPO1"}, {"id": "KJF12", "name": "KJFDH123-KJF12"}, {
+ "id": "SCC80",
+ "name": "SAIT9CC3-SCC80"
+ }, {"id": "SAA12", "name": "SAIT9AF8-SAA12"}, {"id": "SAA14", "name": "SAIT1AA9-SAA14"}, {
+ "id": "ATL35",
+ "name": "TTESSAAI-ATL35"
+ }, {"id": "CWY1", "name": "CWYMOWBS-CWY1"}, {"id": "ATL76", "name": "TELEPAAI-ATL76"}, {
+ "id": "DSL12",
+ "name": "DSLFK242-DSL12"
+ }, {"id": "ATL53", "name": "AAIATLTE-ATL53"}, {"id": "SAA11", "name": "SAIT9AA2-SAA11"}, {
+ "id": "ATL62",
+ "name": "TESSASCH-ATL62"
+ }, {"id": "AUG1", "name": "ASDFGHJK-AUG1"}, {"id": "POI22", "name": "POIUY123-POI22"}, {
+ "id": "SAA13",
+ "name": "SAIT1AA9-SAA13"
+ }, {"id": "BHY17", "name": "BHYTFRF3-BHY17"}, {"id": "LIS1", "name": "HOSTPROF-LIS1"}, {
+ "id": "SIP1",
+ "name": "ZXCVBNMK-SIP1"
+ }, {"id": "ATL99", "name": "TEESTAAI-ATL43"}, {"id": "ATL64", "name": "FORLOAAJ-ATL64"}, {
+ "id": "TAT33",
+ "name": "TESAAISA-TAT33"
+ }, {"id": "RAD10", "name": "INDIPUNE-RAD10"}, {"id": "RTW5", "name": "BHYTFRY4-RTW5"}, {
+ "id": "JGS1",
+ "name": "KSJKKKKK-JGS1"
+ }, {"id": "ATL98", "name": "TEESTAAI-ATL43"}, {"id": "WAN1", "name": "LEIWANGW-WAN1"}, {
+ "id": "ATL44",
+ "name": "ATLSANAB-ATL44"
+ }, {"id": "RTD2", "name": "BHYTFRk4-RTD2"}, {"id": "NIR1", "name": "ORFLMANA-NIR1"}, {
+ "id": "ATL75",
+ "name": "SANAAIRE-ATL75"
+ }, {"id": "NUM1", "name": "QWERTYUI-NUM1"}, {"id": "MTN32", "name": "MDTWNJ21-MTN32"}, {
+ "id": "RTZ4",
+ "name": "BHYTFRZ6-RTZ4"
+ }, {"id": "ATL56", "name": "ATLSANAC-ATL56"}, {"id": "AMS1", "name": "AMSTNLBW-AMS1"}, {
+ "id": "RCT1",
+ "name": "AMSTERNL-RCT1"
+ }, {"id": "JAN1", "name": "ORFLMATT-JAN1"}, {"id": "ABC14", "name": "TESAAISA-ABC14"}, {
+ "id": "TAT37",
+ "name": "TESAAISD-TAT37"
+ }, {"id": "MIC54", "name": "MICHIGAN-MIC54"}, {"id": "ABC11", "name": "ATLSANAI-ABC11"}, {
+ "id": "AMF11",
+ "name": "AMDOCS01-AMF11"
+ }, {"id": "ATL63", "name": "ATLSANEW-ATL63"}, {"id": "ABC12", "name": "ATLSECIA-ABC12"}, {
+ "id": "MTN20",
+ "name": "MDTWNJ21-MTN20"
+ }, {"id": "ABC15", "name": "AAITESAN-ABC15"}, {"id": "AVT1", "name": "AVTRFLHD-AVT1"}, {
+ "id": "ATL34",
+ "name": "ATLSANAI-ATL34"
+ }],
+ "categoryParameters": {
+ "owningEntityList": [{
+ "id": "aaa1",
+ "name": "aaa1"
+ }, {"id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "name": "WayneHolland"}, {
+ "id": "Melissa",
+ "name": "Melissa"
+ }],
+ "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"}]
+ },
+ "type": "[LCP_REGIONS_AND_TENANTS] Update",
+ "subscribers": [{
+ "id": "CAR_2020_ER",
+ "name": "CAR_2020_ER",
+ "isPermitted": true
+ }, {
+ "id": "21014aa2-526b-11e6-beb8-9e71128cae77",
+ "name": "JULIO ERICKSON",
+ "isPermitted": false
+ }, {
+ "id": "DHV1707-TestSubscriber-2",
+ "name": "DALE BRIDGES",
+ "isPermitted": false
+ }, {"id": "DHV1707-TestSubscriber-1", "name": "LLOYD BRIDGES", "isPermitted": false}, {
+ "id": "jimmy-example",
+ "name": "JimmyExampleCust-20161102",
+ "isPermitted": false
+ }, {
+ "id": "jimmy-example2",
+ "name": "JimmyExampleCust-20161103",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-TestSub-PWT-102",
+ "name": "ERICA5779-TestSub-PWT-102",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-TestSub-PWT-101",
+ "name": "ERICA5779-TestSub-PWT-101",
+ "isPermitted": false
+ }, {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-Subscriber-4",
+ "name": "ERICA5779-Subscriber-5",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-TestSub-PWT-103",
+ "name": "ERICA5779-TestSub-PWT-103",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-Subscriber-2",
+ "name": "ERICA5779-Subscriber-2",
+ "isPermitted": false
+ }, {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "SILVIA ROBBINS",
+ "isPermitted": true
+ }, {
+ "id": "ERICA5779-Subscriber-3",
+ "name": "ERICA5779-Subscriber-3",
+ "isPermitted": false
+ }, {"id": "31739f3e-526b-11e6-beb8-9e71128cae77", "name": "CRAIG/ROBERTS", "isPermitted": false}]
+ }
+ };
+ }
+}
+
+class MockFeatureFlagsService {}
+
+describe('Network popup service', () => {
+ let injector;
+ let service: NetworkPopupService;
+ let genericFormService: GenericFormService
+ let defaultDataGeneratorService: DefaultDataGeneratorService;
+ let fb: FormBuilder;
+ let iframeService: IframeService;
+
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ providers : [
+ NetworkPopupService,
+ BasicControlGenerator,
+ NetworkControlGenerator,
+ DefaultDataGeneratorService,
+ GenericFormService,
+ FormBuilder,
+ IframeService,
+ AaiService,
+ LogService,
+ BasicPopupService,
+ {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
+ {provide: NgRedux, useClass: MockReduxStore},
+ {provide: HttpClient, useClass: MockAppStore},
+ {provide: SdcUiServices.ModalService, useClass: MockModalService}
+ ]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ service = injector.get(NetworkPopupService);
+ genericFormService = injector.get(GenericFormService);
+ defaultDataGeneratorService = injector.get(DefaultDataGeneratorService);
+ fb = injector.get(FormBuilder);
+ iframeService = injector.get(IframeService);
+
+ })().then(done).catch(done.fail));
+
+ test('getTitle should return the correct title for edit and create mode', () => {
+ expect(service.getTitle(true)).toBe('Edit Network');
+ expect(service.getTitle(false)).toBe('Set new Network');
+ });
+
+ test('getSubLeftTitle should return network model name', () => {
+ service.uuidData = {
+ 'networkId': 'Model name'
+ };
+ expect(service.getSubLeftTitle()).toBe('Model name');
+ });
+
+ test('getSubRightTitle should return popup type', () => {
+ expect(service.getSubRightTitle()).toBe('Network Instance Details');
+ });
+
+ test('getModelInformation should update modelInformations', () => {
+ const serviceId: string = '6b528779-44a3-4472-bdff-9cd15ec93450';
+ const networkModel: string = 'ExtVL 0';
+
+ service.getModelInformation(serviceId, networkModel);
+ expect(service.modelInformations.length).toEqual(13);
+ expect(service.modelInformations[0].label).toEqual("Subscriber Name");
+ expect(service.modelInformations[0].values).toEqual(['SILVIA ROBBINS']);
+
+ expect(service.modelInformations[1].label).toEqual("Service Name");
+ expect(service.modelInformations[1].values).toEqual(['action-data']);
+
+ expect(service.modelInformations[2].label).toEqual("Service Instance Name");
+ expect(service.modelInformations[2].values).toEqual(['InstanceName']);
+
+ expect(service.modelInformations[3].label).toEqual("Model Name");
+ expect(service.modelInformations[3].values).toEqual(['ExtVL']);
+
+ expect(service.modelInformations[4].label).toEqual("Model version");
+ expect(service.modelInformations[4].values).toEqual(['37.0']);
+
+ expect(service.modelInformations[5].label).toEqual("Description");
+ expect(service.modelInformations[5].values).toEqual(['ECOMP generic virtual link (network) base type for all other service-level and global networks']);
+
+ expect(service.modelInformations[6].label).toEqual("Category");
+ expect(service.modelInformations[6].values).toEqual([undefined]);
+
+ expect(service.modelInformations[7].label).toEqual("Sub Category");
+ expect(service.modelInformations[7].values).toEqual([undefined]);
+
+ expect(service.modelInformations[8].label).toEqual("UUID");
+ expect(service.modelInformations[8].values).toEqual(['ddc3f20c-08b5-40fd-af72-c6d14636b986']);
+
+ expect(service.modelInformations[9].label).toEqual("Invariant UUID");
+ expect(service.modelInformations[9].values).toEqual(['379f816b-a7aa-422f-be30-17114ff50b7c']);
+
+ expect(service.modelInformations[10].label).toEqual("Service type");
+ expect(service.modelInformations[10].values).toEqual(['']);
+
+ expect(service.modelInformations[11].label).toEqual("Service role");
+ expect(service.modelInformations[11].values).toEqual(['']);
+
+ expect(service.modelInformations[12].label).toEqual('Network roles');
+ expect(service.modelInformations[12].values).toEqual( ['network role 1', ' network role 2']);
+ });
+
+
+ test('onCancel should trigger closeDialogEvent and iframe', () => {
+ let that = <any>{
+ parentElementClassName: 'content',
+ _iframeService: iframeService
+ };
+ jest.spyOn(iframeService, 'removeClassCloseModal');
+ jest.spyOn(service.closeDialogEvent, 'next');
+
+ service.onCancel(that, fb.group({}));
+
+ expect(that._iframeService.removeClassCloseModal).toHaveBeenCalledWith(that.parentElementClassName)
+ expect(service.closeDialogEvent.next).toHaveBeenCalledWith(that);
+ });
+
+ test('onSubmit should trigger onCancel', () => {
+ let that = <any>{
+ parentElementClassName: 'content',
+ _iframeService: iframeService,
+ storeNetwork: () => {
+ },
+ serviceModel: {
+ uuid: 'someUUID'
+ }
+ };
+ let form = fb.group({});
+ jest.spyOn(service, 'onCancel');
+ jest.spyOn(that, 'storeNetwork');
+ jest.spyOn(window.parent, 'postMessage');
+
+ service.onSubmit(that, form);
+
+ expect(service.onCancel).toHaveBeenCalledWith(that, form);
+ expect(that.storeNetwork).toHaveBeenCalledWith(that, form.value);
+ expect(window.parent.postMessage).toHaveBeenCalledWith({
+ eventId: 'submitIframe',
+ data: {
+ serviceModelId: 'someUUID'
+ }
+ }, "*");
+ });
+});
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/network/network.popup.service.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/network/network.popup.service.ts
new file mode 100644
index 000000000..7f32360f5
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/network/network.popup.service.ts
@@ -0,0 +1,150 @@
+import {Injectable} from "@angular/core";
+import {FormPopupDetails, PopupType} from "../../../../models/formControlModels/formPopupDetails.model";
+import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
+import {NetworkInstance} from "../../../../models/networkInstance";
+import {AppState} from "../../../../store/reducers";
+import {NgRedux} from "@angular-redux/store";
+import {ITreeNode} from "angular-tree-component/dist/defs/api";
+import {NetworkControlGenerator} from "../../../genericForm/formControlsServices/networkGenerator/network.control.generator";
+import {ModelInformationItem} from "../../../model-information/model-information.component";
+import {Constants} from "../../../../utils/constants";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {ServiceModel} from "../../../../models/serviceModel";
+import {FormGroup} from "@angular/forms";
+import {ModelInfo} from "../../../../models/modelInfo";
+import {IframeService} from "../../../../utils/iframe.service";
+import {GenericPopupInterface} from "../generic-popup.interface";
+import {Subject} from "rxjs/Subject";
+import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import * as _ from 'lodash';
+import {BasicPopupService} from "../basic.popup.service";
+import {changeInstanceCounter} from "../../../../storeUtil/utils/general/general.actions";
+import {createNetworkInstance, updateNetworkInstance} from "../../../../storeUtil/utils/network/network.actions";
+
+@Injectable()
+export class NetworkPopupService implements GenericPopupInterface {
+ dynamicInputs: any;
+ instance: any;
+ model: any;
+ serviceModel: ServiceModel;
+ modelInformations: ModelInformationItem[] = [];
+ uuidData: Object;
+ closeDialogEvent: Subject<any> = new Subject<any>();
+ isUpdateMode: boolean;
+
+
+ constructor(private _basicControlGenerator: BasicControlGenerator,
+ private _networkControlGenerator: NetworkControlGenerator,
+ private _iframeService: IframeService,
+ private _defaultDataGeneratorService: DefaultDataGeneratorService,
+ private _aaiService: AaiService,
+ private _basicPopupService : BasicPopupService,
+ private _store: NgRedux<AppState>) {
+ }
+
+ getInstance(serviceId: string, networkName: string, networkStoreKey: string): any {
+ if (_.isNil(networkStoreKey)) {
+ return new NetworkInstance();
+ }
+ return this._store.getState().service.serviceInstance[serviceId].networks[networkStoreKey];
+ }
+
+ getGenericFormPopupDetails(serviceId: string, networkName: string, networkStoreKey: string, node: ITreeNode, uuidData: Object, isUpdateMode: boolean): FormPopupDetails {
+ this.uuidData = uuidData;
+ this.instance = this.getInstance(serviceId, networkName, networkStoreKey);
+
+
+ this.getModelInformation(serviceId, networkName);
+
+ return new FormPopupDetails(this,
+ PopupType.NETWORK_MACRO,
+ uuidData,
+ this.getTitle(isUpdateMode),
+ this.getSubLeftTitle(),
+ this.getSubRightTitle(),
+ this.getControls(serviceId, networkName, networkStoreKey, isUpdateMode),
+ this._basicPopupService.getDynamicInputs(serviceId,networkName, networkStoreKey, 'networks'),
+ this.modelInformations,
+ (that, form: FormGroup) => {that.onSubmit(that, form);},
+ (that: any, form: FormGroup) => {that.onCancel(that, form); }
+ );
+ }
+
+ getModelInformation(serviceId: string, networkName: string) {
+ this._aaiService.getServiceModelById(serviceId).subscribe((result: any) => {
+ this.serviceModel = new ServiceModel(result);
+ this.model = this._basicPopupService.getModelFromResponse(result, 'networks', networkName);
+
+ const serviceInstance = this._store.getState().service.serviceInstance[serviceId];
+ this.modelInformations = [
+ new ModelInformationItem("Subscriber Name", "subscriberName", [this._basicPopupService.extractSubscriberNameBySubscriberId(serviceInstance.globalSubscriberId)], "", true),
+ new ModelInformationItem("Service Name", "serviceModelName", [this.serviceModel.name], "", true),
+ new ModelInformationItem("Service Instance Name", "serviceName", [serviceInstance.instanceName], "", false),
+ new ModelInformationItem("Model Name", "modelName", [this.model.name], "", true),
+ new ModelInformationItem("Model version", "modelVersion", [this.model.version], "", true),
+ new ModelInformationItem("Description", "description", [this.model.description]),
+ new ModelInformationItem("Category", "category", [this.model.category]),
+ new ModelInformationItem("Sub Category", "subCategory", [this.model.subCategory]),
+ new ModelInformationItem("UUID", "uuid", [this.model.uuid], Constants.ServicePopup.TOOLTIP_UUID, true),
+ new ModelInformationItem("Invariant UUID", "invariantUuid", [this.model.invariantUuid], Constants.ServicePopup.TOOLTIP_INVARIANT_UUID, true),
+ new ModelInformationItem("Service type", "serviceType", [this.serviceModel.serviceType]),
+ new ModelInformationItem("Service role", "serviceRole", [this.serviceModel.serviceRole]),
+ new ModelInformationItem("Network roles", "network-role", this.model.roles, "", false)
+ ];
+ });
+ }
+
+ getControls(serviceId: string, networkName: string, networkStoreKey: string, isUpdateMode: boolean) {
+ if (this._store.getState().service.serviceHierarchy[serviceId].service.instantiationType === 'Macro') {
+ return this._networkControlGenerator.getMacroFormControls(serviceId, networkStoreKey, networkName, isUpdateMode);
+ } else {
+ return this._networkControlGenerator.getAlaCarteFormControls(serviceId, networkStoreKey, networkName, isUpdateMode);
+ }
+ }
+
+
+ onSubmit(that, form: FormGroup) {
+ form.value['instanceParams'] = form.value['instanceParams'] && [form.value['instanceParams']];
+ that.storeNetwork(that, form.value);
+ window.parent.postMessage({
+ eventId: 'submitIframe',
+ data: {
+ serviceModelId: that.serviceModel.uuid
+ }
+ }, "*");
+ this.onCancel(that, form);
+ }
+
+
+ onCancel(that, form) {
+ form.reset();
+ that._iframeService.removeClassCloseModal('content');
+ this.closeDialogEvent.next(that);
+ }
+
+ storeNetwork = (that, formValues: any): void => {
+ formValues.modelInfo = new ModelInfo(that.model);
+ formValues.uuid = formValues.modelInfo.uuid;
+ formValues.isMissingData = false;
+
+ if (!that.uuidData.networkStoreKey) {
+ this._store.dispatch(changeInstanceCounter(formValues.modelInfo.modelUniqueId , that.uuidData.serviceId, 1, <any>{data: {type: 'Network'}}));
+ this._store.dispatch(createNetworkInstance(formValues, that.uuidData.networkId, that.uuidData.serviceId, that.uuidData.networkId));
+ } else {
+ this._store.dispatch(updateNetworkInstance(formValues, that.uuidData.networkId, that.uuidData.serviceId, that.uuidData.networkStoreKey));
+ }
+ };
+
+
+ getTitle(isUpdateMode : boolean) : string {
+ return isUpdateMode ? 'Edit Network' : 'Set new Network';
+ }
+
+ getSubLeftTitle(): string {
+ return this.uuidData['networkId'];
+ }
+
+ getSubRightTitle(): string {
+ return "Network Instance Details";
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.spec.ts
new file mode 100644
index 000000000..64f47a3fc
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.spec.ts
@@ -0,0 +1,2439 @@
+import {LogService} from "../../../../utils/log/log.service";
+import {ReflectiveInjector} from "@angular/core";
+import {NgRedux} from "@angular-redux/store";
+import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {HttpClient} from "@angular/common/http";
+import {GenericFormService} from "../../../genericForm/generic-form.service";
+import {FormBuilder} from "@angular/forms";
+import {IframeService} from "../../../../utils/iframe.service";
+import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {BasicPopupService} from "../basic.popup.service";
+import {ServicePopupService} from "./service.popup.service";
+import {ServiceControlGenerator} from "../../../genericForm/formControlsServices/service.control.generator";
+import {FormControlModel} from "../../../../models/formControlModels/formControl.model";
+import {SdcUiServices} from "onap-ui-angular";
+import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flags.service";
+import {getTestBed, TestBed} from "@angular/core/testing";
+
+class MockModalService<T> {}
+
+class MockAppStore<T> {}
+
+class MockReduxStore<T> {
+ getState() {
+ return {
+ "global": {
+ "name": null,
+ "flags": {
+ "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
+ "FLAG_SHOW_ASSIGNMENTS": true,
+ "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
+ "FLAG_UNASSIGN_SERVICE": true,
+ "FLAG_SHOW_VERIFY_SERVICE": false,
+ "FLAG_COLLECTION_RESOURCE_SUPPORT": true,
+ "FLAG_DUPLICATE_VNF": true,
+ "FLAG_SERVICE_MODEL_CACHE": true,
+ "FLAG_ADVANCED_PORTS_FILTER": true,
+ "CREATE_INSTANCE_TEST": false,
+ "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
+ "FLAG_REGION_ID_FROM_REMOTE": true,
+ "FLAG_ASYNC_INSTANTIATION": true,
+ "FLAG_ASYNC_JOBS": true,
+ "EMPTY_DRAWING_BOARD_TEST": false,
+ "FLAG_ADD_MSO_TESTAPI_FIELD": true
+ },
+ "type": "[FLAGS] Update"
+ },
+ "service": {
+ "serviceHierarchy": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "service": {
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "name": "ComplexService",
+ "version": "1.0",
+ "toscaModelURL": null,
+ "category": "Emanuel",
+ "serviceType": "",
+ "serviceRole": "",
+ "description": "ComplexService",
+ "serviceEcompNaming": "false",
+ "instantiationType": "Macro",
+ "inputs": {
+ "2017488_adiodvpe0_ASN_1": {
+ "type": "string",
+ "description": "AV/PE",
+ "entry_schema": null,
+ "inputProperties": null,
+ "constraints": [],
+ "required": true,
+ "default": "AV_vPE"
+ },
+ "2017488_adiodvpe0_ASN_2": {
+ "type": "number",
+ "description": "AV/PE",
+ "entry_schema": null,
+ "inputProperties": null,
+ "constraints": [],
+ "required": true,
+ "default": 2
+ },
+ "2017488_adiodvpe0_ASN_3": {
+ "type": "string",
+ "description": "AV/PE",
+ "entry_schema": null,
+ "inputProperties": null,
+ "constraints": [],
+ "required": false,
+ "default": "AV_vPE"
+ },
+ "2017488_adiodvpe0_ASN_4": {
+ "type": "string",
+ "description": "AV/PE",
+ "entry_schema": null,
+ "inputProperties": null,
+ "constraints": [],
+ "required": true,
+ "default": "AV_vPE_123"
+ }
+ }
+ },
+ "vnfs": {
+ "VF_vMee 0": {
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "invariantUuid": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "description": "VSP_vMee",
+ "name": "VF_vMee",
+ "version": "2.0",
+ "customizationUuid": "91415b44-753d-494c-926a-456a9172bbb9",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "max_instances": 10,
+ "min_instances": 1,
+ "gpb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_start_port": "0",
+ "sctp-a-ipv6-egress_rule_application": "any",
+ "Internal2_allow_transit": "true",
+ "sctp-b-IPv6_ethertype": "IPv6",
+ "sctp-a-egress_rule_application": "any",
+ "sctp-b-ingress_action": "pass",
+ "sctp-b-ingress_rule_protocol": "icmp",
+ "ncb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-ingress-src_start_port": "0.0",
+ "ncb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "fsb_volume_size_0": "320.0",
+ "sctp-b-egress_src_addresses": "local",
+ "sctp-a-ipv6-ingress_ethertype": "IPv4",
+ "sctp-a-ipv6-ingress-dst_start_port": "0",
+ "sctp-b-ipv6-ingress_rule_application": "any",
+ "domain_name": "default-domain",
+ "sctp-a-ingress_rule_protocol": "icmp",
+ "sctp-b-egress-src_start_port": "0.0",
+ "sctp-a-egress_src_addresses": "local",
+ "sctp-b-display_name": "epc-sctp-b-ipv4v6-sec-group",
+ "sctp-a-egress-src_start_port": "0.0",
+ "sctp-a-ingress_ethertype": "IPv4",
+ "sctp-b-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-dst_subnet_prefix_v6": "::",
+ "nf_naming": "{ecomp_generated_naming=true}",
+ "sctp-a-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-b-egress-dst_start_port": "0.0",
+ "ncb_flavor_name": "nv.c20r64d1",
+ "gpb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix_len": "0.0",
+ "Internal2_net_cidr": "10.0.0.10",
+ "sctp-a-ingress-dst_start_port": "0.0",
+ "sctp-a-egress-dst_start_port": "0.0",
+ "fsb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-egress_ethertype": "IPv4",
+ "vlc_st_service_mode": "in-network-nat",
+ "sctp-a-ipv6-egress_ethertype": "IPv4",
+ "sctp-a-egress-src_end_port": "65535.0",
+ "sctp-b-ipv6-egress_rule_application": "any",
+ "sctp-b-egress_action": "pass",
+ "sctp-a-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-b-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-b-name": "epc-sctp-b-ipv4v6-sec-group",
+ "fsb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ipv6-ingress-src_start_port": "0.0",
+ "sctp-b-ipv6-egress_ethertype": "IPv4",
+ "Internal1_net_cidr": "10.0.0.10",
+ "sctp-a-egress_dst_subnet_prefix": "0.0.0.0",
+ "fsb_flavor_name": "nv.c20r64d1",
+ "sctp_rule_protocol": "132",
+ "sctp-b-ipv6-ingress_src_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_rule_application": "any",
+ "ecomp_generated_naming": "false",
+ "sctp-a-IPv6_ethertype": "IPv6",
+ "vlc2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_virtualization_type": "virtual-machine",
+ "sctp-b-ingress-dst_start_port": "0.0",
+ "sctp-b-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-a-display_name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-b-ingress_rule_application": "any",
+ "int2_sec_group_name": "int2-sec-group",
+ "vlc_flavor_name": "nd.c16r64d1",
+ "sctp-b-ipv6-egress_src_addresses": "local",
+ "vlc_st_interface_type_int1": "other1",
+ "sctp-b-egress-src_end_port": "65535.0",
+ "sctp-a-ipv6-egress-dst_start_port": "0",
+ "vlc_st_interface_type_int2": "other2",
+ "sctp-a-ipv6-egress_rule_protocol": "any",
+ "Internal2_shared": "false",
+ "sctp-a-ipv6-egress_dst_subnet_prefix_len": "0",
+ "Internal2_rpf": "disable",
+ "vlc1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_end_port": "65535",
+ "sctp-a-ipv6-egress_src_addresses": "local",
+ "sctp-a-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-egress_src_end_port": "65535",
+ "Internal1_forwarding_mode": "l2",
+ "Internal2_dhcp": "false",
+ "sctp-a-dst_subnet_prefix_v6": "::",
+ "pxe_image_name": "MME_PXE-Boot_16ACP04_GA.qcow2",
+ "vlc_st_interface_type_gtp": "other0",
+ "ncb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-src_subnet_prefix_v6": "::",
+ "sctp-a-egress_dst_subnet_prefix_len": "0.0",
+ "int1_sec_group_name": "int1-sec-group",
+ "Internal1_dhcp": "false",
+ "sctp-a-ipv6-egress_dst_end_port": "65535",
+ "Internal2_forwarding_mode": "l2",
+ "fsb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix": "0.0.0.0",
+ "Internal1_net_cidr_len": "17",
+ "gpb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-a-ingress_dst_addresses": "local",
+ "sctp-a-egress_action": "pass",
+ "fsb_volume_type_0": "SF-Default-SSD",
+ "ncb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_sctp_a": "left",
+ "vlc_st_interface_type_sctp_b": "right",
+ "sctp-a-src_subnet_prefix_v6": "::",
+ "vlc_st_version": "2",
+ "sctp-b-egress_ethertype": "IPv4",
+ "sctp-a-ingress_rule_application": "any",
+ "gpb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "instance_ip_family_v6": "v6",
+ "sctp-a-ipv6-egress_src_start_port": "0",
+ "sctp-b-ingress-src_start_port": "0.0",
+ "sctp-b-ingress_dst_addresses": "local",
+ "fsb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_oam": "management",
+ "multi_stage_design": "true",
+ "oam_sec_group_name": "oam-sec-group",
+ "Internal2_net_gateway": "10.0.0.10",
+ "sctp-a-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-ipv6-egress-dst_start_port": "0",
+ "Internal1_net_gateway": "10.0.0.10",
+ "sctp-b-ipv6-egress_rule_protocol": "any",
+ "gtp_sec_group_name": "gtp-sec-group",
+ "sctp-a-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-egress_dst_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_dst_addresses": "local",
+ "sctp-a-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-egress_action": "pass",
+ "sctp-a-ipv6-egress_action": "pass",
+ "Internal1_shared": "false",
+ "sctp-b-ipv6-ingress_rule_protocol": "any",
+ "Internal2_net_cidr_len": "17",
+ "sctp-a-name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-a-ingress-src_end_port": "65535.0",
+ "sctp-b-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-a-egress-dst_end_port": "65535.0",
+ "sctp-a-ingress_action": "pass",
+ "sctp-b-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-ingress_action": "pass",
+ "vlc_st_service_type": "firewall",
+ "sctp-b-ipv6-egress_dst_end_port": "65535",
+ "sctp-b-ipv6-ingress-dst_start_port": "0",
+ "vlc2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_availability_zone": "true",
+ "fsb_volume_image_name_1": "MME_FSB2_16ACP04_GA.qcow2",
+ "sctp-b-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_src_subnet_prefix_len": "0",
+ "Internal1_allow_transit": "true",
+ "gpb_flavor_name": "nv.c20r64d1",
+ "availability_zone_max_count": "1",
+ "fsb_volume_image_name_0": "MME_FSB1_16ACP04_GA.qcow2",
+ "sctp-b-ipv6-ingress_dst_addresses": "local",
+ "sctp-b-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-ingress_ethertype": "IPv4",
+ "vlc1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_action": "pass",
+ "Internal1_rpf": "disable",
+ "sctp-b-ingress_ethertype": "IPv4",
+ "sctp-b-egress_rule_application": "any",
+ "sctp-b-ingress-src_end_port": "65535.0",
+ "sctp-a-ipv6-ingress_rule_protocol": "any",
+ "sctp-a-ingress-src_start_port": "0.0",
+ "sctp-b-egress-dst_end_port": "65535.0"
+ },
+ "type": "VF",
+ "modelCustomizationName": "VF_vMee 0",
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "netowrk_role": "role 1, role 2, role 3",
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {
+ "Port Mirroring Configuration By Policy 0": {
+ "uuid": "b4398538-e89d-4f13-b33d-ca323434ba50",
+ "invariantUuid": "6ef0ca40-f366-4897-951f-abd65d25f6f7",
+ "description": "A port mirroring configuration by policy object",
+ "name": "Port Mirroring Configuration By Policy",
+ "version": "27.0",
+ "customizationUuid": "3c3b7b8d-8669-4b3b-8664-61970041fad2",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Configuration",
+ "modelCustomizationName": "Port Mirroring Configuration By Policy 0",
+ "sourceNodes": [],
+ "collectorNodes": null,
+ "configurationByPolicy": false
+ }
+ },
+ "serviceProxies": {},
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ },
+ "6b528779-44a3-4472-bdff-9cd15ec93450": {
+ "service": {
+ "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "name": "action-data",
+ "version": "1.0",
+ "toscaModelURL": null,
+ "category": "some category",
+ "serviceType": "some service type",
+ "serviceRole": "some service role",
+ "description": "some description",
+ "serviceEcompNaming": "false",
+ "instantiationType": "A-La-Carte",
+ "inputs": {
+ "2017488_adiodvpe0_ASN_1": {
+ "type": "string",
+ "description": "AV/PE",
+ "entry_schema": null,
+ "inputProperties": null,
+ "constraints": [],
+ "required": true,
+ "default": "AV_vPE"
+ },
+ "2017488_adiodvpe0_ASN_2": {
+ "type": "number",
+ "description": "AV/PE",
+ "entry_schema": null,
+ "inputProperties": null,
+ "constraints": [],
+ "required": true,
+ "default": 2
+ },
+ "2017488_adiodvpe0_ASN_3": {
+ "type": "string",
+ "description": "AV/PE",
+ "entry_schema": null,
+ "inputProperties": null,
+ "constraints": [],
+ "required": false,
+ "default": "AV_vPE"
+ },
+ "2017488_adiodvpe0_ASN_4": {
+ "type": "string",
+ "description": "AV/PE",
+ "entry_schema": null,
+ "inputProperties": null,
+ "constraints": [],
+ "required": true,
+ "default": "AV_vPE_123"
+ }
+ }
+ },
+ "vnfs": {
+ "2017-388_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {"displayName": "bandwidth", "command": "get_input", "inputName": "adiodvpe0_bandwidth"},
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {"displayName": "ASN", "command": "get_input", "inputName": "2017488_adiodvpe0_ASN"},
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 1",
+ "vfModules": {},
+ "volumeGroups": {},
+ "vfcInstanceGroups": {}
+ },
+ "2017-388_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {"displayName": "bandwidth", "command": "get_input", "inputName": "adiodvpe0_bandwidth"},
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {"displayName": "ASN", "command": "get_input", "inputName": "2017488_adiodvpe0_ASN"},
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 0",
+ "vfModules": {},
+ "volumeGroups": {},
+ "vfcInstanceGroups": {}
+ },
+ "2017-488_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {"displayName": "bandwidth", "command": "get_input", "inputName": "adiodvpe0_bandwidth"},
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {"displayName": "ASN", "command": "get_input", "inputName": "2017488_adiodvpe0_ASN"},
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 0",
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ },
+ "volumeGroupAllowed": true
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "5",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "ADIOD_base_vPE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ }
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "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": {},
+ "properties": {
+ "network_role" : "network role 1, network role 2",
+ "min_instances": 1,
+ "max_instances": 10,
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {},
+ "fabricConfigurations": {},
+ "serviceProxies": {},
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {"sourceType": "HEAT", "vfModuleLabel": "ADIOD_vRE_BV", "paramName": "AIC_CLLI"},
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ },
+ "volumeGroupAllowed": true
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "5",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "ADIOD_base_vPE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {"sourceType": "HEAT", "vfModuleLabel": "ADIOD_vRE_BV", "paramName": "AIC_CLLI"},
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ }
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ }
+ },
+ "serviceInstance": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "vnfs": {
+ "VF_vMee 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "vf_vmee0..VfVmee..base_vmme..module-0vmvzo": {
+ "isMissingData": false,
+ "sdncPreReload": null,
+ "modelInfo": {
+ "modelType": "VFmodule",
+ "modelInvariantId": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "modelVersionId": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "modelName": "VfVmee..base_vmme..module-0",
+ "modelVersion": "2",
+ "modelCustomizationId": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0"
+ },
+ "instanceParams": [{}],
+ "trackById": "wmtm6sy2uj"
+ }
+ }
+ },
+ "isMissingData": true,
+ "originalName": "VF_vMee 0",
+ "vnfStoreKey": "VF_vMee 0",
+ "trackById": "p3wk448m5do",
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": null,
+ "tenantId": null,
+ "lineOfBusiness": null,
+ "platformName": null,
+ "modelInfo": {
+ "modelType": "VF",
+ "modelInvariantId": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "VF_vMee",
+ "modelVersion": "2.0",
+ "modelCustomizationName": "VF_vMee 0"
+ }
+ }
+ },
+ "networks": {},
+ "instanceParams": [{}],
+ "validationCounter": 1,
+ "existingNames": {},
+ "existingVNFCounterMap": {"d6557200-ecf2-4641-8094-5393ae3aae60": 1},
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "aicZoneId": "JAG1",
+ "projectName": "x1",
+ "rollbackOnFailure": "true",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "ComplexService",
+ "modelVersion": "1.0",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44"
+ },
+ "isALaCarte": false,
+ "name": "ComplexService",
+ "version": "1.0",
+ "description": "ComplexService",
+ "category": "Emanuel",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isMultiStepDesign": false
+ },
+ "6b528779-44a3-4472-bdff-9cd15ec93450": {
+ "networks": {
+ "ExtVL 0": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0",
+ "trackById": "sf3zth68xjf",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [{}],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "ExtVL 0:0001": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0",
+ "trackById": "2mdxioxca9h",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [{}],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "ExtVL 0_1": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0_1",
+ "trackById": "z7vd1gmpbs",
+ "instanceName": "ExtVL",
+ "productFamilyId": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "zzz1",
+ "instanceParams": [{
+ "vnf_config_template_version": "17.2",
+ "bandwidth_units": "Gbps",
+ "bandwidth": "10",
+ "AIC_CLLI": "ATLMY8GA",
+ "ASN": "AV_vPE",
+ "vnf_instance_name": "yoav"
+ }],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ }
+ },
+ "vnfs": {
+ "2017-488_ADIOD-vPE 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1sgoqi": {
+ "instanceName": "yoav",
+ "volumeGroupName": "123",
+ "modelInfo": {
+ "modelInvariantId": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
+ "modelVersionId": "25284168-24bb-4698-8cb4-3f509146eca5",
+ "modelName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "modelVersion": "6",
+ "modelCustomizationId": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "uuid": "25284168-24bb-4698-8cb4-3f509146eca5"
+ },
+ "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
+ "isMissingData": false,
+ "instanceParams": [{
+ "adiodvpe0_bandwidth": "10",
+ "2017488_adiodvpe0_vnf_instance_name": "mtnj309me6",
+ "2017488_adiodvpe0_vnf_config_template_version": "17.2",
+ "2017488_adiodvpe0_AIC_CLLI": "ATLMY8GA",
+ "adiodvpe0_bandwidth_units": "Gbps"
+ }]
+ }
+ }
+ },
+ "isMissingData": false,
+ "originalName": "2017-488_ADIOD-vPE 0",
+ "vnfStoreKey": "2017-488_ADIOD-vPE 0",
+ "trackById": "o65b26t2thj",
+ "instanceName": "2017488_ADIODvPE",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "platformName": "platform",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [{}],
+ "modelInfo": {
+ "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8",
+ "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09",
+ "modelName": "2017-488_ADIOD-vPE",
+ "modelVersion": "5.0",
+ "modelCustomizationId": "1da7b585-5e61-4993-b95e-8e6606c81e45",
+ "modelCustomizationName": "2017-488_ADIOD-vPE 0",
+ "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09"
+ },
+ "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09"
+ }
+ },
+ "instanceParams": [{"2017488_adiodvpe0_ASN": "AV_vPE"}],
+ "validationCounter": 0,
+ "existingNames": {"123": "", "instancename": "", "yoav": "", "extvl": ""},
+ "existingVNFCounterMap": {"69e09f68-8b63-4cc9-b9ff-860960b5db09": 1},
+ "existingNetworksCounterMap": {"ddc3f20c-08b5-40fd-af72-c6d14636b986": 3},
+ "instanceName": "InstanceName",
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "lcpCloudRegionId": "JANET25",
+ "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
+ "aicZoneId": "JAG1",
+ "projectName": null,
+ "rollbackOnFailure": "true",
+ "aicZoneName": "YUDFJULP-JAG1",
+ "owningEntityName": "WayneHolland",
+ "testApi": "GR_API",
+ "tenantName": "USP-SIP-IC-24335-T-01",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6b528779-44a3-4472-bdff-9cd15ec93450",
+ "modelName": "action-data",
+ "modelVersion": "1.0",
+ "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450"
+ },
+ "isALaCarte": false,
+ "name": "action-data",
+ "version": "1.0",
+ "description": "",
+ "category": "",
+ "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isMultiStepDesign": false
+ }
+ },
+ "lcpRegionsAndTenants": {
+ "lcpRegionList": [{
+ "id": "JANET25",
+ "name": "JANET25",
+ "isPermitted": true
+ }, {"id": "hvf6", "name": "hvf6", "isPermitted": true}],
+ "lcpRegionsTenantsMap": {
+ "JANET25": [{
+ "id": "092eb9e8e4b7412e8787dd091bc58e86",
+ "name": "USP-SIP-IC-24335-T-01",
+ "isPermitted": true
+ }],
+ "hvf6": [{
+ "id": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "name": "AIN Web Tool-15-D-testalexandria",
+ "isPermitted": true
+ }, {
+ "id": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "name": "AIN Web Tool-15-D-STTest2",
+ "isPermitted": true
+ }, {
+ "id": "1178612d2b394be4834ad77f567c0af2",
+ "name": "AIN Web Tool-15-D-SSPtestcustome",
+ "isPermitted": true
+ }, {
+ "id": "19c5ade915eb461e8af52fb2fd8cd1f2",
+ "name": "AIN Web Tool-15-D-UncheckedEcopm",
+ "isPermitted": true
+ }, {
+ "id": "de007636e25249238447264a988a927b",
+ "name": "AIN Web Tool-15-D-dfsdf",
+ "isPermitted": true
+ }, {
+ "id": "62f29b3613634ca6a3065cbe0e020c44",
+ "name": "AIN/SMS-16-D-Multiservices1",
+ "isPermitted": true
+ }, {
+ "id": "649289e30d3244e0b48098114d63c2aa",
+ "name": "AIN Web Tool-15-D-SSPST66",
+ "isPermitted": true
+ }, {
+ "id": "3f21eeea6c2c486bba31dab816c05a32",
+ "name": "AIN Web Tool-15-D-ASSPST47",
+ "isPermitted": true
+ }, {
+ "id": "f60ce21d3ee6427586cff0d22b03b773",
+ "name": "CESAR-100-D-sspjg67246",
+ "isPermitted": true
+ }, {
+ "id": "8774659e425f479895ae091bb5d46560",
+ "name": "CESAR-100-D-sspjg68359",
+ "isPermitted": true
+ }, {
+ "id": "624eb554b0d147c19ff8885341760481",
+ "name": "AINWebTool-15-D-iftach",
+ "isPermitted": true
+ }, {
+ "id": "214f55f5fc414c678059c383b03e4962",
+ "name": "CESAR-100-D-sspjg612401",
+ "isPermitted": true
+ }, {
+ "id": "c90666c291664841bb98e4d981ff1db5",
+ "name": "CESAR-100-D-sspjg621340",
+ "isPermitted": true
+ }, {
+ "id": "ce5b6bc5c7b348e1bf4b91ac9a174278",
+ "name": "sspjg621351cloned",
+ "isPermitted": true
+ }, {
+ "id": "b386b768a3f24c8e953abbe0b3488c02",
+ "name": "AINWebTool-15-D-eteancomp",
+ "isPermitted": true
+ }, {
+ "id": "dc6c4dbfd225474e9deaadd34968646c",
+ "name": "AINWebTool-15-T-SPFET",
+ "isPermitted": true
+ }, {
+ "id": "02cb5030e9914aa4be120bd9ed1e19eb",
+ "name": "AINWebTool-15-X-eeweww",
+ "isPermitted": true
+ }, {
+ "id": "f2f3830e4c984d45bcd00e1a04158a79",
+ "name": "CESAR-100-D-spjg61909",
+ "isPermitted": true
+ }, {
+ "id": "05b91bd5137f4929878edd965755c06d",
+ "name": "CESAR-100-D-sspjg621512cloned",
+ "isPermitted": true
+ }, {
+ "id": "7002fbe8482d4a989ddf445b1ce336e0",
+ "name": "AINWebTool-15-X-vdr",
+ "isPermitted": true
+ }, {
+ "id": "4008522be43741dcb1f5422022a2aa0b",
+ "name": "AINWebTool-15-D-ssasa",
+ "isPermitted": true
+ }, {
+ "id": "f44e2e96a1b6476abfda2fa407b00169",
+ "name": "AINWebTool-15-D-PFNPT",
+ "isPermitted": true
+ }, {
+ "id": "b69a52bec8a84669a37a1e8b72708be7",
+ "name": "AINWebTool-15-X-vdre",
+ "isPermitted": true
+ }, {
+ "id": "fac7d9fd56154caeb9332202dcf2969f",
+ "name": "AINWebTool-15-X-NONPODECOMP",
+ "isPermitted": true
+ }, {
+ "id": "2d34d8396e194eb49969fd61ffbff961",
+ "name": "DN5242-Nov16-T5",
+ "isPermitted": true
+ }, {
+ "id": "cb42a77ff45b48a8b8deb83bb64acc74",
+ "name": "ro-T11",
+ "isPermitted": true
+ }, {
+ "id": "fa45ca53c80b492fa8be5477cd84fc2b",
+ "name": "ro-T112",
+ "isPermitted": true
+ }, {
+ "id": "4914ab0ab3a743e58f0eefdacc1dde77",
+ "name": "DN5242-Nov21-T1",
+ "isPermitted": true
+ }, {
+ "id": "d0a3e3f2964542259d155a81c41aadc3",
+ "name": "test-hvf6-09",
+ "isPermitted": true
+ }, {"id": "cbb99fe4ada84631b7baf046b6fd2044", "name": "DN5242-Nov16-T3", "isPermitted": true}]
+ }
+ },
+ "productFamilies": [{
+ "id": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "name": "SCOTTIE",
+ "isPermitted": true
+ }, {
+ "id": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "name": "IGNACIO",
+ "isPermitted": true
+ }, {
+ "id": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "name": "Christie",
+ "isPermitted": true
+ }, {
+ "id": "a4f6f2ae-9bf5-4ed7-b904-06b2099c4bd7",
+ "name": "Enhanced Services",
+ "isPermitted": true
+ }, {"id": "vTerrance", "name": "vTerrance", "isPermitted": true}, {
+ "id": "323d69d9-2efe-4r45-ay0a-89ea7ard4e6f",
+ "name": "vSCP",
+ "isPermitted": true
+ }, {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": true
+ }, {
+ "id": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
+ "name": "BVOIP",
+ "isPermitted": true
+ }, {"id": "db171b8f-115c-4992-a2e3-ee04cae357e0", "name": "LINDSEY", "isPermitted": true}, {
+ "id": "LRSI-OSPF",
+ "name": "LRSI-OSPF",
+ "isPermitted": true
+ }, {"id": "vRosemarie", "name": "HNGATEWAY", "isPermitted": true}, {
+ "id": "vHNPaas",
+ "name": "WILKINS",
+ "isPermitted": true
+ }, {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ }, {"id": "b6a3f28c-eebf-494c-a900-055cc7c874ce", "name": "VROUTER", "isPermitted": true}, {
+ "id": "Cisneros",
+ "name": "vMuriel",
+ "isPermitted": true
+ }, {
+ "id": "0ee8c1bc-7cbd-4b0a-a1ac-e9999255abc1",
+ "name": "CARA Griffin",
+ "isPermitted": true
+ }, {
+ "id": "c7611ebe-c324-48f1-8085-94aef0c6ef3d",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ }, {"id": "e30755dc-5673-4b6b-9dcf-9abdd96b93d1", "name": "Transport", "isPermitted": true}, {
+ "id": "vSalvatore",
+ "name": "vSalvatore",
+ "isPermitted": true
+ }, {"id": "d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4", "name": "Josefina", "isPermitted": true}, {
+ "id": "vHubbard",
+ "name": "vHubbard",
+ "isPermitted": true
+ }, {"id": "12a96a9d-4b4c-4349-a950-fe1159602621", "name": "DARREN MCGEE", "isPermitted": true}],
+ "serviceTypes": {
+ "e433710f-9217-458d-a79d-1c7aff376d89": [{
+ "id": "0",
+ "name": "vRichardson",
+ "isPermitted": false
+ }, {"id": "1", "name": "TYLER SILVIA", "isPermitted": true}, {
+ "id": "2",
+ "name": "Emanuel",
+ "isPermitted": false
+ }, {"id": "3", "name": "vJamie", "isPermitted": false}, {
+ "id": "4",
+ "name": "vVoiceMail",
+ "isPermitted": false
+ }, {"id": "5", "name": "Kennedy", "isPermitted": false}, {
+ "id": "6",
+ "name": "vSEGW",
+ "isPermitted": false
+ }, {"id": "7", "name": "vVM", "isPermitted": false}, {
+ "id": "8",
+ "name": "vOTA",
+ "isPermitted": false
+ }, {"id": "9", "name": "vMME", "isPermitted": false}, {
+ "id": "10",
+ "name": "vMNS",
+ "isPermitted": false
+ }, {"id": "11", "name": "vSCP", "isPermitted": false}, {
+ "id": "12",
+ "name": "VPMS",
+ "isPermitted": false
+ }, {"id": "13", "name": "vMMSC", "isPermitted": false}, {
+ "id": "14",
+ "name": "SSD",
+ "isPermitted": false
+ }, {"id": "15", "name": "vMOG", "isPermitted": false}, {
+ "id": "16",
+ "name": "LINDSEY",
+ "isPermitted": false
+ }, {"id": "17", "name": "JOHANNA_SANTOS", "isPermitted": false}, {
+ "id": "18",
+ "name": "vCarroll",
+ "isPermitted": false
+ }]
+ },
+ "aicZones": [{"id": "NFT1", "name": "NFTJSSSS-NFT1"}, {"id": "JAG1", "name": "YUDFJULP-JAG1"}, {
+ "id": "YYY1",
+ "name": "UUUAIAAI-YYY1"
+ }, {"id": "BAN1", "name": "VSDKYUTP-BAN1"}, {"id": "DKJ1", "name": "DKJSJDKA-DKJ1"}, {
+ "id": "MCS1",
+ "name": "ASACMAMS-MCS1"
+ }, {"id": "UIO1", "name": "uioclli1-UIO1"}, {"id": "RAJ1", "name": "YGBIJNLQ-RAJ1"}, {
+ "id": "OPA1",
+ "name": "opaclli1-OPA1"
+ }, {"id": "SDE1", "name": "ZXCVBNMA-SDE1"}, {"id": "VEN2", "name": "FGHJUHIL-VEN2"}, {
+ "id": "ORL1",
+ "name": "ORLDFLMA-ORL1"
+ }, {"id": "JAD1", "name": "JADECLLI-JAD1"}, {"id": "ZXL1", "name": "LWLWCANN-ZXL1"}, {
+ "id": "CKL1",
+ "name": "CLKSKCKK-CKL1"
+ }, {"id": "SDF1", "name": "sdfclli1-SDF1"}, {"id": "RAD1", "name": "RADICAL1-RAD1"}, {
+ "id": "KIT1",
+ "name": "BHYJFGLN-KIT1"
+ }, {"id": "REL1", "name": "INGERFGT-REL1"}, {"id": "JNL1", "name": "CJALSDAC-JNL1"}, {
+ "id": "OLK1",
+ "name": "OLKOLKLS-OLK1"
+ }, {"id": "CHI1", "name": "CHILLIWE-CHI1"}, {"id": "UUU4", "name": "UUUAAAUU-UUU4"}, {
+ "id": "TUF1",
+ "name": "TUFCLLI1-TUF1"
+ }, {"id": "KJN1", "name": "CKALDKSA-KJN1"}, {"id": "SAM1", "name": "SNDGCA64-SAN1"}, {
+ "id": "SCK1",
+ "name": "SCKSCKSK-SCK1"
+ }, {"id": "HJH1", "name": "AOEEQQQD-HJH1"}, {"id": "HGD1", "name": "SDFQWHGD-HGD1"}, {
+ "id": "KOR1",
+ "name": "HYFLNBVT-KOR1"
+ }, {"id": "ATL43", "name": "AICLOCID-ATL43"}, {"id": "ATL54", "name": "AICFTAAI-ATL54"}, {
+ "id": "ATL66",
+ "name": "CLLIAAII-ATL66"
+ }, {"id": "VEL1", "name": "BNMLKUIK-VEL1"}, {"id": "ICC1", "name": "SANJITAT-ICC1"}, {
+ "id": "MNT11",
+ "name": "WSXEFBTH-MNT11"
+ }, {"id": "DEF2", "name": "WSBHGTYL-DEF2"}, {"id": "MAD11", "name": "SDFQWGKL-MAD11"}, {
+ "id": "OLG1",
+ "name": "OLHOLHOL-OLG1"
+ }, {"id": "GAR1", "name": "NGFVSJKO-GAR1"}, {"id": "SAN22", "name": "GNVLSCTL-SAN22"}, {
+ "id": "HRG1",
+ "name": "HRGHRGGS-HRG1"
+ }, {"id": "JCS1", "name": "JCSJSCJS-JCS1"}, {"id": "DHA12", "name": "WSXEDECF-DHA12"}, {
+ "id": "HJE1",
+ "name": "AOEEWWWD-HJE1"
+ }, {"id": "NCA1", "name": "NCANCANN-NCA1"}, {"id": "IOP1", "name": "iopclli1-IOP1"}, {
+ "id": "RTY1",
+ "name": "rtyclli1-RTY1"
+ }, {"id": "KAP1", "name": "HIOUYTRQ-KAP1"}, {"id": "ZEN1", "name": "ZENCLLI1-ZEN1"}, {
+ "id": "HKA1",
+ "name": "JAKHLASS-HKA1"
+ }, {"id": "CQK1", "name": "CQKSCAKK-CQK1"}, {"id": "SAI1", "name": "UBEKQLPD-SAI1"}, {
+ "id": "ERT1",
+ "name": "ertclli1-ERT1"
+ }, {"id": "IBB1", "name": "PLMKOIJU-IBB1"}, {"id": "TIR2", "name": "PLKINHYI-TIR2"}, {
+ "id": "HSD1",
+ "name": "CHASKCDS-HSD1"
+ }, {"id": "SLF78", "name": "SDCTLFN1-SLF78"}, {"id": "SEE78", "name": "SDCTEEE4-SEE78"}, {
+ "id": "SAN13",
+ "name": "TOKYJPFA-SAN13"
+ }, {"id": "SAA78", "name": "SDCTAAA1-SAA78"}, {"id": "LUC1", "name": "ATLDFGYC-LUC1"}, {
+ "id": "AMD13",
+ "name": "MEMATLAN-AMD13"
+ }, {"id": "TOR1", "name": "TOROONXN-TOR1"}, {"id": "QWE1", "name": "QWECLLI1-QWE1"}, {
+ "id": "ZOG1",
+ "name": "ZOGASTRO-ZOG1"
+ }, {"id": "CAL33", "name": "CALIFORN-CAL33"}, {"id": "SHH78", "name": "SDIT1HHH-SHH78"}, {
+ "id": "DSA1",
+ "name": "LKJHGFDS-DSA1"
+ }, {"id": "CLG1", "name": "CLGRABAD-CLG1"}, {"id": "BNA1", "name": "BNARAGBK-BNA1"}, {
+ "id": "ATL84",
+ "name": "CANTTCOC-ATL84"
+ }, {"id": "APP1", "name": "WBHGTYUI-APP1"}, {"id": "RJN1", "name": "RJNRBZAW-RJN1"}, {
+ "id": "EHH78",
+ "name": "SDCSHHH5-EHH78"
+ }, {"id": "mac10", "name": "PKGTESTF-mac10"}, {"id": "SXB78", "name": "SDCTGXB1-SXB78"}, {
+ "id": "SAX78",
+ "name": "SDCTAXG1-SAX78"
+ }, {"id": "SYD1", "name": "SYDNAUBV-SYD1"}, {"id": "TOK1", "name": "TOKYJPFA-TOK1"}, {
+ "id": "KGM2",
+ "name": "KGMTNC20-KGM2"
+ }, {"id": "DCC1b", "name": "POIUYTGH-DCC1b"}, {"id": "SKK78", "name": "SDCTKKK1-SKK78"}, {
+ "id": "SGG78",
+ "name": "SDCTGGG1-SGG78"
+ }, {"id": "SJJ78", "name": "SDCTJJJ1-SJJ78"}, {"id": "SBX78", "name": "SDCTBXG1-SBX78"}, {
+ "id": "LAG1",
+ "name": "LARGIZON-LAG1"
+ }, {"id": "IAA1", "name": "QAZXSWED-IAA1"}, {"id": "POI1", "name": "PLMNJKIU-POI1"}, {
+ "id": "LAG1a",
+ "name": "LARGIZON-LAG1a"
+ }, {"id": "PBL1", "name": "PBLAPBAI-PBL1"}, {"id": "LAG45", "name": "LARGIZON-LAG1a"}, {
+ "id": "MAR1",
+ "name": "MNBVCXZM-MAR1"
+ }, {"id": "HST70", "name": "HSTNTX70-HST70"}, {"id": "DCC1a", "name": "POIUYTGH-DCC1a"}, {
+ "id": "TOL1",
+ "name": "TOLDOH21-TOL1"
+ }, {"id": "LON1", "name": "LONEENCO-LON1"}, {"id": "SJU78", "name": "SDIT1JUB-SJU78"}, {
+ "id": "STN27",
+ "name": "HSTNTX01-STN27"
+ }, {"id": "SSW56", "name": "ss8126GT-SSW56"}, {"id": "SBB78", "name": "SDIT1BBB-SBB78"}, {
+ "id": "DCC3",
+ "name": "POIUYTGH-DCC3"
+ }, {"id": "GNV1", "name": "GNVLSCTL-GNV1"}, {"id": "WAS1", "name": "WASHDCSW-WAS1"}, {
+ "id": "TOY1",
+ "name": "TORYONNZ-TOY1"
+ }, {"id": "STT1", "name": "STTLWA02-STT1"}, {"id": "STG1", "name": "STTGGE62-STG1"}, {
+ "id": "SLL78",
+ "name": "SDCTLLL1-SLL78"
+ }, {"id": "SBU78", "name": "SDIT1BUB-SBU78"}, {"id": "ATL2", "name": "ATLNGANW-ATL2"}, {
+ "id": "BOT1",
+ "name": "BOTHWAKY-BOT1"
+ }, {"id": "SNG1", "name": "SNGPSIAU-SNG1"}, {"id": "NYC1", "name": "NYCMNY54-NYC1"}, {
+ "id": "LAG1b",
+ "name": "LARGIZON-LAG1b"
+ }, {"id": "AMD15", "name": "AMDFAA01-AMD15"}, {"id": "SNA1", "name": "SNANTXCA-SNA1"}, {
+ "id": "PLT1",
+ "name": "PLTNCA60-PLT1"
+ }, {"id": "TLP1", "name": "TLPNXM18-TLP1"}, {"id": "SDD81", "name": "SAIT1DD6-SDD81"}, {
+ "id": "DCC1",
+ "name": "POIUYTGH-DCC1"
+ }, {"id": "DCC2", "name": "POIUYTGH-DCC2"}, {"id": "OKC1", "name": "OKCBOK55-OKC1"}, {
+ "id": "PAR1",
+ "name": "PARSFRCG-PAR1"
+ }, {"id": "TES36", "name": "ABCEETES-TES36"}, {"id": "COM1", "name": "PLMKOPIU-COM1"}, {
+ "id": "ANI1",
+ "name": "ATLNGTRE-ANI1"
+ }, {"id": "SDG78", "name": "SDIT1BDG-SDG78"}, {"id": "mac20", "name": "PKGTESTF-mac20"}, {
+ "id": "DSF45",
+ "name": "DSFBG123-DSF45"
+ }, {"id": "HST25", "name": "HSTNTX01-HST25"}, {"id": "AMD18", "name": "AUDIMA01-AMD18"}, {
+ "id": "SAA80",
+ "name": "SAIT9AA3-SAA80"
+ }, {"id": "SSA56", "name": "SSIT2AA7-SSA56"}, {"id": "SDD82", "name": "SAIT1DD9-SDD82"}, {
+ "id": "JCV1",
+ "name": "JCVLFLBW-JCV1"
+ }, {"id": "SUL2", "name": "WERTYUJK-SUL2"}, {"id": "PUR1", "name": "purelyde-PUR1"}, {
+ "id": "FDE55",
+ "name": "FDERT555-FDE55"
+ }, {"id": "SITE", "name": "LONEENCO-SITE"}, {"id": "ATL1", "name": "ATLNGAMA-ATL1"}, {
+ "id": "JUL1",
+ "name": "ZXCVBNMM-JUL1"
+ }, {"id": "TAT34", "name": "TESAAISB-TAT34"}, {"id": "XCP12", "name": "CHKGH123-XCP12"}, {
+ "id": "RAI1",
+ "name": "poiuytre-RAI1"
+ }, {"id": "HPO1", "name": "ATLNGAUP-HPO1"}, {"id": "KJF12", "name": "KJFDH123-KJF12"}, {
+ "id": "SCC80",
+ "name": "SAIT9CC3-SCC80"
+ }, {"id": "SAA12", "name": "SAIT9AF8-SAA12"}, {"id": "SAA14", "name": "SAIT1AA9-SAA14"}, {
+ "id": "ATL35",
+ "name": "TTESSAAI-ATL35"
+ }, {"id": "CWY1", "name": "CWYMOWBS-CWY1"}, {"id": "ATL76", "name": "TELEPAAI-ATL76"}, {
+ "id": "DSL12",
+ "name": "DSLFK242-DSL12"
+ }, {"id": "ATL53", "name": "AAIATLTE-ATL53"}, {"id": "SAA11", "name": "SAIT9AA2-SAA11"}, {
+ "id": "ATL62",
+ "name": "TESSASCH-ATL62"
+ }, {"id": "AUG1", "name": "ASDFGHJK-AUG1"}, {"id": "POI22", "name": "POIUY123-POI22"}, {
+ "id": "SAA13",
+ "name": "SAIT1AA9-SAA13"
+ }, {"id": "BHY17", "name": "BHYTFRF3-BHY17"}, {"id": "LIS1", "name": "HOSTPROF-LIS1"}, {
+ "id": "SIP1",
+ "name": "ZXCVBNMK-SIP1"
+ }, {"id": "ATL99", "name": "TEESTAAI-ATL43"}, {"id": "ATL64", "name": "FORLOAAJ-ATL64"}, {
+ "id": "TAT33",
+ "name": "TESAAISA-TAT33"
+ }, {"id": "RAD10", "name": "INDIPUNE-RAD10"}, {"id": "RTW5", "name": "BHYTFRY4-RTW5"}, {
+ "id": "JGS1",
+ "name": "KSJKKKKK-JGS1"
+ }, {"id": "ATL98", "name": "TEESTAAI-ATL43"}, {"id": "WAN1", "name": "LEIWANGW-WAN1"}, {
+ "id": "ATL44",
+ "name": "ATLSANAB-ATL44"
+ }, {"id": "RTD2", "name": "BHYTFRk4-RTD2"}, {"id": "NIR1", "name": "ORFLMANA-NIR1"}, {
+ "id": "ATL75",
+ "name": "SANAAIRE-ATL75"
+ }, {"id": "NUM1", "name": "QWERTYUI-NUM1"}, {"id": "MTN32", "name": "MDTWNJ21-MTN32"}, {
+ "id": "RTZ4",
+ "name": "BHYTFRZ6-RTZ4"
+ }, {"id": "ATL56", "name": "ATLSANAC-ATL56"}, {"id": "AMS1", "name": "AMSTNLBW-AMS1"}, {
+ "id": "RCT1",
+ "name": "AMSTERNL-RCT1"
+ }, {"id": "JAN1", "name": "ORFLMATT-JAN1"}, {"id": "ABC14", "name": "TESAAISA-ABC14"}, {
+ "id": "TAT37",
+ "name": "TESAAISD-TAT37"
+ }, {"id": "MIC54", "name": "MICHIGAN-MIC54"}, {"id": "ABC11", "name": "ATLSANAI-ABC11"}, {
+ "id": "AMF11",
+ "name": "AMDOCS01-AMF11"
+ }, {"id": "ATL63", "name": "ATLSANEW-ATL63"}, {"id": "ABC12", "name": "ATLSECIA-ABC12"}, {
+ "id": "MTN20",
+ "name": "MDTWNJ21-MTN20"
+ }, {"id": "ABC15", "name": "AAITESAN-ABC15"}, {"id": "AVT1", "name": "AVTRFLHD-AVT1"}, {
+ "id": "ATL34",
+ "name": "ATLSANAI-ATL34"
+ }],
+ "categoryParameters": {
+ "owningEntityList": [{
+ "id": "aaa1",
+ "name": "aaa1"
+ }, {"id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "name": "WayneHolland"}, {
+ "id": "Melissa",
+ "name": "Melissa"
+ }],
+ "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"}]
+ },
+ "type": "[LCP_REGIONS_AND_TENANTS] Update",
+ "subscribers": [{
+ "id": "CAR_2020_ER",
+ "name": "CAR_2020_ER",
+ "isPermitted": true
+ }, {
+ "id": "21014aa2-526b-11e6-beb8-9e71128cae77",
+ "name": "JULIO ERICKSON",
+ "isPermitted": false
+ }, {
+ "id": "DHV1707-TestSubscriber-2",
+ "name": "DALE BRIDGES",
+ "isPermitted": false
+ }, {"id": "DHV1707-TestSubscriber-1", "name": "LLOYD BRIDGES", "isPermitted": false}, {
+ "id": "jimmy-example",
+ "name": "JimmyExampleCust-20161102",
+ "isPermitted": false
+ }, {
+ "id": "jimmy-example2",
+ "name": "JimmyExampleCust-20161103",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-TestSub-PWT-102",
+ "name": "ERICA5779-TestSub-PWT-102",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-TestSub-PWT-101",
+ "name": "ERICA5779-TestSub-PWT-101",
+ "isPermitted": false
+ }, {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-Subscriber-4",
+ "name": "ERICA5779-Subscriber-5",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-TestSub-PWT-103",
+ "name": "ERICA5779-TestSub-PWT-103",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-Subscriber-2",
+ "name": "ERICA5779-Subscriber-2",
+ "isPermitted": false
+ }, {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "SILVIA ROBBINS",
+ "isPermitted": true
+ }, {
+ "id": "ERICA5779-Subscriber-3",
+ "name": "ERICA5779-Subscriber-3",
+ "isPermitted": false
+ }, {"id": "31739f3e-526b-11e6-beb8-9e71128cae77", "name": "CRAIG/ROBERTS", "isPermitted": false}]
+ }
+ };
+ }
+}
+
+class MockFeatureFlagsService {}
+
+describe('Service popup service', () => {
+ let injector;
+ let service: ServicePopupService;
+ let genericFormService: GenericFormService;
+ let defaultDataGeneratorService: DefaultDataGeneratorService;
+ let fb: FormBuilder;
+ let iframeService: IframeService;
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ providers : [
+ ServicePopupService,
+ BasicControlGenerator,
+ ServiceControlGenerator,
+ DefaultDataGeneratorService,
+ GenericFormService,
+ FormBuilder,
+ IframeService,
+ AaiService,
+ LogService,
+ BasicPopupService,
+ {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
+ {provide: NgRedux, useClass: MockReduxStore},
+ {provide: HttpClient, useClass: MockAppStore},
+ {provide: SdcUiServices.ModalService, useClass: MockModalService}
+ ]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ service = injector.get(ServicePopupService);
+ genericFormService = injector.get(GenericFormService);
+ defaultDataGeneratorService = injector.get(DefaultDataGeneratorService);
+ fb = injector.get(FormBuilder);
+ iframeService = injector.get(IframeService);
+
+ })().then(done).catch(done.fail));
+
+ test('getTitle should return the correct title for edit and create mode', () => {
+ expect(service.getTitle(true)).toBe('Edit service instance');
+ expect(service.getTitle(false)).toBe('Set a new service instance');
+ });
+
+ test('getSubLeftTitle should return service model name', () => {
+ service.uuidData = {
+ serviceId : '6b528779-44a3-4472-bdff-9cd15ec93450'
+ };
+ expect(service.getSubLeftTitle()).toBe('action-data');
+ });
+
+ test('getSubRightTitle should return popup type', () => {
+ expect(service.getSubRightTitle()).toBe('Service Instance Details');
+ });
+
+ test('getModelInformation should update modelInformations', () => {
+ const serviceId: string = '6b528779-44a3-4472-bdff-9cd15ec93450';
+
+ service.getModelInformation(serviceId);
+ expect(service.modelInformations.length).toEqual(7);
+
+ expect(service.modelInformations[0].label).toEqual("Model version");
+ expect(service.modelInformations[0].values).toEqual(['1.0']);
+
+ expect(service.modelInformations[1].label).toEqual("Description");
+ expect(service.modelInformations[1].values).toEqual(['some description']);
+
+ expect(service.modelInformations[2].label).toEqual("Category");
+ expect(service.modelInformations[2].values).toEqual(['some category']);
+
+ expect(service.modelInformations[3].label).toEqual("UUID");
+ expect(service.modelInformations[3].values).toEqual(['6b528779-44a3-4472-bdff-9cd15ec93450']);
+
+ expect(service.modelInformations[4].label).toEqual("Invariant UUID");
+ expect(service.modelInformations[4].values).toEqual(['e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0']);
+
+ expect(service.modelInformations[5].label).toEqual("Service type");
+ expect(service.modelInformations[5].values).toEqual(['some service type']);
+
+ expect(service.modelInformations[6].label).toEqual("Service role");
+ expect(service.modelInformations[6].values).toEqual(['some service role']);
+ });
+
+
+ test('onCancel should trigger closeDialogEvent and iframe', () => {
+ let that = <any>{
+ parentElementClassName: 'content',
+ _iframeService: iframeService,
+ resetPopupData : () =>{
+
+ }
+ };
+ jest.spyOn(iframeService, 'removeClassCloseModal');
+ jest.spyOn(service.closeDialogEvent, 'next');
+ service.onCancel(that, fb.group({}));
+
+ expect(that._iframeService.removeClassCloseModal).toHaveBeenCalledWith(that.parentElementClassName)
+ expect(service.closeDialogEvent.next).toHaveBeenCalledWith(that);
+ });
+
+
+ test('getDynamicInputs should return list of controls' ,() => {
+ const result: FormControlModel[] = service.getDynamicInputs('6b528779-44a3-4472-bdff-9cd15ec93450');
+ console.log(result);
+ expect(result.length).toEqual(4);
+ expect(result[0].controlName).toEqual('2017488_adiodvpe0_ASN_1');
+ expect(result[1].controlName).toEqual('2017488_adiodvpe0_ASN_2');
+ expect(result[2].controlName).toEqual('2017488_adiodvpe0_ASN_3');
+ expect(result[3].controlName).toEqual('2017488_adiodvpe0_ASN_4');
+
+ expect(result[0].dataTestId).toEqual('2017488_adiodvpe0_ASN_1');
+ expect(result[1].dataTestId).toEqual('2017488_adiodvpe0_ASN_2');
+ expect(result[2].dataTestId).toEqual('2017488_adiodvpe0_ASN_3');
+ expect(result[3].dataTestId).toEqual('2017488_adiodvpe0_ASN_4');
+
+ expect(result[0].validations.length).toEqual(1);
+ expect(result[1].validations.length).toEqual(1);
+ expect(result[2].validations.length).toEqual(0);
+ expect(result[3].validations.length).toEqual(1);
+ });
+});
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.ts
new file mode 100644
index 000000000..dc83083cb
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.ts
@@ -0,0 +1,184 @@
+import {Injectable} from "@angular/core";
+import {GenericPopupInterface} from "../generic-popup.interface";
+import {ServiceModel} from "../../../../models/serviceModel";
+import {ModelInformationItem} from "../../../model-information/model-information.component";
+import {Subject} from "rxjs";
+import {ITreeNode} from "angular-tree-component/dist/defs/api";
+import {FormPopupDetails, PopupType} from "../../../../models/formControlModels/formPopupDetails.model";
+import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
+import {IframeService} from "../../../../utils/iframe.service";
+import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {BasicPopupService} from "../basic.popup.service";
+import {NgRedux} from "@angular-redux/store";
+import {AppState} from "../../../../store/reducers";
+import {ServiceControlGenerator} from "../../../genericForm/formControlsServices/service.control.generator";
+import {FormGroup} from "@angular/forms";
+import {Constants} from "../../../../utils/constants";
+import {ServiceInstance} from "../../../../models/serviceInstance";
+import {ModelInfo} from "../../../../models/modelInfo";
+import {FormControlModel} from "../../../../models/formControlModels/formControl.model";
+import {
+ ServiceActions,
+ createServiceInstance,
+ updateServiceInstance
+} from "../../../../storeUtil/utils/service/service.actions";
+import {ServiceInstanceActions} from "../../../../models/serviceInstanceActions";
+import * as _ from 'lodash';
+@Injectable()
+export class ServicePopupService implements GenericPopupInterface {
+ dynamicInputs: any;
+ instance: any;
+ model: any;
+ serviceModel: ServiceModel;
+ modelInformations: ModelInformationItem[] = [];
+ uuidData: Object;
+ closeDialogEvent: Subject<any> = new Subject<any>();
+ isUpdateMode: boolean;
+
+
+
+ constructor(private _basicControlGenerator: BasicControlGenerator,
+ private _serviceControlGenerator: ServiceControlGenerator,
+ private _iframeService: IframeService,
+ private _defaultDataGeneratorService: DefaultDataGeneratorService,
+ private _aaiService: AaiService,
+ private _basicPopupService : BasicPopupService,
+ private _store: NgRedux<AppState>) {
+
+ }
+
+ getGenericFormPopupDetails(serviceId: string, modelName: string, storeKey: string, node: ITreeNode, uuidData: Object, isUpdateMode: boolean): FormPopupDetails {
+ this.uuidData = uuidData;
+ this.instance = this.getInstance(serviceId);
+ this.getModelInformation(serviceId);
+ return new FormPopupDetails(this,
+ PopupType.SERVICE,
+ uuidData,
+ this.getTitle(isUpdateMode),
+ this.getSubLeftTitle(),
+ this.getSubRightTitle(),
+ this.getControls(serviceId),
+ this.getDynamicInputs(serviceId),
+ this.modelInformations,
+ (that, form: FormGroup) => {that.onSubmit(that, form);},
+ (that: any, form: FormGroup) => {that.onCancel(that, form); }
+ );
+ }
+
+ getDynamicInputs(serviceId) : FormControlModel[]{
+ let dynamic = this._defaultDataGeneratorService.getArbitraryInputs(this._store.getState().service.serviceHierarchy[serviceId].service.inputs);
+ return this._basicControlGenerator.getServiceDynamicInputs(dynamic, serviceId);
+ }
+
+
+ getControls(serviceId: string) {
+ if(this._store.getState().service.serviceHierarchy[serviceId].service.instantiationType === 'Macro') {
+ return this._serviceControlGenerator.getMacroFormControls(serviceId, this.dynamicInputs);
+ }else {
+ return this._serviceControlGenerator.getAlaCartControls(serviceId, this.dynamicInputs);
+ }
+ }
+
+ getInstance(serviceId): ServiceInstance {
+ let result: ServiceInstance = null;
+ if(!_.isNil(this._store.getState().service.serviceInstance[serviceId])){
+ result = this._store.getState().service.serviceInstance[serviceId];
+ }
+ return result;
+ }
+
+ getModelInformation(serviceId: string): void {
+ this._aaiService.getServiceModelById(serviceId).subscribe((result: any) => {
+ this.serviceModel = new ServiceModel(result);
+
+ this.model = this._store.getState().service.serviceHierarchy[serviceId];
+ this.modelInformations = [
+ new ModelInformationItem("Model version", "modelVersion", [this.serviceModel.version], "", true),
+ new ModelInformationItem("Description", "description", [this.serviceModel.description]),
+ new ModelInformationItem("Category", "category", [this.serviceModel.category]),
+ new ModelInformationItem("UUID", "uuid", [this.serviceModel.uuid], Constants.ServicePopup.TOOLTIP_UUID, true),
+ new ModelInformationItem("Invariant UUID", "invariantUuid", [this.serviceModel.invariantUuid], Constants.ServicePopup.TOOLTIP_INVARIANT_UUID, true),
+ new ModelInformationItem("Service type", "serviceType", [this.serviceModel.serviceType]),
+ new ModelInformationItem("Service role", "serviceRole", [this.serviceModel.serviceRole])
+ ];
+ });
+ }
+
+ getSubLeftTitle(): string {
+ return this._store.getState().service.serviceHierarchy[this.uuidData['serviceId']].service.name;
+ }
+
+ getSubRightTitle(): string {
+ return "Service Instance Details";
+ }
+
+ getTitle(isUpdateMode: boolean): string {
+ return isUpdateMode ? "Edit service instance" : "Set a new service instance";
+ }
+
+ onCancel(that, form): void {
+ form.reset();
+ that._iframeService.removeClassCloseModal('content');
+ this.closeDialogEvent.next(that);
+ }
+
+ onSubmit(that, form: FormGroup, ...args): void {
+ form = that.updateExtraValues(that, form);
+ that.storeServiceInstance(form.value, args[0], [], new ModelInfo(that.serviceModel), that.serviceModel);
+ window.parent.postMessage( {
+ eventId: 'submitIframe',
+ data: {
+ serviceModelId: that.serviceModel.uuid
+ }
+ }, "*");
+ this.onCancel(that, form);
+ }
+
+ updateExtraValues = (that, form) : any => {
+ const service = that._store.getState().service;
+ form.value['bulkSize'] = that.uuidData['bulkSize'];
+ form.value['instanceParams'] = form.value['instanceParams'] && [form.value['instanceParams']];
+ form.value['aicZoneName'] = !_.isNil(form.value['aicZoneId']) ?this.getNameFromListById(service.aicZones, form.value['aicZoneId']) : null;
+ form.value['owningEntityName'] = !_.isNil(form.value['owningEntityId']) ?this.getNameFromListById(service.categoryParameters.owningEntityList, form.value['owningEntityId']) : null;
+ form.value['testApi'] = sessionStorage.getItem("msoRequestParametersTestApiValue");
+ form.value['tenantName'] = this.getNameFromListById(service.lcpRegionsAndTenants.lcpRegionsTenantsMap[form.value['lcpCloudRegionId']], form.value['tenantId']);
+ return form;
+ };
+
+ getNameFromListById(list, id) {
+ if(list && id) {
+ return list.find(item => item.id === id).name;
+ }
+ return null;
+ }
+
+ storeServiceInstance = (formValues:any, servicesQty:number, dynamicInputs:any, serviceModel:ModelInfo, serviceDetails: any ) => {
+ formValues.bulkSize = this.uuidData['bulkSize'];
+ formValues.modelInfo = serviceModel;
+ let instantiationType = this._store.getState().service.serviceHierarchy[serviceModel.modelVersionId].service.instantiationType;
+ this.setIsALaCarte(formValues, instantiationType);
+ this.setTestApi(formValues);
+ Object.assign(formValues, serviceDetails);
+ let isCreateMode: boolean = this._store.getState().service.serviceInstance[serviceModel.modelVersionId] == null;
+ if(isCreateMode){
+ this._store.dispatch(createServiceInstance(formValues, serviceModel.modelVersionId));
+ }else {
+ this._store.dispatch(updateServiceInstance(formValues, serviceModel.modelVersionId));
+ }
+
+ if (this._store.getState().global.flags['FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD'] && isCreateMode) {
+ this._defaultDataGeneratorService.updateReduxOnFirstSet(serviceModel.modelVersionId, formValues);
+ }
+ };
+
+ setIsALaCarte = (formValues: any, instantiationType) => {
+ formValues.isALaCarte = instantiationType === 'A-La-Carte';
+ };
+
+ setTestApi = (formValues: any) =>{
+ if (this._store.getState().global.flags['FLAG_ADD_MSO_TESTAPI_FIELD'] && formValues.isAlaCarte) {
+ formValues.testApi = sessionStorage.getItem("msoRequestParametersTestApiValue");
+ }
+ };
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.spec.ts
new file mode 100644
index 000000000..3794707ab
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.spec.ts
@@ -0,0 +1,2407 @@
+import {LogService} from "../../../../utils/log/log.service";
+import {NgRedux} from "@angular-redux/store";
+import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {HttpClient} from "@angular/common/http";
+import {GenericFormService} from "../../../genericForm/generic-form.service";
+import {FormBuilder} from "@angular/forms";
+import {IframeService} from "../../../../utils/iframe.service";
+import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {BasicPopupService} from "../basic.popup.service";
+import {VfModulePopuopService} from "./vfModule.popuop.service";
+import {VfModuleControlGenerator} from "../../../genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
+import {SdcUiServices} from "onap-ui-angular";
+import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flags.service";
+import {getTestBed, TestBed} from "@angular/core/testing";
+
+class MockModalService<T> {}
+
+class MockAppStore<T> {}
+
+class MockReduxStore<T> {
+ getState() {
+ return {
+ "global": {
+ "name": null,
+ "flags": {
+ "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
+ "FLAG_SHOW_ASSIGNMENTS": true,
+ "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
+ "FLAG_UNASSIGN_SERVICE": true,
+ "FLAG_SHOW_VERIFY_SERVICE": false,
+ "FLAG_COLLECTION_RESOURCE_SUPPORT": true,
+ "FLAG_DUPLICATE_VNF": true,
+ "FLAG_SERVICE_MODEL_CACHE": true,
+ "FLAG_ADVANCED_PORTS_FILTER": true,
+ "CREATE_INSTANCE_TEST": false,
+ "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
+ "FLAG_REGION_ID_FROM_REMOTE": true,
+ "FLAG_ASYNC_INSTANTIATION": true,
+ "FLAG_ASYNC_JOBS": true,
+ "EMPTY_DRAWING_BOARD_TEST": false,
+ "FLAG_ADD_MSO_TESTAPI_FIELD": true
+ },
+ "type": "[FLAGS] Update"
+ },
+ "service": {
+ "serviceHierarchy": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "service": {
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "name": "ComplexService",
+ "version": "1.0",
+ "toscaModelURL": null,
+ "category": "Emanuel",
+ "serviceType": "",
+ "serviceRole": "",
+ "description": "ComplexService",
+ "serviceEcompNaming": "false",
+ "instantiationType": "Macro",
+ "inputs": {}
+ },
+ "vnfs": {
+ "VF_vMee 0": {
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "invariantUuid": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "description": "VSP_vMee",
+ "name": "VF_vMee",
+ "version": "2.0",
+ "customizationUuid": "91415b44-753d-494c-926a-456a9172bbb9",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "max_instances": 10,
+ "min_instances": 1,
+ "gpb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_start_port": "0",
+ "sctp-a-ipv6-egress_rule_application": "any",
+ "Internal2_allow_transit": "true",
+ "sctp-b-IPv6_ethertype": "IPv6",
+ "sctp-a-egress_rule_application": "any",
+ "sctp-b-ingress_action": "pass",
+ "sctp-b-ingress_rule_protocol": "icmp",
+ "ncb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-ingress-src_start_port": "0.0",
+ "ncb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "fsb_volume_size_0": "320.0",
+ "sctp-b-egress_src_addresses": "local",
+ "sctp-a-ipv6-ingress_ethertype": "IPv4",
+ "sctp-a-ipv6-ingress-dst_start_port": "0",
+ "sctp-b-ipv6-ingress_rule_application": "any",
+ "domain_name": "default-domain",
+ "sctp-a-ingress_rule_protocol": "icmp",
+ "sctp-b-egress-src_start_port": "0.0",
+ "sctp-a-egress_src_addresses": "local",
+ "sctp-b-display_name": "epc-sctp-b-ipv4v6-sec-group",
+ "sctp-a-egress-src_start_port": "0.0",
+ "sctp-a-ingress_ethertype": "IPv4",
+ "sctp-b-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-dst_subnet_prefix_v6": "::",
+ "nf_naming": "{ecomp_generated_naming=true}",
+ "sctp-a-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-b-egress-dst_start_port": "0.0",
+ "ncb_flavor_name": "nv.c20r64d1",
+ "gpb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix_len": "0.0",
+ "Internal2_net_cidr": "10.0.0.10",
+ "sctp-a-ingress-dst_start_port": "0.0",
+ "sctp-a-egress-dst_start_port": "0.0",
+ "fsb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-egress_ethertype": "IPv4",
+ "vlc_st_service_mode": "in-network-nat",
+ "sctp-a-ipv6-egress_ethertype": "IPv4",
+ "sctp-a-egress-src_end_port": "65535.0",
+ "sctp-b-ipv6-egress_rule_application": "any",
+ "sctp-b-egress_action": "pass",
+ "sctp-a-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-b-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-b-name": "epc-sctp-b-ipv4v6-sec-group",
+ "fsb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ipv6-ingress-src_start_port": "0.0",
+ "sctp-b-ipv6-egress_ethertype": "IPv4",
+ "Internal1_net_cidr": "10.0.0.10",
+ "sctp-a-egress_dst_subnet_prefix": "0.0.0.0",
+ "fsb_flavor_name": "nv.c20r64d1",
+ "sctp_rule_protocol": "132",
+ "sctp-b-ipv6-ingress_src_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_rule_application": "any",
+ "ecomp_generated_naming": "false",
+ "sctp-a-IPv6_ethertype": "IPv6",
+ "vlc2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_virtualization_type": "virtual-machine",
+ "sctp-b-ingress-dst_start_port": "0.0",
+ "sctp-b-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-a-display_name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-b-ingress_rule_application": "any",
+ "int2_sec_group_name": "int2-sec-group",
+ "vlc_flavor_name": "nd.c16r64d1",
+ "sctp-b-ipv6-egress_src_addresses": "local",
+ "vlc_st_interface_type_int1": "other1",
+ "sctp-b-egress-src_end_port": "65535.0",
+ "sctp-a-ipv6-egress-dst_start_port": "0",
+ "vlc_st_interface_type_int2": "other2",
+ "sctp-a-ipv6-egress_rule_protocol": "any",
+ "Internal2_shared": "false",
+ "sctp-a-ipv6-egress_dst_subnet_prefix_len": "0",
+ "Internal2_rpf": "disable",
+ "vlc1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_end_port": "65535",
+ "sctp-a-ipv6-egress_src_addresses": "local",
+ "sctp-a-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-egress_src_end_port": "65535",
+ "Internal1_forwarding_mode": "l2",
+ "Internal2_dhcp": "false",
+ "sctp-a-dst_subnet_prefix_v6": "::",
+ "pxe_image_name": "MME_PXE-Boot_16ACP04_GA.qcow2",
+ "vlc_st_interface_type_gtp": "other0",
+ "ncb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-src_subnet_prefix_v6": "::",
+ "sctp-a-egress_dst_subnet_prefix_len": "0.0",
+ "int1_sec_group_name": "int1-sec-group",
+ "Internal1_dhcp": "false",
+ "sctp-a-ipv6-egress_dst_end_port": "65535",
+ "Internal2_forwarding_mode": "l2",
+ "fsb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix": "0.0.0.0",
+ "Internal1_net_cidr_len": "17",
+ "gpb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-a-ingress_dst_addresses": "local",
+ "sctp-a-egress_action": "pass",
+ "fsb_volume_type_0": "SF-Default-SSD",
+ "ncb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_sctp_a": "left",
+ "vlc_st_interface_type_sctp_b": "right",
+ "sctp-a-src_subnet_prefix_v6": "::",
+ "vlc_st_version": "2",
+ "sctp-b-egress_ethertype": "IPv4",
+ "sctp-a-ingress_rule_application": "any",
+ "gpb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "instance_ip_family_v6": "v6",
+ "sctp-a-ipv6-egress_src_start_port": "0",
+ "sctp-b-ingress-src_start_port": "0.0",
+ "sctp-b-ingress_dst_addresses": "local",
+ "fsb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_oam": "management",
+ "multi_stage_design": "true",
+ "oam_sec_group_name": "oam-sec-group",
+ "Internal2_net_gateway": "10.0.0.10",
+ "sctp-a-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-ipv6-egress-dst_start_port": "0",
+ "Internal1_net_gateway": "10.0.0.10",
+ "sctp-b-ipv6-egress_rule_protocol": "any",
+ "gtp_sec_group_name": "gtp-sec-group",
+ "sctp-a-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-egress_dst_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_dst_addresses": "local",
+ "sctp-a-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-egress_action": "pass",
+ "sctp-a-ipv6-egress_action": "pass",
+ "Internal1_shared": "false",
+ "sctp-b-ipv6-ingress_rule_protocol": "any",
+ "Internal2_net_cidr_len": "17",
+ "sctp-a-name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-a-ingress-src_end_port": "65535.0",
+ "sctp-b-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-a-egress-dst_end_port": "65535.0",
+ "sctp-a-ingress_action": "pass",
+ "sctp-b-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-ingress_action": "pass",
+ "vlc_st_service_type": "firewall",
+ "sctp-b-ipv6-egress_dst_end_port": "65535",
+ "sctp-b-ipv6-ingress-dst_start_port": "0",
+ "vlc2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_availability_zone": "true",
+ "fsb_volume_image_name_1": "MME_FSB2_16ACP04_GA.qcow2",
+ "sctp-b-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_src_subnet_prefix_len": "0",
+ "Internal1_allow_transit": "true",
+ "gpb_flavor_name": "nv.c20r64d1",
+ "availability_zone_max_count": "1",
+ "fsb_volume_image_name_0": "MME_FSB1_16ACP04_GA.qcow2",
+ "sctp-b-ipv6-ingress_dst_addresses": "local",
+ "sctp-b-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-ingress_ethertype": "IPv4",
+ "vlc1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_action": "pass",
+ "Internal1_rpf": "disable",
+ "sctp-b-ingress_ethertype": "IPv4",
+ "sctp-b-egress_rule_application": "any",
+ "sctp-b-ingress-src_end_port": "65535.0",
+ "sctp-a-ipv6-ingress_rule_protocol": "any",
+ "sctp-a-ingress-src_start_port": "0.0",
+ "sctp-b-egress-dst_end_port": "65535.0"
+ },
+ "type": "VF",
+ "modelCustomizationName": "VF_vMee 0",
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "netowrk_role": "role 1, role 2, role 3",
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {
+ "Port Mirroring Configuration By Policy 0": {
+ "uuid": "b4398538-e89d-4f13-b33d-ca323434ba50",
+ "invariantUuid": "6ef0ca40-f366-4897-951f-abd65d25f6f7",
+ "description": "A port mirroring configuration by policy object",
+ "name": "Port Mirroring Configuration By Policy",
+ "version": "27.0",
+ "customizationUuid": "3c3b7b8d-8669-4b3b-8664-61970041fad2",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Configuration",
+ "modelCustomizationName": "Port Mirroring Configuration By Policy 0",
+ "sourceNodes": [],
+ "collectorNodes": null,
+ "configurationByPolicy": false
+ }
+ },
+ "serviceProxies": {},
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ },
+ "6b528779-44a3-4472-bdff-9cd15ec93450": {
+ "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": "A-La-Carte",
+ "inputs": {
+ "2017488_adiodvpe0_ASN": {
+ "type": "string",
+ "description": "AV/PE",
+ "entry_schema": null,
+ "inputProperties": null,
+ "constraints": [],
+ "required": true,
+ "default": "AV_vPE"
+ }
+ }
+ },
+ "vnfs": {
+ "2017-388_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {"displayName": "bandwidth", "command": "get_input", "inputName": "adiodvpe0_bandwidth"},
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {"displayName": "ASN", "command": "get_input", "inputName": "2017488_adiodvpe0_ASN"},
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 1",
+ "vfModules": {},
+ "volumeGroups": {},
+ "vfcInstanceGroups": {}
+ },
+ "2017-388_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {"displayName": "bandwidth", "command": "get_input", "inputName": "adiodvpe0_bandwidth"},
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {"displayName": "ASN", "command": "get_input", "inputName": "2017488_adiodvpe0_ASN"},
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 0",
+ "vfModules": {},
+ "volumeGroups": {},
+ "vfcInstanceGroups": {}
+ },
+ "2017-488_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {"displayName": "bandwidth", "command": "get_input", "inputName": "adiodvpe0_bandwidth"},
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {"displayName": "ASN", "command": "get_input", "inputName": "2017488_adiodvpe0_ASN"},
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 0",
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ },
+ "volumeGroupAllowed": true
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "5",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "ADIOD_base_vPE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ }
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "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": {},
+ "properties": {
+ "network_role" : "network role 1, network role 2",
+ "min_instances": 1,
+ "max_instances": 10,
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {},
+ "fabricConfigurations": {},
+ "serviceProxies": {},
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {"sourceType": "HEAT", "vfModuleLabel": "ADIOD_vRE_BV", "paramName": "AIC_CLLI"},
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ },
+ "volumeGroupAllowed": true
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "5",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "ADIOD_base_vPE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {"sourceType": "HEAT", "vfModuleLabel": "ADIOD_vRE_BV", "paramName": "AIC_CLLI"},
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ }
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ }
+ },
+ "serviceInstance": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "vnfs": {
+ "VF_vMee 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "vf_vmee0..VfVmee..base_vmme..module-0vmvzo": {
+ "isMissingData": false,
+ "sdncPreReload": null,
+ "modelInfo": {
+ "modelType": "VFmodule",
+ "modelInvariantId": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "modelVersionId": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "modelName": "VfVmee..base_vmme..module-0",
+ "modelVersion": "2",
+ "modelCustomizationId": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0"
+ },
+ "instanceParams": [{}],
+ "trackById": "wmtm6sy2uj"
+ }
+ }
+ },
+ "isMissingData": true,
+ "originalName": "VF_vMee 0",
+ "vnfStoreKey": "VF_vMee 0",
+ "trackById": "p3wk448m5do",
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": null,
+ "tenantId": null,
+ "lineOfBusiness": null,
+ "platformName": null,
+ "modelInfo": {
+ "modelType": "VF",
+ "modelInvariantId": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "VF_vMee",
+ "modelVersion": "2.0",
+ "modelCustomizationName": "VF_vMee 0"
+ }
+ }
+ },
+ "networks": {},
+ "instanceParams": [{}],
+ "validationCounter": 1,
+ "existingNames": {},
+ "existingVNFCounterMap": {"d6557200-ecf2-4641-8094-5393ae3aae60": 1},
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "aicZoneId": "JAG1",
+ "projectName": "x1",
+ "rollbackOnFailure": "true",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "ComplexService",
+ "modelVersion": "1.0",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44"
+ },
+ "isALaCarte": false,
+ "name": "ComplexService",
+ "version": "1.0",
+ "description": "ComplexService",
+ "category": "Emanuel",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isMultiStepDesign": false
+ },
+ "6b528779-44a3-4472-bdff-9cd15ec93450": {
+ "networks": {
+ "ExtVL 0": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0",
+ "trackById": "sf3zth68xjf",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [{}],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "ExtVL 0:0001": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0",
+ "trackById": "2mdxioxca9h",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [{}],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "ExtVL 0_1": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0_1",
+ "trackById": "z7vd1gmpbs",
+ "instanceName": "ExtVL",
+ "productFamilyId": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "zzz1",
+ "instanceParams": [{
+ "vnf_config_template_version": "17.2",
+ "bandwidth_units": "Gbps",
+ "bandwidth": "10",
+ "AIC_CLLI": "ATLMY8GA",
+ "ASN": "AV_vPE",
+ "vnf_instance_name": "yoav"
+ }],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ }
+ },
+ "vnfs": {
+ "2017-488_ADIOD-vPE 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1sgoqi": {
+ "instanceName": "yoav",
+ "volumeGroupName": "123",
+ "modelInfo": {
+ "modelInvariantId": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
+ "modelVersionId": "25284168-24bb-4698-8cb4-3f509146eca5",
+ "modelName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "modelVersion": "6",
+ "modelCustomizationId": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "uuid": "25284168-24bb-4698-8cb4-3f509146eca5"
+ },
+ "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
+ "isMissingData": false,
+ "instanceParams": [{
+ "adiodvpe0_bandwidth": "10",
+ "2017488_adiodvpe0_vnf_instance_name": "mtnj309me6",
+ "2017488_adiodvpe0_vnf_config_template_version": "17.2",
+ "2017488_adiodvpe0_AIC_CLLI": "ATLMY8GA",
+ "adiodvpe0_bandwidth_units": "Gbps"
+ }]
+ }
+ }
+ },
+ "isMissingData": false,
+ "originalName": "2017-488_ADIOD-vPE 0",
+ "vnfStoreKey": "2017-488_ADIOD-vPE 0",
+ "trackById": "o65b26t2thj",
+ "instanceName": "2017488_ADIODvPE",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "platformName": "platform",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [{}],
+ "modelInfo": {
+ "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8",
+ "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09",
+ "modelName": "2017-488_ADIOD-vPE",
+ "modelVersion": "5.0",
+ "modelCustomizationId": "1da7b585-5e61-4993-b95e-8e6606c81e45",
+ "modelCustomizationName": "2017-488_ADIOD-vPE 0",
+ "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09"
+ },
+ "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09"
+ }
+ },
+ "instanceParams": [{"2017488_adiodvpe0_ASN": "AV_vPE"}],
+ "validationCounter": 0,
+ "existingNames": {"123": "", "instancename": "", "yoav": "", "extvl": ""},
+ "existingVNFCounterMap": {"69e09f68-8b63-4cc9-b9ff-860960b5db09": 1},
+ "existingNetworksCounterMap": {"ddc3f20c-08b5-40fd-af72-c6d14636b986": 3},
+ "instanceName": "InstanceName",
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "lcpCloudRegionId": "JANET25",
+ "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
+ "aicZoneId": "JAG1",
+ "projectName": null,
+ "rollbackOnFailure": "true",
+ "aicZoneName": "YUDFJULP-JAG1",
+ "owningEntityName": "WayneHolland",
+ "testApi": "GR_API",
+ "tenantName": "USP-SIP-IC-24335-T-01",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6b528779-44a3-4472-bdff-9cd15ec93450",
+ "modelName": "action-data",
+ "modelVersion": "1.0",
+ "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450"
+ },
+ "isALaCarte": false,
+ "name": "action-data",
+ "version": "1.0",
+ "description": "",
+ "category": "",
+ "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isMultiStepDesign": false
+ }
+ },
+ "lcpRegionsAndTenants": {
+ "lcpRegionList": [{
+ "id": "JANET25",
+ "name": "JANET25",
+ "isPermitted": true
+ }, {"id": "hvf6", "name": "hvf6", "isPermitted": true}],
+ "lcpRegionsTenantsMap": {
+ "JANET25": [{
+ "id": "092eb9e8e4b7412e8787dd091bc58e86",
+ "name": "USP-SIP-IC-24335-T-01",
+ "isPermitted": true
+ }],
+ "hvf6": [{
+ "id": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "name": "AIN Web Tool-15-D-testalexandria",
+ "isPermitted": true
+ }, {
+ "id": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "name": "AIN Web Tool-15-D-STTest2",
+ "isPermitted": true
+ }, {
+ "id": "1178612d2b394be4834ad77f567c0af2",
+ "name": "AIN Web Tool-15-D-SSPtestcustome",
+ "isPermitted": true
+ }, {
+ "id": "19c5ade915eb461e8af52fb2fd8cd1f2",
+ "name": "AIN Web Tool-15-D-UncheckedEcopm",
+ "isPermitted": true
+ }, {
+ "id": "de007636e25249238447264a988a927b",
+ "name": "AIN Web Tool-15-D-dfsdf",
+ "isPermitted": true
+ }, {
+ "id": "62f29b3613634ca6a3065cbe0e020c44",
+ "name": "AIN/SMS-16-D-Multiservices1",
+ "isPermitted": true
+ }, {
+ "id": "649289e30d3244e0b48098114d63c2aa",
+ "name": "AIN Web Tool-15-D-SSPST66",
+ "isPermitted": true
+ }, {
+ "id": "3f21eeea6c2c486bba31dab816c05a32",
+ "name": "AIN Web Tool-15-D-ASSPST47",
+ "isPermitted": true
+ }, {
+ "id": "f60ce21d3ee6427586cff0d22b03b773",
+ "name": "CESAR-100-D-sspjg67246",
+ "isPermitted": true
+ }, {
+ "id": "8774659e425f479895ae091bb5d46560",
+ "name": "CESAR-100-D-sspjg68359",
+ "isPermitted": true
+ }, {
+ "id": "624eb554b0d147c19ff8885341760481",
+ "name": "AINWebTool-15-D-iftach",
+ "isPermitted": true
+ }, {
+ "id": "214f55f5fc414c678059c383b03e4962",
+ "name": "CESAR-100-D-sspjg612401",
+ "isPermitted": true
+ }, {
+ "id": "c90666c291664841bb98e4d981ff1db5",
+ "name": "CESAR-100-D-sspjg621340",
+ "isPermitted": true
+ }, {
+ "id": "ce5b6bc5c7b348e1bf4b91ac9a174278",
+ "name": "sspjg621351cloned",
+ "isPermitted": true
+ }, {
+ "id": "b386b768a3f24c8e953abbe0b3488c02",
+ "name": "AINWebTool-15-D-eteancomp",
+ "isPermitted": true
+ }, {
+ "id": "dc6c4dbfd225474e9deaadd34968646c",
+ "name": "AINWebTool-15-T-SPFET",
+ "isPermitted": true
+ }, {
+ "id": "02cb5030e9914aa4be120bd9ed1e19eb",
+ "name": "AINWebTool-15-X-eeweww",
+ "isPermitted": true
+ }, {
+ "id": "f2f3830e4c984d45bcd00e1a04158a79",
+ "name": "CESAR-100-D-spjg61909",
+ "isPermitted": true
+ }, {
+ "id": "05b91bd5137f4929878edd965755c06d",
+ "name": "CESAR-100-D-sspjg621512cloned",
+ "isPermitted": true
+ }, {
+ "id": "7002fbe8482d4a989ddf445b1ce336e0",
+ "name": "AINWebTool-15-X-vdr",
+ "isPermitted": true
+ }, {
+ "id": "4008522be43741dcb1f5422022a2aa0b",
+ "name": "AINWebTool-15-D-ssasa",
+ "isPermitted": true
+ }, {
+ "id": "f44e2e96a1b6476abfda2fa407b00169",
+ "name": "AINWebTool-15-D-PFNPT",
+ "isPermitted": true
+ }, {
+ "id": "b69a52bec8a84669a37a1e8b72708be7",
+ "name": "AINWebTool-15-X-vdre",
+ "isPermitted": true
+ }, {
+ "id": "fac7d9fd56154caeb9332202dcf2969f",
+ "name": "AINWebTool-15-X-NONPODECOMP",
+ "isPermitted": true
+ }, {
+ "id": "2d34d8396e194eb49969fd61ffbff961",
+ "name": "DN5242-Nov16-T5",
+ "isPermitted": true
+ }, {
+ "id": "cb42a77ff45b48a8b8deb83bb64acc74",
+ "name": "ro-T11",
+ "isPermitted": true
+ }, {
+ "id": "fa45ca53c80b492fa8be5477cd84fc2b",
+ "name": "ro-T112",
+ "isPermitted": true
+ }, {
+ "id": "4914ab0ab3a743e58f0eefdacc1dde77",
+ "name": "DN5242-Nov21-T1",
+ "isPermitted": true
+ }, {
+ "id": "d0a3e3f2964542259d155a81c41aadc3",
+ "name": "test-hvf6-09",
+ "isPermitted": true
+ }, {"id": "cbb99fe4ada84631b7baf046b6fd2044", "name": "DN5242-Nov16-T3", "isPermitted": true}]
+ }
+ },
+ "productFamilies": [{
+ "id": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "name": "SCOTTIE",
+ "isPermitted": true
+ }, {
+ "id": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "name": "IGNACIO",
+ "isPermitted": true
+ }, {
+ "id": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "name": "Christie",
+ "isPermitted": true
+ }, {
+ "id": "a4f6f2ae-9bf5-4ed7-b904-06b2099c4bd7",
+ "name": "Enhanced Services",
+ "isPermitted": true
+ }, {"id": "vTerrance", "name": "vTerrance", "isPermitted": true}, {
+ "id": "323d69d9-2efe-4r45-ay0a-89ea7ard4e6f",
+ "name": "vSCP",
+ "isPermitted": true
+ }, {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": true
+ }, {
+ "id": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
+ "name": "BVOIP",
+ "isPermitted": true
+ }, {"id": "db171b8f-115c-4992-a2e3-ee04cae357e0", "name": "LINDSEY", "isPermitted": true}, {
+ "id": "LRSI-OSPF",
+ "name": "LRSI-OSPF",
+ "isPermitted": true
+ }, {"id": "vRosemarie", "name": "HNGATEWAY", "isPermitted": true}, {
+ "id": "vHNPaas",
+ "name": "WILKINS",
+ "isPermitted": true
+ }, {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ }, {"id": "b6a3f28c-eebf-494c-a900-055cc7c874ce", "name": "VROUTER", "isPermitted": true}, {
+ "id": "Cisneros",
+ "name": "vMuriel",
+ "isPermitted": true
+ }, {
+ "id": "0ee8c1bc-7cbd-4b0a-a1ac-e9999255abc1",
+ "name": "CARA Griffin",
+ "isPermitted": true
+ }, {
+ "id": "c7611ebe-c324-48f1-8085-94aef0c6ef3d",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ }, {"id": "e30755dc-5673-4b6b-9dcf-9abdd96b93d1", "name": "Transport", "isPermitted": true}, {
+ "id": "vSalvatore",
+ "name": "vSalvatore",
+ "isPermitted": true
+ }, {"id": "d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4", "name": "Josefina", "isPermitted": true}, {
+ "id": "vHubbard",
+ "name": "vHubbard",
+ "isPermitted": true
+ }, {"id": "12a96a9d-4b4c-4349-a950-fe1159602621", "name": "DARREN MCGEE", "isPermitted": true}],
+ "serviceTypes": {
+ "e433710f-9217-458d-a79d-1c7aff376d89": [{
+ "id": "0",
+ "name": "vRichardson",
+ "isPermitted": false
+ }, {"id": "1", "name": "TYLER SILVIA", "isPermitted": true}, {
+ "id": "2",
+ "name": "Emanuel",
+ "isPermitted": false
+ }, {"id": "3", "name": "vJamie", "isPermitted": false}, {
+ "id": "4",
+ "name": "vVoiceMail",
+ "isPermitted": false
+ }, {"id": "5", "name": "Kennedy", "isPermitted": false}, {
+ "id": "6",
+ "name": "vSEGW",
+ "isPermitted": false
+ }, {"id": "7", "name": "vVM", "isPermitted": false}, {
+ "id": "8",
+ "name": "vOTA",
+ "isPermitted": false
+ }, {"id": "9", "name": "vMME", "isPermitted": false}, {
+ "id": "10",
+ "name": "vMNS",
+ "isPermitted": false
+ }, {"id": "11", "name": "vSCP", "isPermitted": false}, {
+ "id": "12",
+ "name": "VPMS",
+ "isPermitted": false
+ }, {"id": "13", "name": "vMMSC", "isPermitted": false}, {
+ "id": "14",
+ "name": "SSD",
+ "isPermitted": false
+ }, {"id": "15", "name": "vMOG", "isPermitted": false}, {
+ "id": "16",
+ "name": "LINDSEY",
+ "isPermitted": false
+ }, {"id": "17", "name": "JOHANNA_SANTOS", "isPermitted": false}, {
+ "id": "18",
+ "name": "vCarroll",
+ "isPermitted": false
+ }]
+ },
+ "aicZones": [{"id": "NFT1", "name": "NFTJSSSS-NFT1"}, {"id": "JAG1", "name": "YUDFJULP-JAG1"}, {
+ "id": "YYY1",
+ "name": "UUUAIAAI-YYY1"
+ }, {"id": "BAN1", "name": "VSDKYUTP-BAN1"}, {"id": "DKJ1", "name": "DKJSJDKA-DKJ1"}, {
+ "id": "MCS1",
+ "name": "ASACMAMS-MCS1"
+ }, {"id": "UIO1", "name": "uioclli1-UIO1"}, {"id": "RAJ1", "name": "YGBIJNLQ-RAJ1"}, {
+ "id": "OPA1",
+ "name": "opaclli1-OPA1"
+ }, {"id": "SDE1", "name": "ZXCVBNMA-SDE1"}, {"id": "VEN2", "name": "FGHJUHIL-VEN2"}, {
+ "id": "ORL1",
+ "name": "ORLDFLMA-ORL1"
+ }, {"id": "JAD1", "name": "JADECLLI-JAD1"}, {"id": "ZXL1", "name": "LWLWCANN-ZXL1"}, {
+ "id": "CKL1",
+ "name": "CLKSKCKK-CKL1"
+ }, {"id": "SDF1", "name": "sdfclli1-SDF1"}, {"id": "RAD1", "name": "RADICAL1-RAD1"}, {
+ "id": "KIT1",
+ "name": "BHYJFGLN-KIT1"
+ }, {"id": "REL1", "name": "INGERFGT-REL1"}, {"id": "JNL1", "name": "CJALSDAC-JNL1"}, {
+ "id": "OLK1",
+ "name": "OLKOLKLS-OLK1"
+ }, {"id": "CHI1", "name": "CHILLIWE-CHI1"}, {"id": "UUU4", "name": "UUUAAAUU-UUU4"}, {
+ "id": "TUF1",
+ "name": "TUFCLLI1-TUF1"
+ }, {"id": "KJN1", "name": "CKALDKSA-KJN1"}, {"id": "SAM1", "name": "SNDGCA64-SAN1"}, {
+ "id": "SCK1",
+ "name": "SCKSCKSK-SCK1"
+ }, {"id": "HJH1", "name": "AOEEQQQD-HJH1"}, {"id": "HGD1", "name": "SDFQWHGD-HGD1"}, {
+ "id": "KOR1",
+ "name": "HYFLNBVT-KOR1"
+ }, {"id": "ATL43", "name": "AICLOCID-ATL43"}, {"id": "ATL54", "name": "AICFTAAI-ATL54"}, {
+ "id": "ATL66",
+ "name": "CLLIAAII-ATL66"
+ }, {"id": "VEL1", "name": "BNMLKUIK-VEL1"}, {"id": "ICC1", "name": "SANJITAT-ICC1"}, {
+ "id": "MNT11",
+ "name": "WSXEFBTH-MNT11"
+ }, {"id": "DEF2", "name": "WSBHGTYL-DEF2"}, {"id": "MAD11", "name": "SDFQWGKL-MAD11"}, {
+ "id": "OLG1",
+ "name": "OLHOLHOL-OLG1"
+ }, {"id": "GAR1", "name": "NGFVSJKO-GAR1"}, {"id": "SAN22", "name": "GNVLSCTL-SAN22"}, {
+ "id": "HRG1",
+ "name": "HRGHRGGS-HRG1"
+ }, {"id": "JCS1", "name": "JCSJSCJS-JCS1"}, {"id": "DHA12", "name": "WSXEDECF-DHA12"}, {
+ "id": "HJE1",
+ "name": "AOEEWWWD-HJE1"
+ }, {"id": "NCA1", "name": "NCANCANN-NCA1"}, {"id": "IOP1", "name": "iopclli1-IOP1"}, {
+ "id": "RTY1",
+ "name": "rtyclli1-RTY1"
+ }, {"id": "KAP1", "name": "HIOUYTRQ-KAP1"}, {"id": "ZEN1", "name": "ZENCLLI1-ZEN1"}, {
+ "id": "HKA1",
+ "name": "JAKHLASS-HKA1"
+ }, {"id": "CQK1", "name": "CQKSCAKK-CQK1"}, {"id": "SAI1", "name": "UBEKQLPD-SAI1"}, {
+ "id": "ERT1",
+ "name": "ertclli1-ERT1"
+ }, {"id": "IBB1", "name": "PLMKOIJU-IBB1"}, {"id": "TIR2", "name": "PLKINHYI-TIR2"}, {
+ "id": "HSD1",
+ "name": "CHASKCDS-HSD1"
+ }, {"id": "SLF78", "name": "SDCTLFN1-SLF78"}, {"id": "SEE78", "name": "SDCTEEE4-SEE78"}, {
+ "id": "SAN13",
+ "name": "TOKYJPFA-SAN13"
+ }, {"id": "SAA78", "name": "SDCTAAA1-SAA78"}, {"id": "LUC1", "name": "ATLDFGYC-LUC1"}, {
+ "id": "AMD13",
+ "name": "MEMATLAN-AMD13"
+ }, {"id": "TOR1", "name": "TOROONXN-TOR1"}, {"id": "QWE1", "name": "QWECLLI1-QWE1"}, {
+ "id": "ZOG1",
+ "name": "ZOGASTRO-ZOG1"
+ }, {"id": "CAL33", "name": "CALIFORN-CAL33"}, {"id": "SHH78", "name": "SDIT1HHH-SHH78"}, {
+ "id": "DSA1",
+ "name": "LKJHGFDS-DSA1"
+ }, {"id": "CLG1", "name": "CLGRABAD-CLG1"}, {"id": "BNA1", "name": "BNARAGBK-BNA1"}, {
+ "id": "ATL84",
+ "name": "CANTTCOC-ATL84"
+ }, {"id": "APP1", "name": "WBHGTYUI-APP1"}, {"id": "RJN1", "name": "RJNRBZAW-RJN1"}, {
+ "id": "EHH78",
+ "name": "SDCSHHH5-EHH78"
+ }, {"id": "mac10", "name": "PKGTESTF-mac10"}, {"id": "SXB78", "name": "SDCTGXB1-SXB78"}, {
+ "id": "SAX78",
+ "name": "SDCTAXG1-SAX78"
+ }, {"id": "SYD1", "name": "SYDNAUBV-SYD1"}, {"id": "TOK1", "name": "TOKYJPFA-TOK1"}, {
+ "id": "KGM2",
+ "name": "KGMTNC20-KGM2"
+ }, {"id": "DCC1b", "name": "POIUYTGH-DCC1b"}, {"id": "SKK78", "name": "SDCTKKK1-SKK78"}, {
+ "id": "SGG78",
+ "name": "SDCTGGG1-SGG78"
+ }, {"id": "SJJ78", "name": "SDCTJJJ1-SJJ78"}, {"id": "SBX78", "name": "SDCTBXG1-SBX78"}, {
+ "id": "LAG1",
+ "name": "LARGIZON-LAG1"
+ }, {"id": "IAA1", "name": "QAZXSWED-IAA1"}, {"id": "POI1", "name": "PLMNJKIU-POI1"}, {
+ "id": "LAG1a",
+ "name": "LARGIZON-LAG1a"
+ }, {"id": "PBL1", "name": "PBLAPBAI-PBL1"}, {"id": "LAG45", "name": "LARGIZON-LAG1a"}, {
+ "id": "MAR1",
+ "name": "MNBVCXZM-MAR1"
+ }, {"id": "HST70", "name": "HSTNTX70-HST70"}, {"id": "DCC1a", "name": "POIUYTGH-DCC1a"}, {
+ "id": "TOL1",
+ "name": "TOLDOH21-TOL1"
+ }, {"id": "LON1", "name": "LONEENCO-LON1"}, {"id": "SJU78", "name": "SDIT1JUB-SJU78"}, {
+ "id": "STN27",
+ "name": "HSTNTX01-STN27"
+ }, {"id": "SSW56", "name": "ss8126GT-SSW56"}, {"id": "SBB78", "name": "SDIT1BBB-SBB78"}, {
+ "id": "DCC3",
+ "name": "POIUYTGH-DCC3"
+ }, {"id": "GNV1", "name": "GNVLSCTL-GNV1"}, {"id": "WAS1", "name": "WASHDCSW-WAS1"}, {
+ "id": "TOY1",
+ "name": "TORYONNZ-TOY1"
+ }, {"id": "STT1", "name": "STTLWA02-STT1"}, {"id": "STG1", "name": "STTGGE62-STG1"}, {
+ "id": "SLL78",
+ "name": "SDCTLLL1-SLL78"
+ }, {"id": "SBU78", "name": "SDIT1BUB-SBU78"}, {"id": "ATL2", "name": "ATLNGANW-ATL2"}, {
+ "id": "BOT1",
+ "name": "BOTHWAKY-BOT1"
+ }, {"id": "SNG1", "name": "SNGPSIAU-SNG1"}, {"id": "NYC1", "name": "NYCMNY54-NYC1"}, {
+ "id": "LAG1b",
+ "name": "LARGIZON-LAG1b"
+ }, {"id": "AMD15", "name": "AMDFAA01-AMD15"}, {"id": "SNA1", "name": "SNANTXCA-SNA1"}, {
+ "id": "PLT1",
+ "name": "PLTNCA60-PLT1"
+ }, {"id": "TLP1", "name": "TLPNXM18-TLP1"}, {"id": "SDD81", "name": "SAIT1DD6-SDD81"}, {
+ "id": "DCC1",
+ "name": "POIUYTGH-DCC1"
+ }, {"id": "DCC2", "name": "POIUYTGH-DCC2"}, {"id": "OKC1", "name": "OKCBOK55-OKC1"}, {
+ "id": "PAR1",
+ "name": "PARSFRCG-PAR1"
+ }, {"id": "TES36", "name": "ABCEETES-TES36"}, {"id": "COM1", "name": "PLMKOPIU-COM1"}, {
+ "id": "ANI1",
+ "name": "ATLNGTRE-ANI1"
+ }, {"id": "SDG78", "name": "SDIT1BDG-SDG78"}, {"id": "mac20", "name": "PKGTESTF-mac20"}, {
+ "id": "DSF45",
+ "name": "DSFBG123-DSF45"
+ }, {"id": "HST25", "name": "HSTNTX01-HST25"}, {"id": "AMD18", "name": "AUDIMA01-AMD18"}, {
+ "id": "SAA80",
+ "name": "SAIT9AA3-SAA80"
+ }, {"id": "SSA56", "name": "SSIT2AA7-SSA56"}, {"id": "SDD82", "name": "SAIT1DD9-SDD82"}, {
+ "id": "JCV1",
+ "name": "JCVLFLBW-JCV1"
+ }, {"id": "SUL2", "name": "WERTYUJK-SUL2"}, {"id": "PUR1", "name": "purelyde-PUR1"}, {
+ "id": "FDE55",
+ "name": "FDERT555-FDE55"
+ }, {"id": "SITE", "name": "LONEENCO-SITE"}, {"id": "ATL1", "name": "ATLNGAMA-ATL1"}, {
+ "id": "JUL1",
+ "name": "ZXCVBNMM-JUL1"
+ }, {"id": "TAT34", "name": "TESAAISB-TAT34"}, {"id": "XCP12", "name": "CHKGH123-XCP12"}, {
+ "id": "RAI1",
+ "name": "poiuytre-RAI1"
+ }, {"id": "HPO1", "name": "ATLNGAUP-HPO1"}, {"id": "KJF12", "name": "KJFDH123-KJF12"}, {
+ "id": "SCC80",
+ "name": "SAIT9CC3-SCC80"
+ }, {"id": "SAA12", "name": "SAIT9AF8-SAA12"}, {"id": "SAA14", "name": "SAIT1AA9-SAA14"}, {
+ "id": "ATL35",
+ "name": "TTESSAAI-ATL35"
+ }, {"id": "CWY1", "name": "CWYMOWBS-CWY1"}, {"id": "ATL76", "name": "TELEPAAI-ATL76"}, {
+ "id": "DSL12",
+ "name": "DSLFK242-DSL12"
+ }, {"id": "ATL53", "name": "AAIATLTE-ATL53"}, {"id": "SAA11", "name": "SAIT9AA2-SAA11"}, {
+ "id": "ATL62",
+ "name": "TESSASCH-ATL62"
+ }, {"id": "AUG1", "name": "ASDFGHJK-AUG1"}, {"id": "POI22", "name": "POIUY123-POI22"}, {
+ "id": "SAA13",
+ "name": "SAIT1AA9-SAA13"
+ }, {"id": "BHY17", "name": "BHYTFRF3-BHY17"}, {"id": "LIS1", "name": "HOSTPROF-LIS1"}, {
+ "id": "SIP1",
+ "name": "ZXCVBNMK-SIP1"
+ }, {"id": "ATL99", "name": "TEESTAAI-ATL43"}, {"id": "ATL64", "name": "FORLOAAJ-ATL64"}, {
+ "id": "TAT33",
+ "name": "TESAAISA-TAT33"
+ }, {"id": "RAD10", "name": "INDIPUNE-RAD10"}, {"id": "RTW5", "name": "BHYTFRY4-RTW5"}, {
+ "id": "JGS1",
+ "name": "KSJKKKKK-JGS1"
+ }, {"id": "ATL98", "name": "TEESTAAI-ATL43"}, {"id": "WAN1", "name": "LEIWANGW-WAN1"}, {
+ "id": "ATL44",
+ "name": "ATLSANAB-ATL44"
+ }, {"id": "RTD2", "name": "BHYTFRk4-RTD2"}, {"id": "NIR1", "name": "ORFLMANA-NIR1"}, {
+ "id": "ATL75",
+ "name": "SANAAIRE-ATL75"
+ }, {"id": "NUM1", "name": "QWERTYUI-NUM1"}, {"id": "MTN32", "name": "MDTWNJ21-MTN32"}, {
+ "id": "RTZ4",
+ "name": "BHYTFRZ6-RTZ4"
+ }, {"id": "ATL56", "name": "ATLSANAC-ATL56"}, {"id": "AMS1", "name": "AMSTNLBW-AMS1"}, {
+ "id": "RCT1",
+ "name": "AMSTERNL-RCT1"
+ }, {"id": "JAN1", "name": "ORFLMATT-JAN1"}, {"id": "ABC14", "name": "TESAAISA-ABC14"}, {
+ "id": "TAT37",
+ "name": "TESAAISD-TAT37"
+ }, {"id": "MIC54", "name": "MICHIGAN-MIC54"}, {"id": "ABC11", "name": "ATLSANAI-ABC11"}, {
+ "id": "AMF11",
+ "name": "AMDOCS01-AMF11"
+ }, {"id": "ATL63", "name": "ATLSANEW-ATL63"}, {"id": "ABC12", "name": "ATLSECIA-ABC12"}, {
+ "id": "MTN20",
+ "name": "MDTWNJ21-MTN20"
+ }, {"id": "ABC15", "name": "AAITESAN-ABC15"}, {"id": "AVT1", "name": "AVTRFLHD-AVT1"}, {
+ "id": "ATL34",
+ "name": "ATLSANAI-ATL34"
+ }],
+ "categoryParameters": {
+ "owningEntityList": [{
+ "id": "aaa1",
+ "name": "aaa1"
+ }, {"id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "name": "WayneHolland"}, {
+ "id": "Melissa",
+ "name": "Melissa"
+ }],
+ "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"}]
+ },
+ "type": "[LCP_REGIONS_AND_TENANTS] Update",
+ "subscribers": [{
+ "id": "CAR_2020_ER",
+ "name": "CAR_2020_ER",
+ "isPermitted": true
+ }, {
+ "id": "21014aa2-526b-11e6-beb8-9e71128cae77",
+ "name": "JULIO ERICKSON",
+ "isPermitted": false
+ }, {
+ "id": "DHV1707-TestSubscriber-2",
+ "name": "DALE BRIDGES",
+ "isPermitted": false
+ }, {"id": "DHV1707-TestSubscriber-1", "name": "LLOYD BRIDGES", "isPermitted": false}, {
+ "id": "jimmy-example",
+ "name": "JimmyExampleCust-20161102",
+ "isPermitted": false
+ }, {
+ "id": "jimmy-example2",
+ "name": "JimmyExampleCust-20161103",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-TestSub-PWT-102",
+ "name": "ERICA5779-TestSub-PWT-102",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-TestSub-PWT-101",
+ "name": "ERICA5779-TestSub-PWT-101",
+ "isPermitted": false
+ }, {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-Subscriber-4",
+ "name": "ERICA5779-Subscriber-5",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-TestSub-PWT-103",
+ "name": "ERICA5779-TestSub-PWT-103",
+ "isPermitted": false
+ }, {
+ "id": "ERICA5779-Subscriber-2",
+ "name": "ERICA5779-Subscriber-2",
+ "isPermitted": false
+ }, {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "SILVIA ROBBINS",
+ "isPermitted": true
+ }, {
+ "id": "ERICA5779-Subscriber-3",
+ "name": "ERICA5779-Subscriber-3",
+ "isPermitted": false
+ }, {"id": "31739f3e-526b-11e6-beb8-9e71128cae77", "name": "CRAIG/ROBERTS", "isPermitted": false}]
+ }
+ };
+ }
+}
+
+class MockFeatureFlagsService {}
+
+describe('VFModule popup service', () => {
+ let injector;
+ let service: VfModulePopuopService;
+ let genericFormService: GenericFormService
+ let defaultDataGeneratorService: DefaultDataGeneratorService;
+ let fb: FormBuilder;
+ let iframeService: IframeService;
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ providers : [
+ VfModulePopuopService,
+ BasicControlGenerator,
+ VfModuleControlGenerator,
+ DefaultDataGeneratorService,
+ GenericFormService,
+ FormBuilder,
+ IframeService,
+ AaiService,
+ LogService,
+ BasicPopupService,
+ {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
+ {provide: NgRedux, useClass: MockReduxStore},
+ {provide: HttpClient, useClass: MockAppStore},
+ {provide: SdcUiServices.ModalService, useClass: MockModalService}
+ ]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ service = injector.get(VfModulePopuopService);
+ genericFormService = injector.get(GenericFormService);
+ defaultDataGeneratorService = injector.get(DefaultDataGeneratorService);
+ fb = injector.get(FormBuilder);
+ iframeService = injector.get(IframeService);
+
+ })().then(done).catch(done.fail));
+
+ test('getTitle should return the correct title for edit and create mode', () => {
+ expect(service.getTitle(true)).toBe('Edit Module (Heat stack)');
+ expect(service.getTitle(false)).toBe('Set new Module (Heat stack)');
+ });
+
+ test('getInstance should return new VfModuleInstance', () => {
+ const serviceId : string = '6b528779-44a3-4472-bdff-9cd15ec93450';
+ const vnfStoreKey = null;
+ const vfModuleStoreKey = "VF_vMee 0";
+ let VfModuleInstance ;
+ VfModuleInstance = service.getInstance(serviceId, vnfStoreKey, vfModuleStoreKey);
+ expect (VfModuleInstance).toBeDefined();
+ });
+
+ test('getSubLeftTitle should return network model name', () => {
+ service.model = {
+ 'name' : 'Model name'
+ };
+ expect(service.getSubLeftTitle()).toBe('Model name');
+ });
+
+ test('getSubRightTitle should return popup type', () => {
+ expect(service.getSubRightTitle()).toBe('Module (Heat stack) Instance Details');
+ });
+
+ test('getModelInformation should update modelInformations', () => {
+ const serviceId: string = '6b528779-44a3-4472-bdff-9cd15ec93450';
+ const vfModuleModelName: string = '2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1';
+
+ service.getModelInformation(serviceId, vfModuleModelName);
+ expect(service.modelInformations.length).toEqual(15);
+ expect(service.modelInformations[0].label).toEqual("Subscriber Name");
+ expect(service.modelInformations[0].values).toEqual(['SILVIA ROBBINS']);
+
+ expect(service.modelInformations[1].label).toEqual("Service Name");
+ expect(service.modelInformations[1].values).toEqual(['action-data']);
+
+ expect(service.modelInformations[2].label).toEqual("Service Instance Name");
+ expect(service.modelInformations[2].values).toEqual(['InstanceName']);
+
+ expect(service.modelInformations[3].label).toEqual("Model Name");
+ expect(service.modelInformations[3].values).toEqual(['2017488AdiodVpe..ADIOD_vRE_BV..module-1']);
+
+ expect(service.modelInformations[4].label).toEqual("Model version");
+ expect(service.modelInformations[4].values).toEqual(['6']);
+
+ expect(service.modelInformations[5].label).toEqual("Description");
+ expect(service.modelInformations[5].values).toEqual([null]);
+
+ expect(service.modelInformations[6].label).toEqual("Category");
+ expect(service.modelInformations[6].values).toEqual([undefined]);
+
+ expect(service.modelInformations[7].label).toEqual("Sub Category");
+ expect(service.modelInformations[7].values).toEqual([undefined]);
+
+ expect(service.modelInformations[8].label).toEqual("UUID");
+ expect(service.modelInformations[8].values).toEqual(['25284168-24bb-4698-8cb4-3f509146eca5']);
+
+ expect(service.modelInformations[9].label).toEqual("Invariant UUID");
+ expect(service.modelInformations[9].values).toEqual(['7253ff5c-97f0-4b8b-937c-77aeb4d79aa1']);
+
+ expect(service.modelInformations[10].label).toEqual("Service type");
+ expect(service.modelInformations[10].values).toEqual(['']);
+
+ expect(service.modelInformations[11].label).toEqual("Service role");
+ expect(service.modelInformations[11].values).toEqual(['']);
+
+ expect(service.modelInformations[12].label).toEqual("Minimum to instantiate");
+ expect(service.modelInformations[12].values).toEqual(['0']);
+
+ expect(service.modelInformations[13].label).toEqual("Maximum to instantiate");
+ expect(service.modelInformations[13].values).toEqual(['1']);
+ });
+
+
+ test('onCancel should trigger closeDialogEvent and iframe', () => {
+ let that = <any>{
+ parentElementClassName: 'content',
+ _iframeService: iframeService
+ };
+ jest.spyOn(iframeService, 'removeClassCloseModal');
+ jest.spyOn(service.closeDialogEvent, 'next');
+
+ service.onCancel(that, fb.group({}));
+
+ expect(that._iframeService.removeClassCloseModal).toHaveBeenCalledWith(that.parentElementClassName)
+ expect(service.closeDialogEvent.next).toHaveBeenCalledWith(that);
+ });
+
+ test('onSubmit should trigger onCancel', () => {
+ let that = <any>{
+ parentElementClassName: 'content',
+ _iframeService: iframeService,
+ storeVFModule: () => {
+ },
+ serviceModel: {
+ uuid: 'someUUID'
+ }
+ };
+ let form = fb.group({});
+ jest.spyOn(service, 'onCancel');
+ jest.spyOn(that, 'storeVFModule');
+ jest.spyOn(window.parent, 'postMessage');
+
+ service.onSubmit(that, form);
+
+ expect(service.onCancel).toHaveBeenCalledWith(that, form);
+ expect(that.storeVFModule).toHaveBeenCalledWith(that, form.value);
+ expect(window.parent.postMessage).toHaveBeenCalledWith({
+ eventId: 'submitIframe',
+ data: {
+ serviceModelId: 'someUUID'
+ }
+ }, "*");
+ });
+});
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.ts
new file mode 100644
index 000000000..7563f1d2a
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popuop.service.ts
@@ -0,0 +1,184 @@
+import {Injectable} from "@angular/core";
+import {FormPopupDetails, PopupType} from "../../../../models/formControlModels/formPopupDetails.model";
+import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
+import {AppState} from "../../../../store/reducers";
+import {NgRedux} from "@angular-redux/store";
+import {ITreeNode} from "angular-tree-component/dist/defs/api";
+import {ModelInformationItem} from "../../../model-information/model-information.component";
+import {Constants} from "../../../../utils/constants";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {ServiceModel} from "../../../../models/serviceModel";
+import {FormGroup} from "@angular/forms";
+import {ModelInfo} from "../../../../models/modelInfo";
+import {IframeService} from "../../../../utils/iframe.service";
+import {GenericPopupInterface} from "../generic-popup.interface";
+import {Subject} from "rxjs/Subject";
+import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {BasicPopupService} from "../basic.popup.service";
+import {VfModuleInstance} from "../../../../models/vfModuleInstance";
+import {VfModuleControlGenerator} from "../../../genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
+import {FormControlModel} from "../../../../models/formControlModels/formControl.model";
+import * as _ from 'lodash';
+import {createVFModuleInstance, updateVFModuleInstance} from "../../../../storeUtil/utils/vfModule/vfModule.actions";
+
+@Injectable()
+export class VfModulePopuopService implements GenericPopupInterface {
+ dynamicInputs: any;
+ instance: any;
+ model: any;
+ serviceModel: ServiceModel;
+ modelInformations: ModelInformationItem[] = [];
+ uuidData: Object;
+ closeDialogEvent: Subject<any> = new Subject<any>();
+ isUpdateMode: boolean;
+
+
+ constructor(private _basicControlGenerator: BasicControlGenerator,
+ private _vfModuleControlGenerator: VfModuleControlGenerator,
+ private _iframeService: IframeService,
+ private _defaultDataGeneratorService: DefaultDataGeneratorService,
+ private _aaiService: AaiService,
+ private _basicPopupService : BasicPopupService,
+ private _store: NgRedux<AppState>) {
+
+ }
+
+ getInstance(serviceId: string, vnfStoreKey: string, vfModuleStoreKey: string): any {
+ if (_.isNil(vnfStoreKey) || _.isNil(vfModuleStoreKey)) {
+ return new VfModuleInstance();
+ }
+ const vfModules = this._store.getState().service.serviceInstance[serviceId].vnfs[vnfStoreKey].vfModules;
+ return vfModules[this.uuidData['modelName']][vfModuleStoreKey];
+ }
+
+ getDynamicInputs(UUIDData : Object) : FormControlModel[]{
+ let dynamic = this._defaultDataGeneratorService.getArbitraryInputs(this._store.getState().service.serviceHierarchy[UUIDData['serviceId']].vfModules[UUIDData['modelName']].inputs);
+ return this.getVFModuleDynamicInputs(dynamic, UUIDData);
+ }
+
+ getVFModuleDynamicInputs(dynamicInputs : any, UUIDData : Object) : FormControlModel[] {
+ let result : FormControlModel[] = [];
+ if(dynamicInputs) {
+ let vfModuleInstance = null;
+ if (_.has(this._store.getState().service.serviceInstance[UUIDData['serviceId']].vnfs, UUIDData['vnfStoreKey']) &&
+ _.has(this._store.getState().service.serviceInstance[UUIDData['serviceId']].vnfs[UUIDData['vnfStoreKey']].vfModules, UUIDData['modelName'])) {
+ vfModuleInstance = Object.assign({},this._store.getState().service.serviceInstance[UUIDData['serviceId']].vnfs[UUIDData['vnfStoreKey']].vfModules[UUIDData['modelName']][UUIDData['vfModuleStoreKey']]);
+ }
+ result = this._basicControlGenerator.getDynamicInputs(dynamicInputs, vfModuleInstance);
+ }
+ return result;
+ }
+
+
+ getGenericFormPopupDetails(serviceId: string, vnfStoreKey: string, vfModuleStoreKey: string, node: ITreeNode, uuidData: Object, isUpdateMode: boolean): FormPopupDetails {
+
+ this.uuidData = uuidData;
+ this.instance = this.getInstance(serviceId, vnfStoreKey, vfModuleStoreKey);
+ this.getModelInformation(serviceId, uuidData['modelName']);
+
+ return new FormPopupDetails(this,
+ PopupType.VFMODULE,
+ uuidData,
+ this.getTitle(isUpdateMode),
+ this.getSubLeftTitle(),
+ this.getSubRightTitle(),
+ this.getControls(serviceId, vnfStoreKey, vfModuleStoreKey, isUpdateMode),
+ this.getDynamicInputs(uuidData),
+ this.modelInformations,
+ (that, form: FormGroup) => {that.onSubmit(that, form);},
+ (that: any, form: FormGroup) => {that.onCancel(that, form); }
+ );
+ }
+
+ getModelInformation(serviceId: string, modelName: string) {
+ this._aaiService.getServiceModelById(serviceId).subscribe((result: any) => {
+ this.serviceModel = new ServiceModel(result);
+
+ this.model = this._basicPopupService.getModelFromResponse(result, 'vfModules', modelName);
+ const serviceInstance = this._store.getState().service.serviceInstance[serviceId];
+ this.modelInformations = [
+ new ModelInformationItem("Subscriber Name", "subscriberName", [this._basicPopupService.extractSubscriberNameBySubscriberId(serviceInstance.globalSubscriberId)], "", true),
+ new ModelInformationItem("Service Name", "serviceModelName", [this.serviceModel.name], "", true),
+ new ModelInformationItem("Service Instance Name", "serviceName", [serviceInstance.instanceName], "", false),
+ new ModelInformationItem("Model Name", "modelName", [this.model.name], "", true),
+ new ModelInformationItem("Model version", "modelVersion", [this.model.version], "", true),
+ new ModelInformationItem("Description", "description", [this.model.description]),
+ new ModelInformationItem("Category", "category", [this.model.category]),
+ new ModelInformationItem("Sub Category", "subCategory", [this.model.subCategory]),
+ new ModelInformationItem("UUID", "uuid", [this.model.uuid], Constants.ServicePopup.TOOLTIP_UUID, true),
+ new ModelInformationItem("Invariant UUID", "invariantUuid", [this.model.invariantUuid], Constants.ServicePopup.TOOLTIP_INVARIANT_UUID, true),
+ new ModelInformationItem("Service type", "serviceType", [this.serviceModel.serviceType]),
+ new ModelInformationItem("Service role", "serviceRole", [this.serviceModel.serviceRole]),
+ new ModelInformationItem("Minimum to instantiate", "min", this.model.min == undefined ? ['0'] : [this.model.min.toString()], "", true),
+ new ModelInformationItem("Maximum to instantiate", "max", this.model.max == undefined ? ['1'] : [this.model.max.toString()], "", true),
+ new ModelInformationItem("Recommended to instantiate", "initial", [this.model.initial])
+ ];
+ });
+ }
+
+ getControls(serviceId: string, vnfStoreKey: string, vfModuleStoreKey: string, isUpdateMode: boolean) {
+ if (this._store.getState().service.serviceHierarchy[serviceId].service.instantiationType === 'Macro') {
+ return this._vfModuleControlGenerator.getMacroFormControls(serviceId, vnfStoreKey, vfModuleStoreKey, this.uuidData, isUpdateMode);
+ } else {
+ return this._vfModuleControlGenerator.getAlaCarteFormControls(serviceId, vnfStoreKey, vfModuleStoreKey, this.uuidData, isUpdateMode);
+ }
+ }
+
+
+ onSubmit(that, form: FormGroup) {
+ form.value['instanceParams'] = form.value['instanceParams'] && [form.value['instanceParams']];
+ if (!_.isNil(form.controls['supplementaryFile_hidden_content']) && form.controls['supplementaryFile_hidden_content'].value) {
+ form.value['supplementaryFileContent'] = JSON.parse(form.controls['supplementaryFile_hidden_content'].value);
+ if (!_.isNil(form.controls['supplementaryFile_hidden'].value)) {
+ form.value['supplementaryFileName'] = form.controls['supplementaryFile_hidden'].value.name;
+ }
+ else {
+ form.value['supplementaryFileName'] = that.instance.supplementaryFileName;
+ }
+ }
+ else {
+ delete form.value['supplementaryFileContent'];
+ delete form.value['supplementaryFileName'];
+ }
+ that.storeVFModule(that, form.value);
+ window.parent.postMessage({
+ eventId: 'submitIframe',
+ data: {
+ serviceModelId: that.serviceModel.uuid
+ }
+ }, "*");
+ this.onCancel(that, form);
+ }
+
+
+ onCancel(that, form) {
+ form.reset();
+ that._iframeService.removeClassCloseModal('content');
+ this.closeDialogEvent.next(that);
+ }
+
+ storeVFModule = (that, formValues: any): void => {
+ formValues.modelInfo = new ModelInfo(that.model);
+ formValues.uuid = formValues.modelInfo.uuid;
+ formValues.isMissingData = false;
+ const vnf = that._store.getState().service.serviceInstance[that.uuidData.serviceId].vnfs[that.uuidData.vnfStoreKey];
+
+ if (!that.uuidData.vFModuleStoreKey) {
+ this._store.dispatch(createVFModuleInstance(formValues, that.uuidData.modelName, that.uuidData.serviceId, 0, that.uuidData.vnfStoreKey));
+ } else {
+ this._store.dispatch(updateVFModuleInstance(formValues, that.uuidData.modelName, that.uuidData.serviceId, that.uuidData.vFModuleStoreKey, that.uuidData.vnfStoreKey));
+ }
+ };
+
+ getTitle(isUpdateMode : boolean) : string {
+ return isUpdateMode ? 'Edit Module (Heat stack)' : 'Set new Module (Heat stack)';
+ }
+
+ getSubLeftTitle(): string {
+ return this.model.name;
+ }
+
+ getSubRightTitle(): string {
+ return "Module (Heat stack) Instance Details";
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service.spec.ts
new file mode 100644
index 000000000..c77c092f6
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service.spec.ts
@@ -0,0 +1,3242 @@
+import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {NgRedux} from "@angular-redux/store";
+import {ReflectiveInjector} from "@angular/core";
+import {IframeService} from "../../../../utils/iframe.service";
+import {VfModulePopuopService} from "../vfModule/vfModule.popuop.service";
+import {FormBuilder} from "@angular/forms";
+import {GenericFormService} from "../../../genericForm/generic-form.service";
+import {BasicPopupService} from "../basic.popup.service";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {LogService} from "../../../../utils/log/log.service";
+import {HttpClient} from "@angular/common/http";
+import {VnfPopupService} from "./vnf.popup.service";
+import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
+import {VnfControlGenerator} from "../../../genericForm/formControlsServices/vnfGenerator/vnf.control.generator";
+import {UUIDData} from "../../generic-form-popup.component";
+import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flags.service";
+import {getTestBed, TestBed} from "@angular/core/testing";
+
+class MockAppStore<T> {}
+
+class MockReduxStore<T> {
+ getState() {
+ return {
+ "global": {
+ "name": null,
+ "flags": {
+ "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
+ "FLAG_SHOW_ASSIGNMENTS": true,
+ "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
+ "FLAG_UNASSIGN_SERVICE": true,
+ "FLAG_SHOW_VERIFY_SERVICE": false,
+ "FLAG_COLLECTION_RESOURCE_SUPPORT": true,
+ "FLAG_DUPLICATE_VNF": true,
+ "FLAG_SERVICE_MODEL_CACHE": true,
+ "FLAG_ADVANCED_PORTS_FILTER": true,
+ "CREATE_INSTANCE_TEST": false,
+ "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
+ "FLAG_REGION_ID_FROM_REMOTE": true,
+ "FLAG_ASYNC_INSTANTIATION": true,
+ "FLAG_ASYNC_JOBS": true,
+ "EMPTY_DRAWING_BOARD_TEST": false,
+ "FLAG_ADD_MSO_TESTAPI_FIELD": true
+ },
+ "type": "[FLAGS] Update"
+ },
+ "service": {
+ "serviceHierarchy": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "service": {
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "name": "ComplexService",
+ "version": "1.0",
+ "toscaModelURL": null,
+ "category": "Emanuel",
+ "serviceType": "",
+ "serviceRole": "",
+ "description": "ComplexService",
+ "serviceEcompNaming": "false",
+ "instantiationType": "Macro",
+ "inputs": {}
+ },
+ "vnfGroups" : {},
+ "vnfs": {
+ "VF_vMee 0": {
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "invariantUuid": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "description": "VSP_vMee",
+ "name": "VF_vMee",
+ "version": "2.0",
+ "customizationUuid": "91415b44-753d-494c-926a-456a9172bbb9",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "max_instances": 10,
+ "min_instances": 1,
+ "gpb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_start_port": "0",
+ "sctp-a-ipv6-egress_rule_application": "any",
+ "Internal2_allow_transit": "true",
+ "sctp-b-IPv6_ethertype": "IPv6",
+ "sctp-a-egress_rule_application": "any",
+ "sctp-b-ingress_action": "pass",
+ "sctp-b-ingress_rule_protocol": "icmp",
+ "ncb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-ingress-src_start_port": "0.0",
+ "ncb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "fsb_volume_size_0": "320.0",
+ "sctp-b-egress_src_addresses": "local",
+ "sctp-a-ipv6-ingress_ethertype": "IPv4",
+ "sctp-a-ipv6-ingress-dst_start_port": "0",
+ "sctp-b-ipv6-ingress_rule_application": "any",
+ "domain_name": "default-domain",
+ "sctp-a-ingress_rule_protocol": "icmp",
+ "sctp-b-egress-src_start_port": "0.0",
+ "sctp-a-egress_src_addresses": "local",
+ "sctp-b-display_name": "epc-sctp-b-ipv4v6-sec-group",
+ "sctp-a-egress-src_start_port": "0.0",
+ "sctp-a-ingress_ethertype": "IPv4",
+ "sctp-b-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-dst_subnet_prefix_v6": "::",
+ "nf_naming": "{ecomp_generated_naming=true}",
+ "sctp-a-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-b-egress-dst_start_port": "0.0",
+ "ncb_flavor_name": "nv.c20r64d1",
+ "gpb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix_len": "0.0",
+ "Internal2_net_cidr": "10.0.0.10",
+ "sctp-a-ingress-dst_start_port": "0.0",
+ "sctp-a-egress-dst_start_port": "0.0",
+ "fsb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-egress_ethertype": "IPv4",
+ "vlc_st_service_mode": "in-network-nat",
+ "sctp-a-ipv6-egress_ethertype": "IPv4",
+ "sctp-a-egress-src_end_port": "65535.0",
+ "sctp-b-ipv6-egress_rule_application": "any",
+ "sctp-b-egress_action": "pass",
+ "sctp-a-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-b-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-b-name": "epc-sctp-b-ipv4v6-sec-group",
+ "fsb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ipv6-ingress-src_start_port": "0.0",
+ "sctp-b-ipv6-egress_ethertype": "IPv4",
+ "Internal1_net_cidr": "10.0.0.10",
+ "sctp-a-egress_dst_subnet_prefix": "0.0.0.0",
+ "fsb_flavor_name": "nv.c20r64d1",
+ "sctp_rule_protocol": "132",
+ "sctp-b-ipv6-ingress_src_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_rule_application": "any",
+ "ecomp_generated_naming": "false",
+ "sctp-a-IPv6_ethertype": "IPv6",
+ "vlc2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_virtualization_type": "virtual-machine",
+ "sctp-b-ingress-dst_start_port": "0.0",
+ "sctp-b-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-a-display_name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-b-ingress_rule_application": "any",
+ "int2_sec_group_name": "int2-sec-group",
+ "vlc_flavor_name": "nd.c16r64d1",
+ "sctp-b-ipv6-egress_src_addresses": "local",
+ "vlc_st_interface_type_int1": "other1",
+ "sctp-b-egress-src_end_port": "65535.0",
+ "sctp-a-ipv6-egress-dst_start_port": "0",
+ "vlc_st_interface_type_int2": "other2",
+ "sctp-a-ipv6-egress_rule_protocol": "any",
+ "Internal2_shared": "false",
+ "sctp-a-ipv6-egress_dst_subnet_prefix_len": "0",
+ "Internal2_rpf": "disable",
+ "vlc1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_end_port": "65535",
+ "sctp-a-ipv6-egress_src_addresses": "local",
+ "sctp-a-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-egress_src_end_port": "65535",
+ "Internal1_forwarding_mode": "l2",
+ "Internal2_dhcp": "false",
+ "sctp-a-dst_subnet_prefix_v6": "::",
+ "pxe_image_name": "MME_PXE-Boot_16ACP04_GA.qcow2",
+ "vlc_st_interface_type_gtp": "other0",
+ "ncb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-src_subnet_prefix_v6": "::",
+ "sctp-a-egress_dst_subnet_prefix_len": "0.0",
+ "int1_sec_group_name": "int1-sec-group",
+ "Internal1_dhcp": "false",
+ "sctp-a-ipv6-egress_dst_end_port": "65535",
+ "Internal2_forwarding_mode": "l2",
+ "fsb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix": "0.0.0.0",
+ "Internal1_net_cidr_len": "17",
+ "gpb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-a-ingress_dst_addresses": "local",
+ "sctp-a-egress_action": "pass",
+ "fsb_volume_type_0": "SF-Default-SSD",
+ "ncb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_sctp_a": "left",
+ "vlc_st_interface_type_sctp_b": "right",
+ "sctp-a-src_subnet_prefix_v6": "::",
+ "vlc_st_version": "2",
+ "sctp-b-egress_ethertype": "IPv4",
+ "sctp-a-ingress_rule_application": "any",
+ "gpb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "instance_ip_family_v6": "v6",
+ "sctp-a-ipv6-egress_src_start_port": "0",
+ "sctp-b-ingress-src_start_port": "0.0",
+ "sctp-b-ingress_dst_addresses": "local",
+ "fsb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_oam": "management",
+ "multi_stage_design": "true",
+ "oam_sec_group_name": "oam-sec-group",
+ "Internal2_net_gateway": "10.0.0.10",
+ "sctp-a-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-ipv6-egress-dst_start_port": "0",
+ "Internal1_net_gateway": "10.0.0.10",
+ "sctp-b-ipv6-egress_rule_protocol": "any",
+ "gtp_sec_group_name": "gtp-sec-group",
+ "sctp-a-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-egress_dst_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_dst_addresses": "local",
+ "sctp-a-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-egress_action": "pass",
+ "sctp-a-ipv6-egress_action": "pass",
+ "Internal1_shared": "false",
+ "sctp-b-ipv6-ingress_rule_protocol": "any",
+ "Internal2_net_cidr_len": "17",
+ "sctp-a-name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-a-ingress-src_end_port": "65535.0",
+ "sctp-b-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-a-egress-dst_end_port": "65535.0",
+ "sctp-a-ingress_action": "pass",
+ "sctp-b-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-ingress_action": "pass",
+ "vlc_st_service_type": "firewall",
+ "sctp-b-ipv6-egress_dst_end_port": "65535",
+ "sctp-b-ipv6-ingress-dst_start_port": "0",
+ "vlc2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_availability_zone": "true",
+ "fsb_volume_image_name_1": "MME_FSB2_16ACP04_GA.qcow2",
+ "sctp-b-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_src_subnet_prefix_len": "0",
+ "Internal1_allow_transit": "true",
+ "gpb_flavor_name": "nv.c20r64d1",
+ "availability_zone_max_count": "1",
+ "fsb_volume_image_name_0": "MME_FSB1_16ACP04_GA.qcow2",
+ "sctp-b-ipv6-ingress_dst_addresses": "local",
+ "sctp-b-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-ingress_ethertype": "IPv4",
+ "vlc1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_action": "pass",
+ "Internal1_rpf": "disable",
+ "sctp-b-ingress_ethertype": "IPv4",
+ "sctp-b-egress_rule_application": "any",
+ "sctp-b-ingress-src_end_port": "65535.0",
+ "sctp-a-ipv6-ingress_rule_protocol": "any",
+ "sctp-a-ingress-src_start_port": "0.0",
+ "sctp-b-egress-dst_end_port": "65535.0"
+ },
+ "type": "VF",
+ "modelCustomizationName": "VF_vMee 0",
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "netowrk_role": "role 1, role 2, role 3",
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {
+ "Port Mirroring Configuration By Policy 0": {
+ "uuid": "b4398538-e89d-4f13-b33d-ca323434ba50",
+ "invariantUuid": "6ef0ca40-f366-4897-951f-abd65d25f6f7",
+ "description": "A port mirroring configuration by policy object",
+ "name": "Port Mirroring Configuration By Policy",
+ "version": "27.0",
+ "customizationUuid": "3c3b7b8d-8669-4b3b-8664-61970041fad2",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Configuration",
+ "modelCustomizationName": "Port Mirroring Configuration By Policy 0",
+ "sourceNodes": [],
+ "collectorNodes": null,
+ "configurationByPolicy": false
+ }
+ },
+ "serviceProxies": {},
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ },
+ "6b528779-44a3-4472-bdff-9cd15ec93450": {
+ "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": "A-La-Carte",
+ "inputs": {
+ "2017488_adiodvpe0_ASN": {
+ "type": "string",
+ "description": "AV/PE",
+ "entry_schema": null,
+ "inputProperties": null,
+ "constraints": [],
+ "required": true,
+ "default": "AV_vPE"
+ }
+ }
+ },
+ "vnfs": {
+ "2017-388_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {
+ "displayName": "bandwidth",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth"
+ },
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {
+ "displayName": "ASN",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_ASN"
+ },
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "max_instances": 5,
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 1",
+ "vfModules": {},
+ "volumeGroups": {},
+ "vfcInstanceGroups": {}
+ },
+ "2017-388_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {
+ "displayName": "bandwidth",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth"
+ },
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {
+ "displayName": "ASN",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_ASN"
+ },
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 0",
+ "vfModules": {},
+ "volumeGroups": {},
+ "vfcInstanceGroups": {}
+ },
+ "2017-488_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {
+ "displayName": "bandwidth",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth"
+ },
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {
+ "displayName": "ASN",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_ASN"
+ },
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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_ADIOD-vPE 0",
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ },
+ "volumeGroupAllowed": true
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "5",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "ADIOD_base_vPE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ }
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "vnfGroups": {},
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "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": {},
+ "properties": {
+ "network_role": "network role 1, network role 2",
+ "min_instances": 1,
+ "max_instances": 10,
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {},
+ "fabricConfigurations": {},
+ "serviceProxies": {},
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ },
+ "volumeGroupAllowed": true
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "5",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "ADIOD_base_vPE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ }
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ }
+ },
+ "serviceInstance": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "vnfs": {
+ "VF_vMee 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "vf_vmee0..VfVmee..base_vmme..module-0vmvzo": {
+ "isMissingData": false,
+ "sdncPreReload": null,
+ "modelInfo": {
+ "modelType": "VFmodule",
+ "modelInvariantId": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "modelVersionId": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "modelName": "VfVmee..base_vmme..module-0",
+ "modelVersion": "2",
+ "modelCustomizationId": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0"
+ },
+ "instanceParams": [
+ {}
+ ],
+ "trackById": "wmtm6sy2uj"
+ }
+ }
+ },
+ "isMissingData": true,
+ "originalName": "VF_vMee 0",
+ "vnfStoreKey": "VF_vMee 0",
+ "trackById": "p3wk448m5do",
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": null,
+ "tenantId": null,
+ "lineOfBusiness": null,
+ "platformName": null,
+ "modelInfo": {
+ "modelType": "VF",
+ "modelInvariantId": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "VF_vMee",
+ "modelVersion": "2.0",
+ "modelCustomizationName": "VF_vMee 0"
+ }
+ }
+ },
+ "vnfGroups": {},
+ "networks": {},
+ "instanceParams": [
+ {}
+ ],
+ "validationCounter": 1,
+ "existingNames": {},
+ "existingVnfGroupCounterMap": {},
+ "existingVNFCounterMap": {
+ "d6557200-ecf2-4641-8094-5393ae3aae60": 1
+ },
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "aicZoneId": "JAG1",
+ "projectName": "x1",
+ "rollbackOnFailure": "true",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "ComplexService",
+ "modelVersion": "1.0",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44"
+ },
+ "isALaCarte": false,
+ "name": "ComplexService",
+ "version": "1.0",
+ "description": "ComplexService",
+ "category": "Emanuel",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isMultiStepDesign": false
+ },
+ "6b528779-44a3-4472-bdff-9cd15ec93450": {
+ "networks": {
+ "ExtVL 0": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0",
+ "trackById": "sf3zth68xjf",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [
+ {}
+ ],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "ExtVL 0:0001": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0",
+ "trackById": "2mdxioxca9h",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [
+ {}
+ ],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "ExtVL 0_1": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0_1",
+ "trackById": "z7vd1gmpbs",
+ "instanceName": "ExtVL",
+ "productFamilyId": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "zzz1",
+ "instanceParams": [
+ {
+ "vnf_config_template_version": "17.2",
+ "bandwidth_units": "Gbps",
+ "bandwidth": "10",
+ "AIC_CLLI": "ATLMY8GA",
+ "ASN": "AV_vPE",
+ "vnf_instance_name": "yoav"
+ }
+ ],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ }
+ },
+ "vnfs": {
+ "2017-488_ADIOD-vPE 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1sgoqi": {
+ "instanceName": "yoav",
+ "volumeGroupName": "123",
+ "modelInfo": {
+ "modelInvariantId": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
+ "modelVersionId": "25284168-24bb-4698-8cb4-3f509146eca5",
+ "modelName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "modelVersion": "6",
+ "modelCustomizationId": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "uuid": "25284168-24bb-4698-8cb4-3f509146eca5"
+ },
+ "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
+ "isMissingData": false,
+ "instanceParams": [
+ {
+ "adiodvpe0_bandwidth": "10",
+ "2017488_adiodvpe0_vnf_instance_name": "mtnj309me6",
+ "2017488_adiodvpe0_vnf_config_template_version": "17.2",
+ "2017488_adiodvpe0_AIC_CLLI": "ATLMY8GA",
+ "adiodvpe0_bandwidth_units": "Gbps"
+ }
+ ]
+ }
+ }
+ },
+ "isMissingData": false,
+ "originalName": "2017-488_ADIOD-vPE 0",
+ "vnfStoreKey": "2017-488_ADIOD-vPE 0",
+ "trackById": "o65b26t2thj",
+ "instanceName": "2017488_ADIODvPE",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "platformName": "platform",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [
+ {}
+ ],
+ "modelInfo": {
+ "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8",
+ "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09",
+ "modelName": "2017-488_ADIOD-vPE",
+ "modelVersion": "5.0",
+ "modelCustomizationId": "1da7b585-5e61-4993-b95e-8e6606c81e45",
+ "modelCustomizationName": "2017-488_ADIOD-vPE 0",
+ "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09"
+ },
+ "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09"
+ }
+ },
+ "instanceParams": [
+ {
+ "2017488_adiodvpe0_ASN": "AV_vPE"
+ }
+ ],
+ "validationCounter": 0,
+ "existingNames": {
+ "123": "",
+ "instancename": "",
+ "yoav": "",
+ "extvl": ""
+ },
+ "existingVNFCounterMap": {
+ "69e09f68-8b63-4cc9-b9ff-860960b5db09": 1
+ },
+ "existingNetworksCounterMap": {
+ "ddc3f20c-08b5-40fd-af72-c6d14636b986": 3
+ },
+ "instanceName": "InstanceName",
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "lcpCloudRegionId": "JANET25",
+ "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
+ "aicZoneId": "JAG1",
+ "projectName": null,
+ "rollbackOnFailure": "true",
+ "aicZoneName": "YUDFJULP-JAG1",
+ "owningEntityName": "WayneHolland",
+ "testApi": "GR_API",
+ "tenantName": "USP-SIP-IC-24335-T-01",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6b528779-44a3-4472-bdff-9cd15ec93450",
+ "modelName": "action-data",
+ "modelVersion": "1.0",
+ "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450"
+ },
+ "isALaCarte": false,
+ "name": "action-data",
+ "version": "1.0",
+ "description": "",
+ "category": "",
+ "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isMultiStepDesign": false
+ }
+ },
+ "lcpRegionsAndTenants": {
+ "lcpRegionList": [
+ {
+ "id": "JANET25",
+ "name": "JANET25",
+ "isPermitted": true
+ },
+ {
+ "id": "hvf6",
+ "name": "hvf6",
+ "isPermitted": true
+ }
+ ],
+ "lcpRegionsTenantsMap": {
+ "JANET25": [
+ {
+ "id": "092eb9e8e4b7412e8787dd091bc58e86",
+ "name": "USP-SIP-IC-24335-T-01",
+ "isPermitted": true
+ }
+ ],
+ "hvf6": [
+ {
+ "id": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "name": "AIN Web Tool-15-D-testalexandria",
+ "isPermitted": true
+ },
+ {
+ "id": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "name": "AIN Web Tool-15-D-STTest2",
+ "isPermitted": true
+ },
+ {
+ "id": "1178612d2b394be4834ad77f567c0af2",
+ "name": "AIN Web Tool-15-D-SSPtestcustome",
+ "isPermitted": true
+ },
+ {
+ "id": "19c5ade915eb461e8af52fb2fd8cd1f2",
+ "name": "AIN Web Tool-15-D-UncheckedEcopm",
+ "isPermitted": true
+ },
+ {
+ "id": "de007636e25249238447264a988a927b",
+ "name": "AIN Web Tool-15-D-dfsdf",
+ "isPermitted": true
+ },
+ {
+ "id": "62f29b3613634ca6a3065cbe0e020c44",
+ "name": "AIN/SMS-16-D-Multiservices1",
+ "isPermitted": true
+ },
+ {
+ "id": "649289e30d3244e0b48098114d63c2aa",
+ "name": "AIN Web Tool-15-D-SSPST66",
+ "isPermitted": true
+ },
+ {
+ "id": "3f21eeea6c2c486bba31dab816c05a32",
+ "name": "AIN Web Tool-15-D-ASSPST47",
+ "isPermitted": true
+ },
+ {
+ "id": "f60ce21d3ee6427586cff0d22b03b773",
+ "name": "CESAR-100-D-sspjg67246",
+ "isPermitted": true
+ },
+ {
+ "id": "8774659e425f479895ae091bb5d46560",
+ "name": "CESAR-100-D-sspjg68359",
+ "isPermitted": true
+ },
+ {
+ "id": "624eb554b0d147c19ff8885341760481",
+ "name": "AINWebTool-15-D-iftach",
+ "isPermitted": true
+ },
+ {
+ "id": "214f55f5fc414c678059c383b03e4962",
+ "name": "CESAR-100-D-sspjg612401",
+ "isPermitted": true
+ },
+ {
+ "id": "c90666c291664841bb98e4d981ff1db5",
+ "name": "CESAR-100-D-sspjg621340",
+ "isPermitted": true
+ },
+ {
+ "id": "ce5b6bc5c7b348e1bf4b91ac9a174278",
+ "name": "sspjg621351cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "b386b768a3f24c8e953abbe0b3488c02",
+ "name": "AINWebTool-15-D-eteancomp",
+ "isPermitted": true
+ },
+ {
+ "id": "dc6c4dbfd225474e9deaadd34968646c",
+ "name": "AINWebTool-15-T-SPFET",
+ "isPermitted": true
+ },
+ {
+ "id": "02cb5030e9914aa4be120bd9ed1e19eb",
+ "name": "AINWebTool-15-X-eeweww",
+ "isPermitted": true
+ },
+ {
+ "id": "f2f3830e4c984d45bcd00e1a04158a79",
+ "name": "CESAR-100-D-spjg61909",
+ "isPermitted": true
+ },
+ {
+ "id": "05b91bd5137f4929878edd965755c06d",
+ "name": "CESAR-100-D-sspjg621512cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "7002fbe8482d4a989ddf445b1ce336e0",
+ "name": "AINWebTool-15-X-vdr",
+ "isPermitted": true
+ },
+ {
+ "id": "4008522be43741dcb1f5422022a2aa0b",
+ "name": "AINWebTool-15-D-ssasa",
+ "isPermitted": true
+ },
+ {
+ "id": "f44e2e96a1b6476abfda2fa407b00169",
+ "name": "AINWebTool-15-D-PFNPT",
+ "isPermitted": true
+ },
+ {
+ "id": "b69a52bec8a84669a37a1e8b72708be7",
+ "name": "AINWebTool-15-X-vdre",
+ "isPermitted": true
+ },
+ {
+ "id": "fac7d9fd56154caeb9332202dcf2969f",
+ "name": "AINWebTool-15-X-NONPODECOMP",
+ "isPermitted": true
+ },
+ {
+ "id": "2d34d8396e194eb49969fd61ffbff961",
+ "name": "DN5242-Nov16-T5",
+ "isPermitted": true
+ },
+ {
+ "id": "cb42a77ff45b48a8b8deb83bb64acc74",
+ "name": "ro-T11",
+ "isPermitted": true
+ },
+ {
+ "id": "fa45ca53c80b492fa8be5477cd84fc2b",
+ "name": "ro-T112",
+ "isPermitted": true
+ },
+ {
+ "id": "4914ab0ab3a743e58f0eefdacc1dde77",
+ "name": "DN5242-Nov21-T1",
+ "isPermitted": true
+ },
+ {
+ "id": "d0a3e3f2964542259d155a81c41aadc3",
+ "name": "test-hvf6-09",
+ "isPermitted": true
+ },
+ {
+ "id": "cbb99fe4ada84631b7baf046b6fd2044",
+ "name": "DN5242-Nov16-T3",
+ "isPermitted": true
+ }
+ ]
+ }
+ },
+ "productFamilies": [
+ {
+ "id": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "name": "SCOTTIE",
+ "isPermitted": true
+ },
+ {
+ "id": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "name": "IGNACIO",
+ "isPermitted": true
+ },
+ {
+ "id": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "name": "Christie",
+ "isPermitted": true
+ },
+ {
+ "id": "a4f6f2ae-9bf5-4ed7-b904-06b2099c4bd7",
+ "name": "Enhanced Services",
+ "isPermitted": true
+ },
+ {
+ "id": "vTerrance",
+ "name": "vTerrance",
+ "isPermitted": true
+ },
+ {
+ "id": "323d69d9-2efe-4r45-ay0a-89ea7ard4e6f",
+ "name": "vSCP",
+ "isPermitted": true
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": true
+ },
+ {
+ "id": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
+ "name": "BVOIP",
+ "isPermitted": true
+ },
+ {
+ "id": "db171b8f-115c-4992-a2e3-ee04cae357e0",
+ "name": "LINDSEY",
+ "isPermitted": true
+ },
+ {
+ "id": "LRSI-OSPF",
+ "name": "LRSI-OSPF",
+ "isPermitted": true
+ },
+ {
+ "id": "vRosemarie",
+ "name": "HNGATEWAY",
+ "isPermitted": true
+ },
+ {
+ "id": "vHNPaas",
+ "name": "WILKINS",
+ "isPermitted": true
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "b6a3f28c-eebf-494c-a900-055cc7c874ce",
+ "name": "VROUTER",
+ "isPermitted": true
+ },
+ {
+ "id": "Cisneros",
+ "name": "vMuriel",
+ "isPermitted": true
+ },
+ {
+ "id": "0ee8c1bc-7cbd-4b0a-a1ac-e9999255abc1",
+ "name": "CARA Griffin",
+ "isPermitted": true
+ },
+ {
+ "id": "c7611ebe-c324-48f1-8085-94aef0c6ef3d",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ },
+ {
+ "id": "e30755dc-5673-4b6b-9dcf-9abdd96b93d1",
+ "name": "Transport",
+ "isPermitted": true
+ },
+ {
+ "id": "vSalvatore",
+ "name": "vSalvatore",
+ "isPermitted": true
+ },
+ {
+ "id": "d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4",
+ "name": "Josefina",
+ "isPermitted": true
+ },
+ {
+ "id": "vHubbard",
+ "name": "vHubbard",
+ "isPermitted": true
+ },
+ {
+ "id": "12a96a9d-4b4c-4349-a950-fe1159602621",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ }
+ ],
+ "serviceTypes": {
+ "e433710f-9217-458d-a79d-1c7aff376d89": [
+ {
+ "id": "0",
+ "name": "vRichardson",
+ "isPermitted": false
+ },
+ {
+ "id": "1",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "2",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "3",
+ "name": "vJamie",
+ "isPermitted": false
+ },
+ {
+ "id": "4",
+ "name": "vVoiceMail",
+ "isPermitted": false
+ },
+ {
+ "id": "5",
+ "name": "Kennedy",
+ "isPermitted": false
+ },
+ {
+ "id": "6",
+ "name": "vSEGW",
+ "isPermitted": false
+ },
+ {
+ "id": "7",
+ "name": "vVM",
+ "isPermitted": false
+ },
+ {
+ "id": "8",
+ "name": "vOTA",
+ "isPermitted": false
+ },
+ {
+ "id": "9",
+ "name": "vMME",
+ "isPermitted": false
+ },
+ {
+ "id": "10",
+ "name": "vMNS",
+ "isPermitted": false
+ },
+ {
+ "id": "11",
+ "name": "vSCP",
+ "isPermitted": false
+ },
+ {
+ "id": "12",
+ "name": "VPMS",
+ "isPermitted": false
+ },
+ {
+ "id": "13",
+ "name": "vMMSC",
+ "isPermitted": false
+ },
+ {
+ "id": "14",
+ "name": "SSD",
+ "isPermitted": false
+ },
+ {
+ "id": "15",
+ "name": "vMOG",
+ "isPermitted": false
+ },
+ {
+ "id": "16",
+ "name": "LINDSEY",
+ "isPermitted": false
+ },
+ {
+ "id": "17",
+ "name": "JOHANNA_SANTOS",
+ "isPermitted": false
+ },
+ {
+ "id": "18",
+ "name": "vCarroll",
+ "isPermitted": false
+ }
+ ]
+ },
+ "aicZones": [
+ {
+ "id": "NFT1",
+ "name": "NFTJSSSS-NFT1"
+ },
+ {
+ "id": "JAG1",
+ "name": "YUDFJULP-JAG1"
+ },
+ {
+ "id": "YYY1",
+ "name": "UUUAIAAI-YYY1"
+ },
+ {
+ "id": "BAN1",
+ "name": "VSDKYUTP-BAN1"
+ },
+ {
+ "id": "DKJ1",
+ "name": "DKJSJDKA-DKJ1"
+ },
+ {
+ "id": "MCS1",
+ "name": "ASACMAMS-MCS1"
+ },
+ {
+ "id": "UIO1",
+ "name": "uioclli1-UIO1"
+ },
+ {
+ "id": "RAJ1",
+ "name": "YGBIJNLQ-RAJ1"
+ },
+ {
+ "id": "OPA1",
+ "name": "opaclli1-OPA1"
+ },
+ {
+ "id": "SDE1",
+ "name": "ZXCVBNMA-SDE1"
+ },
+ {
+ "id": "VEN2",
+ "name": "FGHJUHIL-VEN2"
+ },
+ {
+ "id": "ORL1",
+ "name": "ORLDFLMA-ORL1"
+ },
+ {
+ "id": "JAD1",
+ "name": "JADECLLI-JAD1"
+ },
+ {
+ "id": "ZXL1",
+ "name": "LWLWCANN-ZXL1"
+ },
+ {
+ "id": "CKL1",
+ "name": "CLKSKCKK-CKL1"
+ },
+ {
+ "id": "SDF1",
+ "name": "sdfclli1-SDF1"
+ },
+ {
+ "id": "RAD1",
+ "name": "RADICAL1-RAD1"
+ },
+ {
+ "id": "KIT1",
+ "name": "BHYJFGLN-KIT1"
+ },
+ {
+ "id": "REL1",
+ "name": "INGERFGT-REL1"
+ },
+ {
+ "id": "JNL1",
+ "name": "CJALSDAC-JNL1"
+ },
+ {
+ "id": "OLK1",
+ "name": "OLKOLKLS-OLK1"
+ },
+ {
+ "id": "CHI1",
+ "name": "CHILLIWE-CHI1"
+ },
+ {
+ "id": "UUU4",
+ "name": "UUUAAAUU-UUU4"
+ },
+ {
+ "id": "TUF1",
+ "name": "TUFCLLI1-TUF1"
+ },
+ {
+ "id": "KJN1",
+ "name": "CKALDKSA-KJN1"
+ },
+ {
+ "id": "SAM1",
+ "name": "SNDGCA64-SAN1"
+ },
+ {
+ "id": "SCK1",
+ "name": "SCKSCKSK-SCK1"
+ },
+ {
+ "id": "HJH1",
+ "name": "AOEEQQQD-HJH1"
+ },
+ {
+ "id": "HGD1",
+ "name": "SDFQWHGD-HGD1"
+ },
+ {
+ "id": "KOR1",
+ "name": "HYFLNBVT-KOR1"
+ },
+ {
+ "id": "ATL43",
+ "name": "AICLOCID-ATL43"
+ },
+ {
+ "id": "ATL54",
+ "name": "AICFTAAI-ATL54"
+ },
+ {
+ "id": "ATL66",
+ "name": "CLLIAAII-ATL66"
+ },
+ {
+ "id": "VEL1",
+ "name": "BNMLKUIK-VEL1"
+ },
+ {
+ "id": "ICC1",
+ "name": "SANJITAT-ICC1"
+ },
+ {
+ "id": "MNT11",
+ "name": "WSXEFBTH-MNT11"
+ },
+ {
+ "id": "DEF2",
+ "name": "WSBHGTYL-DEF2"
+ },
+ {
+ "id": "MAD11",
+ "name": "SDFQWGKL-MAD11"
+ },
+ {
+ "id": "OLG1",
+ "name": "OLHOLHOL-OLG1"
+ },
+ {
+ "id": "GAR1",
+ "name": "NGFVSJKO-GAR1"
+ },
+ {
+ "id": "SAN22",
+ "name": "GNVLSCTL-SAN22"
+ },
+ {
+ "id": "HRG1",
+ "name": "HRGHRGGS-HRG1"
+ },
+ {
+ "id": "JCS1",
+ "name": "JCSJSCJS-JCS1"
+ },
+ {
+ "id": "DHA12",
+ "name": "WSXEDECF-DHA12"
+ },
+ {
+ "id": "HJE1",
+ "name": "AOEEWWWD-HJE1"
+ },
+ {
+ "id": "NCA1",
+ "name": "NCANCANN-NCA1"
+ },
+ {
+ "id": "IOP1",
+ "name": "iopclli1-IOP1"
+ },
+ {
+ "id": "RTY1",
+ "name": "rtyclli1-RTY1"
+ },
+ {
+ "id": "KAP1",
+ "name": "HIOUYTRQ-KAP1"
+ },
+ {
+ "id": "ZEN1",
+ "name": "ZENCLLI1-ZEN1"
+ },
+ {
+ "id": "HKA1",
+ "name": "JAKHLASS-HKA1"
+ },
+ {
+ "id": "CQK1",
+ "name": "CQKSCAKK-CQK1"
+ },
+ {
+ "id": "SAI1",
+ "name": "UBEKQLPD-SAI1"
+ },
+ {
+ "id": "ERT1",
+ "name": "ertclli1-ERT1"
+ },
+ {
+ "id": "IBB1",
+ "name": "PLMKOIJU-IBB1"
+ },
+ {
+ "id": "TIR2",
+ "name": "PLKINHYI-TIR2"
+ },
+ {
+ "id": "HSD1",
+ "name": "CHASKCDS-HSD1"
+ },
+ {
+ "id": "SLF78",
+ "name": "SDCTLFN1-SLF78"
+ },
+ {
+ "id": "SEE78",
+ "name": "SDCTEEE4-SEE78"
+ },
+ {
+ "id": "SAN13",
+ "name": "TOKYJPFA-SAN13"
+ },
+ {
+ "id": "SAA78",
+ "name": "SDCTAAA1-SAA78"
+ },
+ {
+ "id": "LUC1",
+ "name": "ATLDFGYC-LUC1"
+ },
+ {
+ "id": "AMD13",
+ "name": "MEMATLAN-AMD13"
+ },
+ {
+ "id": "TOR1",
+ "name": "TOROONXN-TOR1"
+ },
+ {
+ "id": "QWE1",
+ "name": "QWECLLI1-QWE1"
+ },
+ {
+ "id": "ZOG1",
+ "name": "ZOGASTRO-ZOG1"
+ },
+ {
+ "id": "CAL33",
+ "name": "CALIFORN-CAL33"
+ },
+ {
+ "id": "SHH78",
+ "name": "SDIT1HHH-SHH78"
+ },
+ {
+ "id": "DSA1",
+ "name": "LKJHGFDS-DSA1"
+ },
+ {
+ "id": "CLG1",
+ "name": "CLGRABAD-CLG1"
+ },
+ {
+ "id": "BNA1",
+ "name": "BNARAGBK-BNA1"
+ },
+ {
+ "id": "ATL84",
+ "name": "CANTTCOC-ATL84"
+ },
+ {
+ "id": "APP1",
+ "name": "WBHGTYUI-APP1"
+ },
+ {
+ "id": "RJN1",
+ "name": "RJNRBZAW-RJN1"
+ },
+ {
+ "id": "EHH78",
+ "name": "SDCSHHH5-EHH78"
+ },
+ {
+ "id": "mac10",
+ "name": "PKGTESTF-mac10"
+ },
+ {
+ "id": "SXB78",
+ "name": "SDCTGXB1-SXB78"
+ },
+ {
+ "id": "SAX78",
+ "name": "SDCTAXG1-SAX78"
+ },
+ {
+ "id": "SYD1",
+ "name": "SYDNAUBV-SYD1"
+ },
+ {
+ "id": "TOK1",
+ "name": "TOKYJPFA-TOK1"
+ },
+ {
+ "id": "KGM2",
+ "name": "KGMTNC20-KGM2"
+ },
+ {
+ "id": "DCC1b",
+ "name": "POIUYTGH-DCC1b"
+ },
+ {
+ "id": "SKK78",
+ "name": "SDCTKKK1-SKK78"
+ },
+ {
+ "id": "SGG78",
+ "name": "SDCTGGG1-SGG78"
+ },
+ {
+ "id": "SJJ78",
+ "name": "SDCTJJJ1-SJJ78"
+ },
+ {
+ "id": "SBX78",
+ "name": "SDCTBXG1-SBX78"
+ },
+ {
+ "id": "LAG1",
+ "name": "LARGIZON-LAG1"
+ },
+ {
+ "id": "IAA1",
+ "name": "QAZXSWED-IAA1"
+ },
+ {
+ "id": "POI1",
+ "name": "PLMNJKIU-POI1"
+ },
+ {
+ "id": "LAG1a",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "PBL1",
+ "name": "PBLAPBAI-PBL1"
+ },
+ {
+ "id": "LAG45",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "MAR1",
+ "name": "MNBVCXZM-MAR1"
+ },
+ {
+ "id": "HST70",
+ "name": "HSTNTX70-HST70"
+ },
+ {
+ "id": "DCC1a",
+ "name": "POIUYTGH-DCC1a"
+ },
+ {
+ "id": "TOL1",
+ "name": "TOLDOH21-TOL1"
+ },
+ {
+ "id": "LON1",
+ "name": "LONEENCO-LON1"
+ },
+ {
+ "id": "SJU78",
+ "name": "SDIT1JUB-SJU78"
+ },
+ {
+ "id": "STN27",
+ "name": "HSTNTX01-STN27"
+ },
+ {
+ "id": "SSW56",
+ "name": "ss8126GT-SSW56"
+ },
+ {
+ "id": "SBB78",
+ "name": "SDIT1BBB-SBB78"
+ },
+ {
+ "id": "DCC3",
+ "name": "POIUYTGH-DCC3"
+ },
+ {
+ "id": "GNV1",
+ "name": "GNVLSCTL-GNV1"
+ },
+ {
+ "id": "WAS1",
+ "name": "WASHDCSW-WAS1"
+ },
+ {
+ "id": "TOY1",
+ "name": "TORYONNZ-TOY1"
+ },
+ {
+ "id": "STT1",
+ "name": "STTLWA02-STT1"
+ },
+ {
+ "id": "STG1",
+ "name": "STTGGE62-STG1"
+ },
+ {
+ "id": "SLL78",
+ "name": "SDCTLLL1-SLL78"
+ },
+ {
+ "id": "SBU78",
+ "name": "SDIT1BUB-SBU78"
+ },
+ {
+ "id": "ATL2",
+ "name": "ATLNGANW-ATL2"
+ },
+ {
+ "id": "BOT1",
+ "name": "BOTHWAKY-BOT1"
+ },
+ {
+ "id": "SNG1",
+ "name": "SNGPSIAU-SNG1"
+ },
+ {
+ "id": "NYC1",
+ "name": "NYCMNY54-NYC1"
+ },
+ {
+ "id": "LAG1b",
+ "name": "LARGIZON-LAG1b"
+ },
+ {
+ "id": "AMD15",
+ "name": "AMDFAA01-AMD15"
+ },
+ {
+ "id": "SNA1",
+ "name": "SNANTXCA-SNA1"
+ },
+ {
+ "id": "PLT1",
+ "name": "PLTNCA60-PLT1"
+ },
+ {
+ "id": "TLP1",
+ "name": "TLPNXM18-TLP1"
+ },
+ {
+ "id": "SDD81",
+ "name": "SAIT1DD6-SDD81"
+ },
+ {
+ "id": "DCC1",
+ "name": "POIUYTGH-DCC1"
+ },
+ {
+ "id": "DCC2",
+ "name": "POIUYTGH-DCC2"
+ },
+ {
+ "id": "OKC1",
+ "name": "OKCBOK55-OKC1"
+ },
+ {
+ "id": "PAR1",
+ "name": "PARSFRCG-PAR1"
+ },
+ {
+ "id": "TES36",
+ "name": "ABCEETES-TES36"
+ },
+ {
+ "id": "COM1",
+ "name": "PLMKOPIU-COM1"
+ },
+ {
+ "id": "ANI1",
+ "name": "ATLNGTRE-ANI1"
+ },
+ {
+ "id": "SDG78",
+ "name": "SDIT1BDG-SDG78"
+ },
+ {
+ "id": "mac20",
+ "name": "PKGTESTF-mac20"
+ },
+ {
+ "id": "DSF45",
+ "name": "DSFBG123-DSF45"
+ },
+ {
+ "id": "HST25",
+ "name": "HSTNTX01-HST25"
+ },
+ {
+ "id": "AMD18",
+ "name": "AUDIMA01-AMD18"
+ },
+ {
+ "id": "SAA80",
+ "name": "SAIT9AA3-SAA80"
+ },
+ {
+ "id": "SSA56",
+ "name": "SSIT2AA7-SSA56"
+ },
+ {
+ "id": "SDD82",
+ "name": "SAIT1DD9-SDD82"
+ },
+ {
+ "id": "JCV1",
+ "name": "JCVLFLBW-JCV1"
+ },
+ {
+ "id": "SUL2",
+ "name": "WERTYUJK-SUL2"
+ },
+ {
+ "id": "PUR1",
+ "name": "purelyde-PUR1"
+ },
+ {
+ "id": "FDE55",
+ "name": "FDERT555-FDE55"
+ },
+ {
+ "id": "SITE",
+ "name": "LONEENCO-SITE"
+ },
+ {
+ "id": "ATL1",
+ "name": "ATLNGAMA-ATL1"
+ },
+ {
+ "id": "JUL1",
+ "name": "ZXCVBNMM-JUL1"
+ },
+ {
+ "id": "TAT34",
+ "name": "TESAAISB-TAT34"
+ },
+ {
+ "id": "XCP12",
+ "name": "CHKGH123-XCP12"
+ },
+ {
+ "id": "RAI1",
+ "name": "poiuytre-RAI1"
+ },
+ {
+ "id": "HPO1",
+ "name": "ATLNGAUP-HPO1"
+ },
+ {
+ "id": "KJF12",
+ "name": "KJFDH123-KJF12"
+ },
+ {
+ "id": "SCC80",
+ "name": "SAIT9CC3-SCC80"
+ },
+ {
+ "id": "SAA12",
+ "name": "SAIT9AF8-SAA12"
+ },
+ {
+ "id": "SAA14",
+ "name": "SAIT1AA9-SAA14"
+ },
+ {
+ "id": "ATL35",
+ "name": "TTESSAAI-ATL35"
+ },
+ {
+ "id": "CWY1",
+ "name": "CWYMOWBS-CWY1"
+ },
+ {
+ "id": "ATL76",
+ "name": "TELEPAAI-ATL76"
+ },
+ {
+ "id": "DSL12",
+ "name": "DSLFK242-DSL12"
+ },
+ {
+ "id": "ATL53",
+ "name": "AAIATLTE-ATL53"
+ },
+ {
+ "id": "SAA11",
+ "name": "SAIT9AA2-SAA11"
+ },
+ {
+ "id": "ATL62",
+ "name": "TESSASCH-ATL62"
+ },
+ {
+ "id": "AUG1",
+ "name": "ASDFGHJK-AUG1"
+ },
+ {
+ "id": "POI22",
+ "name": "POIUY123-POI22"
+ },
+ {
+ "id": "SAA13",
+ "name": "SAIT1AA9-SAA13"
+ },
+ {
+ "id": "BHY17",
+ "name": "BHYTFRF3-BHY17"
+ },
+ {
+ "id": "LIS1",
+ "name": "HOSTPROF-LIS1"
+ },
+ {
+ "id": "SIP1",
+ "name": "ZXCVBNMK-SIP1"
+ },
+ {
+ "id": "ATL99",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "ATL64",
+ "name": "FORLOAAJ-ATL64"
+ },
+ {
+ "id": "TAT33",
+ "name": "TESAAISA-TAT33"
+ },
+ {
+ "id": "RAD10",
+ "name": "INDIPUNE-RAD10"
+ },
+ {
+ "id": "RTW5",
+ "name": "BHYTFRY4-RTW5"
+ },
+ {
+ "id": "JGS1",
+ "name": "KSJKKKKK-JGS1"
+ },
+ {
+ "id": "ATL98",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "WAN1",
+ "name": "LEIWANGW-WAN1"
+ },
+ {
+ "id": "ATL44",
+ "name": "ATLSANAB-ATL44"
+ },
+ {
+ "id": "RTD2",
+ "name": "BHYTFRk4-RTD2"
+ },
+ {
+ "id": "NIR1",
+ "name": "ORFLMANA-NIR1"
+ },
+ {
+ "id": "ATL75",
+ "name": "SANAAIRE-ATL75"
+ },
+ {
+ "id": "NUM1",
+ "name": "QWERTYUI-NUM1"
+ },
+ {
+ "id": "MTN32",
+ "name": "MDTWNJ21-MTN32"
+ },
+ {
+ "id": "RTZ4",
+ "name": "BHYTFRZ6-RTZ4"
+ },
+ {
+ "id": "ATL56",
+ "name": "ATLSANAC-ATL56"
+ },
+ {
+ "id": "AMS1",
+ "name": "AMSTNLBW-AMS1"
+ },
+ {
+ "id": "RCT1",
+ "name": "AMSTERNL-RCT1"
+ },
+ {
+ "id": "JAN1",
+ "name": "ORFLMATT-JAN1"
+ },
+ {
+ "id": "ABC14",
+ "name": "TESAAISA-ABC14"
+ },
+ {
+ "id": "TAT37",
+ "name": "TESAAISD-TAT37"
+ },
+ {
+ "id": "MIC54",
+ "name": "MICHIGAN-MIC54"
+ },
+ {
+ "id": "ABC11",
+ "name": "ATLSANAI-ABC11"
+ },
+ {
+ "id": "AMF11",
+ "name": "AMDOCS01-AMF11"
+ },
+ {
+ "id": "ATL63",
+ "name": "ATLSANEW-ATL63"
+ },
+ {
+ "id": "ABC12",
+ "name": "ATLSECIA-ABC12"
+ },
+ {
+ "id": "MTN20",
+ "name": "MDTWNJ21-MTN20"
+ },
+ {
+ "id": "ABC15",
+ "name": "AAITESAN-ABC15"
+ },
+ {
+ "id": "AVT1",
+ "name": "AVTRFLHD-AVT1"
+ },
+ {
+ "id": "ATL34",
+ "name": "ATLSANAI-ATL34"
+ }
+ ],
+ "categoryParameters": {
+ "owningEntityList": [
+ {
+ "id": "aaa1",
+ "name": "aaa1"
+ },
+ {
+ "id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "name": "WayneHolland"
+ },
+ {
+ "id": "Melissa",
+ "name": "Melissa"
+ }
+ ],
+ "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"
+ }
+ ]
+ },
+ "type": "[LCP_REGIONS_AND_TENANTS] Update",
+ "subscribers": [
+ {
+ "id": "CAR_2020_ER",
+ "name": "CAR_2020_ER",
+ "isPermitted": true
+ },
+ {
+ "id": "21014aa2-526b-11e6-beb8-9e71128cae77",
+ "name": "JULIO ERICKSON",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-2",
+ "name": "DALE BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-1",
+ "name": "LLOYD BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example",
+ "name": "JimmyExampleCust-20161102",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example2",
+ "name": "JimmyExampleCust-20161103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-102",
+ "name": "ERICA5779-TestSub-PWT-102",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-101",
+ "name": "ERICA5779-TestSub-PWT-101",
+ "isPermitted": false
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-4",
+ "name": "ERICA5779-Subscriber-5",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-103",
+ "name": "ERICA5779-TestSub-PWT-103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-2",
+ "name": "ERICA5779-Subscriber-2",
+ "isPermitted": false
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "SILVIA ROBBINS",
+ "isPermitted": true
+ },
+ {
+ "id": "ERICA5779-Subscriber-3",
+ "name": "ERICA5779-Subscriber-3",
+ "isPermitted": false
+ },
+ {
+ "id": "31739f3e-526b-11e6-beb8-9e71128cae77",
+ "name": "CRAIG/ROBERTS",
+ "isPermitted": false
+ }
+ ]
+ }
+ };
+ }
+}
+
+class MockFeatureFlagsService {}
+
+describe('vnf new popup service', () => {
+ let injector;
+ let service: VnfPopupService;
+ let genericFormService: GenericFormService
+ let defaultDataGeneratorService: DefaultDataGeneratorService;
+ let fb: FormBuilder;
+ let iframeService: IframeService;
+
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ providers : [
+ VnfPopupService,
+ DefaultDataGeneratorService,
+ GenericFormService,
+ FormBuilder,
+ IframeService,
+ {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
+ AaiService,
+ LogService,
+ BasicPopupService,
+ VfModulePopuopService,
+ BasicControlGenerator,
+ VnfControlGenerator,
+ {provide: NgRedux, useClass: MockReduxStore},
+ {provide: HttpClient, useClass: MockAppStore},
+ ]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ service = injector.get(VnfPopupService);
+ genericFormService = injector.get(GenericFormService);
+ defaultDataGeneratorService = injector.get(DefaultDataGeneratorService);
+ fb = injector.get(FormBuilder);
+ iframeService = injector.get(IframeService);
+
+ })().then(done).catch(done.fail));
+
+ test('getTitle vnf should return the correct title for edit and create mode', () => {
+ expect(service.getTitle(false)).toBe('Set a new VNF');
+ expect(service.getTitle(true)).toBe('Edit VNF instance');
+ });
+
+ test('getSubRightTitle vnf should return popup type', () => {
+ expect(service.getSubRightTitle()).toBe('VNF Instance Details');
+ });
+
+ test('getModelInformation vnf should update modelInformations', () => {
+ const serviceId: string = '6b528779-44a3-4472-bdff-9cd15ec93450';
+ const vnfModelName: string = '2017-388_ADIOD-vPE 1';
+ service.getModelInformation(serviceId, vnfModelName);
+ expect(service.modelInformations.length).toEqual(14);
+ expect(service.modelInformations[0].label).toEqual("Subscriber Name");
+ expect(service.modelInformations[0].values).toEqual(['SILVIA ROBBINS']);
+
+ expect(service.modelInformations[1].label).toEqual("Service Name");
+ expect(service.modelInformations[1].values).toEqual(['action-data']);
+
+ expect(service.modelInformations[2].label).toEqual("Service Instance Name");
+ expect(service.modelInformations[2].values).toEqual(['InstanceName']);
+
+ expect(service.modelInformations[3].label).toEqual("Model Name");
+ expect(service.modelInformations[3].values).toEqual(['2017-388_ADIOD-vPE']);
+
+ expect(service.modelInformations[4].label).toEqual("Model version");
+ expect(service.modelInformations[4].values).toEqual(['1.0']);
+
+ expect(service.modelInformations[5].label).toEqual("Description");
+ expect(service.modelInformations[5].values).toEqual(['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']);
+
+ expect(service.modelInformations[6].label).toEqual("Category");
+ expect(service.modelInformations[6].values).toEqual([undefined]);
+
+ expect(service.modelInformations[7].label).toEqual("Sub Category");
+ expect(service.modelInformations[7].values).toEqual([undefined]);
+
+ expect(service.modelInformations[8].label).toEqual("UUID");
+ expect(service.modelInformations[8].values).toEqual(['0903e1c0-8e03-4936-b5c2-260653b96413']);
+
+ expect(service.modelInformations[9].label).toEqual("Invariant UUID");
+ expect(service.modelInformations[9].values).toEqual(['00beb8f9-6d39-452f-816d-c709b9cbb87d']);
+
+ expect(service.modelInformations[10].label).toEqual("Service type");
+ expect(service.modelInformations[10].values).toEqual(['']);
+
+ expect(service.modelInformations[11].label).toEqual("Service role");
+ expect(service.modelInformations[11].values).toEqual(['']);
+
+ expect(service.modelInformations[12].label).toEqual("Minimum to instantiate");
+ expect(service.modelInformations[12].values).toEqual(['0']);
+
+ expect(service.modelInformations[13].label).toEqual("Maximum to instantiate");
+ expect(service.modelInformations[13].values).toEqual(['5']);
+ });
+
+ test('getSubLeftTitle new vnf popup should return service model name', () => {
+ service.uuidData = {
+ serviceId: '6e59c5de-f052-46fa-aa7e-2fca9d674c44',
+ modelName: 'VF_vMee 0'
+ };
+ expect(service.getSubLeftTitle()).toBe('VNF MODEL: VF_vMee');
+ });
+
+ test('getInstance with empty storekey should be created', () => {
+ const serviceId: string = '6e59c5de-f052-46fa-aa7e-2fca9d674c44';
+ const vnfModelName: string = '2017-388_ADIOD-vPE 1';
+ const newInstance = service.getInstance(serviceId, vnfModelName, null);
+ expect(newInstance).toBeDefined();
+ });
+
+ test('getInstance with not empty storekey should return vnfStoreKey', () => {
+ const serviceId: string = '6b528779-44a3-4472-bdff-9cd15ec93450';
+ const vnfModelName: string = '2017-388_ADIOD-vPE 1';
+ const vnfStoreKey: string = '2017-488_ADIOD-vPE 0';
+ const newInstance = service.getInstance(serviceId, vnfModelName, vnfStoreKey);
+ expect(newInstance.vnfStoreKey).toEqual('2017-488_ADIOD-vPE 0');
+ });
+
+ test('getGenericFormPopupDetails returns the FormPopupDetails object', () => {
+ const serviceId: string = '6e59c5de-f052-46fa-aa7e-2fca9d674c44';
+ const vnfModelName: string = 'VF_vMee 0';
+ const vnfStoreKey: string = 'VF_vMee 0';
+ let uuidData: UUIDData = <any>{
+ serviceId: "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ modelName: "VF_vMee 0",
+ vnfStoreKey: "VF_vMee 0"
+ };
+ const formPopupDetailsObject = service.getGenericFormPopupDetails(serviceId, vnfModelName, vnfStoreKey, null, uuidData, true);
+ expect(formPopupDetailsObject).toBeDefined();
+ }
+ );
+});
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service.ts
new file mode 100644
index 000000000..8969e3c15
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service.ts
@@ -0,0 +1,158 @@
+import {Injectable} from '@angular/core';
+import {GenericPopupInterface} from "../generic-popup.interface";
+import {ITreeNode} from "angular-tree-component/dist/defs/api";
+import {FormPopupDetails, PopupType} from "../../../../models/formControlModels/formPopupDetails.model";
+import {FormGroup} from "@angular/forms";
+import {ModelInformationItem} from "../../../model-information/model-information.component";
+import {ServiceModel} from "../../../../models/serviceModel";
+import {Subject} from "rxjs/Subject";
+import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
+import {VnfControlGenerator} from "../../../genericForm/formControlsServices/vnfGenerator/vnf.control.generator";
+import {IframeService} from "../../../../utils/iframe.service";
+import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {BasicPopupService} from "../basic.popup.service";
+import {NgRedux} from "@angular-redux/store";
+import {AppState} from "../../../../store/reducers";
+import {Subscriber} from "../../../../models/subscriber";
+import {Constants} from "../../../../utils/constants";
+import {VnfInstance} from "../../../../models/vnfInstance";
+import {ModelInfo} from "../../../../models/modelInfo";
+import {changeInstanceCounter} from "../../../../storeUtil/utils/general/general.actions";
+import {createVNFInstance, updateVNFInstance} from "../../../../storeUtil/utils/vnf/vnf.actions";
+import * as _ from 'lodash';
+
+@Injectable()
+export class VnfPopupService implements GenericPopupInterface{
+ dynamicInputs: any;
+ instance: any;
+ model:any;
+ serviceModel:ServiceModel;
+ modelInformations: ModelInformationItem[] = [];
+ uuidData: Object;
+ closeDialogEvent: Subject<any> = new Subject<any>();
+ isUpdateMode: boolean;
+
+ constructor(
+ private _basicControlGenerator: BasicControlGenerator,
+ private _vnfControlGenerator: VnfControlGenerator,
+ private _iframeService: IframeService,
+ private _defaultDataGeneratorService: DefaultDataGeneratorService,
+ private _aaiService: AaiService,
+ private _basicPopupService: BasicPopupService,
+ private _store: NgRedux<AppState>) {
+ }
+
+ getGenericFormPopupDetails(serviceId: string, modelName: string, vnfStoreKey: string, node: ITreeNode, uuidData: Object, isUpdateMode: boolean): FormPopupDetails {
+ this.uuidData = uuidData;
+ this.isUpdateMode = isUpdateMode;
+ this.instance = this.getInstance(serviceId, modelName, vnfStoreKey);
+ this.getModelInformation(serviceId, modelName);
+
+ return new FormPopupDetails(this,
+ PopupType.VNF_MACRO,
+ uuidData,
+ this.getTitle(isUpdateMode),
+ this.getSubLeftTitle(),
+ this.getSubRightTitle(),
+ this.getControls(serviceId, modelName, vnfStoreKey),
+ this._basicPopupService.getDynamicInputs(serviceId, modelName, vnfStoreKey, 'vnfs'),
+ this.modelInformations,
+ (that, form: FormGroup) => {that.onSubmit(that, form);},
+ (that: any, form: FormGroup) => {that.onCancel(that, form); }
+ )
+ }
+
+ getControls(serviceId: string, modelName: string, vnfStoreKey: string){
+ if(this._store.getState().service.serviceHierarchy[serviceId].service.instantiationType === 'Macro') {
+ return this._vnfControlGenerator.getMacroFormControls(serviceId, vnfStoreKey, modelName);
+ } else {
+ return this._vnfControlGenerator.getAlaCarteFormControls(serviceId, vnfStoreKey, modelName);
+ }
+ }
+
+ getInstance(serviceId: string, modelName: string, vnfStoreKey: string): any {
+ if(_.isNil(vnfStoreKey)){
+ return new VnfInstance();
+ }
+ return this._store.getState().service.serviceInstance[serviceId].vnfs[vnfStoreKey];
+ }
+
+ getModelInformation(serviceId: string, modelName: string): void {
+ this._aaiService.getServiceModelById(serviceId).subscribe((result: any) => {
+ this.serviceModel = new ServiceModel(result);
+ this.model = this._basicPopupService.getModelFromResponse(result, 'vnfs', modelName);
+ const serviceInstance = this._store.getState().service.serviceInstance[serviceId];
+ this.modelInformations = [
+ new ModelInformationItem("Subscriber Name", "subscriberName", [this.extractSubscriberNameBySubscriberId(serviceInstance.globalSubscriberId, this._store)], "", true),
+ new ModelInformationItem("Service Name", "serviceModelName", [this.serviceModel.name], "", true),
+ new ModelInformationItem("Service Instance Name", "serviceName", [serviceInstance.instanceName], "", false),
+ new ModelInformationItem("Model Name", "modelName", [this.model.name], "", true),
+ new ModelInformationItem("Model version", "modelVersion", [this.model.version], "", true),
+ new ModelInformationItem("Description", "description", [this.model.description]),
+ new ModelInformationItem("Category", "category", [this.model.category]),
+ new ModelInformationItem("Sub Category", "subCategory", [this.model.subCategory]),
+ new ModelInformationItem("UUID", "uuid", [this.model.uuid], Constants.ServicePopup.TOOLTIP_UUID, true),
+ new ModelInformationItem("Invariant UUID", "invariantUuid", [this.model.invariantUuid], Constants.ServicePopup.TOOLTIP_INVARIANT_UUID, true),
+ new ModelInformationItem("Service type", "serviceType", [this.serviceModel.serviceType]),
+ new ModelInformationItem("Service role", "serviceRole", [this.serviceModel.serviceRole]),
+ new ModelInformationItem("Minimum to instantiate", "vnf-min", [!_.isNil(this.model.min) ? this.model.min.toString() : '0'], "", false),
+ new ModelInformationItem("Maximum to instantiate", "vnf-max", [!_.isNil(this.model.max) ? this.model.max.toString() : '1'], "", false)
+ ];
+ })
+ }
+
+ getSubLeftTitle(): string {
+ return "VNF MODEL: " + this._store.getState().service.serviceHierarchy[this.uuidData['serviceId']].vnfs[this.uuidData['modelName']].name;
+ }
+
+ getSubRightTitle(): string {
+ return "VNF Instance Details";
+ }
+
+ storeVNF = (that, formValues: any): void => {
+ formValues.modelInfo = new ModelInfo(that.model);
+ formValues.uuid = formValues.modelInfo.uuid;
+ formValues.isMissingData = false;
+ if(!that.isUpdateMode){
+ that._store.dispatch(changeInstanceCounter(formValues.modelInfo.modelUniqueId, that.uuidData.serviceId, 1 , <any> {data: {type: 'VF'}}));
+ this._store.dispatch(createVNFInstance(formValues, that.uuidData['modelName'], that.uuidData['serviceId'], that.uuidData['modelName']));
+ }else {
+ that._store.dispatch(updateVNFInstance(formValues, that.uuidData.modelName, that.uuidData.serviceId, that.uuidData.vnfStoreKey))
+ }
+ };
+
+ getTitle(isUpdateMode: boolean): string {
+ return isUpdateMode ? "Edit VNF instance": "Set a new VNF" ;
+ }
+
+ onCancel(that, form): void {
+ form.reset();
+ that._iframeService.removeClassCloseModal('content');
+ this.closeDialogEvent.next(that);
+ }
+
+ onSubmit(that, form: FormGroup, ...args): void {
+ form.value['instanceParams'] = form.value['instanceParams'] && [form.value['instanceParams']];
+ that.storeVNF(that, form.value);
+ window.parent.postMessage( {
+ eventId: 'submitIframe',
+ data: {
+ serviceModelId: that.uuidData.serviceId
+ }
+ }, "*");
+ that.onCancel(that, form);
+ }
+
+ extractSubscriberNameBySubscriberId(subscriberId: string, store: NgRedux<AppState>) {
+ let result: string = null;
+ let filteredArray: any = _.filter(store.getState().service.subscribers, function (o: Subscriber) {
+ return o.id === subscriberId
+ });
+ if (filteredArray.length > 0) {
+ result = filteredArray[0].name;
+ }
+ return result;
+ }
+
+}
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service.spec.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service.spec.ts
new file mode 100644
index 000000000..6027f4346
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service.spec.ts
@@ -0,0 +1,3239 @@
+import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {NgRedux} from "@angular-redux/store";
+import {ReflectiveInjector} from "@angular/core";
+import {IframeService} from "../../../../utils/iframe.service";
+import {VfModulePopuopService} from "../vfModule/vfModule.popuop.service";
+import {FormBuilder} from "@angular/forms";
+import {GenericFormService} from "../../../genericForm/generic-form.service";
+import {BasicPopupService} from "../basic.popup.service";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {LogService} from "../../../../utils/log/log.service";
+import {HttpClient} from "@angular/common/http";
+import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
+import {UUIDData} from "../../generic-form-popup.component";
+import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flags.service";
+import {VnfGroupPopupService} from "./vnfGroup.popup.service";
+import {VnfGroupControlGenerator} from "../../../genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator";
+import {getTestBed, TestBed} from "@angular/core/testing";
+
+class MockAppStore<T> {}
+
+class MockReduxStore<T> {
+ getState() {
+ return {
+ "global": {
+ "name": null,
+ "flags": {
+ "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
+ "FLAG_SHOW_ASSIGNMENTS": true,
+ "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
+ "FLAG_UNASSIGN_SERVICE": true,
+ "FLAG_SHOW_VERIFY_SERVICE": false,
+ "FLAG_COLLECTION_RESOURCE_SUPPORT": true,
+ "FLAG_DUPLICATE_VNF": true,
+ "FLAG_SERVICE_MODEL_CACHE": true,
+ "FLAG_ADVANCED_PORTS_FILTER": true,
+ "CREATE_INSTANCE_TEST": false,
+ "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
+ "FLAG_REGION_ID_FROM_REMOTE": true,
+ "FLAG_ASYNC_INSTANTIATION": true,
+ "FLAG_ASYNC_JOBS": true,
+ "EMPTY_DRAWING_BOARD_TEST": false,
+ "FLAG_ADD_MSO_TESTAPI_FIELD": true
+ },
+ "type": "[FLAGS] Update"
+ },
+ "service": {
+ "serviceHierarchy": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "service": {
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "name": "ComplexService",
+ "version": "1.0",
+ "toscaModelURL": null,
+ "category": "Emanuel",
+ "serviceType": "",
+ "serviceRole": "",
+ "description": "ComplexService",
+ "serviceEcompNaming": "false",
+ "instantiationType": "Macro",
+ "inputs": {}
+ },
+ "vnfGroups": {
+ "VF_vMee 0": {
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "invariantUuid": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "description": "VSP_vMee",
+ "name": "VF_vMee",
+ "version": "2.0",
+ "customizationUuid": "91415b44-753d-494c-926a-456a9172bbb9",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "max_instances": 10,
+ "min_instances": 1,
+ "gpb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_start_port": "0",
+ "sctp-a-ipv6-egress_rule_application": "any",
+ "Internal2_allow_transit": "true",
+ "sctp-b-IPv6_ethertype": "IPv6",
+ "sctp-a-egress_rule_application": "any",
+ "sctp-b-ingress_action": "pass",
+ "sctp-b-ingress_rule_protocol": "icmp",
+ "ncb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-ingress-src_start_port": "0.0",
+ "ncb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "fsb_volume_size_0": "320.0",
+ "sctp-b-egress_src_addresses": "local",
+ "sctp-a-ipv6-ingress_ethertype": "IPv4",
+ "sctp-a-ipv6-ingress-dst_start_port": "0",
+ "sctp-b-ipv6-ingress_rule_application": "any",
+ "domain_name": "default-domain",
+ "sctp-a-ingress_rule_protocol": "icmp",
+ "sctp-b-egress-src_start_port": "0.0",
+ "sctp-a-egress_src_addresses": "local",
+ "sctp-b-display_name": "epc-sctp-b-ipv4v6-sec-group",
+ "sctp-a-egress-src_start_port": "0.0",
+ "sctp-a-ingress_ethertype": "IPv4",
+ "sctp-b-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-dst_subnet_prefix_v6": "::",
+ "nf_naming": "{ecomp_generated_naming=true}",
+ "sctp-a-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-b-egress-dst_start_port": "0.0",
+ "ncb_flavor_name": "nv.c20r64d1",
+ "gpb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix_len": "0.0",
+ "Internal2_net_cidr": "10.0.0.10",
+ "sctp-a-ingress-dst_start_port": "0.0",
+ "sctp-a-egress-dst_start_port": "0.0",
+ "fsb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-egress_ethertype": "IPv4",
+ "vlc_st_service_mode": "in-network-nat",
+ "sctp-a-ipv6-egress_ethertype": "IPv4",
+ "sctp-a-egress-src_end_port": "65535.0",
+ "sctp-b-ipv6-egress_rule_application": "any",
+ "sctp-b-egress_action": "pass",
+ "sctp-a-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-b-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-b-name": "epc-sctp-b-ipv4v6-sec-group",
+ "fsb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ipv6-ingress-src_start_port": "0.0",
+ "sctp-b-ipv6-egress_ethertype": "IPv4",
+ "Internal1_net_cidr": "10.0.0.10",
+ "sctp-a-egress_dst_subnet_prefix": "0.0.0.0",
+ "fsb_flavor_name": "nv.c20r64d1",
+ "sctp_rule_protocol": "132",
+ "sctp-b-ipv6-ingress_src_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_rule_application": "any",
+ "ecomp_generated_naming": "false",
+ "sctp-a-IPv6_ethertype": "IPv6",
+ "vlc2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_virtualization_type": "virtual-machine",
+ "sctp-b-ingress-dst_start_port": "0.0",
+ "sctp-b-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-a-display_name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-b-ingress_rule_application": "any",
+ "int2_sec_group_name": "int2-sec-group",
+ "vlc_flavor_name": "nd.c16r64d1",
+ "sctp-b-ipv6-egress_src_addresses": "local",
+ "vlc_st_interface_type_int1": "other1",
+ "sctp-b-egress-src_end_port": "65535.0",
+ "sctp-a-ipv6-egress-dst_start_port": "0",
+ "vlc_st_interface_type_int2": "other2",
+ "sctp-a-ipv6-egress_rule_protocol": "any",
+ "Internal2_shared": "false",
+ "sctp-a-ipv6-egress_dst_subnet_prefix_len": "0",
+ "Internal2_rpf": "disable",
+ "vlc1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ipv6-egress_src_end_port": "65535",
+ "sctp-a-ipv6-egress_src_addresses": "local",
+ "sctp-a-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-egress_src_end_port": "65535",
+ "Internal1_forwarding_mode": "l2",
+ "Internal2_dhcp": "false",
+ "sctp-a-dst_subnet_prefix_v6": "::",
+ "pxe_image_name": "MME_PXE-Boot_16ACP04_GA.qcow2",
+ "vlc_st_interface_type_gtp": "other0",
+ "ncb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-src_subnet_prefix_v6": "::",
+ "sctp-a-egress_dst_subnet_prefix_len": "0.0",
+ "int1_sec_group_name": "int1-sec-group",
+ "Internal1_dhcp": "false",
+ "sctp-a-ipv6-egress_dst_end_port": "65535",
+ "Internal2_forwarding_mode": "l2",
+ "fsb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-egress_dst_subnet_prefix": "0.0.0.0",
+ "Internal1_net_cidr_len": "17",
+ "gpb2_Internal1_mac": "00:11:22:EF:AC:DF",
+ "sctp-b-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-a-ingress_dst_addresses": "local",
+ "sctp-a-egress_action": "pass",
+ "fsb_volume_type_0": "SF-Default-SSD",
+ "ncb2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_sctp_a": "left",
+ "vlc_st_interface_type_sctp_b": "right",
+ "sctp-a-src_subnet_prefix_v6": "::",
+ "vlc_st_version": "2",
+ "sctp-b-egress_ethertype": "IPv4",
+ "sctp-a-ingress_rule_application": "any",
+ "gpb1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "instance_ip_family_v6": "v6",
+ "sctp-a-ipv6-egress_src_start_port": "0",
+ "sctp-b-ingress-src_start_port": "0.0",
+ "sctp-b-ingress_dst_addresses": "local",
+ "fsb1_Internal1_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_interface_type_oam": "management",
+ "multi_stage_design": "true",
+ "oam_sec_group_name": "oam-sec-group",
+ "Internal2_net_gateway": "10.0.0.10",
+ "sctp-a-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-ipv6-egress-dst_start_port": "0",
+ "Internal1_net_gateway": "10.0.0.10",
+ "sctp-b-ipv6-egress_rule_protocol": "any",
+ "gtp_sec_group_name": "gtp-sec-group",
+ "sctp-a-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-egress_dst_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_dst_addresses": "local",
+ "sctp-a-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-egress_action": "pass",
+ "sctp-a-ipv6-egress_action": "pass",
+ "Internal1_shared": "false",
+ "sctp-b-ipv6-ingress_rule_protocol": "any",
+ "Internal2_net_cidr_len": "17",
+ "sctp-a-name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-a-ingress-src_end_port": "65535.0",
+ "sctp-b-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-a-egress-dst_end_port": "65535.0",
+ "sctp-a-ingress_action": "pass",
+ "sctp-b-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-ingress_action": "pass",
+ "vlc_st_service_type": "firewall",
+ "sctp-b-ipv6-egress_dst_end_port": "65535",
+ "sctp-b-ipv6-ingress-dst_start_port": "0",
+ "vlc2_Internal2_mac": "00:11:22:EF:AC:DF",
+ "vlc_st_availability_zone": "true",
+ "fsb_volume_image_name_1": "MME_FSB2_16ACP04_GA.qcow2",
+ "sctp-b-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_src_subnet_prefix_len": "0",
+ "Internal1_allow_transit": "true",
+ "gpb_flavor_name": "nv.c20r64d1",
+ "availability_zone_max_count": "1",
+ "fsb_volume_image_name_0": "MME_FSB1_16ACP04_GA.qcow2",
+ "sctp-b-ipv6-ingress_dst_addresses": "local",
+ "sctp-b-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-ingress_ethertype": "IPv4",
+ "vlc1_Internal2_mac": "00:11:22:EF:AC:DF",
+ "sctp-a-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_action": "pass",
+ "Internal1_rpf": "disable",
+ "sctp-b-ingress_ethertype": "IPv4",
+ "sctp-b-egress_rule_application": "any",
+ "sctp-b-ingress-src_end_port": "65535.0",
+ "sctp-a-ipv6-ingress_rule_protocol": "any",
+ "sctp-a-ingress-src_start_port": "0.0",
+ "sctp-b-egress-dst_end_port": "65535.0"
+ },
+ "type": "VnfGroup",
+ "modelCustomizationName": "VF_vMee 0",
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "netowrk_role": "role 1, role 2, role 3",
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {
+ "Port Mirroring Configuration By Policy 0": {
+ "uuid": "b4398538-e89d-4f13-b33d-ca323434ba50",
+ "invariantUuid": "6ef0ca40-f366-4897-951f-abd65d25f6f7",
+ "description": "A port mirroring configuration by policy object",
+ "name": "Port Mirroring Configuration By Policy",
+ "version": "27.0",
+ "customizationUuid": "3c3b7b8d-8669-4b3b-8664-61970041fad2",
+ "inputs": {},
+ "commands": {},
+ "properties": {},
+ "type": "Configuration",
+ "modelCustomizationName": "Port Mirroring Configuration By Policy 0",
+ "sourceNodes": [],
+ "collectorNodes": null,
+ "configurationByPolicy": false
+ }
+ },
+ "serviceProxies": {},
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ },
+ "6b528779-44a3-4472-bdff-9cd15ec93450": {
+ "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": "A-La-Carte",
+ "inputs": {
+ "2017488_adiodvpe0_ASN": {
+ "type": "string",
+ "description": "AV/PE",
+ "entry_schema": null,
+ "inputProperties": null,
+ "constraints": [],
+ "required": true,
+ "default": "AV_vPE"
+ }
+ }
+ },
+ "vnfGroups": {
+ "2017-388_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {
+ "displayName": "bandwidth",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth"
+ },
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {
+ "displayName": "ASN",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_ASN"
+ },
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "max_instances": 5,
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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": "VnfGroup",
+ "modelCustomizationName": "2017-388_ADIOD-vPE 1",
+ "vfModules": {},
+ "volumeGroups": {},
+ "vfcInstanceGroups": {}
+ },
+ "2017-388_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {
+ "displayName": "bandwidth",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth"
+ },
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {
+ "displayName": "ASN",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_ASN"
+ },
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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": "VnfGroup",
+ "modelCustomizationName": "2017-388_ADIOD-vPE 0",
+ "vfModules": {},
+ "volumeGroups": {},
+ "vfcInstanceGroups": {}
+ },
+ "2017-488_ADIOD-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",
+ "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_adiodvpe0_vnf_config_template_version"
+ },
+ "bandwidth_units": {
+ "displayName": "bandwidth_units",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth_units"
+ },
+ "bandwidth": {
+ "displayName": "bandwidth",
+ "command": "get_input",
+ "inputName": "adiodvpe0_bandwidth"
+ },
+ "AIC_CLLI": {
+ "displayName": "AIC_CLLI",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_AIC_CLLI"
+ },
+ "ASN": {
+ "displayName": "ASN",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_ASN"
+ },
+ "vnf_instance_name": {
+ "displayName": "vnf_instance_name",
+ "command": "get_input",
+ "inputName": "2017488_adiodvpe0_vnf_instance_name"
+ }
+ },
+ "properties": {
+ "vmxvre_retype": "RE-VMX",
+ "vnf_config_template_version": "get_input:2017488_adiodvpe0_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_adiodvpe0_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:adiodvpe0_bandwidth_units",
+ "vnf_id": "123",
+ "vmxvre_oam_prefix": "24",
+ "availability_zone_0": "mtpocfo-kvm-az01",
+ "ASN": "get_input:2017488_adiodvpe0_ASN",
+ "vmxvre_chassis_i2cid": "161",
+ "vmxvpfe_name_0": "vPFEXI",
+ "bandwidth": "get_input:adiodvpe0_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_adiodvpe0_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": "VnfGroup",
+ "modelCustomizationName": "2017-488_ADIOD-vPE 0",
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ },
+ "volumeGroupAllowed": true
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "5",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "ADIOD_base_vPE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ }
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ },
+ "networks": {
+ "ExtVL 0": {
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
+ "name": "ExtVL",
+ "version": "37.0",
+ "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "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": {},
+ "properties": {
+ "network_role": "network role 1, network role 2",
+ "min_instances": 1,
+ "max_instances": 10,
+ "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}"
+ },
+ "type": "VL",
+ "modelCustomizationName": "ExtVL 0"
+ }
+ },
+ "collectionResource": {},
+ "configurations": {},
+ "fabricConfigurations": {},
+ "serviceProxies": {},
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ },
+ "volumeGroupAllowed": true
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "5",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_base_vPE_BV..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "ADIOD_base_vPE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vRE_BV"
+ },
+ "inputs": {
+ "adiodvpe0_bandwidth": {
+ "type": "string",
+ "description": "Requested VPE bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "10"
+ },
+ "2017488_adiodvpe0_vnf_instance_name": {
+ "type": "string",
+ "description": "The hostname assigned to the vpe.",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_instance_name"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "mtnj309me6"
+ },
+ "2017488_adiodvpe0_vnf_config_template_version": {
+ "type": "string",
+ "description": "VPE Software Version",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "vnf_config_template_version"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "17.2"
+ },
+ "2017488_adiodvpe0_AIC_CLLI": {
+ "type": "string",
+ "description": "AIC Site CLLI",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "AIC_CLLI"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "ATLMY8GA"
+ },
+ "adiodvpe0_bandwidth_units": {
+ "type": "string",
+ "description": "Units of bandwidth",
+ "entry_schema": null,
+ "inputProperties": {
+ "sourceType": "HEAT",
+ "vfModuleLabel": "ADIOD_vRE_BV",
+ "paramName": "bandwidth_units"
+ },
+ "constraints": null,
+ "required": true,
+ "default": "Gbps"
+ }
+ }
+ },
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_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",
+ "version": "6",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vPFE_BV..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "ADIOD_vPFE_BV"
+ },
+ "inputs": {}
+ }
+ },
+ "pnfs": {}
+ }
+ },
+ "serviceInstance": {
+ "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
+ "vnfGroups": {
+ "VF_vMee 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "vf_vmee0..VfVmee..base_vmme..module-0vmvzo": {
+ "isMissingData": false,
+ "sdncPreReload": null,
+ "modelInfo": {
+ "modelType": "VFmodule",
+ "modelInvariantId": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "modelVersionId": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "modelName": "VfVmee..base_vmme..module-0",
+ "modelVersion": "2",
+ "modelCustomizationId": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0"
+ },
+ "instanceParams": [
+ {}
+ ],
+ "trackById": "wmtm6sy2uj"
+ }
+ }
+ },
+ "isMissingData": true,
+ "originalName": "VF_vMee 0",
+ "vnfGroupStoreKey": "VF_vMee 0",
+ "trackById": "p3wk448m5do",
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": null,
+ "tenantId": null,
+ "lineOfBusiness": null,
+ "platformName": null,
+ "modelInfo": {
+ "modelType": "VnfGroup",
+ "modelInvariantId": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "VF_vMee",
+ "modelVersion": "2.0",
+ "modelCustomizationName": "VF_vMee 0"
+ }
+ }
+ },
+ "networks": {},
+ "instanceParams": [
+ {}
+ ],
+ "validationCounter": 1,
+ "existingNames": {},
+ "existingVNFCounterMap": {
+ "d6557200-ecf2-4641-8094-5393ae3aae60": 1
+ },
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "aicZoneId": "JAG1",
+ "projectName": "x1",
+ "rollbackOnFailure": "true",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "modelName": "ComplexService",
+ "modelVersion": "1.0",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44"
+ },
+ "isALaCarte": false,
+ "name": "ComplexService",
+ "version": "1.0",
+ "description": "ComplexService",
+ "category": "Emanuel",
+ "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isEcompGeneratedNaming": false,
+ "isMultiStepDesign": false
+ },
+ "6b528779-44a3-4472-bdff-9cd15ec93450": {
+ "networks": {
+ "ExtVL 0": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0",
+ "trackById": "sf3zth68xjf",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [
+ {}
+ ],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "ExtVL 0:0001": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0",
+ "trackById": "2mdxioxca9h",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [
+ {}
+ ],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "ExtVL 0_1": {
+ "rollbackOnFailure": "true",
+ "isMissingData": false,
+ "originalName": "ExtVL 0",
+ "networkStoreKey": "ExtVL 0_1",
+ "trackById": "z7vd1gmpbs",
+ "instanceName": "ExtVL",
+ "productFamilyId": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "platformName": "xxx1",
+ "lineOfBusiness": "zzz1",
+ "instanceParams": [
+ {
+ "vnf_config_template_version": "17.2",
+ "bandwidth_units": "Gbps",
+ "bandwidth": "10",
+ "AIC_CLLI": "ATLMY8GA",
+ "ASN": "AV_vPE",
+ "vnf_instance_name": "yoav"
+ }
+ ],
+ "modelInfo": {
+ "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
+ "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
+ "modelName": "ExtVL",
+ "modelVersion": "37.0",
+ "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
+ "modelCustomizationName": "ExtVL 0",
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ },
+ "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
+ }
+ },
+ "vnfGroups": {
+ "2017-488_ADIOD-vPE 0": {
+ "rollbackOnFailure": "true",
+ "vfModules": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1": {
+ "2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1sgoqi": {
+ "instanceName": "yoav",
+ "volumeGroupName": "123",
+ "modelInfo": {
+ "modelInvariantId": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
+ "modelVersionId": "25284168-24bb-4698-8cb4-3f509146eca5",
+ "modelName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "modelVersion": "6",
+ "modelCustomizationId": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
+ "modelCustomizationName": "2017488AdiodVpe..ADIOD_vRE_BV..module-1",
+ "uuid": "25284168-24bb-4698-8cb4-3f509146eca5"
+ },
+ "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
+ "isMissingData": false,
+ "instanceParams": [
+ {
+ "adiodvpe0_bandwidth": "10",
+ "2017488_adiodvpe0_vnf_instance_name": "mtnj309me6",
+ "2017488_adiodvpe0_vnf_config_template_version": "17.2",
+ "2017488_adiodvpe0_AIC_CLLI": "ATLMY8GA",
+ "adiodvpe0_bandwidth_units": "Gbps"
+ }
+ ]
+ }
+ }
+ },
+ "isMissingData": false,
+ "originalName": "2017-488_ADIOD-vPE 0",
+ "vnfGroupStoreKey": "2017-488_ADIOD-vPE 0",
+ "trackById": "o65b26t2thj",
+ "instanceName": "2017488_ADIODvPE",
+ "productFamilyId": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "lcpCloudRegionId": "hvf6",
+ "tenantId": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "platformName": "platform",
+ "lineOfBusiness": "ONAP",
+ "instanceParams": [
+ {}
+ ],
+ "modelInfo": {
+ "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8",
+ "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09",
+ "modelName": "2017-488_ADIOD-vPE",
+ "modelVersion": "5.0",
+ "modelCustomizationId": "1da7b585-5e61-4993-b95e-8e6606c81e45",
+ "modelCustomizationName": "2017-488_ADIOD-vPE 0",
+ "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09"
+ },
+ "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09"
+ }
+ },
+ "instanceParams": [
+ {
+ "2017488_adiodvpe0_ASN": "AV_vPE"
+ }
+ ],
+ "validationCounter": 0,
+ "existingNames": {
+ "123": "",
+ "instancename": "",
+ "yoav": "",
+ "extvl": ""
+ },
+ "existingVnfGroupCounterMap": {
+ "69e09f68-8b63-4cc9-b9ff-860960b5db09": 1
+ },
+ "existingNetworksCounterMap": {
+ "ddc3f20c-08b5-40fd-af72-c6d14636b986": 3
+ },
+ "instanceName": "InstanceName",
+ "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "subscriptionServiceType": "TYLER SILVIA",
+ "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "productFamilyId": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "lcpCloudRegionId": "JANET25",
+ "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
+ "aicZoneId": "JAG1",
+ "projectName": null,
+ "rollbackOnFailure": "true",
+ "aicZoneName": "YUDFJULP-JAG1",
+ "owningEntityName": "WayneHolland",
+ "testApi": "GR_API",
+ "isEcompGeneratedNaming": true,
+ "tenantName": "USP-SIP-IC-24335-T-01",
+ "bulkSize": 1,
+ "modelInfo": {
+ "modelInvariantId": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "modelVersionId": "6b528779-44a3-4472-bdff-9cd15ec93450",
+ "modelName": "action-data",
+ "modelVersion": "1.0",
+ "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450"
+ },
+ "isALaCarte": false,
+ "name": "action-data",
+ "version": "1.0",
+ "description": "",
+ "category": "",
+ "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450",
+ "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
+ "serviceType": "",
+ "serviceRole": "",
+ "isMultiStepDesign": false
+ }
+ },
+ "lcpRegionsAndTenants": {
+ "lcpRegionList": [
+ {
+ "id": "JANET25",
+ "name": "JANET25",
+ "isPermitted": true
+ },
+ {
+ "id": "hvf6",
+ "name": "hvf6",
+ "isPermitted": true
+ }
+ ],
+ "lcpRegionsTenantsMap": {
+ "JANET25": [
+ {
+ "id": "092eb9e8e4b7412e8787dd091bc58e86",
+ "name": "USP-SIP-IC-24335-T-01",
+ "isPermitted": true
+ }
+ ],
+ "hvf6": [
+ {
+ "id": "bae71557c5bb4d5aac6743a4e5f1d054",
+ "name": "AIN Web Tool-15-D-testalexandria",
+ "isPermitted": true
+ },
+ {
+ "id": "229bcdc6eaeb4ca59d55221141d01f8e",
+ "name": "AIN Web Tool-15-D-STTest2",
+ "isPermitted": true
+ },
+ {
+ "id": "1178612d2b394be4834ad77f567c0af2",
+ "name": "AIN Web Tool-15-D-SSPtestcustome",
+ "isPermitted": true
+ },
+ {
+ "id": "19c5ade915eb461e8af52fb2fd8cd1f2",
+ "name": "AIN Web Tool-15-D-UncheckedEcopm",
+ "isPermitted": true
+ },
+ {
+ "id": "de007636e25249238447264a988a927b",
+ "name": "AIN Web Tool-15-D-dfsdf",
+ "isPermitted": true
+ },
+ {
+ "id": "62f29b3613634ca6a3065cbe0e020c44",
+ "name": "AIN/SMS-16-D-Multiservices1",
+ "isPermitted": true
+ },
+ {
+ "id": "649289e30d3244e0b48098114d63c2aa",
+ "name": "AIN Web Tool-15-D-SSPST66",
+ "isPermitted": true
+ },
+ {
+ "id": "3f21eeea6c2c486bba31dab816c05a32",
+ "name": "AIN Web Tool-15-D-ASSPST47",
+ "isPermitted": true
+ },
+ {
+ "id": "f60ce21d3ee6427586cff0d22b03b773",
+ "name": "CESAR-100-D-sspjg67246",
+ "isPermitted": true
+ },
+ {
+ "id": "8774659e425f479895ae091bb5d46560",
+ "name": "CESAR-100-D-sspjg68359",
+ "isPermitted": true
+ },
+ {
+ "id": "624eb554b0d147c19ff8885341760481",
+ "name": "AINWebTool-15-D-iftach",
+ "isPermitted": true
+ },
+ {
+ "id": "214f55f5fc414c678059c383b03e4962",
+ "name": "CESAR-100-D-sspjg612401",
+ "isPermitted": true
+ },
+ {
+ "id": "c90666c291664841bb98e4d981ff1db5",
+ "name": "CESAR-100-D-sspjg621340",
+ "isPermitted": true
+ },
+ {
+ "id": "ce5b6bc5c7b348e1bf4b91ac9a174278",
+ "name": "sspjg621351cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "b386b768a3f24c8e953abbe0b3488c02",
+ "name": "AINWebTool-15-D-eteancomp",
+ "isPermitted": true
+ },
+ {
+ "id": "dc6c4dbfd225474e9deaadd34968646c",
+ "name": "AINWebTool-15-T-SPFET",
+ "isPermitted": true
+ },
+ {
+ "id": "02cb5030e9914aa4be120bd9ed1e19eb",
+ "name": "AINWebTool-15-X-eeweww",
+ "isPermitted": true
+ },
+ {
+ "id": "f2f3830e4c984d45bcd00e1a04158a79",
+ "name": "CESAR-100-D-spjg61909",
+ "isPermitted": true
+ },
+ {
+ "id": "05b91bd5137f4929878edd965755c06d",
+ "name": "CESAR-100-D-sspjg621512cloned",
+ "isPermitted": true
+ },
+ {
+ "id": "7002fbe8482d4a989ddf445b1ce336e0",
+ "name": "AINWebTool-15-X-vdr",
+ "isPermitted": true
+ },
+ {
+ "id": "4008522be43741dcb1f5422022a2aa0b",
+ "name": "AINWebTool-15-D-ssasa",
+ "isPermitted": true
+ },
+ {
+ "id": "f44e2e96a1b6476abfda2fa407b00169",
+ "name": "AINWebTool-15-D-PFNPT",
+ "isPermitted": true
+ },
+ {
+ "id": "b69a52bec8a84669a37a1e8b72708be7",
+ "name": "AINWebTool-15-X-vdre",
+ "isPermitted": true
+ },
+ {
+ "id": "fac7d9fd56154caeb9332202dcf2969f",
+ "name": "AINWebTool-15-X-NONPODECOMP",
+ "isPermitted": true
+ },
+ {
+ "id": "2d34d8396e194eb49969fd61ffbff961",
+ "name": "DN5242-Nov16-T5",
+ "isPermitted": true
+ },
+ {
+ "id": "cb42a77ff45b48a8b8deb83bb64acc74",
+ "name": "ro-T11",
+ "isPermitted": true
+ },
+ {
+ "id": "fa45ca53c80b492fa8be5477cd84fc2b",
+ "name": "ro-T112",
+ "isPermitted": true
+ },
+ {
+ "id": "4914ab0ab3a743e58f0eefdacc1dde77",
+ "name": "DN5242-Nov21-T1",
+ "isPermitted": true
+ },
+ {
+ "id": "d0a3e3f2964542259d155a81c41aadc3",
+ "name": "test-hvf6-09",
+ "isPermitted": true
+ },
+ {
+ "id": "cbb99fe4ada84631b7baf046b6fd2044",
+ "name": "DN5242-Nov16-T3",
+ "isPermitted": true
+ }
+ ]
+ }
+ },
+ "productFamilies": [
+ {
+ "id": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
+ "name": "SCOTTIE",
+ "isPermitted": true
+ },
+ {
+ "id": "17cc1042-527b-11e6-beb8-9e71128cae77",
+ "name": "IGNACIO",
+ "isPermitted": true
+ },
+ {
+ "id": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
+ "name": "Christie",
+ "isPermitted": true
+ },
+ {
+ "id": "a4f6f2ae-9bf5-4ed7-b904-06b2099c4bd7",
+ "name": "Enhanced Services",
+ "isPermitted": true
+ },
+ {
+ "id": "vTerrance",
+ "name": "vTerrance",
+ "isPermitted": true
+ },
+ {
+ "id": "323d69d9-2efe-4r45-ay0a-89ea7ard4e6f",
+ "name": "vSCP",
+ "isPermitted": true
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": true
+ },
+ {
+ "id": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
+ "name": "BVOIP",
+ "isPermitted": true
+ },
+ {
+ "id": "db171b8f-115c-4992-a2e3-ee04cae357e0",
+ "name": "LINDSEY",
+ "isPermitted": true
+ },
+ {
+ "id": "LRSI-OSPF",
+ "name": "LRSI-OSPF",
+ "isPermitted": true
+ },
+ {
+ "id": "vRosemarie",
+ "name": "HNGATEWAY",
+ "isPermitted": true
+ },
+ {
+ "id": "vHNPaas",
+ "name": "WILKINS",
+ "isPermitted": true
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "b6a3f28c-eebf-494c-a900-055cc7c874ce",
+ "name": "VROUTER",
+ "isPermitted": true
+ },
+ {
+ "id": "Cisneros",
+ "name": "vMuriel",
+ "isPermitted": true
+ },
+ {
+ "id": "0ee8c1bc-7cbd-4b0a-a1ac-e9999255abc1",
+ "name": "CARA Griffin",
+ "isPermitted": true
+ },
+ {
+ "id": "c7611ebe-c324-48f1-8085-94aef0c6ef3d",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ },
+ {
+ "id": "e30755dc-5673-4b6b-9dcf-9abdd96b93d1",
+ "name": "Transport",
+ "isPermitted": true
+ },
+ {
+ "id": "vSalvatore",
+ "name": "vSalvatore",
+ "isPermitted": true
+ },
+ {
+ "id": "d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4",
+ "name": "Josefina",
+ "isPermitted": true
+ },
+ {
+ "id": "vHubbard",
+ "name": "vHubbard",
+ "isPermitted": true
+ },
+ {
+ "id": "12a96a9d-4b4c-4349-a950-fe1159602621",
+ "name": "DARREN MCGEE",
+ "isPermitted": true
+ }
+ ],
+ "serviceTypes": {
+ "e433710f-9217-458d-a79d-1c7aff376d89": [
+ {
+ "id": "0",
+ "name": "vRichardson",
+ "isPermitted": false
+ },
+ {
+ "id": "1",
+ "name": "TYLER SILVIA",
+ "isPermitted": true
+ },
+ {
+ "id": "2",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "3",
+ "name": "vJamie",
+ "isPermitted": false
+ },
+ {
+ "id": "4",
+ "name": "vVoiceMail",
+ "isPermitted": false
+ },
+ {
+ "id": "5",
+ "name": "Kennedy",
+ "isPermitted": false
+ },
+ {
+ "id": "6",
+ "name": "vSEGW",
+ "isPermitted": false
+ },
+ {
+ "id": "7",
+ "name": "vVM",
+ "isPermitted": false
+ },
+ {
+ "id": "8",
+ "name": "vOTA",
+ "isPermitted": false
+ },
+ {
+ "id": "9",
+ "name": "vMME",
+ "isPermitted": false
+ },
+ {
+ "id": "10",
+ "name": "vMNS",
+ "isPermitted": false
+ },
+ {
+ "id": "11",
+ "name": "vSCP",
+ "isPermitted": false
+ },
+ {
+ "id": "12",
+ "name": "VPMS",
+ "isPermitted": false
+ },
+ {
+ "id": "13",
+ "name": "vMMSC",
+ "isPermitted": false
+ },
+ {
+ "id": "14",
+ "name": "SSD",
+ "isPermitted": false
+ },
+ {
+ "id": "15",
+ "name": "vMOG",
+ "isPermitted": false
+ },
+ {
+ "id": "16",
+ "name": "LINDSEY",
+ "isPermitted": false
+ },
+ {
+ "id": "17",
+ "name": "JOHANNA_SANTOS",
+ "isPermitted": false
+ },
+ {
+ "id": "18",
+ "name": "vCarroll",
+ "isPermitted": false
+ }
+ ]
+ },
+ "aicZones": [
+ {
+ "id": "NFT1",
+ "name": "NFTJSSSS-NFT1"
+ },
+ {
+ "id": "JAG1",
+ "name": "YUDFJULP-JAG1"
+ },
+ {
+ "id": "YYY1",
+ "name": "UUUAIAAI-YYY1"
+ },
+ {
+ "id": "BAN1",
+ "name": "VSDKYUTP-BAN1"
+ },
+ {
+ "id": "DKJ1",
+ "name": "DKJSJDKA-DKJ1"
+ },
+ {
+ "id": "MCS1",
+ "name": "ASACMAMS-MCS1"
+ },
+ {
+ "id": "UIO1",
+ "name": "uioclli1-UIO1"
+ },
+ {
+ "id": "RAJ1",
+ "name": "YGBIJNLQ-RAJ1"
+ },
+ {
+ "id": "OPA1",
+ "name": "opaclli1-OPA1"
+ },
+ {
+ "id": "SDE1",
+ "name": "ZXCVBNMA-SDE1"
+ },
+ {
+ "id": "VEN2",
+ "name": "FGHJUHIL-VEN2"
+ },
+ {
+ "id": "ORL1",
+ "name": "ORLDFLMA-ORL1"
+ },
+ {
+ "id": "JAD1",
+ "name": "JADECLLI-JAD1"
+ },
+ {
+ "id": "ZXL1",
+ "name": "LWLWCANN-ZXL1"
+ },
+ {
+ "id": "CKL1",
+ "name": "CLKSKCKK-CKL1"
+ },
+ {
+ "id": "SDF1",
+ "name": "sdfclli1-SDF1"
+ },
+ {
+ "id": "RAD1",
+ "name": "RADICAL1-RAD1"
+ },
+ {
+ "id": "KIT1",
+ "name": "BHYJFGLN-KIT1"
+ },
+ {
+ "id": "REL1",
+ "name": "INGERFGT-REL1"
+ },
+ {
+ "id": "JNL1",
+ "name": "CJALSDAC-JNL1"
+ },
+ {
+ "id": "OLK1",
+ "name": "OLKOLKLS-OLK1"
+ },
+ {
+ "id": "CHI1",
+ "name": "CHILLIWE-CHI1"
+ },
+ {
+ "id": "UUU4",
+ "name": "UUUAAAUU-UUU4"
+ },
+ {
+ "id": "TUF1",
+ "name": "TUFCLLI1-TUF1"
+ },
+ {
+ "id": "KJN1",
+ "name": "CKALDKSA-KJN1"
+ },
+ {
+ "id": "SAM1",
+ "name": "SNDGCA64-SAN1"
+ },
+ {
+ "id": "SCK1",
+ "name": "SCKSCKSK-SCK1"
+ },
+ {
+ "id": "HJH1",
+ "name": "AOEEQQQD-HJH1"
+ },
+ {
+ "id": "HGD1",
+ "name": "SDFQWHGD-HGD1"
+ },
+ {
+ "id": "KOR1",
+ "name": "HYFLNBVT-KOR1"
+ },
+ {
+ "id": "ATL43",
+ "name": "AICLOCID-ATL43"
+ },
+ {
+ "id": "ATL54",
+ "name": "AICFTAAI-ATL54"
+ },
+ {
+ "id": "ATL66",
+ "name": "CLLIAAII-ATL66"
+ },
+ {
+ "id": "VEL1",
+ "name": "BNMLKUIK-VEL1"
+ },
+ {
+ "id": "ICC1",
+ "name": "SANJITAT-ICC1"
+ },
+ {
+ "id": "MNT11",
+ "name": "WSXEFBTH-MNT11"
+ },
+ {
+ "id": "DEF2",
+ "name": "WSBHGTYL-DEF2"
+ },
+ {
+ "id": "MAD11",
+ "name": "SDFQWGKL-MAD11"
+ },
+ {
+ "id": "OLG1",
+ "name": "OLHOLHOL-OLG1"
+ },
+ {
+ "id": "GAR1",
+ "name": "NGFVSJKO-GAR1"
+ },
+ {
+ "id": "SAN22",
+ "name": "GNVLSCTL-SAN22"
+ },
+ {
+ "id": "HRG1",
+ "name": "HRGHRGGS-HRG1"
+ },
+ {
+ "id": "JCS1",
+ "name": "JCSJSCJS-JCS1"
+ },
+ {
+ "id": "DHA12",
+ "name": "WSXEDECF-DHA12"
+ },
+ {
+ "id": "HJE1",
+ "name": "AOEEWWWD-HJE1"
+ },
+ {
+ "id": "NCA1",
+ "name": "NCANCANN-NCA1"
+ },
+ {
+ "id": "IOP1",
+ "name": "iopclli1-IOP1"
+ },
+ {
+ "id": "RTY1",
+ "name": "rtyclli1-RTY1"
+ },
+ {
+ "id": "KAP1",
+ "name": "HIOUYTRQ-KAP1"
+ },
+ {
+ "id": "ZEN1",
+ "name": "ZENCLLI1-ZEN1"
+ },
+ {
+ "id": "HKA1",
+ "name": "JAKHLASS-HKA1"
+ },
+ {
+ "id": "CQK1",
+ "name": "CQKSCAKK-CQK1"
+ },
+ {
+ "id": "SAI1",
+ "name": "UBEKQLPD-SAI1"
+ },
+ {
+ "id": "ERT1",
+ "name": "ertclli1-ERT1"
+ },
+ {
+ "id": "IBB1",
+ "name": "PLMKOIJU-IBB1"
+ },
+ {
+ "id": "TIR2",
+ "name": "PLKINHYI-TIR2"
+ },
+ {
+ "id": "HSD1",
+ "name": "CHASKCDS-HSD1"
+ },
+ {
+ "id": "SLF78",
+ "name": "SDCTLFN1-SLF78"
+ },
+ {
+ "id": "SEE78",
+ "name": "SDCTEEE4-SEE78"
+ },
+ {
+ "id": "SAN13",
+ "name": "TOKYJPFA-SAN13"
+ },
+ {
+ "id": "SAA78",
+ "name": "SDCTAAA1-SAA78"
+ },
+ {
+ "id": "LUC1",
+ "name": "ATLDFGYC-LUC1"
+ },
+ {
+ "id": "AMD13",
+ "name": "MEMATLAN-AMD13"
+ },
+ {
+ "id": "TOR1",
+ "name": "TOROONXN-TOR1"
+ },
+ {
+ "id": "QWE1",
+ "name": "QWECLLI1-QWE1"
+ },
+ {
+ "id": "ZOG1",
+ "name": "ZOGASTRO-ZOG1"
+ },
+ {
+ "id": "CAL33",
+ "name": "CALIFORN-CAL33"
+ },
+ {
+ "id": "SHH78",
+ "name": "SDIT1HHH-SHH78"
+ },
+ {
+ "id": "DSA1",
+ "name": "LKJHGFDS-DSA1"
+ },
+ {
+ "id": "CLG1",
+ "name": "CLGRABAD-CLG1"
+ },
+ {
+ "id": "BNA1",
+ "name": "BNARAGBK-BNA1"
+ },
+ {
+ "id": "ATL84",
+ "name": "CANTTCOC-ATL84"
+ },
+ {
+ "id": "APP1",
+ "name": "WBHGTYUI-APP1"
+ },
+ {
+ "id": "RJN1",
+ "name": "RJNRBZAW-RJN1"
+ },
+ {
+ "id": "EHH78",
+ "name": "SDCSHHH5-EHH78"
+ },
+ {
+ "id": "mac10",
+ "name": "PKGTESTF-mac10"
+ },
+ {
+ "id": "SXB78",
+ "name": "SDCTGXB1-SXB78"
+ },
+ {
+ "id": "SAX78",
+ "name": "SDCTAXG1-SAX78"
+ },
+ {
+ "id": "SYD1",
+ "name": "SYDNAUBV-SYD1"
+ },
+ {
+ "id": "TOK1",
+ "name": "TOKYJPFA-TOK1"
+ },
+ {
+ "id": "KGM2",
+ "name": "KGMTNC20-KGM2"
+ },
+ {
+ "id": "DCC1b",
+ "name": "POIUYTGH-DCC1b"
+ },
+ {
+ "id": "SKK78",
+ "name": "SDCTKKK1-SKK78"
+ },
+ {
+ "id": "SGG78",
+ "name": "SDCTGGG1-SGG78"
+ },
+ {
+ "id": "SJJ78",
+ "name": "SDCTJJJ1-SJJ78"
+ },
+ {
+ "id": "SBX78",
+ "name": "SDCTBXG1-SBX78"
+ },
+ {
+ "id": "LAG1",
+ "name": "LARGIZON-LAG1"
+ },
+ {
+ "id": "IAA1",
+ "name": "QAZXSWED-IAA1"
+ },
+ {
+ "id": "POI1",
+ "name": "PLMNJKIU-POI1"
+ },
+ {
+ "id": "LAG1a",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "PBL1",
+ "name": "PBLAPBAI-PBL1"
+ },
+ {
+ "id": "LAG45",
+ "name": "LARGIZON-LAG1a"
+ },
+ {
+ "id": "MAR1",
+ "name": "MNBVCXZM-MAR1"
+ },
+ {
+ "id": "HST70",
+ "name": "HSTNTX70-HST70"
+ },
+ {
+ "id": "DCC1a",
+ "name": "POIUYTGH-DCC1a"
+ },
+ {
+ "id": "TOL1",
+ "name": "TOLDOH21-TOL1"
+ },
+ {
+ "id": "LON1",
+ "name": "LONEENCO-LON1"
+ },
+ {
+ "id": "SJU78",
+ "name": "SDIT1JUB-SJU78"
+ },
+ {
+ "id": "STN27",
+ "name": "HSTNTX01-STN27"
+ },
+ {
+ "id": "SSW56",
+ "name": "ss8126GT-SSW56"
+ },
+ {
+ "id": "SBB78",
+ "name": "SDIT1BBB-SBB78"
+ },
+ {
+ "id": "DCC3",
+ "name": "POIUYTGH-DCC3"
+ },
+ {
+ "id": "GNV1",
+ "name": "GNVLSCTL-GNV1"
+ },
+ {
+ "id": "WAS1",
+ "name": "WASHDCSW-WAS1"
+ },
+ {
+ "id": "TOY1",
+ "name": "TORYONNZ-TOY1"
+ },
+ {
+ "id": "STT1",
+ "name": "STTLWA02-STT1"
+ },
+ {
+ "id": "STG1",
+ "name": "STTGGE62-STG1"
+ },
+ {
+ "id": "SLL78",
+ "name": "SDCTLLL1-SLL78"
+ },
+ {
+ "id": "SBU78",
+ "name": "SDIT1BUB-SBU78"
+ },
+ {
+ "id": "ATL2",
+ "name": "ATLNGANW-ATL2"
+ },
+ {
+ "id": "BOT1",
+ "name": "BOTHWAKY-BOT1"
+ },
+ {
+ "id": "SNG1",
+ "name": "SNGPSIAU-SNG1"
+ },
+ {
+ "id": "NYC1",
+ "name": "NYCMNY54-NYC1"
+ },
+ {
+ "id": "LAG1b",
+ "name": "LARGIZON-LAG1b"
+ },
+ {
+ "id": "AMD15",
+ "name": "AMDFAA01-AMD15"
+ },
+ {
+ "id": "SNA1",
+ "name": "SNANTXCA-SNA1"
+ },
+ {
+ "id": "PLT1",
+ "name": "PLTNCA60-PLT1"
+ },
+ {
+ "id": "TLP1",
+ "name": "TLPNXM18-TLP1"
+ },
+ {
+ "id": "SDD81",
+ "name": "SAIT1DD6-SDD81"
+ },
+ {
+ "id": "DCC1",
+ "name": "POIUYTGH-DCC1"
+ },
+ {
+ "id": "DCC2",
+ "name": "POIUYTGH-DCC2"
+ },
+ {
+ "id": "OKC1",
+ "name": "OKCBOK55-OKC1"
+ },
+ {
+ "id": "PAR1",
+ "name": "PARSFRCG-PAR1"
+ },
+ {
+ "id": "TES36",
+ "name": "ABCEETES-TES36"
+ },
+ {
+ "id": "COM1",
+ "name": "PLMKOPIU-COM1"
+ },
+ {
+ "id": "ANI1",
+ "name": "ATLNGTRE-ANI1"
+ },
+ {
+ "id": "SDG78",
+ "name": "SDIT1BDG-SDG78"
+ },
+ {
+ "id": "mac20",
+ "name": "PKGTESTF-mac20"
+ },
+ {
+ "id": "DSF45",
+ "name": "DSFBG123-DSF45"
+ },
+ {
+ "id": "HST25",
+ "name": "HSTNTX01-HST25"
+ },
+ {
+ "id": "AMD18",
+ "name": "AUDIMA01-AMD18"
+ },
+ {
+ "id": "SAA80",
+ "name": "SAIT9AA3-SAA80"
+ },
+ {
+ "id": "SSA56",
+ "name": "SSIT2AA7-SSA56"
+ },
+ {
+ "id": "SDD82",
+ "name": "SAIT1DD9-SDD82"
+ },
+ {
+ "id": "JCV1",
+ "name": "JCVLFLBW-JCV1"
+ },
+ {
+ "id": "SUL2",
+ "name": "WERTYUJK-SUL2"
+ },
+ {
+ "id": "PUR1",
+ "name": "purelyde-PUR1"
+ },
+ {
+ "id": "FDE55",
+ "name": "FDERT555-FDE55"
+ },
+ {
+ "id": "SITE",
+ "name": "LONEENCO-SITE"
+ },
+ {
+ "id": "ATL1",
+ "name": "ATLNGAMA-ATL1"
+ },
+ {
+ "id": "JUL1",
+ "name": "ZXCVBNMM-JUL1"
+ },
+ {
+ "id": "TAT34",
+ "name": "TESAAISB-TAT34"
+ },
+ {
+ "id": "XCP12",
+ "name": "CHKGH123-XCP12"
+ },
+ {
+ "id": "RAI1",
+ "name": "poiuytre-RAI1"
+ },
+ {
+ "id": "HPO1",
+ "name": "ATLNGAUP-HPO1"
+ },
+ {
+ "id": "KJF12",
+ "name": "KJFDH123-KJF12"
+ },
+ {
+ "id": "SCC80",
+ "name": "SAIT9CC3-SCC80"
+ },
+ {
+ "id": "SAA12",
+ "name": "SAIT9AF8-SAA12"
+ },
+ {
+ "id": "SAA14",
+ "name": "SAIT1AA9-SAA14"
+ },
+ {
+ "id": "ATL35",
+ "name": "TTESSAAI-ATL35"
+ },
+ {
+ "id": "CWY1",
+ "name": "CWYMOWBS-CWY1"
+ },
+ {
+ "id": "ATL76",
+ "name": "TELEPAAI-ATL76"
+ },
+ {
+ "id": "DSL12",
+ "name": "DSLFK242-DSL12"
+ },
+ {
+ "id": "ATL53",
+ "name": "AAIATLTE-ATL53"
+ },
+ {
+ "id": "SAA11",
+ "name": "SAIT9AA2-SAA11"
+ },
+ {
+ "id": "ATL62",
+ "name": "TESSASCH-ATL62"
+ },
+ {
+ "id": "AUG1",
+ "name": "ASDFGHJK-AUG1"
+ },
+ {
+ "id": "POI22",
+ "name": "POIUY123-POI22"
+ },
+ {
+ "id": "SAA13",
+ "name": "SAIT1AA9-SAA13"
+ },
+ {
+ "id": "BHY17",
+ "name": "BHYTFRF3-BHY17"
+ },
+ {
+ "id": "LIS1",
+ "name": "HOSTPROF-LIS1"
+ },
+ {
+ "id": "SIP1",
+ "name": "ZXCVBNMK-SIP1"
+ },
+ {
+ "id": "ATL99",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "ATL64",
+ "name": "FORLOAAJ-ATL64"
+ },
+ {
+ "id": "TAT33",
+ "name": "TESAAISA-TAT33"
+ },
+ {
+ "id": "RAD10",
+ "name": "INDIPUNE-RAD10"
+ },
+ {
+ "id": "RTW5",
+ "name": "BHYTFRY4-RTW5"
+ },
+ {
+ "id": "JGS1",
+ "name": "KSJKKKKK-JGS1"
+ },
+ {
+ "id": "ATL98",
+ "name": "TEESTAAI-ATL43"
+ },
+ {
+ "id": "WAN1",
+ "name": "LEIWANGW-WAN1"
+ },
+ {
+ "id": "ATL44",
+ "name": "ATLSANAB-ATL44"
+ },
+ {
+ "id": "RTD2",
+ "name": "BHYTFRk4-RTD2"
+ },
+ {
+ "id": "NIR1",
+ "name": "ORFLMANA-NIR1"
+ },
+ {
+ "id": "ATL75",
+ "name": "SANAAIRE-ATL75"
+ },
+ {
+ "id": "NUM1",
+ "name": "QWERTYUI-NUM1"
+ },
+ {
+ "id": "MTN32",
+ "name": "MDTWNJ21-MTN32"
+ },
+ {
+ "id": "RTZ4",
+ "name": "BHYTFRZ6-RTZ4"
+ },
+ {
+ "id": "ATL56",
+ "name": "ATLSANAC-ATL56"
+ },
+ {
+ "id": "AMS1",
+ "name": "AMSTNLBW-AMS1"
+ },
+ {
+ "id": "RCT1",
+ "name": "AMSTERNL-RCT1"
+ },
+ {
+ "id": "JAN1",
+ "name": "ORFLMATT-JAN1"
+ },
+ {
+ "id": "ABC14",
+ "name": "TESAAISA-ABC14"
+ },
+ {
+ "id": "TAT37",
+ "name": "TESAAISD-TAT37"
+ },
+ {
+ "id": "MIC54",
+ "name": "MICHIGAN-MIC54"
+ },
+ {
+ "id": "ABC11",
+ "name": "ATLSANAI-ABC11"
+ },
+ {
+ "id": "AMF11",
+ "name": "AMDOCS01-AMF11"
+ },
+ {
+ "id": "ATL63",
+ "name": "ATLSANEW-ATL63"
+ },
+ {
+ "id": "ABC12",
+ "name": "ATLSECIA-ABC12"
+ },
+ {
+ "id": "MTN20",
+ "name": "MDTWNJ21-MTN20"
+ },
+ {
+ "id": "ABC15",
+ "name": "AAITESAN-ABC15"
+ },
+ {
+ "id": "AVT1",
+ "name": "AVTRFLHD-AVT1"
+ },
+ {
+ "id": "ATL34",
+ "name": "ATLSANAI-ATL34"
+ }
+ ],
+ "categoryParameters": {
+ "owningEntityList": [
+ {
+ "id": "aaa1",
+ "name": "aaa1"
+ },
+ {
+ "id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
+ "name": "WayneHolland"
+ },
+ {
+ "id": "Melissa",
+ "name": "Melissa"
+ }
+ ],
+ "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"
+ }
+ ]
+ },
+ "type": "[LCP_REGIONS_AND_TENANTS] Update",
+ "subscribers": [
+ {
+ "id": "CAR_2020_ER",
+ "name": "CAR_2020_ER",
+ "isPermitted": true
+ },
+ {
+ "id": "21014aa2-526b-11e6-beb8-9e71128cae77",
+ "name": "JULIO ERICKSON",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-2",
+ "name": "DALE BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "DHV1707-TestSubscriber-1",
+ "name": "LLOYD BRIDGES",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example",
+ "name": "JimmyExampleCust-20161102",
+ "isPermitted": false
+ },
+ {
+ "id": "jimmy-example2",
+ "name": "JimmyExampleCust-20161103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-102",
+ "name": "ERICA5779-TestSub-PWT-102",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-101",
+ "name": "ERICA5779-TestSub-PWT-101",
+ "isPermitted": false
+ },
+ {
+ "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "name": "Emanuel",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-4",
+ "name": "ERICA5779-Subscriber-5",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-TestSub-PWT-103",
+ "name": "ERICA5779-TestSub-PWT-103",
+ "isPermitted": false
+ },
+ {
+ "id": "ERICA5779-Subscriber-2",
+ "name": "ERICA5779-Subscriber-2",
+ "isPermitted": false
+ },
+ {
+ "id": "e433710f-9217-458d-a79d-1c7aff376d89",
+ "name": "SILVIA ROBBINS",
+ "isPermitted": true
+ },
+ {
+ "id": "ERICA5779-Subscriber-3",
+ "name": "ERICA5779-Subscriber-3",
+ "isPermitted": false
+ },
+ {
+ "id": "31739f3e-526b-11e6-beb8-9e71128cae77",
+ "name": "CRAIG/ROBERTS",
+ "isPermitted": false
+ }
+ ]
+ }
+ };
+ }
+}
+
+class MockFeatureFlagsService {}
+
+describe('vnf group new popup service', () => {
+ let injector;
+ let service: VnfGroupPopupService;
+ let genericFormService: GenericFormService
+ let defaultDataGeneratorService: DefaultDataGeneratorService;
+ let fb: FormBuilder;
+ let iframeService: IframeService;
+
+ beforeAll(done => (async () => {
+ TestBed.configureTestingModule({
+ providers : [
+ VnfGroupPopupService,
+ DefaultDataGeneratorService,
+ GenericFormService,
+ FormBuilder,
+ IframeService,
+ {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
+ AaiService,
+ LogService,
+ BasicPopupService,
+ VfModulePopuopService,
+ BasicControlGenerator,
+ VnfGroupControlGenerator,
+ {provide: NgRedux, useClass: MockReduxStore},
+ {provide: HttpClient, useClass: MockAppStore}]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ service = injector.get(VnfGroupPopupService);
+ genericFormService = injector.get(GenericFormService);
+ defaultDataGeneratorService = injector.get(DefaultDataGeneratorService);
+ fb = injector.get(FormBuilder);
+ iframeService = injector.get(IframeService);
+
+ })().then(done).catch(done.fail));
+
+ test('getTitle vnf group should return the correct title for edit and create mode', () => {
+ expect(service.getTitle(false)).toBe('Set a new VNF Group');
+ expect(service.getTitle(true)).toBe('Edit VNF Group instance');
+ });
+
+ test('getSubRightTitle vnf should return popup type', () => {
+ expect(service.getSubRightTitle()).toBe('VNF Group Instance Details');
+ });
+
+ test('getModelInformation vnfGroup should update modelInformations', () => {
+ const serviceId: string = '6b528779-44a3-4472-bdff-9cd15ec93450';
+ const vnfGroupModelName: string = '2017-388_ADIOD-vPE 1';
+ service.getModelInformation(serviceId, vnfGroupModelName);
+ expect(service.modelInformations.length).toEqual(14);
+
+ expect(service.modelInformations[0].label).toEqual("Model version");
+ expect(service.modelInformations[0].values).toEqual(['1.0']);
+
+ expect(service.modelInformations[1].label).toEqual("Description");
+ expect(service.modelInformations[1].values).toEqual(['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']);
+
+ expect(service.modelInformations[2].label).toEqual("Category");
+ expect(service.modelInformations[2].values).toEqual([undefined]);
+
+ expect(service.modelInformations[3].label).toEqual("Sub Category");
+ expect(service.modelInformations[3].values).toEqual([undefined]);
+
+ expect(service.modelInformations[4].label).toEqual("UUID");
+ expect(service.modelInformations[4].values).toEqual(['0903e1c0-8e03-4936-b5c2-260653b96413']);
+
+ expect(service.modelInformations[5].label).toEqual("Invariant UUID");
+ expect(service.modelInformations[5].values).toEqual(['00beb8f9-6d39-452f-816d-c709b9cbb87d']);
+
+ expect(service.modelInformations[6].label).toEqual("Type");
+ expect(service.modelInformations[6].values).toEqual([undefined]);
+
+ expect(service.modelInformations[7].label).toEqual("Role");
+ expect(service.modelInformations[7].values).toEqual([undefined]);
+
+ expect(service.modelInformations[8].label).toEqual("Function");
+ expect(service.modelInformations[8].values).toEqual([undefined]);
+
+ expect(service.modelInformations[9].label).toEqual("Member resource type");
+ expect(service.modelInformations[9].values).toEqual(['VNF']);
+
+ expect(service.modelInformations[10].label).toEqual("Members service Invariant UUID");
+ expect(service.modelInformations[10].values).toEqual([]);
+
+ expect(service.modelInformations[11].label).toEqual("Members service model name");
+ expect(service.modelInformations[11].values).toEqual([]);
+
+ expect(service.modelInformations[12].label).toEqual("Minimum to instantiate");
+ expect(service.modelInformations[12].values).toEqual(['0']);
+
+ expect(service.modelInformations[13].label).toEqual("Maximum to instantiate");
+ expect(service.modelInformations[13].values).toEqual(['Unlimited']);
+ });
+
+ test('getSubLeftTitle new vnf group popup should return service model name', () => {
+ service.uuidData = {
+ serviceId: '6e59c5de-f052-46fa-aa7e-2fca9d674c44',
+ modelName: 'VF_vMee 0'
+ };
+ expect(service.getSubLeftTitle()).toBe('VNF Group : VF_vMee');
+ });
+
+ test('getInstance with empty storekey should be created', () => {
+ const serviceId: string = '6e59c5de-f052-46fa-aa7e-2fca9d674c44';
+ const vnfGroupModelName: string = '2017-388_ADIOD-vPE 1';
+ const newInstance = service.getInstance(serviceId, vnfGroupModelName, null);
+ expect(newInstance).toBeDefined();
+ });
+
+ test('getInstance with not empty storekey should return vnfGroupStoreKey', () => {
+ const serviceId: string = '6b528779-44a3-4472-bdff-9cd15ec93450';
+ const vnfGroupModelName: string = '2017-388_ADIOD-vPE 1';
+ const vnfGroupStoreKey: string = '2017-488_ADIOD-vPE 0';
+ const newInstance = service.getInstance(serviceId, vnfGroupModelName, vnfGroupStoreKey);
+ expect(newInstance.vnfGroupStoreKey).toEqual('2017-488_ADIOD-vPE 0');
+ });
+
+ test('getGenericFormPopupDetails returns the FormPopupDetails object', () => {
+ const serviceId: string = '6e59c5de-f052-46fa-aa7e-2fca9d674c44';
+ const vnfGroupModelName: string = 'VF_vMee 0';
+ const vnfGroupStoreKey: string = 'VF_vMee 0';
+ let uuidData: UUIDData = <any>{
+ serviceId: "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ modelName: "VF_vMee 0",
+ vnfGroupStoreKey: "VF_vMee 0"
+ };
+ const formPopupDetailsObject = service.getGenericFormPopupDetails(serviceId, vnfGroupModelName, vnfGroupStoreKey, null, uuidData, true);
+ expect(formPopupDetailsObject).toBeDefined();
+ }
+ );
+});
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service.ts
new file mode 100644
index 000000000..748edd2cb
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service.ts
@@ -0,0 +1,158 @@
+import {Injectable} from '@angular/core';
+import {GenericPopupInterface} from "../generic-popup.interface";
+import {ITreeNode} from "angular-tree-component/dist/defs/api";
+import {FormPopupDetails, PopupType} from "../../../../models/formControlModels/formPopupDetails.model";
+import {FormGroup} from "@angular/forms";
+import {ModelInformationItem} from "../../../model-information/model-information.component";
+import {ServiceModel} from "../../../../models/serviceModel";
+import {Subject} from "rxjs/Subject";
+import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
+import {IframeService} from "../../../../utils/iframe.service";
+import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {BasicPopupService} from "../basic.popup.service";
+import {NgRedux} from "@angular-redux/store";
+import {AppState} from "../../../../store/reducers";
+import {Subscriber} from "../../../../models/subscriber";
+import {Constants} from "../../../../utils/constants";
+import {ModelInfo} from "../../../../models/modelInfo";
+import {changeInstanceCounter} from "../../../../storeUtil/utils/general/general.actions";
+import * as _ from 'lodash';
+import {VnfGroupControlGenerator} from "../../../genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator";
+import {VnfGroupInstance} from "../../../../models/vnfGroupInstance";
+import {createVnfGroupInstance, updateVnfGroupInstance} from "../../../../storeUtil/utils/vnfGroup/vnfGroup.actions";
+
+@Injectable()
+export class VnfGroupPopupService implements GenericPopupInterface{
+ dynamicInputs: any;
+ instance: any;
+ model:any;
+ serviceModel:ServiceModel;
+ modelInformations: ModelInformationItem[] = [];
+ uuidData: Object;
+ closeDialogEvent: Subject<any> = new Subject<any>();
+ isUpdateMode: boolean;
+
+ constructor(
+ private _basicControlGenerator: BasicControlGenerator,
+ private _vnfGroupControlGenerator: VnfGroupControlGenerator,
+ private _iframeService: IframeService,
+ private _defaultDataGeneratorService: DefaultDataGeneratorService,
+ private _aaiService: AaiService,
+ private _basicPopupService: BasicPopupService,
+ private _store: NgRedux<AppState>) {
+ }
+
+ getGenericFormPopupDetails(serviceId: string, modelName: string, vnfGroupStoreKey: string, node: ITreeNode, uuidData: Object, isUpdateMode: boolean): FormPopupDetails {
+ this.uuidData = uuidData;
+ this.isUpdateMode = isUpdateMode;
+ this.instance = this.getInstance(serviceId, modelName, vnfGroupStoreKey);
+ this.getModelInformation(serviceId, modelName);
+
+ return new FormPopupDetails(this,
+ PopupType.VNF_GROUP,
+ uuidData,
+ this.getTitle(isUpdateMode),
+ this.getSubLeftTitle(),
+ this.getSubRightTitle(),
+ this.getControls(serviceId, modelName, vnfGroupStoreKey),
+ this._basicPopupService.getDynamicInputs(serviceId, modelName, vnfGroupStoreKey, 'vnfGroups'),
+ this.modelInformations,
+ (that, form: FormGroup) => {that.onSubmit(that, form);},
+ (that: any, form: FormGroup) => {that.onCancel(that, form); }
+ )
+ }
+
+ getControls(serviceId: string, modelName: string, vnfGroupStoreKey: string){
+ if(this._store.getState().service.serviceHierarchy[serviceId].service.instantiationType === 'Macro') {
+ return this._vnfGroupControlGenerator.getMacroFormControls(serviceId, vnfGroupStoreKey, modelName);
+ } else {
+ return this._vnfGroupControlGenerator.getAlaCarteFormControls(serviceId, vnfGroupStoreKey, modelName);
+ }
+ }
+
+ getInstance(serviceId: string, modelName: string, vnfGroupStoreKey: string): any {
+ if(_.isNil(vnfGroupStoreKey)){
+ return new VnfGroupInstance();
+ }
+ return this._store.getState().service.serviceInstance[serviceId].vnfGroups[vnfGroupStoreKey];
+ }
+
+ getModelInformation(serviceId: string, modelName: string): void {
+ this._aaiService.getServiceModelById(serviceId).subscribe((result: any) => {
+ this.serviceModel = new ServiceModel(result);
+ this.model = this._basicPopupService.getModelFromResponse(result, 'vnfGroups', modelName);
+ const serviceInstance = this._store.getState().service.serviceInstance[serviceId];
+ this.modelInformations = [
+ new ModelInformationItem("Model version", "modelVersion", [this.model.version], "", true),
+ new ModelInformationItem("Description", "description", [this.model.description]),
+ new ModelInformationItem("Category", "category", [this.model.category]),
+ new ModelInformationItem("Sub Category", "subCategory", [this.model.subCategory]),
+ new ModelInformationItem("UUID", "uuid", [this.model.uuid], Constants.ServicePopup.TOOLTIP_UUID, true),
+ new ModelInformationItem("Invariant UUID", "invariantUuid", [this.model.invariantUuid], Constants.ServicePopup.TOOLTIP_INVARIANT_UUID, true),
+ new ModelInformationItem("Type", "type", [this.model.properties.type], "", true),
+ new ModelInformationItem("Role", "role", [this.model.properties.role]),
+ new ModelInformationItem("Function", "function", [this.model.properties.function]),
+ new ModelInformationItem("Member resource type", "contained_resource_type", ["VNF"], "", true),
+ new ModelInformationItem("Members service Invariant UUID", "Members service Invariant UUID", _.toArray(_.mapValues(this.model.members, 'sourceModelInvariant'))),
+ new ModelInformationItem("Members service model name", "sourceModelName", _.toArray(_.mapValues(this.model.members, 'sourceModelName'))),
+ new ModelInformationItem("Minimum to instantiate", "vnfGroup-min", ['0'], "", false),
+ new ModelInformationItem("Maximum to instantiate", "vnfGroup-max", ['Unlimited'], "", false)
+ ];
+ })
+ }
+
+ getSubLeftTitle(): string {
+ return "VNF Group : " + this._store.getState().service.serviceHierarchy[this.uuidData['serviceId']].vnfGroups[this.uuidData['modelName']].name;
+ }
+
+ getSubRightTitle(): string {
+ return "VNF Group Instance Details";
+ }
+
+ storeVnfGroup = (that, formValues: any): void => {
+ formValues.modelInfo = new ModelInfo(that.model);
+ formValues.uuid = formValues.modelInfo.uuid;
+ formValues.isMissingData = false;
+ if(!that.isUpdateMode){
+ that._store.dispatch(changeInstanceCounter(formValues.modelInfo.modelCustomizationId || formValues.uuid, that.uuidData.serviceId, 1 , <any> {data: {type: 'VnfGroup'}}));
+ this._store.dispatch(createVnfGroupInstance(formValues, that.uuidData['modelName'], that.uuidData['serviceId'], that.uuidData['modelName']));
+ }else {
+ that._store.dispatch(updateVnfGroupInstance(formValues, that.uuidData.modelName, that.uuidData.serviceId, that.uuidData.vnfGroupStoreKey))
+ }
+ };
+
+ getTitle(isUpdateMode: boolean): string {
+ return isUpdateMode ? "Edit VNF Group instance": "Set a new VNF Group" ;
+ }
+
+ onCancel(that, form): void {
+ form.reset();
+ that._iframeService.removeClassCloseModal('content');
+ this.closeDialogEvent.next(that);
+ }
+
+ onSubmit(that, form: FormGroup, ...args): void {
+ form.value['instanceParams'] = [{}];
+ that.storeVnfGroup(that, form.value);
+ window.parent.postMessage( {
+ eventId: 'submitIframe',
+ data: {
+ serviceModelId: that.uuidData.serviceId
+ }
+ }, "*");
+ that.onCancel(that, form);
+ }
+
+ extractSubscriberNameBySubscriberId(subscriberId: string, store: NgRedux<AppState>) {
+ let result: string = null;
+ let filteredArray: any = _.filter(store.getState().service.subscribers, function (o: Subscriber) {
+ return o.id === subscriberId
+ });
+ if (filteredArray.length > 0) {
+ result = filteredArray[0].name;
+ }
+ return result;
+ }
+
+}
diff --git a/vid-webpack-master/src/app/shared/components/messageBox/messageBox.component.ts b/vid-webpack-master/src/app/shared/components/messageBox/messageBox.component.ts
index 08e199cf5..c610110fd 100644
--- a/vid-webpack-master/src/app/shared/components/messageBox/messageBox.component.ts
+++ b/vid-webpack-master/src/app/shared/components/messageBox/messageBox.component.ts
@@ -30,7 +30,7 @@
import { Component } from '@angular/core';
import { MessageBoxData} from './messageBox.data';
import { MessageBoxService } from './messageBox.service';
-import { SdcUiComponents } from 'sdc-ui/lib/angular';
+import { SdcUiServices} from "onap-ui-angular";
@Component({
selector: 'message-box',
@@ -38,12 +38,17 @@ import { SdcUiComponents } from 'sdc-ui/lib/angular';
})
export class MessageBoxComponent {
- modalService: SdcUiComponents.ModalService;
-
- constructor(modalService: SdcUiComponents.ModalService, private _messageBoxService : MessageBoxService) {
+ modalService: SdcUiServices.ModalService;
+ isOpened : boolean = false;
+ constructor(modalService: SdcUiServices.ModalService, private _messageBoxService : MessageBoxService) {
this.modalService = modalService;
+
MessageBoxService.openModal.subscribe((messageBoxData: MessageBoxData) => {
- modalService.openModal(this._messageBoxService.setConfig(messageBoxData))
+ if(this.isOpened) return;
+ this.isOpened = true;
+ modalService.openModal(this._messageBoxService.setConfig(messageBoxData)).onDestroy(()=>{
+ this.isOpened = false;
+ })
});
}
}
diff --git a/vid-webpack-master/src/app/shared/components/messageBox/messageBox.data.ts b/vid-webpack-master/src/app/shared/components/messageBox/messageBox.data.ts
index 165140ba7..e67b1f76f 100644
--- a/vid-webpack-master/src/app/shared/components/messageBox/messageBox.data.ts
+++ b/vid-webpack-master/src/app/shared/components/messageBox/messageBox.data.ts
@@ -1,13 +1,14 @@
-import { Subject } from 'rxjs/Subject';
+import { SdcUiCommon} from "onap-ui-angular";
+import {IModalButtonComponent} from "onap-ui-angular/dist/modals/models/modal-config";
export class MessageBoxData {
title?: string;
message?: string;
- size : ModalSize;
- type: ModalType;
- buttons: Array<IModalButtonComponent>;
+ size : SdcUiCommon.ModalSize;
+ type: SdcUiCommon.ModalType;
+ buttons: IModalButtonComponent[];
- constructor(title: string, message: string, type: ModalType, size : ModalSize, buttons: Array<IModalButtonComponent>) {
+ constructor(title: string, message: string, type: SdcUiCommon.ModalType, size : SdcUiCommon.ModalSize, buttons: IModalButtonComponent[]) {
this.title = title;
this.message = message;
this.size = size;
@@ -15,37 +16,3 @@ export class MessageBoxData {
this.buttons = buttons;
}
}
-
-export interface IModalConfig {
- size?: string;
- title?: string;
- message?: string;
- buttons?: Array<IModalButtonComponent>;
- type?: string;
-}
-export interface IButtonComponent {
- text: string;
- disabled?: boolean;
- type?: string;
- size?: string;
-}
-export interface IModalButtonComponent extends IButtonComponent {
- callback?: Function;
- closeModal?: boolean;
-}
-export enum ModalType {
- alert = "alert",
- error = "error",
- standard = "info",
- custom = "custom",
-}
-export enum ModalSize {
- xlarge = "xl",
- large = "l",
- medium = "md",
- small = "sm",
- xsmall = "xsm",
-}
-
-
-
diff --git a/vid-webpack-master/src/app/shared/components/messageBox/messageBox.service.spec.ts b/vid-webpack-master/src/app/shared/components/messageBox/messageBox.service.spec.ts
index 89562ac54..1d0e18ffb 100644
--- a/vid-webpack-master/src/app/shared/components/messageBox/messageBox.service.spec.ts
+++ b/vid-webpack-master/src/app/shared/components/messageBox/messageBox.service.spec.ts
@@ -3,35 +3,37 @@ import {
HttpClientTestingModule,
HttpTestingController
} from '@angular/common/http/testing';
-
import { MessageBoxService } from './messageBox.service';
-import {MessageBoxData, ModalSize, ModalType } from './messageBox.data';
+import {MessageBoxData} from './messageBox.data';
+import { SdcUiCommon} from "onap-ui-angular";
describe('MessageBoxService', () => {
let injector;
let service: MessageBoxService;
let httpMock: HttpTestingController;
- beforeEach(() => {
+ beforeAll(done => (async () => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [MessageBoxService]
});
+ await TestBed.compileComponents();
injector = getTestBed();
service = injector.get(MessageBoxService);
httpMock = injector.get(HttpTestingController);
- });
+
+ })().then(done).catch(done.fail));
describe('#setConfig', () => {
- it('should return <IModalConfig>', (done: DoneFn) => {
+ test('should return <IModalConfig>', () => {
let title = "Delete Instantiation";
let message = "You are about to stop the instantiation process of this service. \nAll data will be lost. Are you sure you want to stop?";
let messageBoxData : MessageBoxData = new MessageBoxData(
title,
message,
- ModalType.alert,
- ModalSize.medium,
+ SdcUiCommon.ModalType.warning,
+ SdcUiCommon.ModalSize.medium,
[
{text:"Stop Instantiation", size:"large", closeModal:true},
{text:"Cancel", size:"medium", closeModal:true}
@@ -41,9 +43,8 @@ describe('MessageBoxService', () => {
expect(result.title).toEqual(title);
expect(result.message).toEqual(message);
expect(result.buttons.length).toEqual(2);
- expect(result.type).toEqual(ModalType.alert);
- expect(result.size).toEqual(ModalSize.medium);
- done();
+ expect(result.type).toEqual(SdcUiCommon.ModalType.warning);
+ expect(result.size).toEqual(SdcUiCommon.ModalSize.medium);
});
});
});
diff --git a/vid-webpack-master/src/app/shared/components/messageBox/messageBox.service.ts b/vid-webpack-master/src/app/shared/components/messageBox/messageBox.service.ts
index eaa012d3b..d73631a43 100644
--- a/vid-webpack-master/src/app/shared/components/messageBox/messageBox.service.ts
+++ b/vid-webpack-master/src/app/shared/components/messageBox/messageBox.service.ts
@@ -1,18 +1,18 @@
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
-import { IModalConfig, MessageBoxData, ModalSize, ModalType } from './messageBox.data';
+import {MessageBoxData} from "./messageBox.data";
+import { SdcUiCommon} from "onap-ui-angular";
@Injectable()
export class MessageBoxService {
static openModal: Subject<MessageBoxData> = new Subject<MessageBoxData>();
- setConfig(messageBoxData: MessageBoxData) : IModalConfig{
+ setConfig(messageBoxData: MessageBoxData) : SdcUiCommon.IModalConfig{
return {
- size : ModalSize.medium,
+ size : SdcUiCommon.ModalSize.medium,
title : messageBoxData.title,
type : messageBoxData.type,
message : messageBoxData.message,
buttons: messageBoxData.buttons
};
}
-
}
diff --git a/vid-webpack-master/src/app/shared/components/model-information/model-information.component.ts b/vid-webpack-master/src/app/shared/components/model-information/model-information.component.ts
index fea4c44c7..9401aca05 100644
--- a/vid-webpack-master/src/app/shared/components/model-information/model-information.component.ts
+++ b/vid-webpack-master/src/app/shared/components/model-information/model-information.component.ts
@@ -1,5 +1,6 @@
import {Component, Input} from '@angular/core';
-import * as _ from 'lodash';
+import {ModelInformationService} from "./model-information.service";
+
@Component({
selector: 'model-information',
@@ -8,17 +9,21 @@ import * as _ from 'lodash';
})
export class ModelInformationComponent {
- private _modelInformationItems: Array<ModelInformationItem>;
+ constructor(private _modelInformationService : ModelInformationService){}
+
+ private _modelInformationItems: ModelInformationItem[];
+
+ @Input() itemClass: string = 'item'; //default class for item is "item"
- get modelInformationItems(): Array<ModelInformationItem> {
+ get modelInformationItems(): ModelInformationItem[] {
return this._modelInformationItems;
}
@Input()
- set modelInformationItems(_modelInformationItems: Array<ModelInformationItem>) {
+ set modelInformationItems(_modelInformationItems: ModelInformationItem[]) {
if (_modelInformationItems) {
- this._modelInformationItems = _modelInformationItems.filter(x => x.mandatory || (!_.isEmpty(x.values) && !_.isEmpty(x.values[0])));
+ this._modelInformationItems = this._modelInformationService.filterModelItems(_modelInformationItems);
}
}
}
@@ -27,11 +32,11 @@ export class ModelInformationComponent {
export class ModelInformationItem {
label: string;
testsId: string;
- values: Array<string>;
+ values: string[];
toolTipText: string;
mandatory: boolean;
- constructor(label: string, testsId: string, values: Array<any>, toolTipText: string = "", mandatory: boolean = false,nested:boolean=false) {
+ constructor(label: string, testsId: string, values: any[], toolTipText: string = "", mandatory: boolean = false) {
this.label = label;
this.testsId = testsId;
this.values = values;
@@ -39,4 +44,8 @@ export class ModelInformationItem {
this.mandatory = mandatory;
}
+ static createInstance(label: string, value: any):ModelInformationItem {
+ return new ModelInformationItem(label, label, [value]);
+ }
+
}
diff --git a/vid-webpack-master/src/app/shared/components/model-information/model-information.html b/vid-webpack-master/src/app/shared/components/model-information/model-information.html
index 456dfdee4..78548b035 100644
--- a/vid-webpack-master/src/app/shared/components/model-information/model-information.html
+++ b/vid-webpack-master/src/app/shared/components/model-information/model-information.html
@@ -1,12 +1,12 @@
<div id="model-information">
- <div *ngFor="let item of modelInformationItems" class="item" attr.data-tests-id="model-item-{{item.label}}">
+ <div *ngFor="let item of modelInformationItems" ngClass={{itemClass}} attr.data-tests-id="model-item-{{item.label}}">
<tooltip-content #a>
<span> {{item.toolTipText}}</span>
</tooltip-content>
<div class="wrapper" [tooltip]="a" [tooltipDisabled]="!item.toolTipText" tooltipPlacement="top" [tooltipAnimation]="false">
<label attr.data-tests-id="model-item-label-{{item.testsId}}">{{item.label}}</label>
- <div *ngFor="let value of item.values" attr.data-tests-id="model-item-value-{{item.testsId}}">{{value}}</div>
+ <div *ngFor="let value of item.values" class="model-item-value" attr.data-tests-id="model-item-value-{{item.testsId}}">{{value}}</div>
</div>
</div>
</div>
diff --git a/vid-webpack-master/src/app/shared/components/model-information/model-information.service.spec.ts b/vid-webpack-master/src/app/shared/components/model-information/model-information.service.spec.ts
new file mode 100644
index 000000000..418493f2b
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/model-information/model-information.service.spec.ts
@@ -0,0 +1,32 @@
+import {ModelInformationService} from "./model-information.service";
+import {ModelInformationItem} from "./model-information.component";
+
+describe('ModelInformationService', () => {
+ let underTest:ModelInformationService;
+
+ beforeEach(() => {
+ underTest = new ModelInformationService();
+ });
+
+ test('when call to filterModelItems then items with empty values are filtered', () =>{
+ expect(underTest.filterModelItems([
+ ModelInformationItem.createInstance("emptyValue", ""),
+ ModelInformationItem.createInstance("nullValue", null),
+ ModelInformationItem.createInstance("undefinedValue", undefined),
+ ModelInformationItem.createInstance("spacesValue", " "),
+ new ModelInformationItem("emptyArray", "id", [], "c", false)
+ ])).toHaveLength(0);
+ });
+
+ test('when call to filterModelItems then mandatory items with empty values are not filtered', () =>{
+ const mandatoryItem:ModelInformationItem = new ModelInformationItem("a", "b", [""], "c", true);
+ expect(underTest.filterModelItems([mandatoryItem])).toEqual([mandatoryItem]);
+ });
+
+ test('when call to filterModelItems then items with values are not filtered', () =>{
+ expect(underTest.filterModelItems([
+ ModelInformationItem.createInstance("withString", "a"),
+ ModelInformationItem.createInstance("withNumber", 1),
+ ])).toHaveLength(2);
+ });
+});
diff --git a/vid-webpack-master/src/app/shared/components/model-information/model-information.service.ts b/vid-webpack-master/src/app/shared/components/model-information/model-information.service.ts
new file mode 100644
index 000000000..7c0a96b01
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/model-information/model-information.service.ts
@@ -0,0 +1,16 @@
+import {Injectable} from "@angular/core";
+import * as _ from 'lodash';
+import {ModelInformationItem} from "./model-information.component";
+
+@Injectable()
+export class ModelInformationService {
+
+ filterModelItems(_modelInformationItems: ModelInformationItem[]) {
+ return _modelInformationItems.filter(x => x.mandatory || (
+ !_.isEmpty(x.values)
+ && !_.isNil(x.values[0])
+ && x.values[0].toString().trim()!=""
+ ));
+ }
+}
+
diff --git a/vid-webpack-master/src/app/shared/components/model-information/model-information.spec.ts b/vid-webpack-master/src/app/shared/components/model-information/model-information.spec.ts
new file mode 100644
index 000000000..cdba11f59
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/model-information/model-information.spec.ts
@@ -0,0 +1,12 @@
+import {ModelInformationItem} from "./model-information.component";
+
+describe('ModelInformationItem', () => {
+ test('when use createInstance, values initialized as expected', () =>{
+ const modelInformationItem:ModelInformationItem = ModelInformationItem.createInstance("aStr", 4);
+ expect(modelInformationItem.label).toEqual("aStr");
+ expect(modelInformationItem.testsId).toEqual("aStr");
+ expect(modelInformationItem.values).toEqual([4]);
+ expect(modelInformationItem.mandatory).toBeFalsy();
+ expect(modelInformationItem.toolTipText).toEqual("");
+ });
+});
diff --git a/vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.html b/vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.html
index bbe7bc78c..18200283b 100644
--- a/vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.html
+++ b/vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.html
@@ -1,5 +1,6 @@
<div class="width-100">
- <div class="text-title" [ngClass]="titleClass">{{title}}</div>
- <div class="text-subtitle" [ngClass]="subtitleClass">{{subtitle}}</div>
+ <div class="text-title" [ngClass]="titleClass" [attr.data-tests-id]="'text-title'">{{title}}</div>
+ <div class="text-title" [ngClass]="titleClass" [attr.data-tests-id]="'text-title2'">{{title2}}</div>
+ <div class="text-subtitle" [ngClass]="subtitleClass" [attr.data-tests-id]="'text-subtitle'">{{subtitle}}</div>
<img id="not-node-img-id" src="{{iconPath}}" alt="" class="no-content-icon" [ngClass]="iconClass" data-tests-id="no-content-icon">
</div>
diff --git a/vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.scss b/vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.scss
index 1320ef731..3829f06aa 100644
--- a/vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.scss
+++ b/vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.scss
@@ -9,6 +9,7 @@
font-size: 16px;
color: #4A4A4A;
text-align: center;
+ padding-bottom: 7px;
}
.text-subtitle {
@@ -16,7 +17,7 @@
font-size: 16px;
color: #959595;
text-align: center;
- margin-top: 7px;
+ margin-top: 2px;
}
.no-content-icon {
diff --git a/vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.ts b/vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.ts
index 7f4e98294..da66f3f17 100644
--- a/vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.ts
+++ b/vid-webpack-master/src/app/shared/components/no-content-message-and-icon/no-content-message-and-icon.component.ts
@@ -11,6 +11,7 @@ export class NoContentMessageAndIconComponent {
constructor() {}
@Input() title: string;
+ @Input() title2?: string;
@Input() subtitle: string;
@Input() iconPath: string;
diff --git a/vid-webpack-master/src/app/shared/components/popover/popover.component.html b/vid-webpack-master/src/app/shared/components/popover/popover.component.html
index c5515596c..4dc8096dc 100644
--- a/vid-webpack-master/src/app/shared/components/popover/popover.component.html
+++ b/vid-webpack-master/src/app/shared/components/popover/popover.component.html
@@ -2,7 +2,10 @@
triggers="mouseenter:mouseleave"
popover="{{value}}"
[hidden]="value == null"
- container="body">
+ container="body"
+ containerClass="{{popoverType}}"
+ placement="{{placement}}"
+ [attr.data-tests-id]="'popover-test-id'">
<ng-content ></ng-content>
</div>
diff --git a/vid-webpack-master/src/app/shared/components/popover/popover.component.scss b/vid-webpack-master/src/app/shared/components/popover/popover.component.scss
index ca2800a27..946b62d30 100644
--- a/vid-webpack-master/src/app/shared/components/popover/popover.component.scss
+++ b/vid-webpack-master/src/app/shared/components/popover/popover.component.scss
@@ -1,4 +1,5 @@
.popover.popover-top.top {
color : green !important;
font-size: 10px;
+ word-wrap: break-word;
}
diff --git a/vid-webpack-master/src/app/shared/components/popover/popover.component.ts b/vid-webpack-master/src/app/shared/components/popover/popover.component.ts
index d6a4c3ae1..9dbbe63a5 100644
--- a/vid-webpack-master/src/app/shared/components/popover/popover.component.ts
+++ b/vid-webpack-master/src/app/shared/components/popover/popover.component.ts
@@ -1,17 +1,29 @@
import {Component, Input} from "@angular/core";
-
@Component({
selector: 'custom-popover',
- templateUrl: 'popover.component.html',
- styles: [`
- :host >>> .popover {
- font-size: 13px;
- text-align: left;
- z-index: 10000;
- }
- `]
+ templateUrl: 'popover.component.html'
})
-export class PopoverComponent {
- @Input() value: String;
+export class PopoverComponent{
+ @Input() value: string;
+ @Input() extraStyle : string;
+ @Input() placement : string = PopoverPlacement.LEFT;
+ @Input() popoverType : string = PopoverType.CUSTOM;
+
+}
+
+export enum PopoverPlacement{
+ TOP = 'top',
+ BOTTOM = 'bottom',
+ LEFT = 'left',
+ RIGHT = 'right',
+ AUTO ='auto',
}
+
+export enum PopoverType {
+ ERROR = 'error',
+ WARNING = 'warning',
+ SUCCESS = 'success',
+ CUSTOM = 'custom'
+}
+
diff --git a/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/member-table-row.model.ts b/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/member-table-row.model.ts
new file mode 100644
index 000000000..c5f1a7a07
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/member-table-row.model.ts
@@ -0,0 +1,6 @@
+import {VnfMember} from "../../../models/VnfMember";
+
+export class MemberTableRowModel extends VnfMember{
+ isSelected : boolean = false;
+}
+
diff --git a/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.component.html b/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.component.html
new file mode 100644
index 000000000..3a29ed824
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.component.html
@@ -0,0 +1,75 @@
+<div class="table-header">
+ <div class="left-header">
+ <span class="title-header">{{description}}</span>
+ <div class="sub-title-header">
+ <span class="vnf-match-your-criteria" class="total" [attr.data-tests-id]="'total-amount'" style="margin-right: 5px;"><span
+ [attr.data-tests-id]="'numberOfNotHideVnfMembers'">{{membersTableService.numberOfNotHideVnfMembers}}</span> VNFs match your criteria</span>
+ <span class="vnf-selected" class="total" [attr.data-tests-id]="'total-selected'"><span
+ [attr.data-tests-id]="'numberOfSelectedVnfMembers'">{{membersTableService.numberOfSelectedVnfMembers}}</span> VNF{{membersTableService.numberOfSelectedVnfMembers>1?'s':'' }} selected</span>
+ </div>
+ </div>
+
+ <div class="search-container">
+ <sdc-filter-bar
+ [placeHolder]="'Search...'"
+ [debounceTime]="250"
+ [testId]="'vnf-members-search'"
+ (valueChange)="search($event)">
+ </sdc-filter-bar>
+ </div>
+</div>
+<table id="member-table" class="table table-bordered" *ngIf="data?.length > 0">
+ <thead class="thead-dark">
+ <tr>
+ <th class="allCheckboxAreSelected" style="position: relative;">
+ <sdc-checkbox
+ [(checked)]="membersTableService.allCheckboxAreSelected"
+ [testId]="'all-checkbox-selected'"
+ (checkedChange)="changeAllCheckboxStatus($event)"
+ ></sdc-checkbox>
+ </th>
+ <th class="header-title" *ngFor="let header of headers">{{header.displayName}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="member-table-row" *ngFor="let vnf of membersTableService.filteredMembers">
+ <td class="sdcCheckboxMember" style="position: relative;" [attr.data-tests-id]="vnf?.instanceId">
+ <sdc-checkbox
+ [checked]="membersTableService.allMemberStatusMap[vnf.instanceId]?.isSelected"
+ [testId]="vnf?.instanceId"
+ (checkedChange)="changeCheckboxStatus(vnf.instanceId)"
+ ></sdc-checkbox></td>
+ <td id="vnfName">
+ <custom-ellipsis [id]="vnf?.instanceName" [value]="vnf?.instanceName"
+ [hightlight]="filterValue"></custom-ellipsis>
+ <custom-ellipsis class="second-line" [id]="vnf?.instanceId" [value]="'UUID: '+ vnf?.instanceId"
+ [hightlight]="filterValue"></custom-ellipsis>
+ </td>
+ <td id="version">
+ <custom-ellipsis [id]="vnf?.modelInfo?.modelVersion" [value]="vnf?.modelInfo?.modelVersion" [hightlight]="filterValue"></custom-ellipsis>
+ </td>
+ <td id="modelName">
+ <custom-ellipsis [id]="vnf?.modelInfo?.modelName" [value]="vnf?.modelInfo?.modelName" [hightlight]="filterValue"></custom-ellipsis>
+ </td>
+ <td id="provStatus">
+ <custom-ellipsis [id]="vnf?.provStatus" [value]="vnf?.provStatus" [hightlight]="filterValue"></custom-ellipsis>
+ </td>
+ <td id="serviceInstance">
+ <custom-ellipsis [id]="vnf?.serviceInstanceName" [value]="vnf?.serviceInstanceName"
+ [hightlight]="filterValue"></custom-ellipsis>
+ <custom-ellipsis class="second-line" [id]="vnf?.serviceInstanceId" [value]="'UUID: '+ vnf?.serviceInstanceId"
+ [hightlight]="filterValue"></custom-ellipsis>
+ </td>
+ <td id="cloudRegion">
+ <custom-ellipsis [id]="vnf?.lcpCloudRegionId" [value]="vnf?.lcpCloudRegionId" [hightlight]="filterValue"></custom-ellipsis>
+ </td>
+ <td id="tenantName">
+ <custom-ellipsis [id]="vnf?.tenantName" [value]="vnf?.tenantName" [hightlight]="filterValue"></custom-ellipsis>
+ </td>
+ </tr>
+
+ </tbody>
+</table>
+<div class="no-result" *ngIf="data?.length == 0">No VNFs were found that can belong to this group.</div>
+
+
diff --git a/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.component.scss b/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.component.scss
new file mode 100644
index 000000000..3be975222
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.component.scss
@@ -0,0 +1,91 @@
+.table-header {
+ display: flex;
+ margin-bottom: 5px;
+ .left-header{
+ .title-header{
+ font-family: OpenSans-SemiBold;
+ color: #191919;
+ font-size: 15px;
+ margin-bottom: 5px;
+ display: block;
+ }
+
+ .sub-title-header{
+
+ .vnf-selected{
+ margin-left: 25px;
+ }
+
+ .vnf-match-your-criteria{
+ }
+ }
+ .total{
+ font-family: OpenSans-Regular;
+ color: #191919;
+ font-size: 15px;
+ margin-right: 10px;
+ }
+
+ }
+
+ .search-container{
+ flex-basis: 300px;
+ margin-left: auto;
+ }
+}
+
+#member-table>tbody+tbody {
+ border-top: 1px solid #ddd;
+}
+
+
+
+#member-table {
+ border: 1px solid #D2D2D2;
+ thead {
+ background: #F8F8F8;
+ th.allCheckboxAreSelected {
+ vertical-align: middle !important;
+ width: 48px;
+ max-width: 48px;
+ min-width: 48px;
+ height: 48px;
+ }
+ th.header-title {
+ font-family: OpenSans-SemiBold;
+ vertical-align: middle !important;
+ height: 48px;
+ font-size: 12px;
+ }
+ }
+ tbody {
+ td{
+ text-align: center;
+ height: 60px;
+ padding-top: 0;
+ padding-bottom: 0;
+ max-height: 60px;
+ vertical-align: middle;
+ .second-line {
+ font-size: 12px;
+ }
+ }
+ }
+
+
+ //font-size: 12px;
+
+ th.allCheckboxAreSelected {
+ text-align: center;
+ }
+}
+
+.no-result {
+ font-family: OpenSans-Regular;
+ width: 100%;
+ height: 100%;
+ border: 1px solid #d2d2d2;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
diff --git a/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.component.ts b/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.component.ts
new file mode 100644
index 000000000..9736563af
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.component.ts
@@ -0,0 +1,57 @@
+import {Component, Input, OnChanges, Output, SimpleChanges, EventEmitter} from '@angular/core';
+import {VnfMember} from "../../../models/VnfMember";
+import {MembersTableService} from "./members-table.service";
+import * as _ from 'lodash';
+
+export class CustomTableColumnDefinition {
+ public displayName = '';
+ public key : any = '';
+ public type? = 'text';
+ public filter? = '';
+}
+
+@Component({
+ selector: 'app-members-table',
+ templateUrl: './members-table.component.html',
+ styleUrls: ['./members-table.component.scss']
+})
+
+export class MembersTableComponent implements OnChanges{
+ filterValue: string = null;
+ allMemberStatusMap = null;
+ membersTableService : MembersTableService;
+ headers: CustomTableColumnDefinition[] = MembersTableService.getHeaders();
+ @Input() data: VnfMember[];
+ @Input() description: string;
+ @Output() selectedMembersAmountChange : EventEmitter<number> = new EventEmitter();
+ constructor(private _membersTableService : MembersTableService){
+ this.membersTableService = this._membersTableService;
+ }
+
+ ngOnChanges(changes: SimpleChanges): void {
+ if(_.isNil(this.data)){
+ this._membersTableService.resetAll();
+ }else {
+ this._membersTableService.allMemberStatusMap = MembersTableService.generateAllMembersStatus(this.data);
+ this._membersTableService.filteredMembers = MembersTableService.sortVnfMembersByName(this.data, "instanceName");
+ this._membersTableService.updateAmountsAndCheckAll();
+ }
+ }
+
+ search(searchStr: string): void {
+ this.filterValue = searchStr;
+ this._membersTableService.filterMembers(this.filterValue);
+ }
+
+ changeAllCheckboxStatus(status: boolean) : void {
+ this._membersTableService.changeAllCheckboxStatus(status);
+ this.selectedMembersAmountChange.emit(this._membersTableService.numberOfSelectedVnfMembers);
+ }
+
+
+ changeCheckboxStatus(vnfInstanceId: string) : void {
+ this._membersTableService.changeCheckboxStatus(vnfInstanceId);
+ this.selectedMembersAmountChange.emit(this._membersTableService.numberOfSelectedVnfMembers);
+ }
+
+}
diff --git a/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.service.spec.ts b/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.service.spec.ts
new file mode 100644
index 000000000..e53c63be1
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.service.spec.ts
@@ -0,0 +1,270 @@
+import {MembersTableService} from "./members-table.service";
+import {TestBed, getTestBed} from "@angular/core/testing";
+import {NgRedux} from "@angular-redux/store";
+import {CustomTableColumnDefinition} from "./members-table.component";
+import {AppState} from "../../../store/reducers";
+import {createRelatedVnfMemberInstance} from "../../../storeUtil/utils/relatedVnfMember/relatedVnfMember.actions";
+import {DataFilterPipe} from "../../../pipes/dataFilter/data-filter.pipe";
+import {VnfMember} from "../../../models/VnfMember";
+
+
+
+class MockAppStore<T> {
+ dispatch() {
+ }
+ getState() {
+ return {
+ service : {
+ serviceHierarchy: {
+ },
+ serviceInstance : {
+ "serviceModelId" : {
+ vnfGroups:{
+ "aa1":{
+ vnfs:{
+ "VNF1_INSTANCE_ID":{
+ "action": "None",
+ "instanceName": "VNF1_INSTANCE_NAME",
+ "instanceId": "VNF1_INSTANCE_ID",
+ "orchStatus": null,
+ "lcpCloudRegionId": "mtn23b",
+ "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",
+ "trackById": "7a6ee536-f052-46fa-aa7e-2fca9d674c44:002",
+ "serviceInstanceId": "service-instance-id1",
+ "serviceInstanceName": "service-instance-name"
+
+ },
+ "aa1-vnf1":{
+ vnfName: "",
+ instanceId:"",
+ serviceInstanceId:""
+ }
+ }
+ }
+ }
+ }
+
+ }
+ }
+ }
+ }
+}
+
+describe('MembersTableService view member count', () => {
+ let injector;
+ let service: MembersTableService;
+ let store: NgRedux<AppState>;
+ let data = loadMockMembers();
+
+ beforeAll(done => (async () => {
+
+ TestBed.configureTestingModule(
+ {
+ providers: [
+ MembersTableService,
+ {provide: NgRedux, useClass: MockAppStore},
+ DataFilterPipe
+
+ ],
+ declarations: [DataFilterPipe]
+ });
+ await TestBed.compileComponents();
+
+ injector = getTestBed();
+ service = injector.get(MembersTableService);
+ store = injector.get(NgRedux)
+
+ })().then(done).catch(done.fail));
+
+
+ test('should return number of displayed members', () => {
+ service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>data);
+ service.filteredMembers = <any>data;
+ expect(service.calculateNotHideVnfMembers()).toEqual(2);
+ });
+
+ test('should return number of selected members', () => {
+ service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>data);
+ service.allMemberStatusMap['VNF1_INSTANCE_ID'].isSelected = true;
+ service.allMemberStatusMap['VNF2_INSTANCE_ID'].isSelected = true;
+ expect(service.calculateSelectedVnfMembers()).toEqual(2);
+ });
+
+ test('should return number of selected members', () => {
+ service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>data);
+ service.filteredMembers = <any>data;
+ service.allMemberStatusMap['VNF1_INSTANCE_ID'].isSelected = true;
+ service.filterMembers('VNF2');
+ service.allMemberStatusMap['VNF2_INSTANCE_ID'].isSelected = true;
+ expect(service.calculateNotHideVnfMembers()).toEqual(1);
+ });
+
+ test('getHeader should return labels with array of keys', () => {
+ const headers: CustomTableColumnDefinition[] = MembersTableService.getHeaders();
+ expect(headers).toEqual([
+ {displayName: 'VNF instance name', key: ['instanceName']},
+ {displayName: 'VNF version', key: ['modelInfo', 'modelVersion']},
+ {displayName: 'VNF 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']}
+ ]);
+ });
+
+
+ test('setMembers should dispatch action only on selected members', () => {
+ const vnfGroupStoreKey: string = 'vnfGroupStoreKey';
+ const serviceId: string = 'serviceId';
+
+ jest.spyOn(store, 'dispatch');
+ service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>data);
+ service.allMemberStatusMap['VNF1_INSTANCE_ID'].isSelected = true;
+ service.setMembers({serviceId: serviceId, vnfGroupStoreKey: vnfGroupStoreKey});
+ expect(store.dispatch).toHaveBeenCalledTimes(1);
+ expect(store.dispatch).toHaveBeenCalledWith(createRelatedVnfMemberInstance(vnfGroupStoreKey, serviceId, service.allMemberStatusMap['VNF1_INSTANCE_ID']));
+ });
+
+ test('generateAllMembersStatus should add to each instance isHide and isSelected and convert to map', () => {
+
+ let allMemberStatusMapMock = MembersTableService.generateAllMembersStatus(<any>data);
+ for (const key in allMemberStatusMapMock) {
+ expect(allMemberStatusMapMock[key].isSelected).toBeFalsy();
+ }
+ });
+
+ test('changeAllCheckboxStatus', () => {
+ let data = loadMockMembers();
+ service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>data);
+ service.filteredMembers = <any>data;
+ service.changeAllCheckboxStatus(true);
+ for (let key in service.allMemberStatusMap) {
+ expect(service.allMemberStatusMap[key].isSelected).toEqual(true);
+ }
+ });
+
+ test('should reset all numbers and lists', () => {
+ let data = loadMockMembers();
+ service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>data);
+ service.filteredMembers = <any>data;
+ service.changeAllCheckboxStatus(true);
+ service.resetAll();
+ expect(service.numberOfNotHideVnfMembers).toEqual(0);
+ expect(service.numberOfSelectedAndNotHideVnfMembers).toEqual(0);
+ expect(service.numberOfSelectedVnfMembers).toEqual(0);
+ expect(service.allMemberStatusMap).toEqual({});
+ expect(service.filteredMembers.length).toEqual(0);
+ });
+
+ test('checkAllCheckboxStatus should be false if not all are selected', () => {
+ service.allMemberStatusMap = MembersTableService.generateAllMembersStatus(<any>loadMockMembers());
+ service.updateAmountsAndCheckAll();
+
+ expect(service.allCheckboxAreSelected).toEqual(false);
+ });
+
+
+ test('sortVnfMembersByName should sort list by vnf name', () => {
+ let data = <any>loadMockMembers();
+ let sortedList = MembersTableService.sortVnfMembersByName(data, "instanceName");
+
+ expect(sortedList[0].instanceName).toEqual("VNF1_INSTANCE_NAME");
+ expect(sortedList[1].instanceName).toEqual("VNF2_INSTANCE_NAME");
+
+ let tmp = data[0];
+ data[0] = data[1];
+ data[1] = tmp;
+
+ sortedList = MembersTableService.sortVnfMembersByName(data, "instanceName");
+
+ expect(sortedList[1].instanceName).toEqual("VNF1_INSTANCE_NAME");
+ expect(sortedList[0].instanceName).toEqual("VNF2_INSTANCE_NAME");
+ sortedList = MembersTableService.sortVnfMembersByName(null, "instanceName");
+ expect(sortedList).toEqual([]);
+ sortedList = MembersTableService.sortVnfMembersByName(data, undefined);
+ expect(sortedList).toEqual([]);
+ });
+
+ test('should return only vnf members not associated to any vnf group', ()=>{
+ const result: VnfMember[] = service.filterUsedVnfMembers("serviceModelId",loadMockMembers());
+ expect(result.length).toEqual(1);
+ expect(result[0].instanceId).toEqual("VNF2_INSTANCE_ID");
+ });
+
+});
+
+
+function loadMockMembers(): any[] {
+ return [
+ {
+ "action": "None",
+ "instanceName": "VNF1_INSTANCE_NAME",
+ "instanceId": "VNF1_INSTANCE_ID",
+ "orchStatus": null,
+ "productFamilyId": null,
+ "lcpCloudRegionId": "mtn23b",
+ "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": "mtn23b",
+ "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/shared/components/searchMembersModal/members-table/members-table.service.ts b/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.service.ts
new file mode 100644
index 000000000..5b9cd39a2
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/searchMembersModal/members-table/members-table.service.ts
@@ -0,0 +1,153 @@
+import {Injectable} from "@angular/core";
+import {VnfMember} from "../../../models/VnfMember";
+import {CustomTableColumnDefinition} from "./members-table.component";
+import {NgRedux} from "@angular-redux/store";
+import {AppState} from "../../../store/reducers";
+import {createRelatedVnfMemberInstance} from "../../../storeUtil/utils/relatedVnfMember/relatedVnfMember.actions";
+import * as _ from 'lodash';
+import {DataFilterPipe} from "../../../pipes/dataFilter/data-filter.pipe";
+import {MemberTableRowModel} from "./member-table-row.model";
+
+@Injectable()
+export class MembersTableService {
+ allMemberStatusMap : { [key:string]: MemberTableRowModel; };
+ filteredMembers : VnfMember[];
+ allCheckboxAreSelected : boolean;
+ numberOfNotHideVnfMembers : number;
+ numberOfSelectedVnfMembers : number;
+ numberOfSelectedAndNotHideVnfMembers : number;
+
+ constructor(private _store: NgRedux<AppState>, private dataFilter: DataFilterPipe){
+ this.resetAll();
+ }
+
+ filterUsedVnfMembers = (serviceModelId: string, result: VnfMember[]): VnfMember[] => {
+ const allMembersMap = _.keyBy(result as VnfMember[], '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);
+ };
+
+ updateAmountsAndCheckAll = () : void => {
+ this.numberOfSelectedVnfMembers = this.calculateSelectedVnfMembers();
+ this.numberOfNotHideVnfMembers = this.calculateNotHideVnfMembers();
+ this.numberOfSelectedAndNotHideVnfMembers = this.calculateSelectedAndNotHide();
+ this.allCheckboxAreSelected = this.numberOfNotHideVnfMembers > 0 && this.numberOfNotHideVnfMembers === this.numberOfSelectedAndNotHideVnfMembers;
+ };
+
+ resetAll = () : void => {
+ this.allMemberStatusMap = {};
+ this.filteredMembers = [];
+ this.numberOfSelectedVnfMembers = 0;
+ this.numberOfNotHideVnfMembers = 0;
+ this.numberOfSelectedAndNotHideVnfMembers = 0;
+ this.allCheckboxAreSelected = false;
+ };
+
+ changeAllCheckboxStatus = (status : boolean) : void =>{
+ for(const member of this.filteredMembers){
+ this.allMemberStatusMap[member.instanceId].isSelected = status;
+ }
+ this.updateAmountsAndCheckAll();
+ };
+
+ changeCheckboxStatus = (vnfInstanceId : string ) : void =>{
+ this.allMemberStatusMap[vnfInstanceId].isSelected = !this.allMemberStatusMap[vnfInstanceId].isSelected;
+ this.updateAmountsAndCheckAll();
+ };
+
+ /************************************************
+ iterate over all current vnf members:
+ 1) if vnf member is selected then update REDUX store
+ 2) if vnf member is not selected then delete member
+ @allMemberStatusMap: current vnf member status
+ @vnfGroupStoreKey: vnf group store key
+ @serviceId: service model id
+ ************************************************/
+ setMembers = (data : {serviceId : string, vnfGroupStoreKey : string}) : void =>{
+ let tmpMembers = this.allMemberStatusMap;
+ for(let key in tmpMembers){
+ if(tmpMembers[key].isSelected){
+ this._store.dispatch(createRelatedVnfMemberInstance( data.vnfGroupStoreKey, data.serviceId, tmpMembers[key]));
+ }
+ }
+ };
+
+ filterMembers(searchStr: string): void {
+ const keys: string[][] = MembersTableService.getDataKeys();
+ this.filteredMembers = this.dataFilter.transform(_.values(this.allMemberStatusMap), searchStr || '', keys);
+ this.updateAmountsAndCheckAll();
+ }
+
+ /************************************
+ generate vnf member data for select/ unselect rows
+ ************************************/
+ static generateAllMembersStatus(tableData : VnfMember[]) : { [key:string]: MemberTableRowModel; }{
+
+ tableData.map((vnf) => {
+ vnf['isSelected'] = false
+ });
+ return _.keyBy(tableData as MemberTableRowModel[], 'instanceId');
+ }
+
+
+ static sortVnfMembersByName(list : VnfMember[], keyName : string) :VnfMember[]{
+ if(!_.isNil(list) && !_.isNil(keyName)) {
+ return list.sort(function(itemA, itemB) { return itemA[keyName]- itemB[keyName];})
+ }
+ return [];
+
+ }
+
+ /********************************
+ table columns headers and key's
+ ********************************/
+ static getHeaders() : CustomTableColumnDefinition[] {
+ return [
+ {displayName: 'VNF instance name', key: ['instanceName']},
+ {displayName: 'VNF version', key: ['modelInfo', 'modelVersion']},
+ {displayName: 'VNF 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']}
+ ];
+ }
+
+ static getDataKeys(): string[][]{
+ const headers = MembersTableService.getHeaders();
+ return headers.map((header)=> header.key).concat([['instanceId']],[['serviceInstanceId']]);
+ }
+
+ /*************************************************************************************
+ calculate the number of selected vnf members - include not visible and visible rows
+ @allMemberStatusMap: current vnf member status
+ *************************************************************************************/
+ calculateSelectedVnfMembers() : number {
+ const flatObject = _.values(this.allMemberStatusMap);
+ return _.filter(flatObject, (item) => { if (item.isSelected) return item }).length;
+ }
+
+ /************************************************
+ calculate the number of display vnf members
+ @allMemberStatusMap: current vnf member status
+ ************************************************/
+ calculateNotHideVnfMembers() : number {
+ return this.filteredMembers.length;
+ }
+
+ /************************************************
+ calculate the number of display vnf members
+ @allMemberStatusMap: current vnf member status
+ ************************************************/
+ calculateSelectedAndNotHide() : number {
+ return _.filter(this.filteredMembers, (item) => { if ( this.allMemberStatusMap[item.instanceId].isSelected) return item }).length;
+ }
+
+
+}
diff --git a/vid-webpack-master/src/app/shared/components/searchMembersModal/search-members-modal.component.html b/vid-webpack-master/src/app/shared/components/searchMembersModal/search-members-modal.component.html
new file mode 100644
index 000000000..899bc9889
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/searchMembersModal/search-members-modal.component.html
@@ -0,0 +1,35 @@
+<div class="modal-search-member-content">
+ <div class="header">
+ <vid-svg-icon
+ [attr.data-tests-id]="'cancelBtn'"
+ (click)="closeDialog()"
+ class="navigation-arrow-back"
+ [mode]="'primary'"
+ [size]="'large'"
+ [name]="'navigation-arrow-back'"
+ [clickable]="true"
+ [fill]="'#FFFFFF'"
+ [widthViewBox]="'24'"
+ [heightViewBox]="'24'">
+ </vid-svg-icon>
+
+ <span class="title">
+ {{title}}
+ </span>
+ <button type="submit" data-tests-id="setMembersBtn" [disabled]="disableSetMembers" (click)="setMembers()" class="sdc-button sdc-button__primary">SET MEMBERS</button>
+ </div>
+ <div class="content-wrapper">
+ <div class="sidebar-left">
+ <div class="search-criteria-wrapper">
+ <div class="search-criteria-title">SEARCH CRITERIA</div>
+ <div class="search-item" *ngFor="let searchFieldItem of searchFields">
+ <span class="label-item">{{searchFieldItem.title}}</span>
+ <span attr.data-tests-id="{{searchFieldItem.dataTestId}}" class="text-item">{{searchFieldItem.value}}</span>
+ </div>
+ </div>
+ </div>
+ <div class="sidebar-right">
+ <app-members-table [data]="membersData" [description]="description" (selectedMembersAmountChange)="selectedMembersAmountChange($event)"></app-members-table>
+ </div>
+ </div>
+</div>
diff --git a/vid-webpack-master/src/app/shared/components/searchMembersModal/search-members-modal.component.scss b/vid-webpack-master/src/app/shared/components/searchMembersModal/search-members-modal.component.scss
new file mode 100644
index 000000000..d49653934
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/searchMembersModal/search-members-modal.component.scss
@@ -0,0 +1,89 @@
+.modal-search-member-content {
+ height: 100vh;
+ width: 100vw;
+ position: relative;
+ background: white;
+ .header {
+ height: 60px;
+ font-family: OpenSans-Regular;
+ display: -webkit-box;
+ display: flex;
+ font-size: 14px;
+ box-shadow: 2px 2px 6px #D2D2D2;
+ color: white;
+ background: #009fdb;
+ z-index: 1;
+ position: relative;
+ .navigation-arrow-back {
+ border-right: 1px solid #1eb9f3;
+ width: 60px;
+ height: 60px;
+ cursor: pointer;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+ .title {
+ font-size: 18px;
+ line-height: 60px;
+ margin-left: 20px;
+ }
+ button {
+ width: 125px;
+ font-family: OpenSans-Regular;
+ font-size: 14px;
+ margin-left: auto;
+ margin-right: 20px;
+ margin-top: 12px;
+ border: 1px solid white;
+ &:disabled {
+ opacity: 0.5;
+ background: none;
+ }
+ }
+ }
+
+ .content-wrapper {
+ display: flex;
+
+ .sidebar-left {
+ flex-basis: 285px;
+ border-right: 1px solid #D2D2D2;
+ height: calc(100vh - 60px);
+
+ .search-criteria-wrapper{
+
+ .search-criteria-title{
+ font-family: OpenSans-SemiBold;
+ font-size: 14px;
+ color: #191919;
+ border-bottom: 1px solid #D2D2D2;
+ line-height: 50px;
+ padding-left: 30px;
+ }
+ .search-item{
+ color: #191919;
+ display: flex;
+ flex-direction: column;
+ margin: 25px 30px;
+ .label-item {
+ font-family: OpenSans-SemiBold;
+ font-size: 12px;
+ }
+ .text-item{
+ font-family: OpenSans-Regular;
+ font-size: 14px;
+ color: #5a5a5a;
+ word-break: break-all;
+ }
+
+ }
+ }
+ }
+
+ .sidebar-right {
+ flex: 1;
+ margin: 80px 50px;
+ }
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/searchMembersModal/search-members-modal.component.ts b/vid-webpack-master/src/app/shared/components/searchMembersModal/search-members-modal.component.ts
new file mode 100644
index 000000000..9c65d222d
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/searchMembersModal/search-members-modal.component.ts
@@ -0,0 +1,82 @@
+import {Component, OnDestroy, OnInit, ViewChild} from '@angular/core';
+import {DialogComponent, DialogService} from "ng2-bootstrap-modal";
+import {IframeService} from "../../utils/iframe.service";
+import {AaiService} from "../../services/aaiService/aai.service";
+import {VnfMember} from "../../models/VnfMember";
+import {VnfGroupModel} from "../../models/vnfGroupModel";
+import {MembersTableService} from "./members-table/members-table.service";
+import {VnfGroupInstance} from "../../models/vnfGroupInstance";
+
+
+export interface PopupModel {
+ title: string;
+ serviceModelId : string;
+ searchFields: ISearchField[];
+ description : string;
+ subscriberId: string,
+ serviceType: string,
+ node: VnfGroupInstance,
+ vnfGroupModel: VnfGroupModel;
+
+}
+
+export interface ISearchField {
+ title: string;
+ value: any;
+ dataTestId: string;
+}
+
+@Component({
+ selector : 'search-members-modal',
+ templateUrl : 'search-members-modal.component.html',
+ styleUrls : ['search-members-modal.component.scss']
+})
+
+export class SearchMembersModalComponent extends DialogComponent<PopupModel, boolean> implements OnInit, OnDestroy {
+ title: string;
+ serviceModelId : string;
+ parentElementClassName = 'content';
+ membersData: VnfMember[];
+ description : string;
+ searchFields: ISearchField[];
+ vnfGroupModel: VnfGroupModel;
+ subscriberId: string;
+ serviceType: string;
+ node: VnfGroupInstance;
+ disableSetMembers: boolean = true;
+ constructor(dialogService: DialogService ,
+ private _iframeService : IframeService,
+ private _aaiService : AaiService,
+ private _membersTableService: MembersTableService){
+ super(dialogService);
+
+ }
+ @ViewChild('MembersTableComponent') membersTable;
+
+ ngOnInit() : void{
+ this._aaiService.getOptionalGroupMembers(this.serviceModelId, this.subscriberId, this.serviceType, (Object.values(this.vnfGroupModel.members))[0].sourceModelInvariant, this.vnfGroupModel.properties.type, this.vnfGroupModel.properties.role)
+ .subscribe((result: VnfMember[])=>{
+ this.membersData = this._membersTableService.filterUsedVnfMembers(this.serviceModelId, result);
+ });
+ };
+
+
+ closeDialog() : void{
+ this._iframeService.removeClassCloseModal(this.parentElementClassName);
+ this.dialogService.removeDialog(this);
+ setTimeout(() => {
+ window.parent.postMessage("closeIframe", "*");
+ }, 15);
+ }
+ selectedMembersAmountChange(selectedMembersAmount: number) : void {
+ this.disableSetMembers = selectedMembersAmount==0;
+ }
+
+
+ setMembers() : void {
+ this._membersTableService.setMembers({serviceId : this.serviceModelId, vnfGroupStoreKey : this.node.vnfGroupStoreKey});
+ this.closeDialog();
+ }
+}
+
+
diff --git a/vid-webpack-master/src/app/shared/components/spinner/spinner.component.html b/vid-webpack-master/src/app/shared/components/spinner/spinner.component.html
index cb11feea8..238f7693d 100644
--- a/vid-webpack-master/src/app/shared/components/spinner/spinner.component.html
+++ b/vid-webpack-master/src/app/shared/components/spinner/spinner.component.html
@@ -1,2 +1,6 @@
-<div *ngIf="show"
- class="spinner"></div>
+<sdc-loader name= "global"
+ #globalLoader
+ [global] = "global"
+ [size]="size"
+ [(active)] = "show"></sdc-loader>
+
diff --git a/vid-webpack-master/src/app/shared/components/spinner/spinner.component.spec.ts b/vid-webpack-master/src/app/shared/components/spinner/spinner.component.spec.ts
index 531ee8c62..57f7b009c 100644
--- a/vid-webpack-master/src/app/shared/components/spinner/spinner.component.spec.ts
+++ b/vid-webpack-master/src/app/shared/components/spinner/spinner.component.spec.ts
@@ -1,42 +1,50 @@
-import {async, ComponentFixture, TestBed} from '@angular/core/testing';
+import {ComponentFixture, TestBed} from '@angular/core/testing';
import {HttpClientTestingModule} from '@angular/common/http/testing';
-import { SpinnerComponent } from './spinner.component';
+import {SpinnerComponent, SpinnerInfo} from './spinner.component';
+import {CUSTOM_ELEMENTS_SCHEMA} from "@angular/core";
describe('Spinner component', () => {
let component: SpinnerComponent;
let fixture: ComponentFixture<SpinnerComponent>;
- beforeEach(async(() => {
+ beforeAll(done => (async () => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [],
- declarations: [SpinnerComponent ]
- })
- .compileComponents();
- }));
+ declarations: [SpinnerComponent],
+ schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
+ });
+ await TestBed.compileComponents();
- beforeEach(() => {
fixture = TestBed.createComponent(SpinnerComponent);
component = fixture.componentInstance;
fixture.detectChanges();
- });
- it('component should be defined', () => {
+ })().then(done).catch(done.fail));
+
+
+
+ test('component should be defined', () => {
expect(component).toBeDefined();
});
-
- it('component constructor should subscribe of showSpinner event with true', ()=> {
- SpinnerComponent.showSpinner.next(true);
+ test('component constructor should subscribe of showSpinner event with true', ()=> {
+ let spinnerInfo : SpinnerInfo = new SpinnerInfo(true, 'someUrl', 'json');
+ SpinnerComponent.showSpinner.next(spinnerInfo);
expect(component.show).toBeTruthy();
});
- it('component constructor should subscribe of showSpinner event with false', ()=> {
- SpinnerComponent.showSpinner.next(false);
+ test('component constructor should subscribe of showSpinner event with true and then to be false', ()=> {
+ let spinnerInfo : SpinnerInfo = new SpinnerInfo(true, 'someUrl', 'json');
+ SpinnerComponent.showSpinner.next(spinnerInfo);
+ spinnerInfo = new SpinnerInfo(false, 'someUrl', 'json');
+ SpinnerComponent.showSpinner.next(spinnerInfo);
expect(component.show).toBeFalsy();
});
-
-
-
+ test('component constructor should subscribe of showSpinner event with false', ()=> {
+ let spinnerInfo : SpinnerInfo = new SpinnerInfo(false, 'someUrl', 'json');
+ SpinnerComponent.showSpinner.next(spinnerInfo);
+ expect(component.show).toBeFalsy();
+ });
});
diff --git a/vid-webpack-master/src/app/shared/components/spinner/spinner.component.ts b/vid-webpack-master/src/app/shared/components/spinner/spinner.component.ts
index 0ce5d2074..94a0e1c52 100644
--- a/vid-webpack-master/src/app/shared/components/spinner/spinner.component.ts
+++ b/vid-webpack-master/src/app/shared/components/spinner/spinner.component.ts
@@ -1,18 +1,50 @@
-import { Component, Input } from '@angular/core';
-import { Subject } from 'rxjs/Subject';
+import {Component} from '@angular/core';
+import {Subject} from 'rxjs/Subject';
+import * as _ from 'lodash';
@Component({
selector : 'spinner-component',
- templateUrl : './spinner.component.html',
- styleUrls : ['./spinner.component.scss']
+ templateUrl: './spinner.component.html',
+ styleUrls : ['./spinner.component.scss'],
+ providers : []
+
})
-export class SpinnerComponent {
- show : boolean = false;
- static showSpinner: Subject<boolean> = new Subject<boolean>();
+export class SpinnerComponent{
+ show : boolean;
+ size = "large";
+ global = true;
+
+ requestMap = {};
+
+ static showSpinner: Subject<SpinnerInfo> = new Subject<SpinnerInfo>();
constructor(){
- SpinnerComponent.showSpinner.subscribe((status) => {
- this.show = status;
+ SpinnerComponent.showSpinner.subscribe((spinnerInfo) => {
+ let status = spinnerInfo['status'];
+ let requestType = spinnerInfo['requestType'];
+ let requestUrl = spinnerInfo['requestUrl'];
+
+ if(status && requestType === 'json'){
+ this.requestMap[requestUrl] = true;
+ }else {
+ delete this.requestMap[requestUrl]
+ }
+ console.log(this.requestMap);
+ this.show = !_.isEmpty(this.requestMap) && this.requestMap !== undefined;
+
})
}
}
+
+
+export class SpinnerInfo {
+ status : boolean;
+ requestUrl : string;
+ requestType : string;
+
+ constructor(status : boolean, requestUrl : string, requestType : string){
+ this.status = status;
+ this.requestUrl = requestUrl;
+ this.requestType = requestType;
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/svg/svg-component.ts b/vid-webpack-master/src/app/shared/components/svg/svg-component.ts
new file mode 100644
index 000000000..2e4642432
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/svg/svg-component.ts
@@ -0,0 +1,47 @@
+import {
+ AfterViewChecked,
+ Component,
+ ElementRef,
+ EventEmitter,
+ Input,
+ Output
+} from "@angular/core";
+import * as _ from 'lodash';
+
+@Component({
+ selector : 'vid-svg-icon',
+ template: `
+ <svg-icon
+ [mode]="mode"
+ [size]="size"
+ [name]="name"
+ [testId]="testId"
+ [clickable]="clickable">
+ </svg-icon>
+ `,
+
+
+})
+export class SvgComponent implements AfterViewChecked{
+ @Input() mode : string = 'primary';
+ @Input() size : string = 'large';
+ @Input() testId : string = null;
+ @Input() name : string = null;
+ @Input() clickable : boolean = false;
+ @Input() fill : string ;
+ @Input() widthViewBox: string = null;
+ @Input() heightViewBox: string = null;
+
+ constructor(private elRef: ElementRef) {}
+
+ ngAfterViewChecked(): void {
+ if(!_.isNil(this.fill)){
+ this.elRef.nativeElement.children[0].children[0].children[0].style.fill = this.fill;
+ }
+
+ if(this.widthViewBox && this.heightViewBox){
+ this.elRef.nativeElement.children[0].children[0].children[0].setAttribute('viewBox', "1 1 " + this.widthViewBox + " " + this.heightViewBox)
+ }
+
+ }
+}
diff --git a/vid-webpack-master/src/app/shared/components/validators/numbersLettersUnderscore/numbersLettersUnderscore.validator.spec.ts b/vid-webpack-master/src/app/shared/components/validators/numbersLettersUnderscore/numbersLettersUnderscore.validator.spec.ts
deleted file mode 100644
index ec9f3f73e..000000000
--- a/vid-webpack-master/src/app/shared/components/validators/numbersLettersUnderscore/numbersLettersUnderscore.validator.spec.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { ReflectiveInjector } from '@angular/core';
-import { NumbersLettersUnderscoreValidator } from './numbersLettersUnderscore.validator';
-
-describe('Numbers letters underscore validator', () => {
- let injector;
- let service: NumbersLettersUnderscoreValidator;
-
- beforeEach(() => {
-
- let injector = ReflectiveInjector.resolveAndCreate([
- NumbersLettersUnderscoreValidator
- ]);
-
- service = injector.get(NumbersLettersUnderscoreValidator);
- });
-
-
- describe('#valid', () => {
- it("'legal' should return null", ()=> {
- let legalVal: string = "legal";
- let result = NumbersLettersUnderscoreValidator.valid(legalVal);
- expect(result).toBeNull();
- });
-
- it("'illegal' should return object with invalidNumberLettersUnderscore true", ()=> {
- let illegalVal: string = "illegal-Val";
- let result = NumbersLettersUnderscoreValidator.valid(illegalVal);
- expect(result.invalidNumberLettersUnderscore).toBeTruthy();
- });
-
- it("'null' should return null", ()=> {
- let nullVal: string = null
- let result = NumbersLettersUnderscoreValidator.valid(nullVal);
- expect(result).toBeNull();
- });
-
-
- });
-});
diff --git a/vid-webpack-master/src/app/shared/components/validators/numbersLettersUnderscore/numbersLettersUnderscore.validator.ts b/vid-webpack-master/src/app/shared/components/validators/numbersLettersUnderscore/numbersLettersUnderscore.validator.ts
deleted file mode 100644
index 418bdfc4d..000000000
--- a/vid-webpack-master/src/app/shared/components/validators/numbersLettersUnderscore/numbersLettersUnderscore.validator.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Injectable } from '@angular/core';
-import { isNullOrUndefined, isString } from 'util';
-
-@Injectable()
-export class NumbersLettersUnderscoreValidator {
- static valid(control: any) {
- let reg = /^[a-zA-Z0-9_]*$/;
-
- if(isNullOrUndefined(control)) return null;
- let val = isString(control) ? control : control.value;
- if (val === null) {
- return {'invalidNumberLettersUnderscore': true};
- }
- if (reg.test(val)) {
- return null;
- } else {
- return {'invalidNumberLettersUnderscore': true};
- }
- }
-}