]>
Commit | Line | Data |
---|---|---|
aee94f69 TL |
1 | import { HttpClient, HttpParams } from '@angular/common/http'; |
2 | import { Injectable } from '@angular/core'; | |
3 | import { Observable } from 'rxjs'; | |
4 | import { RgwRealm, RgwZonegroup } from '~/app/ceph/rgw/models/rgw-multisite'; | |
5 | import { Icons } from '../enum/icons.enum'; | |
6 | ||
7 | @Injectable({ | |
8 | providedIn: 'root' | |
9 | }) | |
10 | export 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 | } |