inbuf: Optional[str] = None) -> HandleCommandResult:
"""Bootstrap new rgw zone that syncs with zone on another cluster in the same realm"""
- created_zones = self.rgw_zone_create(zone_name, realm_token, port, placement,
- start_radosgw, zone_endpoints, inbuf)
-
- return HandleCommandResult(retval=0, stdout=f"Zones {', '.join(created_zones)} created successfully")
+ try:
+ created_zones = self.rgw_zone_create(zone_name, realm_token, port, placement,
+ start_radosgw, zone_endpoints, inbuf)
+ return HandleCommandResult(retval=0, stdout=f"Zones {', '.join(created_zones)} created successfully")
+ except RGWAMException as e:
+ return HandleCommandResult(retval=e.retcode, stderr=f'Failed to create zone: {str(e)}')
def rgw_zone_create(self,
zone_name: Optional[str] = None,
placement: Optional[Union[str, Dict[str, Any]]] = None,
start_radosgw: Optional[bool] = True,
zone_endpoints: Optional[str] = None,
- inbuf: Optional[str] = None) -> Any:
+ inbuf: Optional[str] = None) -> List[str]:
if inbuf:
try:
rgw_specs = self._parse_rgw_specs(inbuf)
except RGWSpecParsingError as e:
- return HandleCommandResult(retval=-errno.EINVAL, stderr=f'{e}')
+ raise RGWAMException(str(e))
elif (zone_name and realm_token):
token = RealmToken.from_base64_str(realm_token)
if isinstance(placement, dict):
zone_endpoints=zone_endpoints)]
else:
err_msg = 'Invalid arguments: either pass a spec with -i or provide the zone_name and realm_token.'
- return HandleCommandResult(retval=-errno.EINVAL, stdout='', stderr=err_msg)
+ raise RGWAMException(err_msg)
try:
created_zones = []
created_zones.append(rgw_spec.rgw_zone)
return created_zones
except RGWAMException as e:
- self.log.error('cmd run exception: (%d) %s' % (e.retcode, e.message))
- return HandleCommandResult(retval=e.retcode, stdout=e.stdout, stderr=e.stderr)
+ err_msg = 'cmd run exception: (%d) %s' % (e.retcode, e.message)
+ self.log.error(err_msg)
+ raise e
return created_zones
@CLICommand('rgw realm reconcile', perm='rw')