diff options
Diffstat (limited to 'src/pybind/mgr/dashboard/frontend/src/app/shared/api/ceph-service.service.ts')
-rw-r--r-- | src/pybind/mgr/dashboard/frontend/src/app/shared/api/ceph-service.service.ts | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/api/ceph-service.service.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/api/ceph-service.service.ts new file mode 100644 index 000000000..c62dfea7c --- /dev/null +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/api/ceph-service.service.ts @@ -0,0 +1,63 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; + +import { Observable } from 'rxjs'; + +import { Daemon } from '../models/daemon.interface'; +import { CephServiceSpec } from '../models/service.interface'; + +@Injectable({ + providedIn: 'root' +}) +export class CephServiceService { + private url = 'api/service'; + + constructor(private http: HttpClient) {} + + list(serviceName?: string): Observable<CephServiceSpec[]> { + const options = serviceName + ? { params: new HttpParams().set('service_name', serviceName) } + : {}; + return this.http.get<CephServiceSpec[]>(this.url, options); + } + + getDaemons(serviceName?: string): Observable<Daemon[]> { + return this.http.get<Daemon[]>(`${this.url}/${serviceName}/daemons`); + } + + create(serviceSpec: { [key: string]: any }) { + const serviceName = serviceSpec['service_id'] + ? `${serviceSpec['service_type']}.${serviceSpec['service_id']}` + : serviceSpec['service_type']; + return this.http.post( + this.url, + { + service_name: serviceName, + service_spec: serviceSpec + }, + { observe: 'response' } + ); + } + + update(serviceSpec: { [key: string]: any }) { + const serviceName = serviceSpec['service_id'] + ? `${serviceSpec['service_type']}.${serviceSpec['service_id']}` + : serviceSpec['service_type']; + return this.http.put( + `${this.url}/${serviceName}`, + { + service_name: serviceName, + service_spec: serviceSpec + }, + { observe: 'response' } + ); + } + + delete(serviceName: string) { + return this.http.delete(`${this.url}/${serviceName}`, { observe: 'response' }); + } + + getKnownTypes(): Observable<string[]> { + return this.http.get<string[]>(`${this.url}/known_types`); + } +} |