1 // vim: ts=8 sw=2 smarttab ft=cpp
4 * Ceph - scalable distributed file system
6 * Copyright (C) 2022 Red Hat, Inc.
8 * This is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License version 2.1, as published by the Free Software
11 * Foundation. See file COPYING.
20 #include "rgw_common.h"
21 #include "rgw_sal_config.h"
23 class DoutPrefixProvider
;
26 namespace rgw::rados
{
30 class RadosConfigStore
: public sal::ConfigStore
{
32 explicit RadosConfigStore(std::unique_ptr
<ConfigImpl
> impl
);
33 virtual ~RadosConfigStore() override
;
36 virtual int write_default_realm_id(const DoutPrefixProvider
* dpp
,
37 optional_yield y
, bool exclusive
,
38 std::string_view realm_id
) override
;
39 virtual int read_default_realm_id(const DoutPrefixProvider
* dpp
,
41 std::string
& realm_id
) override
;
42 virtual int delete_default_realm_id(const DoutPrefixProvider
* dpp
,
43 optional_yield y
) override
;
45 virtual int create_realm(const DoutPrefixProvider
* dpp
,
46 optional_yield y
, bool exclusive
,
48 std::unique_ptr
<sal::RealmWriter
>* writer
) override
;
49 virtual int read_realm_by_id(const DoutPrefixProvider
* dpp
,
51 std::string_view realm_id
,
53 std::unique_ptr
<sal::RealmWriter
>* writer
) override
;
54 virtual int read_realm_by_name(const DoutPrefixProvider
* dpp
,
56 std::string_view realm_name
,
58 std::unique_ptr
<sal::RealmWriter
>* writer
) override
;
59 virtual int read_default_realm(const DoutPrefixProvider
* dpp
,
62 std::unique_ptr
<sal::RealmWriter
>* writer
) override
;
63 virtual int read_realm_id(const DoutPrefixProvider
* dpp
,
64 optional_yield y
, std::string_view realm_name
,
65 std::string
& realm_id
) override
;
66 virtual int realm_notify_new_period(const DoutPrefixProvider
* dpp
,
68 const RGWPeriod
& period
) override
;
69 virtual int list_realm_names(const DoutPrefixProvider
* dpp
,
70 optional_yield y
, const std::string
& marker
,
71 std::span
<std::string
> entries
,
72 sal::ListResult
<std::string
>& result
) override
;
75 virtual int create_period(const DoutPrefixProvider
* dpp
,
76 optional_yield y
, bool exclusive
,
77 const RGWPeriod
& info
) override
;
78 virtual int read_period(const DoutPrefixProvider
* dpp
,
79 optional_yield y
, std::string_view period_id
,
80 std::optional
<uint32_t> epoch
, RGWPeriod
& info
) override
;
81 virtual int delete_period(const DoutPrefixProvider
* dpp
,
83 std::string_view period_id
) override
;
84 virtual int list_period_ids(const DoutPrefixProvider
* dpp
,
85 optional_yield y
, const std::string
& marker
,
86 std::span
<std::string
> entries
,
87 sal::ListResult
<std::string
>& result
) override
;
90 virtual int write_default_zonegroup_id(const DoutPrefixProvider
* dpp
,
91 optional_yield y
, bool exclusive
,
92 std::string_view realm_id
,
93 std::string_view zonegroup_id
) override
;
94 virtual int read_default_zonegroup_id(const DoutPrefixProvider
* dpp
,
96 std::string_view realm_id
,
97 std::string
& zonegroup_id
) override
;
98 virtual int delete_default_zonegroup_id(const DoutPrefixProvider
* dpp
,
100 std::string_view realm_id
) override
;
102 virtual int create_zonegroup(const DoutPrefixProvider
* dpp
,
103 optional_yield y
, bool exclusive
,
104 const RGWZoneGroup
& info
,
105 std::unique_ptr
<sal::ZoneGroupWriter
>* writer
) override
;
106 virtual int read_zonegroup_by_id(const DoutPrefixProvider
* dpp
,
108 std::string_view zonegroup_id
,
110 std::unique_ptr
<sal::ZoneGroupWriter
>* writer
) override
;
111 virtual int read_zonegroup_by_name(const DoutPrefixProvider
* dpp
,
113 std::string_view zonegroup_name
,
115 std::unique_ptr
<sal::ZoneGroupWriter
>* writer
) override
;
116 virtual int read_default_zonegroup(const DoutPrefixProvider
* dpp
,
118 std::string_view realm_id
,
120 std::unique_ptr
<sal::ZoneGroupWriter
>* writer
) override
;
121 virtual int list_zonegroup_names(const DoutPrefixProvider
* dpp
,
122 optional_yield y
, const std::string
& marker
,
123 std::span
<std::string
> entries
,
124 sal::ListResult
<std::string
>& result
) override
;
127 virtual int write_default_zone_id(const DoutPrefixProvider
* dpp
,
128 optional_yield y
, bool exclusive
,
129 std::string_view realm_id
,
130 std::string_view zone_id
) override
;
131 virtual int read_default_zone_id(const DoutPrefixProvider
* dpp
,
133 std::string_view realm_id
,
134 std::string
& zone_id
) override
;
135 virtual int delete_default_zone_id(const DoutPrefixProvider
* dpp
,
137 std::string_view realm_id
) override
;
139 virtual int create_zone(const DoutPrefixProvider
* dpp
,
140 optional_yield y
, bool exclusive
,
141 const RGWZoneParams
& info
,
142 std::unique_ptr
<sal::ZoneWriter
>* writer
) override
;
143 virtual int read_zone_by_id(const DoutPrefixProvider
* dpp
,
145 std::string_view zone_id
,
147 std::unique_ptr
<sal::ZoneWriter
>* writer
) override
;
148 virtual int read_zone_by_name(const DoutPrefixProvider
* dpp
,
150 std::string_view zone_name
,
152 std::unique_ptr
<sal::ZoneWriter
>* writer
) override
;
153 virtual int read_default_zone(const DoutPrefixProvider
* dpp
,
155 std::string_view realm_id
,
157 std::unique_ptr
<sal::ZoneWriter
>* writer
) override
;
158 virtual int list_zone_names(const DoutPrefixProvider
* dpp
,
159 optional_yield y
, const std::string
& marker
,
160 std::span
<std::string
> entries
,
161 sal::ListResult
<std::string
>& result
) override
;
164 virtual int read_period_config(const DoutPrefixProvider
* dpp
,
166 std::string_view realm_id
,
167 RGWPeriodConfig
& info
) override
;
168 virtual int write_period_config(const DoutPrefixProvider
* dpp
,
169 optional_yield y
, bool exclusive
,
170 std::string_view realm_id
,
171 const RGWPeriodConfig
& info
) override
;
174 std::unique_ptr
<ConfigImpl
> impl
;
175 }; // RadosConfigStore
178 /// RadosConfigStore factory function
179 auto create_config_store(const DoutPrefixProvider
* dpp
)
180 -> std::unique_ptr
<RadosConfigStore
>;
182 } // namespace rgw::rados