1 import { HttpClient, HttpParams } from '@angular/common/http';
2 import { Injectable } from '@angular/core';
4 import { Observable } from 'rxjs';
6 import { Daemon } from '../models/daemon.interface';
7 import { CephServiceSpec } from '../models/service.interface';
12 export class CephServiceService {
13 private url = 'api/service';
15 constructor(private http: HttpClient) {}
17 list(serviceName?: string): Observable<CephServiceSpec[]> {
18 const options = serviceName
19 ? { params: new HttpParams().set('service_name', serviceName) }
21 return this.http.get<CephServiceSpec[]>(this.url, options);
24 getDaemons(serviceName?: string): Observable<Daemon[]> {
25 return this.http.get<Daemon[]>(`${this.url}/${serviceName}/daemons`);
28 create(serviceSpec: { [key: string]: any }) {
29 const serviceName = serviceSpec['service_id']
30 ? `${serviceSpec['service_type']}.${serviceSpec['service_id']}`
31 : serviceSpec['service_type'];
32 return this.http.post(
35 service_name: serviceName,
36 service_spec: serviceSpec
38 { observe: 'response' }
42 update(serviceSpec: { [key: string]: any }) {
43 const serviceName = serviceSpec['service_id']
44 ? `${serviceSpec['service_type']}.${serviceSpec['service_id']}`
45 : serviceSpec['service_type'];
47 `${this.url}/${serviceName}`,
49 service_name: serviceName,
50 service_spec: serviceSpec
52 { observe: 'response' }
56 delete(serviceName: string) {
57 return this.http.delete(`${this.url}/${serviceName}`, { observe: 'response' });
60 getKnownTypes(): Observable<string[]> {
61 return this.http.get<string[]>(`${this.url}/known_types`);