def config(self, spec: RGWSpec, rgw_id: str) -> None: # type: ignore assert self.TYPE == spec.service_type # create realm, zonegroup, and zone if needed self.create_realm_zonegroup_zone(spec, rgw_id) # ensure rgw_realm and rgw_zone is set for these daemons ret, out, err = self.mgr.check_mon_command({ 'prefix': 'config set', 'who': f"{utils.name_to_config_section('rgw')}.{spec.service_id}", 'name': 'rgw_zone', 'value': spec.rgw_zone, }) ret, out, err = self.mgr.check_mon_command({ 'prefix': 'config set', 'who': f"{utils.name_to_config_section('rgw')}.{spec.rgw_realm}", 'name': 'rgw_realm', 'value': spec.rgw_realm, }) ret, out, err = self.mgr.check_mon_command({ 'prefix': 'config set', 'who': f"{utils.name_to_config_section('rgw')}.{spec.service_id}", 'name': 'rgw_frontends', 'value': spec.rgw_frontends_config_value(), }) if spec.rgw_frontend_ssl_certificate: if isinstance(spec.rgw_frontend_ssl_certificate, list): cert_data = '\n'.join(spec.rgw_frontend_ssl_certificate) elif isinstance(spec.rgw_frontend_ssl_certificate, str): cert_data = spec.rgw_frontend_ssl_certificate else: raise OrchestratorError( 'Invalid rgw_frontend_ssl_certificate: %s' % spec.rgw_frontend_ssl_certificate) ret, out, err = self.mgr.check_mon_command({ 'prefix': 'config-key set', 'key': f'rgw/cert/{spec.rgw_realm}/{spec.rgw_zone}.crt', 'val': cert_data, }) if spec.rgw_frontend_ssl_key: if isinstance(spec.rgw_frontend_ssl_key, list): key_data = '\n'.join(spec.rgw_frontend_ssl_key) elif isinstance(spec.rgw_frontend_ssl_certificate, str): key_data = spec.rgw_frontend_ssl_key else: raise OrchestratorError( 'Invalid rgw_frontend_ssl_key: %s' % spec.rgw_frontend_ssl_key) ret, out, err = self.mgr.check_mon_command({ 'prefix': 'config-key set', 'key': f'rgw/cert/{spec.rgw_realm}/{spec.rgw_zone}.key', 'val': key_data, }) # TODO: fail, if we don't have a spec logger.info('Saving service %s spec with placement %s' % ( spec.service_name(), spec.placement.pretty_str())) self.mgr.spec_store.save(spec)
def config(self, spec: RGWSpec): # ensure rgw_realm and rgw_zone is set for these daemons ret, out, err = self.mgr.check_mon_command({ 'prefix': 'config set', 'who': f"{utils.name_to_config_section('rgw')}.{spec.service_id}", 'name': 'rgw_zone', 'value': spec.rgw_zone, }) ret, out, err = self.mgr.check_mon_command({ 'prefix': 'config set', 'who': f"{utils.name_to_config_section('rgw')}.{spec.rgw_realm}", 'name': 'rgw_realm', 'value': spec.rgw_realm, }) ret, out, err = self.mgr.check_mon_command({ 'prefix': 'config set', 'who': f"{utils.name_to_config_section('rgw')}.{spec.service_id}", 'name': 'rgw_frontends', 'value': spec.rgw_frontends_config_value(), }) if spec.rgw_frontend_ssl_certificate: if isinstance(spec.rgw_frontend_ssl_certificate, list): cert_data = '\n'.join(spec.rgw_frontend_ssl_certificate) else: cert_data = spec.rgw_frontend_ssl_certificate ret, out, err = self.mgr.check_mon_command({ 'prefix': 'config-key set', 'key': f'rgw/cert/{spec.rgw_realm}/{spec.rgw_zone}.crt', 'val': cert_data, }) if spec.rgw_frontend_ssl_key: if isinstance(spec.rgw_frontend_ssl_key, list): key_data = '\n'.join(spec.rgw_frontend_ssl_key) else: key_data = spec.rgw_frontend_ssl_key # type: ignore ret, out, err = self.mgr.check_mon_command({ 'prefix': 'config-key set', 'key': f'rgw/cert/{spec.rgw_realm}/{spec.rgw_zone}.key', 'val': key_data, }) logger.info('Saving service %s spec with placement %s' % (spec.service_name(), spec.placement.pretty_str())) self.mgr.spec_store.save(spec)