}
struct rgw_sync_pipe_info {
+ rgw_sync_pipe_params params;
rgw_sync_pipe_info_entity source;
rgw_sync_pipe_info_entity target;
rgw_sync_pipe_info(const rgw_sync_bucket_pipe& pipe,
std::optional<RGWBucketInfo> source_bucket_info,
std::optional<RGWBucketInfo> target_bucket_info) : source(pipe.source, source_bucket_info),
- target(pipe.dest, target_bucket_info) {}
+ target(pipe.dest, target_bucket_info) {
+ params = pipe.params;
+ }
bool operator<(const rgw_sync_pipe_info& p) const {
if (source < p.source) {
}
sync_pair.dest_bs.bucket = siter->target.get_bucket();
+ sync_pair.params = siter->params;
+
if (sync_pair.source_bs.shard_id >= 0) {
num_shards = 1;
cur_shard = sync_pair.source_bs.shard_id;
void RGWGetBucketPeersCR::update_from_target_bucket_policy()
{
if (!target_policy ||
+ !target_policy->policy_handler ||
!pipes) {
return;
}
void RGWGetBucketPeersCR::update_from_source_bucket_policy()
{
if (!source_policy ||
+ !source_policy->policy_handler ||
!pipes) {
return;
}
#include "rgw_sync_module.h"
#include "rgw_sync_trace.h"
+#include "rgw_sync_policy.h"
class JSONObj;
struct rgw_sync_bucket_pipe;
struct rgw_bucket_sync_pair_info {
+ rgw_sync_pipe_params params;
rgw_bucket_shard source_bs;
rgw_bucket_shard dest_bs;
- string source_prefix;
- string dest_prefix;
};
inline ostream& operator<<(ostream& out, const rgw_bucket_sync_pair_info& p) {
- if (p.source_bs.bucket == p.dest_bs.bucket &&
- p.source_prefix == p.dest_prefix) {
+ if (p.source_bs.bucket == p.dest_bs.bucket) {
return out << p.source_bs;
}
out << p.source_bs;
- if (!p.source_prefix.empty()) {
- out << "/" << p.source_prefix;
+ if (p.params.filter.prefix) {
+ out << "/" << *p.params.filter.prefix + "*";
}
out << "->" << p.dest_bs.bucket;
- if (!p.dest_prefix.empty()) {
- out << "/" << p.dest_prefix;
- }
-
return out;
}