]> git.proxmox.com Git - ceph.git/blob - ceph/src/rgw/rgw_otp.h
import ceph pacific 16.2.5
[ceph.git] / ceph / src / rgw / rgw_otp.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab ft=cpp
3
4 #ifndef CEPH_RGW_OTP_H
5 #define CEPH_RGW_OTP_H
6
7 namespace rgw { namespace sal {
8 class RGWRadosStore;
9 } }
10
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
18 class RGWObjVersionTracker;
19 class RGWMetadataHandler;
20 class RGWOTPMetadataHandler;
21 class RGWSI_Zone;
22 class RGWSI_OTP;
23 class RGWSI_MetaBackend;
24
25 class RGWOTPMetadataHandlerBase : public RGWMetadataHandler_GenericMetaBE {
26 public:
27 virtual ~RGWOTPMetadataHandlerBase() {}
28 virtual int init(RGWSI_Zone *zone,
29 RGWSI_MetaBackend *_meta_be,
30 RGWSI_OTP *_otp) = 0;
31 };
32
33 class RGWOTPMetaHandlerAllocator {
34 public:
35 static RGWMetadataHandler *alloc();
36 };
37
38 struct RGWOTPInfo {
39 rgw_user uid;
40 otp_devices_list_t devices;
41 };
42
43
44 class 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
54 public:
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 };
104
105 int read_all(const rgw_user& uid, RGWOTPInfo *info, optional_yield y,
106 const DoutPrefixProvider *dpp,
107 const GetParams& params = {});
108 int store_all(const DoutPrefixProvider *dpp,
109 const RGWOTPInfo& info, optional_yield y,
110 const PutParams& params = {});
111 int remove_all(const DoutPrefixProvider *dpp,
112 const rgw_user& user, optional_yield y,
113 const RemoveParams& params = {});
114 };
115
116 #endif
117