Skip to content

Commit eec2ada

Browse files
authored
Merge pull request ceph#66119 from rhcs-dashboard/fix-73708-main
mgr/dashboard: allow deletion of non-default zone and zonegroup Reviewed-by: Pedro Gonzalez Gomez <[email protected]>
2 parents 3a40168 + c59f5af commit eec2ada

File tree

7 files changed

+57
-16
lines changed

7 files changed

+57
-16
lines changed

src/pybind/mgr/dashboard/controllers/rgw.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1459,12 +1459,14 @@ def get_all_zonegroups_info(self):
14591459
result = multisite_instance.get_all_zonegroups_info()
14601460
return result
14611461

1462-
def delete(self, zonegroup_name, delete_pools, pools: Optional[List[str]] = None):
1462+
def delete(self, zonegroup_name, delete_pools, pools: Optional[List[str]] = None,
1463+
realm_name: Optional[str] = None):
14631464
if pools is None:
14641465
pools = []
14651466
try:
14661467
multisite_instance = RgwMultisite()
1467-
result = multisite_instance.delete_zonegroup(zonegroup_name, delete_pools, pools)
1468+
result = multisite_instance.delete_zonegroup(zonegroup_name, delete_pools,
1469+
pools, realm_name)
14681470
return result
14691471
except NoRgwDaemonsException as e:
14701472
raise DashboardException(e, http_status_code=404, component='rgw')
@@ -1516,14 +1518,16 @@ def get_all_zones_info(self):
15161518
return result
15171519

15181520
def delete(self, zone_name, delete_pools, pools: Optional[List[str]] = None,
1519-
zonegroup_name=None):
1521+
zonegroup_name=None, realm_name: Optional[str] = None):
15201522
if pools is None:
15211523
pools = []
15221524
if zonegroup_name is None:
15231525
zonegroup_name = ''
15241526
try:
15251527
multisite_instance = RgwMultisite()
1526-
result = multisite_instance.delete_zone(zone_name, delete_pools, pools, zonegroup_name)
1528+
result = multisite_instance.delete_zone(zone_name, delete_pools,
1529+
pools, zonegroup_name,
1530+
realm_name)
15271531
return result
15281532
except NoRgwDaemonsException as e:
15291533
raise DashboardException(e, http_status_code=404, component='rgw')

src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/models/rgw-multisite-zone-deletion-form/rgw-multisite-zone-deletion-form.component.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,13 @@ export class RgwMultisiteZoneDeletionFormComponent implements OnInit, AfterViewI
4848

