class RGWOTPMetadataHandler : public RGWOTPMetadataHandlerBase {
- friend class RGWOTPCtl;
struct Svc {
RGWSI_Zone *zone;
string get_type() override { return "otp"; }
};
-
-RGWOTPCtl::RGWOTPCtl(RGWSI_Zone *zone_svc,
- RGWSI_OTP *otp_svc)
-{
- svc.zone = zone_svc;
- svc.otp = otp_svc;
-}
-
-
-void RGWOTPCtl::init(RGWOTPMetadataHandler *_meta_handler)
-{
- meta_handler = _meta_handler;
- be_handler = meta_handler->get_be_handler();
-}
-
-int RGWOTPCtl::read_all(const rgw_user& uid,
- RGWOTPInfo *info,
- optional_yield y,
- const DoutPrefixProvider *dpp,
- const GetParams& params)
-{
- info->uid = uid;
- return meta_handler->call([&](RGWSI_OTP_BE_Ctx& ctx) {
- return svc.otp->read_all(ctx, uid, &info->devices, params.mtime, params.objv_tracker, y, dpp);
- });
-}
-
-int RGWOTPCtl::store_all(const DoutPrefixProvider *dpp,
- const RGWOTPInfo& info,
- optional_yield y,
- const PutParams& params)
-{
- return meta_handler->call([&](RGWSI_OTP_BE_Ctx& ctx) {
- return svc.otp->store_all(dpp, ctx, info.uid, info.devices, params.mtime, params.objv_tracker, y);
- });
-}
-
-int RGWOTPCtl::remove_all(const DoutPrefixProvider *dpp,
- const rgw_user& uid,
- optional_yield y,
- const RemoveParams& params)
-{
- return meta_handler->call([&](RGWSI_OTP_BE_Ctx& ctx) {
- return svc.otp->remove_all(dpp, ctx, uid, params.objv_tracker, y);
- });
-}
-
-
RGWMetadataHandler *RGWOTPMetaHandlerAllocator::alloc()
{
return new RGWOTPMetadataHandler();
public:
static RGWMetadataHandler *alloc();
};
-
-struct RGWOTPInfo {
- rgw_user uid;
- otp_devices_list_t devices;
-};
-
-
-class RGWOTPCtl
-{
- struct Svc {
- RGWSI_Zone *zone{nullptr};
- RGWSI_OTP *otp{nullptr};
- } svc;
-
- RGWOTPMetadataHandler *meta_handler;
- RGWSI_MetaBackend_Handler *be_handler;
-
-public:
- RGWOTPCtl(RGWSI_Zone *zone_svc,
- RGWSI_OTP *otp_svc);
-
- void init(RGWOTPMetadataHandler *_meta_handler);
-
- struct GetParams {
- RGWObjVersionTracker *objv_tracker{nullptr};
- ceph::real_time *mtime{nullptr};
-
- GetParams() {}
-
- GetParams& set_objv_tracker(RGWObjVersionTracker *_objv_tracker) {
- objv_tracker = _objv_tracker;
- return *this;
- }
-
- GetParams& set_mtime(ceph::real_time *_mtime) {
- mtime = _mtime;
- return *this;
- }
- };
-
- struct PutParams {
- RGWObjVersionTracker *objv_tracker{nullptr};
- ceph::real_time mtime;
-
- PutParams() {}
-
- PutParams& set_objv_tracker(RGWObjVersionTracker *_objv_tracker) {
- objv_tracker = _objv_tracker;
- return *this;
- }
-
- PutParams& set_mtime(const ceph::real_time& _mtime) {
- mtime = _mtime;
- return *this;
- }
- };
-
- struct RemoveParams {
- RGWObjVersionTracker *objv_tracker{nullptr};
-
- RemoveParams() {}
-
- RemoveParams& set_objv_tracker(RGWObjVersionTracker *_objv_tracker) {
- objv_tracker = _objv_tracker;
- return *this;
- }
- };
-
- int read_all(const rgw_user& uid, RGWOTPInfo *info, optional_yield y,
- const DoutPrefixProvider *dpp,
- const GetParams& params = {});
- int store_all(const DoutPrefixProvider *dpp,
- const RGWOTPInfo& info, optional_yield y,
- const PutParams& params = {});
- int remove_all(const DoutPrefixProvider *dpp,
- const rgw_user& user, optional_yield y,
- const RemoveParams& params = {});
-};
svc.bucket,
svc.bucket_sync,
svc.bi, svc.user));
- otp.reset(new RGWOTPCtl(svc.zone, svc.otp));
RGWBucketMetadataHandlerBase *bucket_meta_handler = static_cast<RGWBucketMetadataHandlerBase *>(meta.bucket.get());
RGWBucketInstanceMetadataHandlerBase *bi_meta_handler = static_cast<RGWBucketInstanceMetadataHandlerBase *>(meta.bucket_instance.get());
svc.datalog_rados,
dpp);
- otp->init((RGWOTPMetadataHandler *)meta.otp.get());
-
return 0;
}
user = _ctl.user.get();
bucket = _ctl.bucket.get();
- otp = _ctl.otp.get();
r = meta.user->attach(meta.mgr);
if (r < 0) {
class RGWMetadataHandler;
class RGWUserCtl;
class RGWBucketCtl;
-class RGWOTPCtl;
template <class T>
class RGWChainedCacheImpl;
std::unique_ptr<RGWUserCtl> user;
std::unique_ptr<RGWBucketCtl> bucket;
- std::unique_ptr<RGWOTPCtl> otp;
RGWCtlDef();
~RGWCtlDef();
RGWUserCtl *user{nullptr};
RGWBucketCtl *bucket{nullptr};
- RGWOTPCtl *otp{nullptr};
int init(RGWServices *_svc, rgw::sal::Driver* driver,
librados::Rados& rados, const DoutPrefixProvider *dpp);