diff options
Diffstat (limited to 'src/app')
5 files changed, 930 insertions, 287 deletions
diff --git a/src/app/about-us/appVersion.json b/src/app/about-us/appVersion.json index 5972822..9e9f709 100644 --- a/src/app/about-us/appVersion.json +++ b/src/app/about-us/appVersion.json @@ -1,4 +1,4 @@ { - "versionNo": "2.0.7", + "versionNo": "1.0.0", "releaseName": "1806" }
\ No newline at end of file diff --git a/src/app/about-us/versionLog.txt b/src/app/about-us/versionLog.txt index af9808a..56abe31 100644 --- a/src/app/about-us/versionLog.txt +++ b/src/app/about-us/versionLog.txt @@ -1,104 +1,3 @@ -Version 2.0.7 -=========================================================== -1. Fixed issues raised by ST in test screen. -2. Added few test cases to increase code coverage. - -Version 2.0.6 -=========================================================== -1. Fixed issues raised by ST in test screen. -2. Added test spec file - -Version 2.0.5 -=========================================================== -1. Changed the location of Assign new Template Identifier. -2. Fixed an issue with retaining the selected value in the dropdown for Template Id's. -3. Added Artifact Name to the Filter box. -4. Added empty value validations on create new VNF pop up box. - -Version 2.0.4 -=========================================================== -1. Added test cases to golden configuration spec file -2. Fixed defect in test screen regarding request id while polling using getTestResponse method -3. Added validation to template configuration tab for accepting only xml and json files -4. Added validation to param values tab to accept only json files - -Version 2.0.3 -=========================================================== -1. Fixed E2E defect 430809 in 1802 : Space is not getting ignored in param configure artifact - generated by CDT tool if VNF name / vnfc - type has spaces - -Version 2.0.2 -=========================================================== -1. Added Licence Info to Reference Data Screen. -2. Added Config ScaleOut Action and Template Identifiers to the Reference screen. -3. resolved a defect where the configscale out file uploaded doesnt populate the template is dropdown. - -Version 2.0.1 -=========================================================== -1. Added Licence Info to golden config/ My VNF and other modules for ONAP- Only Reference Page remaining. -2. Added Test screen to the main menu. -3. Created HTML for Test Screen and integrated ts code. - -Version 2.0.0 -=========================================================== -1. 18/06 Major release. - -Version 1.1.1 -=========================================================== -1. Defect 416768 Block Name should not be merged. Do not allow a merge with a value that double quotes around it, possibly a space and a colon at the end. -2. Populating PD using name/value pairs when Uploading key file. - -Version 1.1.0 -=========================================================== -1. Added functionality for entering names in template through modal. -2. Enabled test screen and added basic test functionality. - -Version 1.0.9 -=========================================================== -1. Allow user to upload of Key Data Files multiple times. -2. Removing INSTAR and its properties using key file. - -Version 1.0.8 -=========================================================== -1. Changed the color code for merge successful/ unsuccessful messages. - -Version 1.0.7 -=========================================================== -1. Fixed defect in reference screen where previous vm actions where not getting replaced on uploading the new ones. - -Version 1.0.6 -=========================================================== -1. Fixed defect 396019- Added functionality for syncing template from parameters. - -Version 1.0.5 -=========================================================== -1. Fixed protocol field while uploading reference artifact file for OpenStack Actions. - -Version 1.0.4 -=========================================================== -1. Fixed defect: Changed artifact-list to [] and vnfc-type to null in case of reference artifact generated for OpenStack Actions. - -Version 1.0.3 -=========================================================== -1. Fix for Defect#399542 Merge from Params should not Merge the commented section of the base template ( CDT Version : 1.2.1). -2. Fix for Defect#402786 While changing back to Manual from other sources, other fields is not return to previous. -3. With some minor ST issues on PD source, ruletype manipulation. - -Version 1.0.2 -=========================================================== -1. Added functionality for hiding template and PD tabs on selection of OpenStack Actions in reference screen -2. Fixed ST defect raised by Ed, wherein the user autoretrieves refrence data with multiple actions from myvnfs, - comes to reference screen, and navigates to template and pd pages and comes back to reference page, the data for the - multiple actions are saving and retrieving correctly now. - -Version 1.0.1 -=========================================================== -Story#330094 - Fixed the defects and left over tasks from this story. - 1. Source Manual/INSTAR/A&AI selection handled properly. - 2. Disabling INSTAR to avoid manual selection of INSTAR. - 3. "" empty quates in PD file when we select empty value in dropdowns. - 4. Retrieval of A&AI, ruletype, filter columns. - Version 1.0.0(18/02 Release) ========================================================== diff --git a/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.html b/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.html index d38620a..7fcb9df 100644 --- a/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.html +++ b/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.html @@ -22,36 +22,31 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. --> <simple-notifications [options]="options"></simple-notifications> -<ng-progress [positionUsing]="'marginLeft'" [minimum]="0.15" [maximum]="1" [speed]="200" [showSpinner]="false" [direction]="'leftToRightIncreased'" [color]="'#6ab344'" - [trickleSpeed]="250" [thick]="true" [ease]="'linear'"></ng-progress> +<ng-progress [positionUsing]="'marginLeft'" [minimum]="0.15" [maximum]="1" [speed]="200" [showSpinner]="false" [direction]="'leftToRightIncreased'" [color]="'#6ab344'" [trickleSpeed]="250" [thick]="true" [ease]="'linear'"></ng-progress> <form class="" novalidate #userForm="ngForm" (ngSubmit)="save(userForm.value,userForm.valid)"> <div class="card"> - <div class="card-block" style=" border-top: 5px solid #6ab344; border-top-right-radius: 7px;border-top-left-radius: 7px;"> <div class="row" style="padding: 15px 25px"> <div class="col-lg-3 col-sm-6 col-md-3 col-xs-12"> <label>Action*</label> - <select class="form-control" required id="cmbAction" [(ngModel)]="referenceDataObject.action" (ngModelChange)="updateSessionValues($event,'action');actionChange($event,content,userForm);" - #action="ngModel" name="action"> + <select class="form-control" required id="cmbAction" [(ngModel)]="referenceDataObject.action" (ngModelChange)="updateSessionValues($event,'action');actionChange($event,content,userForm);" #action="ngModel" name="action"> <option [value]="actionType" [ngClass]="{'selectedAction':selectedActions.indexOf(actionType)>-1}" [selected]="referenceDataObject.action===actionType" *ngFor="let actionType of actions ">{{actionType}} </option> </select> - </div> <div class="col-lg-3 col-sm-6 col-md-3 col-xs-12"> <label>VNF Type* </label> - <input type="text" [readonly]="updateParams !='undefined' || vnfParams?.vnfType " class="form-control" id="txtVnfType" required [(ngModel)]="referenceDataObject['scope']['vnf-type']" - (ngModelChange)="updateSessionValues($event,'vnfType')" #vnftype="ngModel" name="vnftype"> + <input type="text" [readonly]="updateParams !='undefined' || vnfParams?.vnfType " class="form-control" id="txtVnfType" required [(ngModel)]="referenceDataObject['scope']['vnf-type']" (ngModelChange)="updateSessionValues($event,'vnfType')" #vnftype="ngModel" + name="vnftype"> <span class="error-message" [hidden]="vnfParams?.vnfType || vnftype.valid || (vnftype.pristine && !userForm.submitted)">Required Field</span> </div> <div class="col-lg-3 col-sm-6 col-md-3 col-xs-12"> <label>VNFC Type</label> - <input type="text" class="form-control" [disabled]="nonConfigureAction || updateParams !='undefined' || vnfParams?.vnfType" id="txtVnfcType" [(ngModel)]="referenceDataObject.scope['vnfc-type']" - (blur)="setVnfcType($event.target.value)" (ngModelChange)="updateSessionValues($event,'vnfcType')" #vnfcType="ngModel" name="vnfcType" - disabled="disabled"> + <input type="text" class="form-control" [disabled]="nonConfigureAction || updateParams !='undefined' || vnfParams?.vnfType" id="txtVnfcType" [(ngModel)]="referenceDataObject.scope['vnfc-type']" (blur)="setVnfcType($event.target.value)" (ngModelChange)="updateSessionValues($event,'vnfcType')" + #vnfcType="ngModel" name="vnfcType" disabled="disabled"> </div> <div class="col-lg-3 col-sm-6 col-md-3 col-xs-12"> <label>Device Protocol*</label> @@ -60,9 +55,8 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. *ngFor="let device of deviceProtocols">{{device}} </option> </select> - </div> - <div class="col-lg-3 col-sm-6 col-md-3 col-xs-12" *ngIf="referenceDataObject['action']== 'ConfigScaleOut'"> + <div class="col-lg-3 col-sm-6 col-md-3 col-xs-12" *ngIf="isConfigScaleOut"> <label>Template Identifier</label> <select class="form-control" required id="tempIdentifier" (ngModelChange)="dataModified()" [(ngModel)]="templateIdentifier" #deviceProtocol="ngModel" name="templateIdentifier"> <option [value]="val" *ngFor="let val of referenceDataObject['template-id-list']">{{val}} @@ -90,8 +84,7 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. <div class="input-group"> <input id="excelInputFile" #myInput1 class="file" type="file" (change)="upload($event)"> <input [(ngModel)]="uploadFileName" type="text" class="input-lg" disabled placeholder="Upload VM Capabilities File" name="uploadFileName" style="width:80%"> - <button (click)="excelBrowseOption($event)" class="browse mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary input-lg" - type="button">Upload VM Capabilities File + <button (click)="excelBrowseOption($event)" class="browse mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary input-lg" type="button">Upload VM Capabilities File </button> </div> </div> @@ -131,11 +124,10 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. </div> <div *ngIf="actionHealthCheck && referenceDataObject['device-protocol'] =='REST' " class="col-lg-3 col-sm-6 col-md-3 col-xs-12"> <label>Context Url</label> - <input type="text" class="form-control" id="txtIpaddress" [(ngModel)]="referenceDataObject['context-url']" name="portNumber"> + <input type="text" class="form-control" id="txtIpaddress" [(ngModel)]="referenceDataObject['url']" name="contextUrl"> </div> </div> - <div class="card-block" *ngIf="(referenceDataObject.action =='ConfigScaleOut' || referenceDataObject.action =='Configure'|| referenceDataObject.action =='' || referenceDataObject.action ==undefined)" - style="border-top: 5px solid #6ab344;border-top-right-radius: 7px;border-top-left-radius: 7px;"> + <div class="card-block" *ngIf="(referenceDataObject.action =='ConfigScaleOut' || referenceDataObject.action =='Configure'|| referenceDataObject.action =='' || referenceDataObject.action ==undefined)" style="border-top: 5px solid #6ab344;border-top-right-radius: 7px;border-top-left-radius: 7px;"> <div class="col-12"> <h5 style="margin-top: 0.5rem;font-family: Roboto"> VNFC Information <span class="pull-right"> @@ -164,13 +156,13 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. </div> <div class="col-lg-2 col-sm-6 col-md-2 col-xs-12"> <label style="font-size:12px;">Group Notation Type</label> - <select class="form-control" id="cmbGroupType" [(ngModel)]="Sample['group-notation-type']" name="sampleGroupNotation"> + <select class="form-control" id="cmbGroupType" [(ngModel)]="Sample['group-notation-type']" name="sampleGroupNotation" (change)="resetGroupNotation()"> <option [value]="type" *ngFor="let type of groupAnotationType">{{type}}</option> </select> </div> <div class="col-lg-2 col-sm-6 col-md-2 col-xs-12"> <label style="font-size:12px;">Group Notation Value</label> - <input type="text" class="form-control" id="txtGroupValue" [(ngModel)]="Sample['group-notation-value']" name="sampleGroupValue"> + <input type="text" class="form-control" [readonly]="disableGrpNotationValue" id="txtGroupValue" [(ngModel)]="Sample['group-notation-value']" name="sampleGroupValue"> </div> <div class="col-lg-2 col-sm-6 col-md-2 col-xs-12"> <button type="button" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent clear-btn" (click)="clearVnfcData()">Clear VNFC Info @@ -184,22 +176,19 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. </div> <div class="col-lg-5 col-md-5 col-sm-6 col-xs-6"> <div class="form-group"> - <input type="text" placeholder="Number of VM(s)" class="form-control" id="txtVmnumber22" [(ngModel)]="refernceScopeObj.from" (ngModelChange)="numberValidation($event)" - name="txtNumber23"> + <input type="text" placeholder="Number of VM(s)" class="form-control" id="txtVmnumber22" [(ngModel)]="refernceScopeObj.from" (ngModelChange)="numberValidation($event)" name="txtNumber23"> </div> </div> <div class="col-lg-5 col-md-5 col-sm-6 col-xs-6 text-right"> <div class="form-group"> - <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="button" [disabled]="!refernceScopeObj.from || !numberOfVmTest" - (click)="addVms()">Add VM Information + <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="button" [disabled]="!refernceScopeObj.from || !numberOfVmTest" (click)="addVms()">Add VM Information </button> </div> </div> </div> <div *ngIf="referenceDataObject.vm?.length>0"> <div class="row" *ngFor="let noOfvm of referenceDataObject.vm | vmFiltering:referenceDataObject?.action:templateIdentifier; let j=index"> - <div *ngIf="((referenceDataObject.action =='ConfigScaleOut' || referenceDataObject.action =='Configure'|| referenceDataObject.action =='' || referenceDataObject.action ==undefined ))" - class="col-12"> + <div *ngIf="((referenceDataObject.action =='ConfigScaleOut' || referenceDataObject.action =='Configure'|| referenceDataObject.action =='' || referenceDataObject.action ==undefined ))" class="col-12"> <div class="row" *ngFor="let item of noOfvm.vnfc; let i=index"> <div class="col-md-12" *ngIf="i==0"> <h5 class="headlinesInBold">VM Number: {{j+1}}</h5> @@ -319,7 +308,7 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property. <div class="modal-body"> <div> <div> - <input name="test" type="text" class="" [(ngModel)]="templateId" placeholder="identifier"> + <input pattern=".*[^ ].*" name="test" type="text" class="" [(ngModel)]="templateId" placeholder="identifier"> </div> <div> <button style="padding: 10px" class="btn btn-primary" data-dismiss="modal" (click)="addToIdentDrp()">submit diff --git a/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.spec.ts b/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.spec.ts index 67ba8f5..1570e9c 100644 --- a/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.spec.ts +++ b/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.spec.ts @@ -20,48 +20,821 @@ limitations under the License. ECOMP is a trademark and service mark of AT&T Intellectual Property. ============LICENSE_END============================================ */ - /* tslint:disable:no-unused-variable */ -import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {ComponentFixture, TestBed, async, inject} from '@angular/core/testing'; +import {Http, Response, ResponseOptions, XHRBackend} from '@angular/http'; +import {BuildDesignComponent} from '../build-artifacts.component'; +import {DialogService} from 'ng2-bootstrap-modal'; +import {FormsModule} from '@angular/forms'; +import {HttpModule} from '@angular/http'; +import {HttpUtilService} from '../../../shared/services/httpUtil/http-util.service'; +import {MappingEditorService} from '../../..//shared/services/mapping-editor.service'; import {NO_ERRORS_SCHEMA} from '@angular/core'; +import {NgModule} from '@angular/core'; +import {NgProgress} from 'ngx-progressbar'; +import {NgbModule} from '@ng-bootstrap/ng-bootstrap'; +import {NotificationService} from '../../../shared/services/notification.service'; +import {Observable} from 'rxjs/Observable'; +import {ParamShareService} from '../../..//shared/services/paramShare.service'; import {ReferenceDataformComponent} from './reference-dataform.component'; -import {FormsModule} from '@angular/forms'; -import { NotificationService } from '../../../shared/services/notification.service'; -import { ParamShareService } from '../../..//shared/services/paramShare.service'; -import { MappingEditorService } from '../../..//shared/services/mapping-editor.service'; -import {DialogService} from 'ng2-bootstrap-modal'; import {RouterTestingModule} from '@angular/router/testing'; -import { HttpUtilService } from '../../../shared/services/httpUtil/http-util.service'; -import { NgModule } from '@angular/core'; -import { NgProgress } from 'ngx-progressbar'; -import { HttpModule } from '@angular/http'; -import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; -import { SharedModule } from '../../../shared/shared.module'; - +import {SharedModule} from '../../../shared/shared.module'; +import {environment} from '../../../../environments/environment'; describe('ReferenceDataformComponent', () => { - let component: ReferenceDataformComponent; - let fixture: ComponentFixture<ReferenceDataformComponent>; - + let component : ReferenceDataformComponent; + let fixture : ComponentFixture < ReferenceDataformComponent >; + let service : MockMappingService; + + let httpMock : HttpUtilService + //mockingthe data for mappingEditorService + + class HttpMock { + post(req) { + if(req.url==""){ + + return Observable.of({ + output: { + data: {block:'{"artifactInfo": [ {"artifact-content": "{"reference_data": [{ "action": "Configure","scopeType":"tetsScope"}] }" } ]}'}, + status:{code:"400",message:"success"} + } + }) + } } + } + class MockMappingService { + public latestAction; // = {"action":"Configure"} + appDataObject= { reference: {}, template: { templateData: {}, nameValueData: {} }, pd: {} }; + downloadDataObject={reference: {}, + template: { templateData: {}, nameValueData: {}, templateFileName: '', nameValueFileName: '' }, + pd: { pdData: '', pdFileName: '' }} + referenceNameObjects = [ + { + action: "Configure" + }, { + action: "StartApplication" + } + ] + + setTemplateMappingDataFromStore(data){ + return "test" + } + getReferenceList() { + return ["test data"] + } + changeNav() { + return "test data" + } + setParamContent(data){ + return "test" + } + setSessionParamData(data){ + return "test" + } + + saveLatestAction() {} + saveLatestIdentifier() {} + changeNavDownloadData() {} + changeNavAppData() {} + } + class MockreferenceDataObject {} beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ReferenceDataformComponent], schemas: [NO_ERRORS_SCHEMA], - imports: [FormsModule, RouterTestingModule,HttpModule,NgbModule.forRoot()], - providers: [NgProgress, ParamShareService, DialogService, NotificationService, HttpUtilService, MappingEditorService] - - }) - .compileComponents(); - })); + imports: [ + + FormsModule, RouterTestingModule, HttpModule, NgbModule.forRoot(), + SharedModule.forRoot() + ], + providers: [ + BuildDesignComponent, { + provide: MappingEditorService, + useClass: MockMappingService + }, + ParamShareService, + DialogService, + NotificationService, { + provide: HttpUtilService, + useClass: HttpMock + } + ] + }).compileComponents(); + })); beforeEach(() => { fixture = TestBed.createComponent(ReferenceDataformComponent); component = fixture.componentInstance; + // component = new ReferenceDataformComponent(service) fixture.detectChanges(); + service = TestBed.get(MappingEditorService) + httpMock = TestBed.get(HttpUtilService) + sessionStorage.setItem('vnfParams',JSON.stringify({vnfType:"test",vnfcType:"testVnfcType"})); + // component = new ReferenceDataformComponent(service) + }); + it('should create reference component', () => { + expect(component).toBeTruthy(); }); + it('Should load data from mapping sevice', () => { + component.ngOnInit() + expect(component.tempAllData.length).toBe(2) + }) + it('testing init method', () => { + component.ngOnInit() + expect(component.tempAllData.length).toBe(2) + }) + + it("should set app data from service", ()=>{ + component.ngOnInit() + expect(component.appData).not.toBe(undefined) + }) + it("should set download from service", ()=>{ + component.ngOnInit() + expect(component.downloadData).not.toBe(undefined) + }) + it('Should reset form', () => { + component.resetForm() + expect(component.referenceDataObject['device-protocol']).toBe('') + expect(component.referenceDataObject['action-level']).toBe('vnf') + expect(component.referenceDataObject.template).toBe('Y') + expect(component.referenceDataObject['user-name']).toBe('') + expect(component.Sample['vnfc-type']).toBe('') + expect(component.refernceScopeObj.sourceType).toBe('') + expect(component.referenceDataObject['port-number']).toBe('') + }) + it("prepare reference method at vnf level", () => { + + component.referenceDataObject = { + action: 'Configure', + 'action-level': 'vnf', + scope: { + 'vnf-type': '', + 'vnfc-type': '' + }, + 'template': 'Y', + vm: [], + 'device-protocol': '', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + } + component.prepareReferenceObject(); + expect(component.referenceDataObject['action-level']).toBe("vnf") + }) + + it("prepare reference method at vnf level", () => { + + component.referenceDataObject = { + action: 'Configure', + 'action-level': 'vnf', + scope: { + 'vnf-type': '123', + 'vnfc-type': '346' + }, + 'template': 'Y', + vm: [], + 'device-protocol': '', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + } + + component.prepareReferenceObject(); + expect(component.referenceDataObject['action-level']).toBe("vnfc") + }) + + it("prepare reference method at vnf and vnfc level", () => { + + component.referenceDataObject = { + action: 'starttApplication', + 'action-level': 'vnf', + scope: { + 'vnf-type': '123', + 'vnfc-type': '346' + }, + 'template': 'Y', + vm: [], + 'device-protocol': 'ANSIBLE', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + } + component.prepareReferenceObject(); + + expect(component.referenceDataObject['action-level']).toBe("vnf") + }) + //deviceprotocols netconf + it("prepare reference method testing with netconf", () => { + + component.referenceDataObject = { + action: 'starttApplication', + 'action-level': 'vnf', + scope: { + 'vnf-type': '123', + 'vnfc-type': '346' + }, + 'template': 'Y', + vm: [], + 'device-protocol': 'NETCONF-XML', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + } + + component.prepareReferenceObject(); + expect(component.referenceDataObject['action-level']).toBe("vnf") + }) + //template id list + it("prepare reference method at template id list", () => { + + component.referenceDataObject = { + action: 'ConfigScaleOut', + 'action-level': 'vnf', + scope: { + 'vnf-type': '123', + 'vnfc-type': '346' + }, + 'template': 'Y', + vm: [], + 'device-protocol': 'NETCONF-XML', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + + } + + component.referenceDataObject['template-id-list'] = ['id1', 'id2'] + + component.prepareReferenceObject(); + + expect(component.referenceDataObject['action-level']).toBe("vnf") + }) + it("prepare reference method at vnfc level", () => { + + component.referenceDataObject = { + action: 'startApplication', + 'action-level': 'vnfc', + scope: { + 'vnf-type': '', + 'vnfc-type': '' + }, + 'template': 'Y', + vm: [], + 'device-protocol': '', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + } + component.prepareReferenceObject(); + expect(component.referenceDataObject['action-level']).toBe("vnf") + }) + it("prepare reference method at vnf level", () => { + + component.referenceDataObject = { + action: 'ConfigScaleOut', + 'action-level': 'vnf', + scope: { + 'vnf-type': '', + 'vnfc-type': '' + }, + 'template': 'Y', + vm: [], + 'device-protocol': '', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + } + component.prepareReferenceObject(); + expect(component.referenceDataObject['action-level']).toBe("vnf") + }) it('should create reference component', () => { + expect(component).toBeTruthy(); }); + it('configscaleout test', () => { + service.latestAction = { + action: 'ConfigScaleOut', + 'action-level': 'vnf', + scope: { + 'vnf-type': '', + 'vnfc-type': '' + }, + 'template': 'Y', + vm: [], + 'device-protocol': '', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + } + service.referenceNameObjects = [ + { + action: "Configure" + }, { + action: "StartApplication" + } + ] + component.ngOnInit() + expect(component.referenceDataObject.action).toBe("ConfigScaleOut"); + + }); + + it('shoud add vms with template id when the acti0on is configscaleout ', () => { + component.referenceDataObject = { + action: 'ConfigScaleOut', + 'action-level': 'vnf', + scope: { + 'vnf-type': '', + 'vnfc-type': '' + }, + 'template': 'Y', + vm: [ + { + vnfc: [ + { + test: "123" + } + ] + + } + ], + 'device-protocol': '', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + } + + component.refernceScopeObj.from = "3" + // let arr = [1, 2]; + component.addVms() + expect(component.referenceDataObject.vm.length).toBe(4); + }); + it('shoud add vms with template id when the action is not configscaleout', () => { + component.referenceDataObject = { + action: 'Config', + 'action-level': 'vnf', + scope: { + 'vnf-type': '', + 'vnfc-type': '' + }, + 'template': 'Y', + vm: [ + { + vnfc: [ + { + test: "123" + } + ] + + } + ], + 'device-protocol': '', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + } + + component.refernceScopeObj.from = "3" + // let arr = [1, 2]; + component.addVms() + expect(component.referenceDataObject.vm[0]['template-id']).toBe(undefined); + }); + + it('testing ngdestroy', () => { + this.uploadFileName = 'testing' + component.ngOnDestroy() + expect(component.uploadedDataArray.length).toBe(0); + expect(component.uploadFileName).toBe(''); + }); + it('should validate numbers', () => { + + component.numberValidation(1) + expect(component.numberOfVmTest).toBe(true); + + }); + + it('should validate numbers if input is string', () => { + + component.numberValidation('test') + expect(component.numberOfVmTest).toBe(false); + + }); + + it('testing check if elements exixts in an array', () => { + + let x = component.checkIfelementExistsInArray(2, [1, 2, 3]) + expect(x).toBeTruthy(); + }); + + it('should set action in session if type is action', () => { + + component.updateSessionValues("test event for action", "action") + + expect(sessionStorage.getItem('action')).toBe('test event for action'); + }); + it('should set action in session if type is vnfType', () => { + + component.updateSessionValues("test event for vnfType", "vnfType") + + expect(sessionStorage.getItem('vnfType')).toBe('test event for vnfType'); + }); + + it('should add vnfs on to reference Object ', () => { + + component.referenceDataObject = { + action: '', + 'action-level': 'vnf', + scope: { + 'vnf-type': '', + 'vnfc-type': '' + }, + 'template': 'Y', + vm: [ + { + vnfc: [ + { + test: "123" + } + ] + + } + ], + 'device-protocol': '', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + }; + + component.addVnfcData(0) + + expect(component.referenceDataObject.vm[0].vnfc.length).toBe(2); + }); + + it("should remove feature from the reference object ", () => { + component.referenceDataObject = { + action: '', + 'action-level': 'vnf', + scope: { + 'vnf-type': '', + 'vnfc-type': '' + }, + 'template': 'Y', + vm: [ + { + vnfc: [ + { + test: "123" + } + ] + + }, { + vnfc: [ + { + test: "123" + } + ] + + } + ], + 'device-protocol': '', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + }; + + component.removeFeature(0, 0) + + expect(component.referenceDataObject.vm.length).toBe(1) + }) + + it("should add capabilities", () => { + component.uploadedDataArray = [ + ['y', 'n'] + ] + component.addVmCapabilitiesData() + + expect(component.tempAllData.length).toBe(3) + }) + it("should add capabilities", () => { + service.latestAction = { + action: 'OpenStack Actions', + 'action-level': 'vnf', + scope: { + 'vnf-type': '', + 'vnfc-type': '' + }, + 'template': 'Y', + vm: [], + 'device-protocol': '', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + } + service.referenceNameObjects = [ + { + action: "Configure" + }, { + action: "StartApplication" + } + ] + + component.prepareReferenceObject(); + + expect(component.referenceDataObject['action-level']).toBe("vnf") + }) + + it("should add capabilities", () => { + service.latestAction = { + action: 'OpenStack Actions', + 'action-level': 'vnf', + scope: { + 'vnf-type': '', + 'vnfc-type': '' + }, + 'template': 'Y', + vm: [], + 'device-protocol': '', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + } + + component.referenceDataObject.action="OpenStack Actions" + service.referenceNameObjects = [ + { + action: "Configure" + }, { + action: "StartApplication" + } + ] + + component.prepareReferenceObject(); + + expect(component.referenceDataObject['action-level']).toBe("vnf") + }) + + it("should switch vms if action is configscaleout", () => { + + component.currentAction = "ConfigScaleOut" + service.latestAction = { + action: 'OpenStack Actions', + 'action-level': 'vnf', + scope: { + 'vnf-type': '', + 'vnfc-type': '' + }, + 'template': 'Y', + vm: [], + 'device-protocol': '', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + } + service.referenceNameObjects = [ + { + action: "Configure" + }, { + action: "StartApplication" + } + ] + + component.tempAllData = [ + { + action: "ConfigScaleOut", + vm: [{}, {}] + } + ] + + component.prepareReferenceObject(); + + expect(component.referenceDataObject.vm.length).toBe(2) + }) + it("should switch vms if action is configscaleout", () => { + + component.currentAction = "ConfigScaleOut" + service.latestAction = { + action: 'OpenStack Actions', + 'action-level': 'vnf', + scope: { + 'vnf-type': '', + 'vnfc-type': '' + }, + 'template': 'Y', + vm: [], + 'device-protocol': '', + 'user-name': '', + 'port-number': '', + 'artifact-list': [] + } + service.referenceNameObjects = [ + { + action: "Configure" + }, { + action: "StartApplication" + } + ] + + component.tempAllData = [ + { + action: "startAplicaton" + } + ] + + component.prepareReferenceObject(); + + expect(component.referenceDataObject.vm.length).toBe(0) + }) + it('shoud show template identifier when action is config scaleout', () => { + let data = 'ConfigScaleOut' + component.toggleIdentifier(data) + expect(component.isConfigScaleOut).toBe(true); + }); + it('shoud show template identifier when action is config scaleout', () => { + let data = 'startApplication' + component.toggleIdentifier(data) + expect(component.isConfigScaleOut).toBe(false); + }); + + it('Should call get artifact', () => { + + service.referenceNameObjects = undefined + component.ngOnInit() + expect(component.tempAllData.length).toBe(2) + }) + + it('Should call get artifact', () => { + sessionStorage.setItem('updateParams', JSON.stringify({vnf: 123, userID: 'testUser'})) + component.getArtifact() + expect(component.tempAllData.length).toBe(2) + }) + + it('Save file - should not process if action is null ', () => { + component.referenceDataObject.action ="" + let fileSaved = component.save({},true) + expect(fileSaved).toBe(undefined) + }) + it('Save file - should not process if device protocol is null ', () => { + component.referenceDataObject['device-protocol'] ="" + let fileSaved = component.save({},true) + expect(fileSaved).toBe(undefined) + }) + it('Save file - should not process if device protocol is null ', () => { + component.referenceDataObject.action ="Configure" + component.referenceDataObject['device-protocol'] ="test" + let fileSaved = component.save({},true) + //expect(fileSaved).toBe(undefined) + }) + + it('Save to appc file - should not process if action is null ', () => { + component.referenceDataObject.action ="" + let fileSaved = component.saveToAppc(true,{}) + expect(fileSaved).toBe(undefined) + }) + it('Save to app cfile - should not process if device protocol is null ', () => { + component.referenceDataObject['device-protocol'] ="" + let fileSaved = component.saveToAppc(true,{}) + expect(fileSaved).toBe(undefined) + }) + it('Save to appc file - should not process if device protocol is null ', () => { + component.referenceDataObject.action ="Configure" + component.referenceDataObject['device-protocol'] ="test" + let fileSaved = component.saveToAppc(true,{}) + //expect(fileSaved).toBe(undefined) + }) + + // it('uploadfile ', () => { + + // let files = { 0: {name:'foo.XLS', size: 500001} }; + // var mockEVet = { + // target:{files:files} + // } + // component.upload(mockEVet) + // //expect(fileSaved).toBe(undefined) + // }) + + it('downloadTemplate() of reference dataform',()=>{ + component.downloadTemplate() + + }) + it('downloadNameValue() of reference dataform',()=>{ + component.downloadNameValue() + }) + + it('downloadPd() of reference dataform',()=>{ + component.downloadPd() + }) + it('validateTempAllData() of reference dataform',()=>{ + component.validateTempAllData() + }) + it('retriveFromAppc() of reference dataform',()=>{ + sessionStorage.setItem('updateParams', JSON.stringify({vnf: 123, userID: 'testUser'})) + component.retriveFromAppc() + expect(component.noCacheData).toBeFalsy() + }) + it('retriveFromAppc() of reference dataform for false',()=>{ + + component.retriveFromAppc() + expect(component.noCacheData).toBeFalsy() + }) + it(' cloneMessage(servermessage) of reference dataform',()=>{ + let servermessage = {test:"test"} + component.cloneMessage(servermessage) + }) + + it('resetGroupNotation() of reference dataform for false case',()=>{ + component.resetGroupNotation() + expect(component.disableGrpNotationValue).toBeFalsy() + }) + it('resetGroupNotation() of reference dataform for true case',()=>{ + component.Sample['group-notation-type'] == "existing-group-name" + component.resetGroupNotation() + expect(component.disableGrpNotationValue).toBeTruthy() + }) + it('resetVms() of reference dataform',()=>{ + component.resetVms() + expect(component.referenceDataObject.vm).toBe([]) + }) + it('dataModified() of reference dataform',()=>{ + component.dataModified() + expect(component.referenceDataObject.vm).toBe(this.referenceDataObject.vm) + }) + + it('Clear cache ', () => { + component.clearCache() + expect(component.downloadData.reference['name']).toBe(undefined); + //expect(fileSaved).toBe(undefined) + }) + + it('sholud reset group notification ', () => { + component.Sample['group-notation-type'] = "existing-group-name" + component.resetGroupNotation() + expect(component.disableGrpNotationValue).toBe(true); + //expect(fileSaved).toBe(undefined) + }) + it('sholud reset group notification if value does not match ', () => { + component.Sample['group-notation-type'] = "123" + component.resetGroupNotation() + expect(component.disableGrpNotationValue).toBe(false); + //expect(fileSaved).toBe(undefined) + }) + it('add identity group', () => { + component.referenceDataObject['template-id-list'] = undefined + component.templateId="test" + component.addToIdentDrp() + expect(component.referenceDataObject['template-id-list'].length).toBe(1); + //expect(fileSaved).toBe(undefined) + }) + + it('add identity group', () => { + + component.resetVms() + expect(component.referenceDataObject.vm.length).toBe(0); + //expect(fileSaved).toBe(undefined) + }) + it('data modified', () => { + + component.dataModified() + + component.referenceDataObject.vm =[1,2] + expect(component.referenceDataObject.vm.length).toBe(2); + //expect(fileSaved).toBe(undefined) + }) + + it("should set values on action change ConfigScaleOut",()=>{ + component.actionChange("ConfigScaleOut","",{}) + + expect(component.groupAnotationType.length).toBe(5) + }) + + it("should set values on action change when action is HealthCheck ",()=>{ + component.populateExistinAction("HealthCheck") + + expect(component.deviceProtocols.length).toBe(4) + + + }) + it("should set values on action change when action is UpgradeBackout",()=>{ + component.populateExistinAction("UpgradeBackout") + + expect(component.deviceProtocols.length).toBe(3) + + + }) + it("should set values on action change when action is OpenStack Actions",()=>{ + component.populateExistinAction("OpenStack Actions") + + expect(component.deviceProtocols.length).toBe(2) + + + }) + it("should set values on action change when action is Configure",()=>{ + + component.tempAllData=[{action:"Configure",scope:{'vnf-type':"testVnf"}}] + component.populateExistinAction("Configure") + + expect(component.referenceDataObject.scope['vnf-type']).toBe('testVnf') + + + }) }); diff --git a/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.ts b/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.ts index c66a003..2e5d39e 100644 --- a/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.ts +++ b/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.ts @@ -61,6 +61,7 @@ export class ReferenceDataformComponent implements OnInit { numberTest: RegExp = /^[^.a-z]+$/; public numberOfVmTest: boolean = true; public tempAllData = []; + disableGrpNotationValue: boolean; public noRefData = false; public disableRetrieve = false; public getRefStatus = false; @@ -152,8 +153,9 @@ export class ReferenceDataformComponent implements OnInit { public vnfParams: any; public firstArrayElement = []; public remUploadedDataArray = []; + isConfigScaleOut = false - constructor (private buildDesignComponent: BuildDesignComponent, private httpUtils: HttpUtilService, private route: Router, private location: Location, private activeRoutes: ActivatedRoute, private notificationService: NotificationService, + constructor(private buildDesignComponent: BuildDesignComponent, private httpUtils: HttpUtilService, private route: Router, private location: Location, private activeRoutes: ActivatedRoute, private notificationService: NotificationService, private paramShareService: ParamShareService, private mappingEditorService: MappingEditorService, private modalService: NgbModal, private nService: NotificationsService, private ngProgress: NgProgress) { } @@ -176,8 +178,11 @@ export class ReferenceDataformComponent implements OnInit { let cacheData = this.mappingEditorService.referenceNameObjects; if (cacheData != undefined && cacheData != null && cacheData.length > 0) { this.tempAllData = cacheData; + // console.log("latest action") + // console.log(this.mappingEditorService.latestAction) if (this.mappingEditorService.latestAction != undefined) { this.referenceDataObject = this.mappingEditorService.latestAction; + this.toggleIdentifier(this.referenceDataObject.action); //this.referenceDataObject['template-id-list'] = this.mappingEditorService.identifier //use these commented objects to be used in template and pd pages //this.templateIdentifier = this.mappingEditorService.identifier @@ -206,6 +211,14 @@ export class ReferenceDataformComponent implements OnInit { this.templateIdentifier = this.mappingEditorService.identifier //this.tempAllData = []; } + toggleIdentifier(data) { + if (data == 'ConfigScaleOut') { + this.isConfigScaleOut = true + + } else { + this.isConfigScaleOut = false + } + } //to retrive the data from appc and assign it to the vaiables, if no data display the message reterived from the API getArtifact() { @@ -232,7 +245,7 @@ export class ReferenceDataformComponent implements OnInit { let artifactInfo = JSON.parse(resp.output.data.block).artifactInfo[0]; let reference_data = JSON.parse(artifactInfo['artifact-content'])['reference_data'][0]; this.referenceDataObject = reference_data; - console.log('reference data obj==' + JSON.stringify(this.referenceDataObject)); + // console.log('reference data obj==' + JSON.stringify(this.referenceDataObject)); this.refernceScopeObj.sourceType = this.referenceDataObject['scopeType']; this.mappingEditorService.getReferenceList().push(JSON.parse(artifactInfo['artifact-content'])); this.tempAllData = JSON.parse(artifactInfo['artifact-content'])['reference_data']; @@ -263,7 +276,7 @@ export class ReferenceDataformComponent implements OnInit { }*/ ]; } - console.log('tempalldata===' + JSON.stringify(this.tempAllData)); + // console.log('tempalldata===' + JSON.stringify(this.tempAllData)); } else { this.nService.success('Status', 'Sorry !!! I dont have any artifact Named : ' + (JSON.parse(payload))['artifact-name']); } @@ -288,11 +301,11 @@ export class ReferenceDataformComponent implements OnInit { this.firstArrayElement = []; this.uploadFileName = ''; // this.tempAllData = []; - console.log('temp all data===' + JSON.stringify(this.tempAllData)); + // console.log('temp all data===' + JSON.stringify(this.tempAllData)); } numberValidation(event: any) { - // console.log(this.numberTest.test(event)); + // // console.log(this.numberTest.test(event)); if (this.numberTest.test(event) && event != 0) { this.numberOfVmTest = true; } @@ -310,79 +323,7 @@ export class ReferenceDataformComponent implements OnInit { } } - checkConfigure(data) { - if (data == null) { - return; - } - if (this.fileUploaded && this.actionType == 'update') { - let refObject = this.uploadedData.find(obj => { - return obj.action == data; - }); - this.referenceDataObject = JSON.parse(JSON.stringify(refObject)); - if (data == 'HealthCheck') { - //show additional fileds user name port number and others - this.actionHealthCheck = true; - } else { - this.actionHealthCheck = false; - if (data == 'StartApplication' || data == 'StopApplication') { - this.disableVnftype = true; - } else { - - this.otherActions = true; - } - } - return; - } - this.buildDesignComponent.updateAccessUpdatePages(data, this.mappingEditorService.getReferenceList()); - let configureObject = _.find(this.tempAllData, function (obj) { - return obj['action'] == 'Configure'; - }); - if (data != 'Configure') { - if (!configureObject) { - this.allowAction = false; - $('#messageModal').modal(); - } else { - this.allowAction = true; - } - if (this.referenceDataObject.action == 'Configure') { - this.allowAction = true; - } - } - //dont allow any action second time - let y = _.find(this.tempAllData, function (obj) { - return obj['action'] == data; - }); - if (y) { - this.actionExist = true; - $('#messageModal').modal(); - } else { - this.actionExist = false; - } - //populate configure values for other actions - if (data != 'Configure' && configureObject != undefined) { - if (data == 'HealthCheck') { - //show additional fileds user name port number and others - this.actionHealthCheck = true; - } else { - this.actionHealthCheck = false; - if (data == 'StartApplication' || data == 'StopApplication') { - this.disableVnftype = true; - } else { - this.otherActions = true; - } - } - this.referenceDataObject.scope['vnf-type'] = configureObject['scope']['vnf-type']; - this.referenceDataObject.scope['vnfc-type'] = configureObject['scope']['vnfc-type']; - this.referenceDataObject['device-protocol'] = configureObject['device-protocol']; - this.refernceScopeObj['sourceType'] = configureObject['scopeType']; - } else { - this.actionHealthCheck = false; - this.otherActions = false; - this.disableVnftype = false; - } - //set default values for further actions - } - + addVnfcData(vmNumber: number) { var newObj = { 'vnfc-instance': this.referenceDataObject.vm[vmNumber].vnfc.length + 1, @@ -421,7 +362,7 @@ export class ReferenceDataformComponent implements OnInit { //Reference object to create reference data prepareReferenceObject() { - // console.log("this temp all data before=="+ JSON.stringify(this.tempAllData)) + // // console.log("this temp all data before=="+ JSON.stringify(this.tempAllData)) this.referenceDataObject['artifact-list'] = []; let scopeName = ''; @@ -477,8 +418,6 @@ export class ReferenceDataformComponent implements OnInit { } else { let identifiers = this.referenceDataObject['template-id-list']; if (identifiers) { - - for (var x = 0; x < identifiers.length; x++) { pd_fileName = this.referenceDataObject.action + '_' + scopeName + '_' + '0.0.1V_' + identifiers[x] + '.yaml'; config_template_fileName = this.referenceDataObject.action + '_' + scopeName + '_' + '0.0.1V_' + identifiers[x] + '.' + extension; @@ -510,10 +449,15 @@ export class ReferenceDataformComponent implements OnInit { let action = this.referenceDataObject.action; let configureObject = (newObj.action == 'Configure'); let ConfigScaleOut = (newObj.action == 'ConfigScaleOut'); - //delete VM's if selected action is configure. + //delete VM's if selected action is not configure. if (!ConfigScaleOut && !configureObject && this.tempAllData.length != 0) { // delete newObj.vm - newObj.vm = []; + + if (ConfigScaleOut) { + // + } else { + newObj.vm = []; + } //this.tempAllData.push(newObj); } else { if (ConfigScaleOut) { @@ -535,7 +479,7 @@ export class ReferenceDataformComponent implements OnInit { return obj['action'] == action; }); if (newObj.action != 'HealthCheck') { - delete newObj['context-url']; + delete newObj['url']; } if (actionObjIndex > -1) { this.tempAllData[actionObjIndex] = newObj; @@ -548,6 +492,19 @@ export class ReferenceDataformComponent implements OnInit { this.mappingEditorService.saveLatestIdentifier(this.templateIdentifier); } } + //reset currentform vms based on action + if (this.currentAction == "ConfigScaleOut") { + //this.referenceDataObject.vm = [] + + let ConfigScaleOutIndex = this.tempAllData.findIndex(obj => { + return obj['action'] == this.currentAction; + }); + if (ConfigScaleOutIndex > -1) { + this.referenceDataObject.vm = this.tempAllData[ConfigScaleOutIndex].vm + } else { + this.referenceDataObject.vm = [] + } + } //Creating all action block to allow mulitple actions at once let allAction = { action: 'AllAction', @@ -566,14 +523,14 @@ export class ReferenceDataformComponent implements OnInit { } else { this.tempAllData.push(allAction); } - console.log('This uploaded array===' + JSON.stringify(this.uploadedDataArray)); + // console.log('This uploaded array===' + JSON.stringify(this.uploadedDataArray)); if (this.uploadedDataArray && this.uploadedDataArray != undefined && this.uploadedDataArray.length != 0) { /*for (var i = 0; i < this.uploadedDataArray.length; i++) { var actionData = this.uploadedDataArray[i][0]; - // console.log("Action data=="+ actionData); + // // console.log("Action data=="+ actionData); for (var j = 0; j < this.tempAllData.length; j++) { - //console.log("Actions from temp all data=="+ this.tempAllData[j].action) - //console.log("Matched=="+ (actionData === this.tempAllData[j].action)) + //// console.log("Actions from temp all data=="+ this.tempAllData[j].action) + //// console.log("Matched=="+ (actionData === this.tempAllData[j].action)) if (actionData === this.tempAllData[j].action) { this.tempAllData.splice(j,1); @@ -592,7 +549,7 @@ export class ReferenceDataformComponent implements OnInit { result = this.checkIfelementExistsInArray(this.tempAllData[i].action, this.actions); } if (!result) { - console.log('Removing VM action==' + this.tempAllData[i].action); + // console.log('Removing VM action==' + this.tempAllData[i].action); this.tempAllData.splice(i, 1); i = i - 1; } @@ -601,8 +558,8 @@ export class ReferenceDataformComponent implements OnInit { } this.addVmCapabilitiesData(); } - // console.log("this temp all data after=="+ JSON.stringify(this.tempAllData)) - //console.log("temp all data from save to appc=="+JSON.stringify(this.tempAllData)) + // // console.log("this temp all data after=="+ JSON.stringify(this.tempAllData)) + //// console.log("temp all data from save to appc=="+JSON.stringify(this.tempAllData)) this.mappingEditorService.getReferenceList().push(JSON.parse(JSON.stringify(this.referenceDataObject))); this.buildDesignComponent.updateAccessUpdatePages(this.referenceDataObject.action, this.mappingEditorService.getReferenceList()); this.mappingEditorService.changeNav(this.tempAllData); @@ -610,13 +567,13 @@ export class ReferenceDataformComponent implements OnInit { } public checkIfelementExistsInArray(element, array) { - //console.log("Element==" + element) + //// console.log("Element==" + element) var result: boolean = false; array.forEach(function (item) { - // console.log("Item==" + item) + // // console.log("Item==" + item) if (element === item) { - console.log('Element==' + element + 'Item==' + item); + // console.log('Element==' + element + 'Item==' + item); result = true; } } @@ -625,15 +582,15 @@ export class ReferenceDataformComponent implements OnInit { } upload(evt: any) { - /* console.log("This uploaded array==" + JSON.stringify(this.uploadedDataArray)) - // console.log("This template data before==" + JSON.stringify(this.tempAllData)) + /* // console.log("This uploaded array==" + JSON.stringify(this.uploadedDataArray)) + // // console.log("This template data before==" + JSON.stringify(this.tempAllData)) if (this.uploadedDataArray && this.uploadedDataArray != undefined && this.uploadedDataArray.length!=0) { /* for (var i = 0; i < this.uploadedDataArray.length; i++) { var action = this.uploadedDataArray[i][0]; for (var j = 0; j < this.tempAllData.length; j++) { if (action === this.tempAllData[j].action) { this.tempAllData.splice(j); - console.log("This template data===" + this.tempAllData[j]); + // console.log("This template data===" + this.tempAllData[j]); } } } @@ -643,18 +600,18 @@ export class ReferenceDataformComponent implements OnInit { var result = this.checkIfelementExistsInArray(this.tempAllData[i].action, this.actions); if (this.tempAllData[i].action === "AllAction") result = true; if (!result) { - console.log("Removing VM action==" + this.tempAllData[i].action) + // console.log("Removing VM action==" + this.tempAllData[i].action) this.tempAllData.splice(i, 1); } } } } - // console.log("This template data after==" + JSON.stringify(this.tempAllData)) + // // console.log("This template data after==" + JSON.stringify(this.tempAllData)) /* wire up file reader */ const target: DataTransfer = <DataTransfer>(evt.target); - //console.log("filename========" + evt.target.files[0].name) + //// console.log("filename========" + evt.target.files[0].name) this.uploadFileName = evt.target.files[0].name; var fileExtension = this.uploadFileName.substr(this.uploadFileName.lastIndexOf('.') + 1); if (target.files.length != 1) { @@ -665,19 +622,19 @@ export class ReferenceDataformComponent implements OnInit { reader.onload = (e: any) => { /* read workbook */ const bstr = e.target.result; - // console.log("print 1---" + bstr); + // // console.log("print 1---" + bstr); const wb = XLSX.read(bstr, { type: 'binary' }); - // console.log("print 2---" + JSON.stringify(wb)); + // // console.log("print 2---" + JSON.stringify(wb)); /* grab first sheet */ const wsname = wb.SheetNames[0]; - // console.log("Name:---" + wsname); + // // console.log("Name:---" + wsname); const ws = wb.Sheets[wsname]; /* save data */ let arrData = (<AOA>(XLSX.utils.sheet_to_json(ws, { header: 1 }))); - //console.log("row======" + (XLSX.utils.sheet_to_json(ws, { header: 1 })).toString()) - // console.log("Array data---" + JSON.stringify(arrData)); + //// console.log("row======" + (XLSX.utils.sheet_to_json(ws, { header: 1 })).toString()) + // // console.log("Array data---" + JSON.stringify(arrData)); this.uploadedDataArray = arrData; this.firstArrayElement = arrData[0]; var remUploadedDataArray = arrData; @@ -693,7 +650,7 @@ export class ReferenceDataformComponent implements OnInit { } }; reader.readAsBinaryString(target.files[0]); - console.log('TARGET files---' + JSON.stringify(evt.target)); + // console.log('TARGET files---' + JSON.stringify(evt.target)); } else { this.nService.error('Error', 'Incorrect VM capabilities file uploaded'); @@ -705,10 +662,10 @@ export class ReferenceDataformComponent implements OnInit { for (var i = 0; i < this.uploadedDataArray.length; i++) { var vnfcFuncCodeArray = []; var data = this.uploadedDataArray[i]; - // console.log("Data is "+ JSON.stringify(data)) - //console.log("Data length: "+ data.length) + // // console.log("Data is "+ JSON.stringify(data)) + //// console.log("Data length: "+ data.length) for (var j = 1; j < data.length; j++) { - // console.log("Data " +j +" is "+ JSON.stringify(data[j])) + // // console.log("Data " +j +" is "+ JSON.stringify(data[j])) if (data[j] != undefined) { if (data[j].toUpperCase() === 'Y') { vnfcFuncCodeArray.push(this.firstArrayElement[j]); @@ -814,9 +771,9 @@ export class ReferenceDataformComponent implements OnInit { if (valid) { let referenceObject = this.prepareReferenceObject(); - console.log('##########'); + // console.log('##########'); - console.log(referenceObject); + // console.log(referenceObject); this.validateTempAllData(); let theJSON = JSON.stringify(this.tempAllData, null, '\t'); let fileName = 'reference_AllAction_' + referenceObject.scopeName + '_' + '0.0.1V.json'; @@ -1051,16 +1008,15 @@ export class ReferenceDataformComponent implements OnInit { if (data == 'HealthCheck') { this.deviceProtocols = ['', 'ANSIBLE', 'CHEF', 'REST']; this.actionHealthCheck = true; - } else if (data == 'UpgradeBackout' || data == 'ResumeTraffic' || data == 'QuiesceTraffic' || data == 'UpgradeBackup' || data == 'UpgradePostCheck' || data == 'UpgradePreCheck' || data == 'UpgradeSoftware' || data == 'ConfigBackup' || data == 'ConfigRestore' || data == 'StartApplication' || data == 'StopApplication') { + } else if (data == 'UpgradeBackout' || data == 'ResumeTraffic' || data == 'QuiesceTraffic' || data == 'UpgradeBackup' || data == 'UpgradePostCheck' || data == 'UpgradePreCheck' || data == 'UpgradeSoftware' || data == 'ConfigBackup' || data == 'ConfigRestore' || data == 'StartApplication' || data == 'StopApplication' || data == 'GetRunningConfig') { this.deviceProtocols = ['', 'CHEF', 'ANSIBLE']; } else if (data == 'OpenStack Actions') { this.deviceProtocols = ['', 'OpenStack']; - } else if (data == 'ConfigScaleOut' || data == 'Configure' || data == 'ConfigModify') { + } else if (data == 'ConfigScaleOut') { this.deviceProtocols = ['', 'CHEF', 'ANSIBLE', 'NETCONF']; - } else if (data == 'GetRunningConfig') { - this.deviceProtocols = ['', 'NETCONF']; - } else { - this.deviceProtocols = ['', 'ANSIBLE', 'CHEF', 'NETCONF-XML', 'REST', 'RESTCONF', 'CLI']; + } + else { + this.deviceProtocols = ['', 'ANSIBLE', 'CHEF', 'NETCONF-XML', 'RESTCONF', 'CLI']; this.actionHealthCheck = false; } } @@ -1068,6 +1024,7 @@ export class ReferenceDataformComponent implements OnInit { //Modal pop up for action change with values entered. actionChange(data, content, userForm) { // this.actionChanged = true; + this.disableGrpNotationValue = false if (data == null) { return; } @@ -1078,7 +1035,11 @@ export class ReferenceDataformComponent implements OnInit { this.currentAction = this.referenceDataObject.action; this.referenceDataObject.action = this.oldAction; $('#saveToAppc').click();//make sure the save all is done before the tempall obj is saved form the API - this.oldAction = this.referenceDataObject.action + ''; + this.toggleIdentifier(data) + this.oldAction = this.currentAction;// this.referenceDataObject.action + ''; + this.referenceDataObject.action = this.currentAction + + this.populateExistinAction(data); if (this.oldAction === 'OpenStack Actions') { this.uploadedDataArray = []; @@ -1089,6 +1050,8 @@ export class ReferenceDataformComponent implements OnInit { } this.clearCache(); } else { + this.toggleIdentifier(data) + this.currentAction = this.referenceDataObject.action; this.populateExistinAction(data); this.oldAction = this.referenceDataObject.action + ''; this.clearCache(); @@ -1100,6 +1063,12 @@ export class ReferenceDataformComponent implements OnInit { } + if (data == 'ConfigScaleOut') { + this.groupAnotationType = ['', 'first-vnfc-name', 'fixed-value', 'relative-value', 'existing-group-name']; + } + + this.toggleIdentifier(data) + if (data == 'OpenStack Actions') { this.buildDesignComponent.tabs = [ { @@ -1150,7 +1119,7 @@ export class ReferenceDataformComponent implements OnInit { this .httpUtils .post( - { url: environment.getDesigns, data: this.appData.template.templateData }) + { url: environment.getDesigns, data: this.appData.template.templateData }) .subscribe(resp => { if (resp.output.status.code === '400' && resp.output.status.message === 'success') { this.nService.success('Status', 'Successfully uploaded the Template Data'); @@ -1160,16 +1129,16 @@ export class ReferenceDataformComponent implements OnInit { } }, - (err) => this.nService.error('Status', 'Error Connecting to the APPC Network')); + (err) => this.nService.error('Status', 'Error Connecting to the APPC Network')); } saveNameValue() { this .httpUtils .post( - { - url: environment.getDesigns, data: this.appData.template.nameValueData - }) + { + url: environment.getDesigns, data: this.appData.template.nameValueData + }) .subscribe(resp => { if (resp.output.status.code === '400' && resp.output.status.message === 'success') { this.nService.success('Status', 'Successfully uploaded the Name Value Pairs'); @@ -1178,19 +1147,19 @@ export class ReferenceDataformComponent implements OnInit { this.nService.warn('Status', 'Error in saving the Name value pairs to Appc'); } }, - error => { - this.nService.error('Status', 'Error Connecting to the APPC Network'); - return false; - }); + error => { + this.nService.error('Status', 'Error Connecting to the APPC Network'); + return false; + }); } savePd() { this .httpUtils .post( - { - url: environment.getDesigns, data: this.appData.pd - }) + { + url: environment.getDesigns, data: this.appData.pd + }) .subscribe(resp => { if (resp.output.status.code === '400' && resp.output.status.message === 'success') { this.nService.success('Status', 'Successfully uploaded PD file'); @@ -1199,10 +1168,10 @@ export class ReferenceDataformComponent implements OnInit { this.nService.warn('Status', 'Error in saving the PD to Appc'); } }, - error => { - this.nService.error('Status', 'Error Connecting to the APPC Network'); - return false; - }); + error => { + this.nService.error('Status', 'Error Connecting to the APPC Network'); + return false; + }); } openModel(toShow: any, message: any, title: any) { @@ -1227,7 +1196,10 @@ export class ReferenceDataformComponent implements OnInit { if (!(this.referenceDataObject['template-id-list'])) { this.referenceDataObject['template-id-list'] = []; } - this.referenceDataObject['template-id-list'].push(this.templateId); + if(!(this.referenceDataObject['template-id-list'].indexOf(this.templateId.trim())>-1)){ + this.referenceDataObject['template-id-list'].push(this.templateId.trim()); + } + // this.referenceDataObject['template-id-list'] = this.identifierDrpValues //this.identifierDrp = "" } @@ -1239,4 +1211,14 @@ export class ReferenceDataformComponent implements OnInit { dataModified() { this.referenceDataObject.vm = this.referenceDataObject.vm; } + + resetGroupNotation() { + if (this.Sample['group-notation-type'] == "existing-group-name") { + this.Sample['group-notation-value'] = "" + + this.disableGrpNotationValue = true + } else { + this.disableGrpNotationValue = false + } + } }
\ No newline at end of file |