use XappMgrService to replace Catalog and Control
[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, OnInit } from '@angular/core';
21 import { LocalDataSource } from 'ng2-smart-table';
22 import { XappMgrService } from '../services/xapp-mgr/xapp-mgr.service';
23 import { ConfirmDialogService } from './../services/ui/confirm-dialog.service'
24 import { NotificationService } from './../services/ui/notification.service'
25 import { XMXapp } from '../interfaces/xapp-mgr.types';
26
27 @Component({
28   selector: 'app-catalog',
29   templateUrl: './catalog.component.html',
30   styleUrls: ['./catalog.component.css']
31 })
32 export class CatalogComponent implements OnInit{
33
34   settings = {
35     hideSubHeader: true,
36     actions: {
37       columnTitle: 'Actions',
38       add: false,
39       edit: false,
40       delete: false,
41       custom: [
42         { name: 'deployxApp', title: 'Deploy' },
43       ],
44       position: 'right'
45
46     },
47     columns: {
48       name: {
49         title: 'xApp Name',
50         type: 'string',
51       },
52       version: {
53         title: 'xApp Version',
54         type: 'string',
55       },
56       status: {
57         title: 'Status',
58         type: 'string',
59       },
60     },
61   };
62
63   source: LocalDataSource = new LocalDataSource();
64
65   constructor(
66     private xappMgrSvc: XappMgrService,
67     private confirmDialogService: ConfirmDialogService,
68     private notification: NotificationService) { }
69
70   ngOnInit() {
71     this.xappMgrSvc.getAll().subscribe((xapps: XMXapp[]) => this.source.load(xapps));
72   }
73
74   onDeployxApp(event): void {
75     this.confirmDialogService.openConfirmDialog('Are you sure you want to deploy this xApp?')
76       .afterClosed().subscribe(res => {
77         if (res) {
78           this.xappMgrSvc.deployXapp(event.data.name).subscribe(
79             response => {
80               switch (response.status) {
81                 case 200:
82                   this.notification.success('xApp deploy succeeded!');
83                   break;
84                 default:
85                   this.notification.warn('xApp deploy failed.');
86               }
87             }
88           );
89         }
90       });
91
92   }
93 }