auto& zone_def = zone_def_iter->second;
- map<string, string> sync_module_config;
-
if (!store->get_sync_modules_manager()->supports_data_export(zone_def.tier_type)) {
return -ENOTSUP;
}
- int r = store->get_sync_modules_manager()->create_instance(zone_def.tier_type, sync_module_config, &sync_module);
+ RGWZoneParams& zone_params = store->get_zone_params();
+
+ int r = store->get_sync_modules_manager()->create_instance(zone_def.tier_type, zone_params.tier_config, &sync_module);
if (r < 0) {
lderr(store->ctx()) << "ERROR: failed to init sync module instance, r=" << r << dendl;
finalize();
return -EINVAL;
}
- const char *log_pool = store->get_zone_params().log_pool.name.c_str();
+ const char *log_pool = zone_params.log_pool.name.c_str();
librados::Rados *rados = store->get_rados_handle();
r = rados->ioctx_create(log_pool, ioctx);
if (r < 0) {
- lderr(store->ctx()) << "ERROR: failed to open log pool (" << store->get_zone_params().log_pool.name << " ret=" << r << dendl;
+ lderr(store->ctx()) << "ERROR: failed to open log pool (" << zone_params.log_pool.name << " ret=" << r << dendl;
return r;
}
- source_status_obj = rgw_obj(store->get_zone_params().log_pool, RGWDataSyncStatusManager::sync_status_oid(source_zone));
+ source_status_obj = rgw_obj(zone_params.log_pool, RGWDataSyncStatusManager::sync_status_oid(source_zone));
error_logger = new RGWSyncErrorLogger(store, RGW_SYNC_ERROR_LOG_SHARD_PREFIX, ERROR_LOGGER_SHARDS);
num_shards = datalog_info.num_shards;
for (int i = 0; i < num_shards; i++) {
- shard_objs[i] = rgw_obj(store->get_zone_params().log_pool, shard_obj_name(source_zone, i));
+ shard_objs[i] = rgw_obj(zone_params.log_pool, shard_obj_name(source_zone, i));
}
return 0;
encode_json_plain("system_key", system_key, f);
encode_json("placement_pools", placement_pools, f);
encode_json("metadata_heap", metadata_heap.data_pool, f);
+ encode_json("tier_config", tier_config, f);
encode_json("realm_id", realm_id, f);
}
JSONDecoder::decode_json("system_key", system_key, obj);
JSONDecoder::decode_json("placement_pools", placement_pools, obj);
::decode_json("metadata_heap", metadata_heap, obj);
+ JSONDecoder::decode_json("tier_config", tier_config, obj);
JSONDecoder::decode_json("realm_id", realm_id, obj);
}
string realm_id;
+ map<string, string> tier_config;
+
RGWZoneParams() : RGWSystemMetaObj() {}
RGWZoneParams(const string& name) : RGWSystemMetaObj(name){}
RGWZoneParams(const string& id, const string& name) : RGWSystemMetaObj(id, name) {}
int fix_pool_names();
void encode(bufferlist& bl) const {
- ENCODE_START(7, 1, bl);
+ ENCODE_START(8, 1, bl);
::encode(domain_root, bl);
::encode(control_pool, bl);
::encode(gc_pool, bl);
::encode(metadata_heap, bl);
::encode(realm_id, bl);
::encode(lc_pool, bl);
+ ::encode(tier_config, bl);
ENCODE_FINISH(bl);
}
void decode(bufferlist::iterator& bl) {
- DECODE_START(7, bl);
+ DECODE_START(8, bl);
::decode(domain_root, bl);
::decode(control_pool, bl);
::decode(gc_pool, bl);
} else {
lc_pool = name + ".rgw.lc";
}
+ if (struct_v >= 8) {
+ ::decode(tier_config, bl);
+ }
DECODE_FINISH(bl);
}
void dump(Formatter *f) const;