return std::nullopt;
}
-
-int RGWAccessControlPolicy_SWIFT::create(const DoutPrefixProvider *dpp,
- rgw::sal::Driver* driver,
- const rgw_user& id,
- const std::string& name,
- const char* read_list,
- const char* write_list,
- uint32_t& rw_mask)
+namespace rgw::swift {
+
+int create_container_policy(const DoutPrefixProvider *dpp,
+ rgw::sal::Driver* driver,
+ const rgw_user& id,
+ const std::string& name,
+ const char* read_list,
+ const char* write_list,
+ uint32_t& rw_mask,
+ RGWAccessControlPolicy& policy)
{
- acl.create_default(id, name);
- owner.id = id;
- owner.display_name = name;
- rw_mask = 0;
+ policy.create_default(id, name);
+ auto& acl = policy.get_acl();
if (read_list) {
for (std::string_view uid : ceph::split(read_list, " ,")) {
return 0;
}
+} // namespace rgw::swift
+
void RGWAccessControlPolicy_SWIFT::filter_merge(uint32_t rw_mask,
RGWAccessControlPolicy_SWIFT *old)
{
class RGWUserCtl;
+namespace rgw::swift {
+
+/// Create a policy based on swift container acl headers
+/// X-Container-Read/X-Container-Write.
+int create_container_policy(const DoutPrefixProvider *dpp,
+ rgw::sal::Driver* driver,
+ const rgw_user& id,
+ const std::string& name,
+ const char* read_list,
+ const char* write_list,
+ uint32_t& rw_mask,
+ RGWAccessControlPolicy& policy);
+
+} // namespace rgw::swift
+
class RGWAccessControlPolicy_SWIFT : public RGWAccessControlPolicy
{
public:
- int create(const DoutPrefixProvider *dpp,
- rgw::sal::Driver* driver,
- const rgw_user& id,
- const std::string& name,
- const char* read_list,
- const char* write_list,
- uint32_t& rw_mask);
void filter_merge(uint32_t mask, RGWAccessControlPolicy_SWIFT *policy);
void to_str(std::string& read, std::string& write);
};
*has_policy = false;
if (read_list || write_list) {
- RGWAccessControlPolicy_SWIFT swift_policy;
- const auto r = swift_policy.create(s, driver,
- s->user->get_id(),
- s->user->get_display_name(),
- read_list,
- write_list,
- *rw_mask);
+ int r = rgw::swift::create_container_policy(s, driver,
+ s->user->get_id(),
+ s->user->get_display_name(),
+ read_list,
+ write_list,
+ *rw_mask,
+ *policy);
if (r < 0) {
return r;
}
- *policy = swift_policy;
*has_policy = true;
}