@@ -220,11 +220,10 @@ void RGWZoneGroup::decode_json(JSONObj *obj)
220220 JSONDecoder::decode_json (" enabled_features" , enabled_features, obj);
221221}
222222
223- RGWZoneParams::~RGWZoneParams () {}
224-
225223void RGWZoneParams::decode_json (JSONObj *obj)
226224{
227- RGWSystemMetaObj::decode_json (obj);
225+ JSONDecoder::decode_json (" id" , id, obj);
226+ JSONDecoder::decode_json (" name" , name, obj);
228227 JSONDecoder::decode_json (" domain_root" , domain_root, obj);
229228 JSONDecoder::decode_json (" control_pool" , control_pool, obj);
230229 JSONDecoder::decode_json (" gc_pool" , gc_pool, obj);
@@ -251,7 +250,8 @@ void RGWZoneParams::decode_json(JSONObj *obj)
251250
252251void RGWZoneParams::dump (Formatter *f) const
253252{
254- RGWSystemMetaObj::dump (f);
253+ encode_json (" id" , id, f);
254+ encode_json (" name" , name, f);
255255 encode_json (" domain_root" , domain_root, f);
256256 encode_json (" control_pool" , control_pool, f);
257257 encode_json (" gc_pool" , gc_pool, f);
@@ -276,17 +276,6 @@ void RGWZoneParams::dump(Formatter *f) const
276276 encode_json (" realm_id" , realm_id, f);
277277}
278278
279- int RGWZoneParams::init (const DoutPrefixProvider *dpp,
280- CephContext *cct, RGWSI_SysObj *sysobj_svc,
281- optional_yield y, bool setup_obj, bool old_format)
282- {
283- if (name.empty ()) {
284- name = cct->_conf ->rgw_zone ;
285- }
286-
287- return RGWSystemMetaObj::init (dpp, cct, sysobj_svc, y, setup_obj, old_format);
288- }
289-
290279rgw_pool RGWZoneParams::get_pool (CephContext *cct) const
291280{
292281 if (cct->_conf ->rgw_zone_root_pool .empty ()) {
@@ -296,101 +285,6 @@ rgw_pool RGWZoneParams::get_pool(CephContext *cct) const
296285 return rgw_pool (cct->_conf ->rgw_zone_root_pool );
297286}
298287
299- const string RGWZoneParams::get_default_oid (bool old_format) const
300- {
301- if (old_format) {
302- return cct->_conf ->rgw_default_zone_info_oid ;
303- }
304-
305- return cct->_conf ->rgw_default_zone_info_oid + " ." + realm_id;
306- }
307-
308- const string& RGWZoneParams::get_names_oid_prefix () const
309- {
310- return zone_names_oid_prefix;
311- }
312-
313- const string& RGWZoneParams::get_info_oid_prefix (bool old_format) const
314- {
315- return zone_info_oid_prefix;
316- }
317-
318- string RGWZoneParams::get_predefined_id (CephContext *cct) const {
319- return cct->_conf .get_val <string>(" rgw_zone_id" );
320- }
321-
322- const string& RGWZoneParams::get_predefined_name (CephContext *cct) const {
323- return cct->_conf ->rgw_zone ;
324- }
325-
326- int RGWZoneParams::read_default_id (const DoutPrefixProvider *dpp, string& default_id, optional_yield y,
327- bool old_format)
328- {
329- if (realm_id.empty ()) {
330- /* try using default realm */
331- RGWRealm realm;
332- auto config_store_type = g_conf ().get_val <std::string>(" rgw_config_store" );
333- auto cfgstore = DriverManager::create_config_store (dpp, config_store_type);
334- int ret = rgw::read_realm (dpp, y, cfgstore.get (), realm.get_id (), realm.get_name (), realm);
335- // no default realm exist
336- if (ret < 0 ) {
337- return read_id (dpp, default_zone_name, default_id, y);
338- }
339- realm_id = realm.get_id ();
340- }
341-
342- return RGWSystemMetaObj::read_default_id (dpp, default_id, y, old_format);
343- }
344-
345-
346- int RGWZoneParams::set_as_default (const DoutPrefixProvider *dpp, optional_yield y, bool exclusive)
347- {
348- if (realm_id.empty ()) {
349- /* try using default realm */
350- RGWRealm realm;
351- auto config_store_type = g_conf ().get_val <std::string>(" rgw_config_store" );
352- auto cfgstore = DriverManager::create_config_store (dpp, config_store_type);
353- int ret = rgw::read_realm (dpp, y, cfgstore.get (), realm.get_id (), realm.get_name (), realm);
354- if (ret < 0 ) {
355- ldpp_dout (dpp, 10 ) << " could not read realm id: " << cpp_strerror (-ret) << dendl;
356- return -EINVAL;
357- }
358- realm_id = realm.get_id ();
359- }
360-
361- return RGWSystemMetaObj::set_as_default (dpp, y, exclusive);
362- }
363-
364- int RGWZoneParams::create (const DoutPrefixProvider *dpp, optional_yield y, bool exclusive)
365- {
366- RGWZonePlacementInfo default_placement;
367- default_placement.index_pool = name + " ." + default_bucket_index_pool_suffix;
368- rgw_pool pool = name + " ." + default_storage_pool_suffix;
369- default_placement.storage_classes .set_storage_class (RGW_STORAGE_CLASS_STANDARD, &pool, nullptr );
370- default_placement.data_extra_pool = name + " ." + default_storage_extra_pool_suffix;
371- placement_pools[" default-placement" ] = default_placement;
372-
373- int r = fix_pool_names (dpp, y);
374- if (r < 0 ) {
375- ldpp_dout (dpp, 0 ) << " ERROR: fix_pool_names returned r=" << r << dendl;
376- return r;
377- }
378-
379- r = RGWSystemMetaObj::create (dpp, y, exclusive);
380- if (r < 0 ) {
381- return r;
382- }
383-
384- // try to set as default. may race with another create, so pass exclusive=true
385- // so we don't override an existing default
386- r = set_as_default (dpp, y, true );
387- if (r < 0 && r != -EEXIST) {
388- ldpp_dout (dpp, 10 ) << " WARNING: failed to set zone as default, r=" << r << dendl;
389- }
390-
391- return 0 ;
392- }
393-
394288rgw_pool fix_zone_pool_dup (const set<rgw_pool>& pools,
395289 const string& default_prefix,
396290 const string& default_suffix,
@@ -484,82 +378,6 @@ int get_zones_pool_set(const DoutPrefixProvider *dpp,
484378
485379}
486380
487- static int get_zones_pool_set (const DoutPrefixProvider *dpp,
488- CephContext* cct,
489- RGWSI_SysObj* sysobj_svc,
490- const list<string>& zone_names,
491- const string& my_zone_id,
492- set<rgw_pool>& pool_names,
493- optional_yield y)
494- {
495- for (const auto & name : zone_names) {
496- RGWZoneParams zone (name);
497- int r = zone.init (dpp, cct, sysobj_svc, y);
498- if (r < 0 ) {
499- ldpp_dout (dpp, 0 ) << " Error: failed to load zone " << name
500- << " with " << cpp_strerror (-r) << dendl;
501- return r;
502- }
503- if (zone.get_id () != my_zone_id) {
504- add_zone_pools (zone, pool_names);
505- }
506- }
507- return 0 ;
508- }
509-
510- int RGWZoneParams::fix_pool_names (const DoutPrefixProvider *dpp, optional_yield y)
511- {
512-
513- list<string> zones;
514- int r = zone_svc->list_zones (dpp, zones);
515- if (r < 0 ) {
516- ldpp_dout (dpp, 10 ) << " WARNING: driver->list_zones() returned r=" << r << dendl;
517- }
518-
519- set<rgw_pool> pools;
520- r = get_zones_pool_set (dpp, cct, sysobj_svc, zones, id, pools, y);
521- if (r < 0 ) {
522- ldpp_dout (dpp, 0 ) << " Error: get_zones_pool_names" << r << dendl;
523- return r;
524- }
525-
526- domain_root = fix_zone_pool_dup (pools, name, " .rgw.meta:root" , domain_root);
527- control_pool = fix_zone_pool_dup (pools, name, " .rgw.control" , control_pool);
528- gc_pool = fix_zone_pool_dup (pools, name ," .rgw.log:gc" , gc_pool);
529- lc_pool = fix_zone_pool_dup (pools, name ," .rgw.log:lc" , lc_pool);
530- log_pool = fix_zone_pool_dup (pools, name, " .rgw.log" , log_pool);
531- intent_log_pool = fix_zone_pool_dup (pools, name, " .rgw.log:intent" , intent_log_pool);
532- usage_log_pool = fix_zone_pool_dup (pools, name, " .rgw.log:usage" , usage_log_pool);
533- user_keys_pool = fix_zone_pool_dup (pools, name, " .rgw.meta:users.keys" , user_keys_pool);
534- user_email_pool = fix_zone_pool_dup (pools, name, " .rgw.meta:users.email" , user_email_pool);
535- user_swift_pool = fix_zone_pool_dup (pools, name, " .rgw.meta:users.swift" , user_swift_pool);
536- user_uid_pool = fix_zone_pool_dup (pools, name, " .rgw.meta:users.uid" , user_uid_pool);
537- roles_pool = fix_zone_pool_dup (pools, name, " .rgw.meta:roles" , roles_pool);
538- reshard_pool = fix_zone_pool_dup (pools, name, " .rgw.log:reshard" , reshard_pool);
539- otp_pool = fix_zone_pool_dup (pools, name, " .rgw.otp" , otp_pool);
540- oidc_pool = fix_zone_pool_dup (pools, name, " .rgw.meta:oidc" , oidc_pool);
541- notif_pool = fix_zone_pool_dup (pools, name ," .rgw.log:notif" , notif_pool);
542- topics_pool = fix_zone_pool_dup (pools, name, " .rgw.meta:topics" , topics_pool);
543- account_pool = fix_zone_pool_dup (pools, name, " .rgw.meta:accounts" , account_pool);
544- group_pool = fix_zone_pool_dup (pools, name, " .rgw.meta:groups" , group_pool);
545-
546- for (auto & iter : placement_pools) {
547- iter.second .index_pool = fix_zone_pool_dup (pools, name, " ." + default_bucket_index_pool_suffix,
548- iter.second .index_pool );
549- for (auto & pi : iter.second .storage_classes .get_all ()) {
550- if (pi.second .data_pool ) {
551- rgw_pool& pool = pi.second .data_pool .get ();
552- pool = fix_zone_pool_dup (pools, name, " ." + default_storage_pool_suffix,
553- pool);
554- }
555- }
556- iter.second .data_extra_pool = fix_zone_pool_dup (pools, name, " ." + default_storage_extra_pool_suffix,
557- iter.second .data_extra_pool );
558- }
559-
560- return 0 ;
561- }
562-
563381void RGWPeriodConfig::decode_json (JSONObj *obj)
564382{
565383 JSONDecoder::decode_json (" bucket_quota" , quota.bucket_quota , obj);
0 commit comments