Add undeploy xApp function
[portal/ric-dashboard.git] / webapp-frontend / src / app / catalog / catalog.component.ts
1 /*-
2  * ========================LICENSE_START=================================
3  * O-RAN-SC
4  * %%
5  * Copyright (C) 2019 AT&T Intellectual Property and Nokia
6  * %%
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ========================LICENSE_END===================================
19  */
20 import { Component, Inject } from '@angular/core';
21 import { LocalDataSource } from 'ng2-smart-table';
22 import { CatalogService } from '../services/catalog/catalog.service';
23 import { ConfirmDialogService } from './../services/ui/confirm-dialog.service'
24 import { NotificationService } from './../services/ui/notification.service'
25
26 @Component({
27   selector: 'app-catalog',
28   templateUrl: './catalog.component.html',
29   styleUrls: ['./catalog.component.css']
30 })
31 export class CatalogComponent {
32
33   settings = {
34     hideSubHeader: true,
35     actions: {
36       columnTitle: 'Actions',
37       add: false,
38       edit: false,
39       delete: false,
40       custom: [
41         { name: 'deployxApp', title: 'Deploy' },
42       ],
43       position: 'right'
44
45     },
46     columns: {
47       name: {
48         title: 'xApp Name',
49         type: 'string',
50       },
51       version: {
52         title: 'xApp Version',
53         type: 'string',
54       },
55       status: {
56         title: 'Status',
57         type: 'string',
58       },
59     },
60   };
61
62   source: LocalDataSource = new LocalDataSource();
63
64   constructor(
65     private service: CatalogService,
66     private confirmDialogService: ConfirmDialogService,
67     private notification: NotificationService) {
68     this.service.getAll().subscribe((val: any[]) => this.source.load(val));
69   }
70
71   onDeployxApp(event): void {
72     this.confirmDialogService.openConfirmDialog('Are you sure you want to deploy this xApp?')
73       .afterClosed().subscribe(res => {
74         if (res) {
75           this.service.deployXapp(event.data.name).subscribe(
76             response => {
77               switch (response.status) {
78                 case 200:
79                   this.notification.success('xApp deploy succeeded!');
80                   break;
81                 default:
82                   this.notification.warn('xApp deploy failed.');
83               }
84             }
85           );
86         }
87       });
88
89   }
90 }