import { TranslateService } from '@ngx-translate/core';
import { APIURLHEADER, ERRORDATA, MODALCLOSERESPONSEDATA, URLPARAMS } from 'CommonModel';
import { environment } from 'environment';
-import { DF as NSDF, VNFPROFILE } from 'NSDModel';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
-import { isNullOrUndefined } from 'util';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { DF, SCALING, VNFD } from 'VNFDModel';
-
+import { InstanceData, VNFInstanceDetails } from 'VNFInstanceModel';
/**
* Creating component
* @Component takes ScalingComponent.html as template url
/** Contains the scaling group descriptor names @public */
public scalingGroup: {}[];
/** Member index of the NS @public */
- public memberVNFIndex: {}[];
+ public memberVNFIndex: {}[] = [];
+ /** Items for the memberVNFIndex @public */
+ public memberTypes: {}[];
/** handles the selected VNFID @public */
public selectedVNFID: string = '';
/** Items for the Scale Types @public */
public scalingForm: FormGroup;
/** Form valid on submit trigger @public */
public submitted: boolean = false;
+ /** Array holds VNFR Data filtered with nsr ID @private */
+ private nsIdFilteredData: {}[] = [];
/** FormBuilder instance added to the formBuilder @private */
private formBuilder: FormBuilder;
/** Instance of the rest service @private */
/** Get the member-vnf-index from NS Package -> vnf-profile @public */
public getmemberIndex(): void {
- if (this.params.nsd.df.length > 0) {
- const getconstituentVNFD: {}[] = [];
- this.params.nsd.df.forEach((data: NSDF): void => {
- data['vnf-profile'].forEach((vnfProfile: VNFPROFILE): void => {
- const assignMemberIndex: {} = {
- id: vnfProfile.id,
- name: vnfProfile['vnfd-id']
- };
- getconstituentVNFD.push(assignMemberIndex);
- });
+ this.isLoadingResults = true;
+ const vnfInstanceData: {}[] = [];
+ this.restService.getResource(environment.VNFINSTANCES_URL).subscribe((vnfInstancesData: VNFInstanceDetails[]): void => {
+ vnfInstancesData.forEach((vnfData: VNFInstanceDetails): void => {
+ const vnfdRef: string = 'vnfd-ref';
+ const memberIndex: string = 'member-vnf-index-ref';
+ const nsrId: string = 'nsr-id-ref';
+ const vnfId: string = 'vnfd-id';
+ const vnfDataObj: {} =
+ {
+ // eslint-disable-next-line security/detect-object-injection
+ VNFD: vnfData[vnfdRef],
+ VNFInstanceId: vnfData._id,
+ // eslint-disable-next-line security/detect-object-injection
+ MemberIndex: vnfData[memberIndex],
+ // eslint-disable-next-line security/detect-object-injection
+ NS: vnfData[nsrId],
+ // eslint-disable-next-line security/detect-object-injection
+ VNFID: vnfData[vnfId]
+ };
+ vnfInstanceData.push(vnfDataObj);
});
- this.memberVNFIndex = getconstituentVNFD;
- }
+ const nsId: string = 'NS';
+ // eslint-disable-next-line security/detect-object-injection
+ this.nsIdFilteredData = vnfInstanceData.filter((vnfdData: {}[]): boolean => vnfdData[nsId] === this.params.id);
+ this.nsIdFilteredData.forEach((resVNF: InstanceData): void => {
+ const assignMemberIndex: {} = {
+ id: resVNF.MemberIndex,
+ vnfinstanceId: resVNF.VNFInstanceId,
+ vnfdRef: resVNF.VNFD
+ };
+ this.memberVNFIndex.push(assignMemberIndex);
+ });
+ this.memberTypes = this.memberVNFIndex;
+ this.isLoadingResults = false;
+ }, (error: ERRORDATA): void => {
+ this.restService.handleError(error, 'get');
+ this.isLoadingResults = false;
+ });
}
/** Get the scaling-group-descriptor name @public */
this.getFormControl('scalingname').setValue(null);
const scalingGroupDescriptorName: SCALING[] = [];
if (!isNullOrUndefined(this.params.data)) {
- console.log(this.params.data);
const vnfdPackageDetails: VNFD = this.params.data.filter((vnfdData: VNFD): boolean => vnfdData.id === vnfID)[0];
if (vnfdPackageDetails.df.length > 0) {
vnfdPackageDetails.df.forEach((df: DF): void => {
};
this.restService.postResource(apiURLHeader, scalingPayload).subscribe((result: {}): void => {
this.activeModal.close(modalData);
- this.router.navigate(['/instances/ns/history-operations/' + this.params.id]).catch();
+ this.router.navigate(['/instances/ns/history-operations/' + this.params.id]).catch((): void => {
+ // Catch Navigation Error
+ });
}, (error: ERRORDATA): void => {
this.restService.handleError(error, 'post');
this.isLoadingResults = false;
/** Used to get the AbstractControl of controlName passed @private */
private getFormControl(controlName: string): AbstractControl {
+ // eslint-disable-next-line security/detect-object-injection
return this.scalingForm.controls[controlName];
}
}