]>
Commit | Line | Data |
---|---|---|
9f95a23c TL |
1 | import { HttpClient, HttpParams } from '@angular/common/http'; |
2 | import { Injectable } from '@angular/core'; | |
3 | ||
4 | import { Observable } from 'rxjs'; | |
5 | ||
39ae355f | 6 | import { ApiClient } from '~/app/shared/api/api-client'; |
9f95a23c | 7 | import { Daemon } from '../models/daemon.interface'; |
1911f103 | 8 | import { CephServiceSpec } from '../models/service.interface'; |
39ae355f | 9 | import { PaginateObservable } from './paginate.model'; |
9f95a23c TL |
10 | |
11 | @Injectable({ | |
f67539c2 | 12 | providedIn: 'root' |
9f95a23c | 13 | }) |
39ae355f | 14 | export 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 | } |