Add multi-layer RIC instance selector
[portal/ric-dashboard.git] / webapp-frontend / src / app / services / stats / stats.service.ts
index 255dbca..0862142 100644 (file)
@@ -2,14 +2,14 @@
  * ========================LICENSE_START=================================
  * O-RAN-SC
  * %%
- * Copyright (C) 2019 AT&T Intellectual Property and Nokia
+ * Copyright (C) 2019 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.
  * limitations under the License.
  * ========================LICENSE_END===================================
  */
+import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';
 import { Injectable } from '@angular/core';
-import { HttpClient } from '@angular/common/http';
-import { HttpHeaders } from '@angular/common/http';
 import { Observable } from 'rxjs';
-import { HttpErrorResponse } from '@angular/common/http';
+import { DashboardService } from '../dashboard/dashboard.service';
 
 @Injectable({
     providedIn: 'root'
 })
 
 export class StatsService {
+
+    private component = 'admin';
+
     baseJSONServerUrl = 'http://localhost:3000';
     dataMetrics = [{}];
     latencyMetrics;
@@ -50,13 +52,14 @@ export class StatsService {
             })
           };
 
-    constructor(private httpClient: HttpClient) {
+    constructor(
+        private dashboardSvc: DashboardService,
+        private httpClient: HttpClient) {
         // this.loadConfig();
         // this.getLoad();
     }
 
     getMetrics() {
-
         return this.dataMetrics; // @TODO implement the service to fetch the backend data
     }
 
@@ -76,33 +79,19 @@ export class StatsService {
         return this.load;
     }
 
-    putLoad(value: number) {
-        // this.loadMetrics = this.getRandomValue();
-        const jsonValue = '{ "load": ' + value + ' }';
-        console.log(jsonValue);
-        this.httpClient.put(this.hostURL + this.loadPath, jsonValue , this.httpOptions).subscribe((res) => {
-            console.log(res);
-        });
+    getRandomValue() {
+        return Math.round((Math.random() * (20 - 0)) + 0);
     }
 
-    putDelay(value: number) {
-        // this.loadMetrics = this.getRandomValue();
-        const jsonValue = '{ "delay": ' + value + ' }';
-        console.log(jsonValue);
-        this.httpClient.put(this.hostURL + this.delayPath, jsonValue , this.httpOptions).subscribe((res) => {
-            console.log(res);
+    // Gets xApp metrics Kibana url for the named application
+    getAppMetricsUrl(appName: string)  {
+        const path = this.dashboardSvc.buildPath(this.component, null, 'metrics');
+        return this.httpClient.get(path, {
+            params: new HttpParams()
+                .set('app', appName)
         });
     }
 
-    getCpuMetrics() {
-        this.cpuMetrics = this.getRandomValue();
-        return this.cpuMetrics;
-    }
-
-    getRandomValue() {
-        return Math.round((Math.random() * (20 - 0)) + 0);
-    }
-
     saveConfig(key: string, value: string) {
         if (key === 'jsonURL') {
             this.baseJSONServerUrl = value;
@@ -113,8 +102,6 @@ export class StatsService {
         this.httpClient.put(this.baseJSONServerUrl + '/config/' + key , jsonValue, this.httpOptions).subscribe((res) => {
             console.log(res);
         });
-
-
     }
 
     loadConfig() {
@@ -134,8 +121,8 @@ export class StatsService {
             this.delayMax = res[5].value;
             this.loadMax = res[6].value;
         },
-        (err: HttpErrorResponse) => {
-            console.log (err.message);
+        (her: HttpErrorResponse) => {
+            console.log ('loadConfig failed: ' + her.message);
           });
     }
 }