]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/ceph-service.service.ts
c62dfea7c0155b71fcae79c5d4a424d62f4e4e8a
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / api / ceph-service.service.ts
1 import { HttpClient, HttpParams } from '@angular/common/http';
2 import { Injectable } from '@angular/core';
3
4 import { Observable } from 'rxjs';
5
6 import { Daemon } from '../models/daemon.interface';
7 import { CephServiceSpec } from '../models/service.interface';
8
9 @Injectable({
10 providedIn: 'root'
11 })
12 export class CephServiceService {
13 private url = 'api/service';
14
15 constructor(private http: HttpClient) {}
16
17 list(serviceName?: string): Observable<CephServiceSpec[]> {
18 const options = serviceName
19 ? { params: new HttpParams().set('service_name', serviceName) }
20 : {};
21 return this.http.get<CephServiceSpec[]>(this.url, options);
22 }
23
24 getDaemons(serviceName?: string): Observable<Daemon[]> {
25 return this.http.get<Daemon[]>(`${this.url}/${serviceName}/daemons`);
26 }
27
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(
33 this.url,
34 {
35 service_name: serviceName,
36 service_spec: serviceSpec
37 },
38 { observe: 'response' }
39 );
40 }
41
42 update(serviceSpec: { [key: string]: any }) {
43 const serviceName = serviceSpec['service_id']
44 ? `${serviceSpec['service_type']}.${serviceSpec['service_id']}`
45 : serviceSpec['service_type'];
46 return this.http.put(
47 `${this.url}/${serviceName}`,
48 {
49 service_name: serviceName,
50 service_spec: serviceSpec
51 },
52 { observe: 'response' }
53 );
54 }
55
56 delete(serviceName: string) {
57 return this.http.delete(`${this.url}/${serviceName}`, { observe: 'response' });
58 }
59
60 getKnownTypes(): Observable<string[]> {
61 return this.http.get<string[]>(`${this.url}/known_types`);
62 }
63 }