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.
17 #include "rgw_sal_config.h"
21 /// A read-only ConfigStore that serves the given default zonegroup and zone.
22 class ImmutableConfigStore
: public ConfigStore
{
24 explicit ImmutableConfigStore(const RGWZoneGroup
& zonegroup
,
25 const RGWZoneParams
& zone
,
26 const RGWPeriodConfig
& period_config
);
29 virtual int write_default_realm_id(const DoutPrefixProvider
* dpp
,
30 optional_yield y
, bool exclusive
,
31 std::string_view realm_id
) override
;
32 virtual int read_default_realm_id(const DoutPrefixProvider
* dpp
,
34 std::string
& realm_id
) override
;
35 virtual int delete_default_realm_id(const DoutPrefixProvider
* dpp
,
36 optional_yield y
) override
;
38 virtual int create_realm(const DoutPrefixProvider
* dpp
,
39 optional_yield y
, bool exclusive
,
41 std::unique_ptr
<RealmWriter
>* writer
) override
;
42 virtual int read_realm_by_id(const DoutPrefixProvider
* dpp
,
44 std::string_view realm_id
,
46 std::unique_ptr
<RealmWriter
>* writer
) override
;
47 virtual int read_realm_by_name(const DoutPrefixProvider
* dpp
,
49 std::string_view realm_name
,
51 std::unique_ptr
<RealmWriter
>* writer
) override
;
52 virtual int read_default_realm(const DoutPrefixProvider
* dpp
,
55 std::unique_ptr
<RealmWriter
>* writer
) override
;
56 virtual int read_realm_id(const DoutPrefixProvider
* dpp
,
57 optional_yield y
, std::string_view realm_name
,
58 std::string
& realm_id
) override
;
59 virtual int realm_notify_new_period(const DoutPrefixProvider
* dpp
,
61 const RGWPeriod
& period
) override
;
62 virtual int list_realm_names(const DoutPrefixProvider
* dpp
,
63 optional_yield y
, const std::string
& marker
,
64 std::span
<std::string
> entries
,
65 ListResult
<std::string
>& result
) override
;
68 virtual int create_period(const DoutPrefixProvider
* dpp
,
69 optional_yield y
, bool exclusive
,
70 const RGWPeriod
& info
) override
;
71 virtual int read_period(const DoutPrefixProvider
* dpp
,
72 optional_yield y
, std::string_view period_id
,
73 std::optional
<uint32_t> epoch
, RGWPeriod
& info
) override
;
74 virtual int delete_period(const DoutPrefixProvider
* dpp
,
76 std::string_view period_id
) override
;
77 virtual int list_period_ids(const DoutPrefixProvider
* dpp
,
78 optional_yield y
, const std::string
& marker
,
79 std::span
<std::string
> entries
,
80 ListResult
<std::string
>& result
) override
;
83 virtual int write_default_zonegroup_id(const DoutPrefixProvider
* dpp
,
84 optional_yield y
, bool exclusive
,
85 std::string_view realm_id
,
86 std::string_view zonegroup_id
) override
;
87 virtual int read_default_zonegroup_id(const DoutPrefixProvider
* dpp
,
89 std::string_view realm_id
,
90 std::string
& zonegroup_id
) override
;
91 virtual int delete_default_zonegroup_id(const DoutPrefixProvider
* dpp
,
93 std::string_view realm_id
) override
;
95 virtual int create_zonegroup(const DoutPrefixProvider
* dpp
,
96 optional_yield y
, bool exclusive
,
97 const RGWZoneGroup
& info
,
98 std::unique_ptr
<ZoneGroupWriter
>* writer
) override
;
99 virtual int read_zonegroup_by_id(const DoutPrefixProvider
* dpp
,
101 std::string_view zonegroup_id
,
103 std::unique_ptr
<ZoneGroupWriter
>* writer
) override
;
104 virtual int read_zonegroup_by_name(const DoutPrefixProvider
* dpp
,
106 std::string_view zonegroup_name
,
108 std::unique_ptr
<ZoneGroupWriter
>* writer
) override
;
109 virtual int read_default_zonegroup(const DoutPrefixProvider
* dpp
,
111 std::string_view realm_id
,
113 std::unique_ptr
<ZoneGroupWriter
>* writer
) override
;
114 virtual int list_zonegroup_names(const DoutPrefixProvider
* dpp
,
115 optional_yield y
, const std::string
& marker
,
116 std::span
<std::string
> entries
,
117 ListResult
<std::string
>& result
) override
;
120 virtual int write_default_zone_id(const DoutPrefixProvider
* dpp
,
121 optional_yield y
, bool exclusive
,
122 std::string_view realm_id
,
123 std::string_view zone_id
) override
;
124 virtual int read_default_zone_id(const DoutPrefixProvider
* dpp
,
126 std::string_view realm_id
,
127 std::string
& zone_id
) override
;
128 virtual int delete_default_zone_id(const DoutPrefixProvider
* dpp
,
130 std::string_view realm_id
) override
;
132 virtual int create_zone(const DoutPrefixProvider
* dpp
,
133 optional_yield y
, bool exclusive
,
134 const RGWZoneParams
& info
,
135 std::unique_ptr
<ZoneWriter
>* writer
) override
;
136 virtual int read_zone_by_id(const DoutPrefixProvider
* dpp
,
138 std::string_view zone_id
,
140 std::unique_ptr
<ZoneWriter
>* writer
) override
;
141 virtual int read_zone_by_name(const DoutPrefixProvider
* dpp
,
143 std::string_view zone_name
,
145 std::unique_ptr
<ZoneWriter
>* writer
) override
;
146 virtual int read_default_zone(const DoutPrefixProvider
* dpp
,
148 std::string_view realm_id
,
150 std::unique_ptr
<ZoneWriter
>* writer
) override
;
151 virtual int list_zone_names(const DoutPrefixProvider
* dpp
,
152 optional_yield y
, const std::string
& marker
,
153 std::span
<std::string
> entries
,
154 ListResult
<std::string
>& result
) override
;
157 virtual int read_period_config(const DoutPrefixProvider
* dpp
,
159 std::string_view realm_id
,
160 RGWPeriodConfig
& info
) override
;
161 virtual int write_period_config(const DoutPrefixProvider
* dpp
,
162 optional_yield y
, bool exclusive
,
163 std::string_view realm_id
,
164 const RGWPeriodConfig
& info
) override
;
167 const RGWZoneGroup zonegroup
;
168 const RGWZoneParams zone
;
169 const RGWPeriodConfig period_config
;
170 }; // ImmutableConfigStore
173 /// ImmutableConfigStore factory function
174 auto create_immutable_config_store(const DoutPrefixProvider
* dpp
,
175 const RGWZoneGroup
& zonegroup
,
176 const RGWZoneParams
& zone
,
177 const RGWPeriodConfig
& period_config
)
178 -> std::unique_ptr
<ConfigStore
>;
180 } // namespace rgw::sal