]> git.proxmox.com Git - ceph.git/blame - ceph/src/rgw/rgw_otp.h
import ceph pacific 16.2.5
[ceph.git] / ceph / src / rgw / rgw_otp.h
CommitLineData
11fdf7f2 1// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
9f95a23c 2// vim: ts=8 sw=2 smarttab ft=cpp
11fdf7f2
TL
3
4#ifndef CEPH_RGW_OTP_H
5#define CEPH_RGW_OTP_H
6
9f95a23c
TL
7namespace rgw { namespace sal {
8class RGWRadosStore;
9} }
11fdf7f2 10
9f95a23c
TL
11#include "cls/otp/cls_otp_types.h"
12#include "services/svc_meta_be_otp.h"
13
14#include "rgw_basic_types.h"
15#include "rgw_metadata.h"
16
17
18class RGWObjVersionTracker;
11fdf7f2 19class RGWMetadataHandler;
9f95a23c
TL
20class RGWOTPMetadataHandler;
21class RGWSI_Zone;
22class RGWSI_OTP;
23class RGWSI_MetaBackend;
24
25class RGWOTPMetadataHandlerBase : public RGWMetadataHandler_GenericMetaBE {
26public:
27 virtual ~RGWOTPMetadataHandlerBase() {}
28 virtual int init(RGWSI_Zone *zone,
29 RGWSI_MetaBackend *_meta_be,
30 RGWSI_OTP *_otp) = 0;
31};
32
33class RGWOTPMetaHandlerAllocator {
34public:
35 static RGWMetadataHandler *alloc();
36};
37
38struct RGWOTPInfo {
39 rgw_user uid;
40 otp_devices_list_t devices;
41};
42
43
44class RGWOTPCtl
45{
46 struct Svc {
47 RGWSI_Zone *zone{nullptr};
48 RGWSI_OTP *otp{nullptr};
49 } svc;
50
51 RGWOTPMetadataHandler *meta_handler;
52 RGWSI_MetaBackend_Handler *be_handler;
53
54public:
55 RGWOTPCtl(RGWSI_Zone *zone_svc,
56 RGWSI_OTP *otp_svc);
57
58 void init(RGWOTPMetadataHandler *_meta_handler);
59
60 struct GetParams {
61 RGWObjVersionTracker *objv_tracker{nullptr};
62 ceph::real_time *mtime{nullptr};
63
64 GetParams() {}
65
66 GetParams& set_objv_tracker(RGWObjVersionTracker *_objv_tracker) {
67 objv_tracker = _objv_tracker;
68 return *this;
69 }
70
71 GetParams& set_mtime(ceph::real_time *_mtime) {
72 mtime = _mtime;
73 return *this;
74 }
75 };
76
77 struct PutParams {
78 RGWObjVersionTracker *objv_tracker{nullptr};
79 ceph::real_time mtime;
80
81 PutParams() {}
82
83 PutParams& set_objv_tracker(RGWObjVersionTracker *_objv_tracker) {
84 objv_tracker = _objv_tracker;
85 return *this;
86 }
87
88 PutParams& set_mtime(const ceph::real_time& _mtime) {
89 mtime = _mtime;
90 return *this;
91 }
92 };
93
94 struct RemoveParams {
95 RGWObjVersionTracker *objv_tracker{nullptr};
96
97 RemoveParams() {}
98
99 RemoveParams& set_objv_tracker(RGWObjVersionTracker *_objv_tracker) {
100 objv_tracker = _objv_tracker;
101 return *this;
102 }
103 };
11fdf7f2 104
9f95a23c 105 int read_all(const rgw_user& uid, RGWOTPInfo *info, optional_yield y,
b3b6e05e 106 const DoutPrefixProvider *dpp,
9f95a23c 107 const GetParams& params = {});
b3b6e05e
TL
108 int store_all(const DoutPrefixProvider *dpp,
109 const RGWOTPInfo& info, optional_yield y,
9f95a23c 110 const PutParams& params = {});
b3b6e05e
TL
111 int remove_all(const DoutPrefixProvider *dpp,
112 const rgw_user& user, optional_yield y,
9f95a23c
TL
113 const RemoveParams& params = {});
114};
11fdf7f2
TL
115
116#endif
117