4949
submit() {
5050
this.rgwZoneService
51-
.delete(this.zone.name, this.zoneForm.value.deletePools, this.includedPools, this.zone.parent)
51+
.delete(
52+
this.zone.name,
53+
this.zoneForm.value.deletePools,
54+
this.includedPools,
55+
this.zone.parent,
56+
this.zone.second_parent
57+
)
5258
.subscribe(
5359
() => {
5460
this.notificationService.show(

src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/models/rgw-multisite-zonegroup-deletion-form/rgw-multisite-zonegroup-deletion-form.component.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,12 @@ export class RgwMultisiteZonegroupDeletionFormComponent implements OnInit, After
5252

5353
submit() {
5454
this.rgwZonegroupService
55-
.delete(this.zonegroup.name, this.zonegroupForm.value.deletePools, this.includedPools)
55+
.delete(
56+
this.zonegroup.name,
57+
this.zonegroupForm.value.deletePools,
58+
this.includedPools,
59+
this.zonegroup.parent
60+
)
5661
.subscribe(() => {
5762
this.notificationService.show(
5863
NotificationType.success,

src/pybind/mgr/dashboard/frontend/src/app/shared/api/rgw-zone.service.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,16 @@ export class RgwZoneService {
4949
zoneName: string,
5050
deletePools: boolean,
5151
pools: Set<string>,
52-
zonegroupName: string
52+
zonegroupName: string,
53+
realmName: string
5354
): Observable<any> {
5455
let params = new HttpParams();
5556
params = params.appendAll({
5657
zone_name: zoneName,
5758
delete_pools: deletePools,
5859
pools: Array.from(pools.values()),
59-
zonegroup_name: zonegroupName
60+
zonegroup_name: zonegroupName,
61+
realm_name: realmName
6062
});
6163
return this.http.delete(`${this.url}/${zoneName}`, { params: params });
6264
}

src/pybind/mgr/dashboard/frontend/src/app/shared/api/rgw-zonegroup.service.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,18 @@ export class RgwZonegroupService {
5959
return this.http.get(`${this.url}/get_all_zonegroups_info`);
6060
}
6161

62-
delete(zonegroupName: string, deletePools: boolean, pools: Set<string>): Observable<any> {
62+
delete(
63+
zonegroupName: string,
64+
deletePools: boolean,
65+
pools: Set<string>,
66+
realmName: string
67+
): Observable<any> {
6368
let params = new HttpParams();
6469
params = params.appendAll({
6570
zonegroup_name: zonegroupName,
6671
delete_pools: deletePools,
67-
pools: Array.from(pools.values())
72+
pools: Array.from(pools.values()),
73+
realm_name: realmName
6874
});
6975
return this.http.delete(`${this.url}/${zonegroupName}`, { params: params });
7076
}

src/pybind/mgr/dashboard/openapi.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15338,6 +15338,11 @@ paths:
1533815338
name: zonegroup_name
1533915339
schema:
1534015340
type: string
15341+
- allowEmptyValue: true
15342+
in: query
15343+
name: realm_name
15344+
schema:
15345+
type: string
1534115346
responses:
1534215347
'202':
1534315348
content:
@@ -15718,6 +15723,11 @@ paths:
1571815723
name: pools
1571915724
schema:
1572015725
type: string
15726+
- allowEmptyValue: true
15727+
in: query
15728+
name: realm_name
15729+
schema:
15730+
type: string
1572115731
responses:
1572215732
'202':
1572315733
content:

src/pybind/mgr/dashboard/services/rgw_client.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2035,7 +2035,9 @@ def get_all_zonegroups_info(self):
20352035
all_zonegroups_info['default_zonegroup'] = '' # type: ignore
20362036
return all_zonegroups_info
20372037

2038-
def delete_zonegroup(self, zonegroup_name: str, delete_pools: str, pools: List[str]):
2038+
def delete_zonegroup(self, zonegroup_name: str,
2039+
delete_pools: str, pools: List[str],
2040+
realm_name: Optional[str] = None):
20392041
if delete_pools == 'true':
20402042
zonegroup_info = self.get_zonegroup(zonegroup_name)
20412043
rgw_delete_zonegroup_cmd = ['zonegroup', 'delete', '--rgw-zonegroup', zonegroup_name]
@@ -2046,7 +2048,7 @@ def delete_zonegroup(self, zonegroup_name: str, delete_pools: str, pools: List[s
20462048
http_status_code=500, component='rgw')
20472049
except SubprocessError as error:
20482050
raise DashboardException(error, http_status_code=500, component='rgw')
2049-
self.update_period()
2051+
self.update_period(realm_name=realm_name)
20502052
if delete_pools == 'true':
20512053
for zone in zonegroup_info['zones']:
20522054
self.delete_zone(zone['name'], 'true', pools)
@@ -2346,8 +2348,14 @@ def edit_zonegroup(self, realm_name: str, zonegroup_name: str, new_zonegroup_nam
23462348
else:
23472349
self.add_placement_targets(new_zonegroup_name, placement_targets)
23482350

2349-
def update_period(self):
2351+
def update_period(self, realm_name=None, realm_id=None):
23502352
rgw_update_period_cmd = ['period', 'update', '--commit']
2353+
if realm_name:
2354+
rgw_update_period_cmd.append('--rgw-realm')
2355+
rgw_update_period_cmd.append(realm_name)
2356+
if realm_id:
2357+
rgw_update_period_cmd.append('--realm-id')
2358+
rgw_update_period_cmd.append(realm_id)
23512359
try:
23522360
exit_code, _, err = mgr.send_rgwadmin_command(rgw_update_period_cmd)
23532361
if exit_code > 0:
@@ -2556,7 +2564,7 @@ def get_all_zones_info(self):
25562564
return all_zones_info
25572565

25582566
def delete_zone(self, zone_name: str, delete_pools: str, pools: List[str],
2559-
zonegroup_name: str = '',):
2567+
zonegroup_name: str = '', realm_name: Optional[str] = None):
25602568
rgw_remove_zone_from_zonegroup_cmd = ['zonegroup', 'remove', '--rgw-zonegroup',
25612569
zonegroup_name, '--rgw-zone', zone_name]
25622570
rgw_delete_zone_cmd = ['zone', 'delete', '--rgw-zone', zone_name]
@@ -2568,15 +2576,15 @@ def delete_zone(self, zone_name: str, delete_pools: str, pools: List[str],
25682576
http_status_code=500, component='rgw')
25692577
except SubprocessError as error:
25702578
raise DashboardException(error, http_status_code=500, component='rgw')
2571-
self.update_period()
2579+
self.update_period(realm_name=realm_name)
25722580
try:
25732581
exit_code, _, _ = mgr.send_rgwadmin_command(rgw_delete_zone_cmd)
25742582
if exit_code > 0:
25752583
raise DashboardException(msg='Unable to delete zone',
25762584
http_status_code=500, component='rgw')
25772585
except SubprocessError as error:
25782586
raise DashboardException(error, http_status_code=500, component='rgw')
2579-
self.update_period()
2587+
self.update_period(realm_name=realm_name)
25802588
if delete_pools == 'true':
25812589
self.delete_pools(pools)
25822590

0 commit comments

Comments
 (0)