X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=dashboard%2Fwebapp-frontend%2Fsrc%2Fapp%2Fui%2Fdeploy-dialog%2Fdeploy-dialog.component.ts;fp=dashboard%2Fwebapp-frontend%2Fsrc%2Fapp%2Fui%2Fdeploy-dialog%2Fdeploy-dialog.component.ts;h=1d173ec4f9322043100c45bd2e6c51f563731b17;hb=5447254cb207353b33e6a444cce8a7fd84cfd34a;hp=0000000000000000000000000000000000000000;hpb=854af18c26835319712aded05fdc3624502314a4;p=portal%2Fric-dashboard.git diff --git a/dashboard/webapp-frontend/src/app/ui/deploy-dialog/deploy-dialog.component.ts b/dashboard/webapp-frontend/src/app/ui/deploy-dialog/deploy-dialog.component.ts new file mode 100644 index 00000000..1d173ec4 --- /dev/null +++ b/dashboard/webapp-frontend/src/app/ui/deploy-dialog/deploy-dialog.component.ts @@ -0,0 +1,101 @@ +/*- + * ========================LICENSE_START================================= + * O-RAN-SC + * %% + * Copyright (C) 2020 AT&T Intellectual Property + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ + +import { Component, Inject, OnInit } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { BehaviorSubject } from 'rxjs/BehaviorSubject'; +import { finalize } from 'rxjs/operators'; +import { XMXappDescriptor} from '../../interfaces/app-mgr.types'; +import { AppMgrService } from '../../services/app-mgr/app-mgr.service'; +import { NotificationService } from '../../services/ui/notification.service'; +import { LoadingDialogService } from '../../services/ui/loading-dialog.service'; +import { HttpErrorResponse, HttpResponse } from '@angular/common/http'; + +@Component({ + selector: 'rd-deploy-dialog', + templateUrl: './deploy-dialog.component.html', + styleUrls: ['./deploy-dialog.component.scss'] +}) +export class DeployDialogComponent implements OnInit { + + private loadingSubject = new BehaviorSubject(false); + public loading$ = this.loadingSubject.asObservable(); + public deployForm: FormGroup; + xappDescriptor: XMXappDescriptor ; + overrideFile: File; + + constructor( + private dialogRef: MatDialogRef, + private appMgrService: AppMgrService, + private loadingDialogService: LoadingDialogService, + private notificationService: NotificationService, + @Inject(MAT_DIALOG_DATA) private data + ) { } + + ngOnInit(): void { + this.deployForm = new FormGroup({ + xappName: new FormControl(this.data.xappName, [Validators.required]), + helmVersion: new FormControl(''), + releaseName: new FormControl(''), + namespace: new FormControl(''), + overrideFile: new FormControl({}), + }) + } + + selectoverrideFile(event) { + if (event.target.files.length) { + this.overrideFile = event.target.files[0]; + let fileReader = new FileReader(); + fileReader.onload = (e) => { + this.deployForm.value.overrideFile = JSON.parse(fileReader.result as string); + } + fileReader.readAsText(this.overrideFile); + } + else { + this.deployForm.value.overrideFile =null + } + } + + deploy(xapp: XMXappDescriptor) { + this.xappDescriptor = xapp + this.loadingDialogService.startLoading('Deploying ' + this.xappDescriptor.xappName); + this.appMgrService.deployXapp(this.data.instanceKey, this.xappDescriptor) + .pipe( + finalize(() => { + this.loadingDialogService.stopLoading(); + this.dialogRef.close(); + }) + ) + .subscribe( + (response: HttpResponse) => { + this.notificationService.success('App deploy succeeded!'); + }, + ((her: HttpErrorResponse) => { + // the error field should have an ErrorTransport object + let msg = her.message; + if (her.error && her.error.message) { + msg = her.error.message; + } + this.notificationService.warn('App deploy failed: ' + msg); + }) + ); + } +}