]> git.proxmox.com Git - ceph.git/blame - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/ceph-service.service.ts
update ceph source to reef 18.2.1
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / api / ceph-service.service.ts
CommitLineData
9f95a23c
TL
1import { HttpClient, HttpParams } from '@angular/common/http';
2import { Injectable } from '@angular/core';
3
4import { Observable } from 'rxjs';
5
39ae355f 6import { ApiClient } from '~/app/shared/api/api-client';
9f95a23c 7import { Daemon } from '../models/daemon.interface';
1911f103 8import { CephServiceSpec } from '../models/service.interface';
39ae355f 9import { PaginateObservable } from './paginate.model';
9f95a23c
TL
10
11@Injectable({
f67539c2 12 providedIn: 'root'
9f95a23c 13})
39ae355f 14export class CephServiceService extends ApiClient {
9f95a23c
TL
15 private url = 'api/service';
16
39ae355f
TL
17 constructor(private http: HttpClient) {
18 super();
19 }
9f95a23c 20
39ae355f
TL
21 list(httpParams: HttpParams, serviceName?: string): PaginateObservable<CephServiceSpec[]> {
22 const options = {
23 headers: { Accept: this.getVersionHeaderValue(2, 0) },
24 params: httpParams
25 };
26 options['observe'] = 'response';
27 if (serviceName) {
28 options.params = options.params.append('service_name', serviceName);
29 }
30 return new PaginateObservable<CephServiceSpec[]>(
31 this.http.get<CephServiceSpec[]>(this.url, options)
32 );
9f95a23c
TL
33 }
34
35 getDaemons(serviceName?: string): Observable<Daemon[]> {
36 return this.http.get<Daemon[]>(`${this.url}/${serviceName}/daemons`);
37 }
adb31ebb
TL
38
39 create(serviceSpec: { [key: string]: any }) {
40 const serviceName = serviceSpec['service_id']
41 ? `${serviceSpec['service_type']}.${serviceSpec['service_id']}`
42 : serviceSpec['service_type'];
43 return this.http.post(
44 this.url,
45 {
46 service_name: serviceName,
47 service_spec: serviceSpec
48 },
49 { observe: 'response' }
50 );
51 }
52
2a845540
TL
53 update(serviceSpec: { [key: string]: any }) {
54 const serviceName = serviceSpec['service_id']
55 ? `${serviceSpec['service_type']}.${serviceSpec['service_id']}`
56 : serviceSpec['service_type'];
57 return this.http.put(
58 `${this.url}/${serviceName}`,
59 {
60 service_name: serviceName,
61 service_spec: serviceSpec
62 },
63 { observe: 'response' }
64 );
65 }
66
adb31ebb
TL
67 delete(serviceName: string) {
68 return this.http.delete(`${this.url}/${serviceName}`, { observe: 'response' });
69 }
70
71 getKnownTypes(): Observable<string[]> {
72 return this.http.get<string[]>(`${this.url}/known_types`);
73 }
9f95a23c 74}