1 import { HttpClient, HttpParams } from '@angular/common/http';
2 import { Injectable } from '@angular/core';
3 import { Observable } from 'rxjs';
4 import { RgwRealm } from '~/app/ceph/rgw/models/rgw-multisite';
5 import { Icons } from '../enum/icons.enum';
6 import { RgwDaemonService } from './rgw-daemon.service';
11 export class RgwRealmService {
12 private url = 'api/rgw/realm';
14 constructor(private http: HttpClient, public rgwDaemonService: RgwDaemonService) {}
16 create(realm: RgwRealm, defaultRealm: boolean) {
18 realm_name: realm.name,
21 return this.http.post(`${this.url}`, requestBody);
24 update(realm: RgwRealm, defaultRealm: boolean, newRealmName: string) {
26 realm_name: realm.name,
27 default: defaultRealm,
28 new_realm_name: newRealmName
30 return this.http.put(`${this.url}/${realm.name}`, requestBody);
33 list(): Observable<object> {
34 return this.http.get<object>(`${this.url}`);
37 get(realm: RgwRealm): Observable<object> {
38 return this.http.get(`${this.url}/${realm.name}`);
41 getAllRealmsInfo(): Observable<object> {
42 return this.http.get(`${this.url}/get_all_realms_info`);
45 delete(realmName: string): Observable<any> {
46 let params = new HttpParams();
47 params = params.appendAll({
50 return this.http.delete(`${this.url}/${realmName}`, { params: params });
53 getRealmTree(realm: RgwRealm, defaultRealmId: string) {
56 nodes['id'] = realm.id;
57 realmIds.push(realm.id);
58 nodes['name'] = realm.name;
59 nodes['info'] = realm;
60 nodes['is_default'] = realm.id === defaultRealmId ? true : false;
61 nodes['icon'] = Icons.reweight;
62 nodes['type'] = 'realm';
69 importRealmToken(realm_token: string, zone_name: string, port: number, placementSpec: object) {
71 realm_token: realm_token,
74 placement_spec: placementSpec
76 return this.http.post(`${this.url}/import_realm_token`, requestBody);
80 return this.rgwDaemonService.request(() => {
81 return this.http.get(`${this.url}/get_realm_tokens`);