]> git.proxmox.com Git - ceph.git/blame - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rgw-zonegroup.service.ts
update ceph source to reef 18.2.1
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / api / rgw-zonegroup.service.ts
CommitLineData
aee94f69
TL
1import { HttpClient, HttpParams } from '@angular/common/http';
2import { Injectable } from '@angular/core';
3import { Observable } from 'rxjs';
4import { RgwRealm, RgwZonegroup } from '~/app/ceph/rgw/models/rgw-multisite';
5import { Icons } from '../enum/icons.enum';
6
7@Injectable({
8 providedIn: 'root'
9})
10export class RgwZonegroupService {
11 private url = 'api/rgw/zonegroup';
12
13 constructor(private http: HttpClient) {}
14
15 create(realm: RgwRealm, zonegroup: RgwZonegroup, defaultZonegroup: boolean, master: boolean) {
16 let params = new HttpParams();
17 params = params.appendAll({
18 realm_name: realm.name,
19 zonegroup_name: zonegroup.name,
20 default: defaultZonegroup,
21 master: master,
22 zonegroup_endpoints: zonegroup.endpoints
23 });
24 return this.http.post(`${this.url}`, null, { params: params });
25 }
26
27 update(
28 realm: RgwRealm,
29 zonegroup: RgwZonegroup,
30 newZonegroupName: string,
31 defaultZonegroup?: boolean,
32 master?: boolean,
33 removedZones?: string[],
34 addedZones?: string[]
35 ) {
36 let requestBody = {
37 zonegroup_name: zonegroup.name,
38 realm_name: realm.name,
39 new_zonegroup_name: newZonegroupName,
40 default: defaultZonegroup,
41 master: master,
42 zonegroup_endpoints: zonegroup.endpoints,
43 placement_targets: zonegroup.placement_targets,
44 remove_zones: removedZones,
45 add_zones: addedZones
46 };
47 return this.http.put(`${this.url}/${zonegroup.name}`, requestBody);
48 }
49
50 list(): Observable<object> {
51 return this.http.get<object>(`${this.url}`);
52 }
53
54 get(zonegroup: RgwZonegroup): Observable<object> {
55 return this.http.get(`${this.url}/${zonegroup.name}`);
56 }
57
58 getAllZonegroupsInfo(): Observable<object> {
59 return this.http.get(`${this.url}/get_all_zonegroups_info`);
60 }
61
62 delete(zonegroupName: string, deletePools: boolean, pools: Set<string>): Observable<any> {
63 let params = new HttpParams();
64 params = params.appendAll({
65 zonegroup_name: zonegroupName,
66 delete_pools: deletePools,
67 pools: Array.from(pools.values())
68 });
69 return this.http.delete(`${this.url}/${zonegroupName}`, { params: params });
70 }
71
72 getZonegroupTree(zonegroup: RgwZonegroup, defaultZonegroupId: string, realm?: RgwRealm) {
73 let nodes = {};
74 nodes['id'] = zonegroup.id;
75 nodes['name'] = zonegroup.name;
76 nodes['info'] = zonegroup;
77 nodes['icon'] = Icons.cubes;
78 nodes['is_master'] = zonegroup.is_master;
79 nodes['parent'] = realm ? realm.name : '';
80 nodes['is_default'] = zonegroup.id === defaultZonegroupId ? true : false;
81 nodes['type'] = 'zonegroup';
82 nodes['endpoints'] = zonegroup.endpoints;
83 nodes['master_zone'] = zonegroup.master_zone;
84 nodes['zones'] = zonegroup.zones;
85 nodes['placement_targets'] = zonegroup.placement_targets;
86 nodes['default_placement'] = zonegroup.default_placement;
87 if (nodes['endpoints'].length === 0) {
88 nodes['show_warning'] = true;
89 nodes['warning_message'] = 'Endpoints not configured';
90 }
91 return nodes;
92 }
93}