Fix Bug 1988 - Drop down for action does not reflect what the deployed service can actually do
- If VNF is removed within an existing Network service, primitive action will not show the removed
VNF in dropdown only the available VNF will be shown in UI
Change-Id: I60648093ba63c6b962380898300e75d69bcbf409
Signed-off-by: SANDHYA.JS <sandhya.j@tataelxsi.co.in>
diff --git a/src/app/instances/ns-instances/NSInstancesComponent.ts b/src/app/instances/ns-instances/NSInstancesComponent.ts
index 7b81d91..c44fa9b 100644
--- a/src/app/instances/ns-instances/NSInstancesComponent.ts
+++ b/src/app/instances/ns-instances/NSInstancesComponent.ts
@@ -243,7 +243,8 @@
vnfID: nsdInstanceData['vnfd-id'],
nsd: nsdInstanceData.nsd,
'nsd-id': nsdInstanceData['nsd-id'],
- vcaStatus: nsdInstanceData.vcaStatus
+ vcaStatus: nsdInstanceData.vcaStatus,
+ constituent: nsdInstanceData['constituent-vnfr-ref']
};
this.nsInstanceData.push(nsDataObj);
});
diff --git a/src/app/instances/ns-primitive/NSPrimitiveComponent.html b/src/app/instances/ns-primitive/NSPrimitiveComponent.html
index 2f3c155..34b8a0e 100644
--- a/src/app/instances/ns-primitive/NSPrimitiveComponent.html
+++ b/src/app/instances/ns-primitive/NSPrimitiveComponent.html
@@ -33,7 +33,7 @@
<div class="form-group row" *ngIf="primitiveType === 'VNF_Primitive' || primitiveType === 'VDU_Primitive' || primitiveType === 'KDU_Primitive'">
<label class="col-sm-4 col-form-label">VNF Profile ID *</label>
<div class="col-sm-3">
- <ng-select (change)="indexChange($event, primitiveType)" [clearable]="false" placeholder="{{'SELECT' | translate}}" [items]="params.memberIndex[0]['vnf-profile']" bindLabel="id" bindValue="id" formControlName="member_vnf_index" id="member_vnf_index"
+ <ng-select (change)="indexChange($event, primitiveType)" [clearable]="false" placeholder="{{'SELECT' | translate}}" [items]="memberTypes" bindLabel="id" bindValue="id" formControlName="member_vnf_index" id="member_vnf_index"
[ngClass]="{ 'is-invalid': submitted && f.member_vnf_index.errors }"></ng-select>
</div>
</div>
diff --git a/src/app/instances/ns-primitive/NSPrimitiveComponent.ts b/src/app/instances/ns-primitive/NSPrimitiveComponent.ts
index c8b7fed..bcce057 100644
--- a/src/app/instances/ns-primitive/NSPrimitiveComponent.ts
+++ b/src/app/instances/ns-primitive/NSPrimitiveComponent.ts
@@ -32,6 +32,7 @@
import { SharedService } from 'SharedService';
import { isNullOrUndefined } from 'util';
import { CONFIGPRIMITIVE, DF, VDUCONFIG, VDUPROFILE, VNFCONFIG, VNFD } from 'VNFDModel';
+import { VNFInstanceDetails } from 'VNFInstanceModel';
/**
* Creating component
@@ -88,6 +89,15 @@
/** Contains list of KDU primitive lists @public */
public kduList: {}[];
+ /** Array holds MemberVNFIndex values @public */
+ public memberVnfIndex: {}[] = [];
+
+ /** Array holds VNFR Data filtered with nsr ID @public */
+ public nsIdFilteredData: {}[] = [];
+
+ /** Items for the memberVNFIndex data @public */
+ public memberTypes: {}[];
+
/** FormBuilder instance added to the formBuilder @private */
private formBuilder: FormBuilder;
@@ -151,6 +161,7 @@
this.nsdId = event.identifier;
}
});
+ this.getMemberVnfIndex();
this.initializeForm();
}
@@ -234,6 +245,36 @@
this.restService.handleError(error, 'post');
});
}
+ /** Getting MemberVnfIndex using VNFDescriptor API @public */
+ public getMemberVnfIndex(): void {
+ const vnfInstanceData: {}[] = [];
+ this.restService.getResource(environment.VNFINSTANCES_URL).subscribe((vnfInstancesData: VNFInstanceDetails[]): void => {
+ vnfInstancesData.forEach((vnfData: VNFInstanceDetails): void => {
+ const vnfDataObj: {} =
+ {
+ 'vnf-ref': vnfData['vnfd-ref'],
+ 'vnf-id': vnfData._id,
+ 'member-index': vnfData['member-vnf-index-ref']
+ };
+ vnfInstanceData.push(vnfDataObj);
+ });
+ for (const id of this.params.id) {
+ this.nsIdFilteredData = vnfInstanceData.filter((vnfdData: {}[]): boolean => vnfdData['vnf-id'] === id);
+ this.nsIdFilteredData.forEach((resVNF: {}[]): void => {
+ const assignMemberIndex: {} = {
+ id: resVNF['member-index'],
+ 'vnf-ref': resVNF['vnf-ref']
+ };
+ this.memberVnfIndex.push(assignMemberIndex);
+ });
+ }
+ this.memberTypes = this.memberVnfIndex;
+ this.isLoadingResults = false;
+ }, (error: ERRORDATA): void => {
+ this.restService.handleError(error, 'get');
+ this.isLoadingResults = false;
+ });
+ }
/** Primitive type change event @public */
public primitiveTypeChange(data: PRIMITIVETYPES): void {
this.primitiveList = [];
@@ -254,8 +295,8 @@
public indexChange(data: VNFPROFILE, getType?: string): void {
this.getFormControl('vdu_id').setValue(null);
this.getFormControl('kdu_name').setValue(null);
- if (data['vnfd-id'] !== null) {
- this.getVnfdInfo(data['vnfd-id'], getType);
+ if (data['vnf-ref'] !== null) {
+ this.getVnfdInfo(data['vnf-ref'], getType);
} else {
this.primitiveList = [];
this.getFormControl('primitive').setValue(null);
@@ -320,60 +361,60 @@
const apiUrl: string = environment.VNFPACKAGES_URL + '?id=' + vnfdRef;
this.isLoadingResults = true;
this.restService.getResource(apiUrl).subscribe((vnfdInfo: VNFD[]): void => {
- const vnfInstances: VNFD = vnfdInfo[0];
- if (!isNullOrUndefined(vnfInstances.df)) {
- this.getFormControl('vdu_id').setValidators([]);
- this.getFormControl('kdu_name').setValidators([]);
- vnfInstances.df.forEach((df: DF): void => {
- if (df['lcm-operations-configuration'] !== undefined) {
- if (df['lcm-operations-configuration']['operate-vnf-op-config'] !== undefined) {
- const day12Operation: VDUCONFIG[] = df['lcm-operations-configuration']['operate-vnf-op-config']['day1-2'];
- if (day12Operation !== undefined) {
- const vnfprimitiveList: VNFCONFIG = day12Operation
- .filter((itemData: VNFCONFIG): boolean => itemData.id === vnfInstances.id)[0];
- if (vnfprimitiveList !== undefined) {
- this.primitiveList = vnfprimitiveList['config-primitive'];
- }
- /** VDU Primitive */
- if (getType === 'VDU_Primitive') {
- this.kduList = [];
- this.vduList = [];
- this.primitiveList = [];
- df['vdu-profile'].forEach((vduProfile: VDUPROFILE): void => {
+ const vnfInstances: VNFD = vnfdInfo[0];
+ if (!isNullOrUndefined(vnfInstances.df)) {
+ this.getFormControl('vdu_id').setValidators([]);
+ this.getFormControl('kdu_name').setValidators([]);
+ vnfInstances.df.forEach((df: DF): void => {
+ if (df['lcm-operations-configuration'] !== undefined) {
+ if (df['lcm-operations-configuration']['operate-vnf-op-config'] !== undefined) {
+ const day12Operation: VDUCONFIG[] = df['lcm-operations-configuration']['operate-vnf-op-config']['day1-2'];
+ if (day12Operation !== undefined) {
+ const vnfprimitiveList: VNFCONFIG = day12Operation
+ .filter((itemData: VNFCONFIG): boolean => itemData.id === vnfInstances.id)[0];
+ if (vnfprimitiveList !== undefined) {
+ this.primitiveList = vnfprimitiveList['config-primitive'];
+ }
+ /** VDU Primitive */
+ if (getType === 'VDU_Primitive') {
+ this.kduList = [];
+ this.vduList = [];
+ this.primitiveList = [];
+ df['vdu-profile'].forEach((vduProfile: VDUPROFILE): void => {
+ day12Operation.forEach((element: VDUCONFIG): void => {
+ if (element.id === vduProfile.id) {
+ const vduDataObj: VDUPROFILE = this.generateVDUData(element);
+ this.vduList.push(vduDataObj);
+ }
+ });
+ });
+ }
+ /** KDU Primitive */
+ if (getType === 'KDU_Primitive') {
+ this.kduList = [];
+ this.vduList = [];
+ this.primitiveList = [];
+ if (!isNullOrUndefined(vnfInstances.kdu)) {
+ vnfInstances.kdu.forEach((kduData: KDUPRIMITIVELEVEL): void => {
day12Operation.forEach((element: VDUCONFIG): void => {
- if (element.id === vduProfile.id){
- const vduDataObj: VDUPROFILE = this.generateVDUData(element);
- this.vduList.push(vduDataObj);
+ if (element.id === kduData.name) {
+ const kduDataObj: KDUPRIMITIVELEVEL = this.generateKDUData(kduData, element);
+ this.kduList.push(kduDataObj);
}
});
});
}
- /** KDU Primitive */
- if (getType === 'KDU_Primitive') {
- this.kduList = [];
- this.vduList = [];
- this.primitiveList = [];
- if (!isNullOrUndefined(vnfInstances.kdu)) {
- vnfInstances.kdu.forEach((kduData: KDUPRIMITIVELEVEL): void => {
- day12Operation.forEach((element: VDUCONFIG): void => {
- if (element.id === kduData.name){
- const kduDataObj: KDUPRIMITIVELEVEL = this.generateKDUData(kduData, element);
- this.kduList.push(kduDataObj);
- }
- });
- });
- }
- }
}
}
}
- });
- }
- this.isLoadingResults = false;
- }, (error: ERRORDATA): void => {
- this.isLoadingResults = false;
- this.restService.handleError(error, 'get');
- });
+ }
+ });
+ }
+ this.isLoadingResults = false;
+ }, (error: ERRORDATA): void => {
+ this.isLoadingResults = false;
+ this.restService.handleError(error, 'get');
+ });
}
/** Get primivitive actions from NSD data */
private getNSInfo(nsdRef: string): void {
diff --git a/src/app/utilities/ns-instances-action/NSInstancesActionComponent.ts b/src/app/utilities/ns-instances-action/NSInstancesActionComponent.ts
index 751389b..5f9d5e3 100644
--- a/src/app/utilities/ns-instances-action/NSInstancesActionComponent.ts
+++ b/src/app/utilities/ns-instances-action/NSInstancesActionComponent.ts
@@ -170,7 +170,8 @@
this.modalService.open(NSPrimitiveComponent, { backdrop: 'static' }).componentInstance.params = {
memberIndex: this.value.memberIndex,
nsConfig: this.value.nsConfig,
- name: this.value.NsdName
+ name: this.value.NsdName,
+ id: this.value.constituent
};
}
diff --git a/src/models/NSInstanceModel.ts b/src/models/NSInstanceModel.ts
index c10c5ce..66294cf 100644
--- a/src/models/NSInstanceModel.ts
+++ b/src/models/NSInstanceModel.ts
@@ -267,6 +267,7 @@
nsd?: NSD;
operationParams?: OPERATIONPARAMS;
'nsd-id': string;
+ constituent: string[];
}
/** Interface for the operationparams */