X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=webapp%2Fsrc%2Fapp%2F%40core-xds%2Fservices%2Fmonitoring.service.ts;fp=webapp%2Fsrc%2Fapp%2F%40core-xds%2Fservices%2Fmonitoring.service.ts;h=a606909f064749ec58029a392e58e574cdbe2350;hb=701548c5b25efba70c3818e96a4394701cfb913e;hp=0000000000000000000000000000000000000000;hpb=247bb7c2db5f0d48178398599348249bf886ebbc;p=src%2Fxds%2Fxds-agent.git diff --git a/webapp/src/app/@core-xds/services/monitoring.service.ts b/webapp/src/app/@core-xds/services/monitoring.service.ts new file mode 100644 index 0000000..a606909 --- /dev/null +++ b/webapp/src/app/@core-xds/services/monitoring.service.ts @@ -0,0 +1,106 @@ +/** +* @license +* Copyright (C) 2018-2019 "IoT.bzh" +* Author Sebastien Douheret +* +* 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. +*/ + +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs/Observable'; + +import { XDSAgentService } from './xdsagent.service'; +import { map } from 'rxjs/operators'; + +export interface AglTopology { + name: string; + pid: number; + disabled: boolean; + isClient: boolean; + isServer: boolean; + ws_clients: string[]; + ws_servers: string[]; + apis: any; +} + +export interface AglLowCollectorConfig { + time?: number; +} + +@Injectable() +export class MonitoringService { + + constructor(private xdsSvr: XDSAgentService) { + /* + this.xdsSvr.XdsConfig$.subscribe(cfg => { + if (!cfg || cfg.servers.length < 1) { + return; + } + }); + */ + } + + getTopo(): Observable { + return this.xdsSvr.getTopoMonitoring().pipe( + map((tp: AglTopology[]) => { + // FIXME - move filter on backend side + const ignored: string[] = [ + 'agl-low-collector', + 'harvester', + ]; + + tp.forEach(el => { + el.disabled = false; + ignored.forEach(iel => { + if (el.name.indexOf(iel) !== -1) { + el.disabled = true; + } + }); + + // replace unix:/run/xxx/ws by nothing + const wsc: string[] = []; + el.ws_clients.forEach(s => { + s = s.replace('unix:/run/platform/apis/ws/', ''); + s = s.replace('unix:/run/user/1001/apis/ws/', ''); + s = s.replace('unix:/run/user/0/apis/ws/', ''); + wsc.push(s); + }); + el.ws_clients = wsc; + // replace sd: by nothing + const wss: string[] = []; + el.ws_servers.forEach(s => { + wss.push(s.replace('sd:', '')); + }); + el.ws_servers = wss; + }); + return tp; + }) + ); + } + + startTrace(cfg: any): Observable { + return this.xdsSvr.startTraceMonitoring(cfg); + } + + stopTrace(cfg: any): Observable { + return this.xdsSvr.stopTraceMonitoring(cfg); + } + + startLowCollector(cfg: AglLowCollectorConfig): Observable { + return this.xdsSvr.startLowCollector(cfg); + } + + stopLowCollector(): Observable { + return this.xdsSvr.stopLowCollector(); + } +}