summaryrefslogtreecommitdiffstats
path: root/src/rgw/services/svc_meta_be_otp.cc
blob: 1800f8a3cac52bb27f21c15f35ba10874f862f5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
// vim: ts=8 sw=2 smarttab ft=cpp

#include "svc_meta_be_otp.h"

#include "rgw/rgw_tools.h"
#include "rgw/rgw_metadata.h"
#include "rgw/rgw_mdlog.h"

#define dout_subsys ceph_subsys_rgw


RGWSI_MetaBackend_OTP::RGWSI_MetaBackend_OTP(CephContext *cct) : RGWSI_MetaBackend_SObj(cct) {
}

RGWSI_MetaBackend_OTP::~RGWSI_MetaBackend_OTP() {
}

string RGWSI_MetaBackend_OTP::get_meta_key(const rgw_user& user)
{
  return string("otp:user:") + user.to_str();
}

RGWSI_MetaBackend_Handler *RGWSI_MetaBackend_OTP::alloc_be_handler()
{
  return new RGWSI_MetaBackend_Handler_OTP(this);
}

RGWSI_MetaBackend::Context *RGWSI_MetaBackend_OTP::alloc_ctx()
{
  return new Context_OTP(sysobj_svc);
}

int RGWSI_MetaBackend_OTP::call_with_get_params(ceph::real_time *pmtime, std::function<int(RGWSI_MetaBackend::GetParams&)> cb)
{
  otp_devices_list_t devices;
  RGWSI_MBOTP_GetParams params;
  params.pdevices = &devices;
  params.pmtime = pmtime;
  return cb(params);
}

int RGWSI_MetaBackend_OTP::get_entry(RGWSI_MetaBackend::Context *_ctx,
                                     const string& key,
                                     RGWSI_MetaBackend::GetParams& _params,
                                     RGWObjVersionTracker *objv_tracker,
                                     optional_yield y,
                                     const DoutPrefixProvider *dpp)
{
  RGWSI_MBOTP_GetParams& params = static_cast<RGWSI_MBOTP_GetParams&>(_params);

  int r = cls_svc->mfa.list_mfa(dpp, key, params.pdevices, objv_tracker, params.pmtime, y);
  if (r < 0) {
    return r;
  }

  return 0;
}

int RGWSI_MetaBackend_OTP::put_entry(const DoutPrefixProvider *dpp, 
                                     RGWSI_MetaBackend::Context *_ctx,
                                     const string& key,
                                     RGWSI_MetaBackend::PutParams& _params,
                                     RGWObjVersionTracker *objv_tracker,
                                     optional_yield y)
{
  RGWSI_MBOTP_PutParams& params = static_cast<RGWSI_MBOTP_PutParams&>(_params);

  return cls_svc->mfa.set_mfa(dpp, key, params.devices, true, objv_tracker, params.mtime, y);
}