1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab ft=cpp
4 #include "rgw_common.h"
5 #include "rgw_coroutine.h"
6 #include "rgw_cr_rados.h"
7 #include "rgw_sync_module.h"
8 #include "rgw_data_sync.h"
9 #include "rgw_bucket.h"
11 #include "rgw_sync_module_log.h"
12 #include "rgw_sync_module_es.h"
13 #include "rgw_sync_module_aws.h"
14 #include "rgw_sync_module_pubsub.h"
16 #include <boost/asio/yield.hpp>
18 #define dout_subsys ceph_subsys_rgw
20 RGWMetadataHandler
*RGWSyncModuleInstance::alloc_bucket_meta_handler()
22 return RGWBucketMetaHandlerAllocator::alloc();
25 RGWBucketInstanceMetadataHandlerBase
*RGWSyncModuleInstance::alloc_bucket_instance_meta_handler()
27 return RGWBucketInstanceMetaHandlerAllocator::alloc();
30 RGWStatRemoteObjCBCR::RGWStatRemoteObjCBCR(RGWDataSyncCtx
*_sc
,
31 rgw_bucket
& _src_bucket
, rgw_obj_key
& _key
) : RGWCoroutine(_sc
->cct
),
32 sc(_sc
), sync_env(_sc
->env
),
33 src_bucket(_src_bucket
), key(_key
) {
36 RGWCallStatRemoteObjCR::RGWCallStatRemoteObjCR(RGWDataSyncCtx
*_sc
,
37 rgw_bucket
& _src_bucket
, rgw_obj_key
& _key
) : RGWCoroutine(_sc
->cct
),
38 sc(_sc
), sync_env(_sc
->env
),
39 src_bucket(_src_bucket
), key(_key
) {
42 int RGWCallStatRemoteObjCR::operate(const DoutPrefixProvider
*dpp
) {
45 call(new RGWStatRemoteObjCR(sync_env
->async_rados
, sync_env
->store
,
47 src_bucket
, key
, &mtime
, &size
, &etag
, &attrs
, &headers
));
50 ldpp_dout(dpp
, 10) << "RGWStatRemoteObjCR() returned " << retcode
<< dendl
;
51 return set_cr_error(retcode
);
53 ldpp_dout(dpp
, 20) << "stat of remote obj: z=" << sc
->source_zone
54 << " b=" << src_bucket
<< " k=" << key
55 << " size=" << size
<< " mtime=" << mtime
<< dendl
;
57 RGWStatRemoteObjCBCR
*cb
= allocate_callback();
59 cb
->set_result(mtime
, size
, etag
, std::move(attrs
), std::move(headers
));
64 ldpp_dout(dpp
, 10) << "RGWStatRemoteObjCR() callback returned " << retcode
<< dendl
;
65 return set_cr_error(retcode
);
72 void rgw_register_sync_modules(RGWSyncModulesManager
*modules_manager
)
74 RGWSyncModuleRef
default_module(std::make_shared
<RGWDefaultSyncModule
>());
75 modules_manager
->register_module("rgw", default_module
, true);
77 RGWSyncModuleRef
archive_module(std::make_shared
<RGWArchiveSyncModule
>());
78 modules_manager
->register_module("archive", archive_module
);
80 RGWSyncModuleRef
log_module(std::make_shared
<RGWLogSyncModule
>());
81 modules_manager
->register_module("log", log_module
);
83 RGWSyncModuleRef
es_module(std::make_shared
<RGWElasticSyncModule
>());
84 modules_manager
->register_module("elasticsearch", es_module
);
86 RGWSyncModuleRef
aws_module(std::make_shared
<RGWAWSSyncModule
>());
87 modules_manager
->register_module("cloud", aws_module
);
89 RGWSyncModuleRef
pubsub_module(std::make_shared
<RGWPSSyncModule
>());
90 modules_manager
->register_module("pubsub", pubsub_module
);