#define ERR_WEBSITE_REDIRECT 2038
#define ERR_NO_SUCH_WEBSITE_CONFIGURATION 2039
#define ERR_AMZ_CONTENT_SHA256_MISMATCH 2040
+#define ERR_NO_SUCH_LC 2041
#define ERR_USER_SUSPENDED 2100
#define ERR_INTERNAL_ERROR 2200
#define ERR_NOT_IMPLEMENTED 2201
{ ERR_NO_SUCH_WEBSITE_CONFIGURATION, 404, "NoSuchWebsiteConfiguration" },
{ ERR_NO_SUCH_UPLOAD, 404, "NoSuchUpload" },
{ ERR_NOT_FOUND, 404, "Not Found"},
+ { ERR_NO_SUCH_LC, 404, "NoSuchLifecycleConfiguration"},
{ ERR_METHOD_NOT_ALLOWED, 405, "MethodNotAllowed" },
{ ETIMEDOUT, 408, "RequestTimeout" },
{ EEXIST, 409, "BucketAlreadyExists" },
void RGWGetLC_ObjStore_S3::execute()
{
- map<string, bufferlist> bucket_attrs;
config.set_ctx(s->cct);
- RGWObjectCtx& obj_ctx = *static_cast<RGWObjectCtx *>(s->obj_ctx);
- int ret = store->get_bucket_info(obj_ctx, s->bucket_tenant, s->bucket_name, s->bucket_info, NULL, &bucket_attrs);
- if (ret < 0) {
- ldout(s->cct, 0) << "LC:get_bucket_info failed" << s->bucket_name << dendl;
+ map<string, bufferlist>::iterator aiter = s->bucket_attrs.find(RGW_ATTR_LC);
+ if (aiter == s->bucket_attrs.end()) {
+ ret = -ENOENT;
return;
}
- map<string, bufferlist>::iterator aiter = bucket_attrs.find(RGW_ATTR_LC);
- if (aiter == bucket_attrs.end())
- return;
-
bufferlist::iterator iter(&aiter->second);
try {
config.decode(iter);
} catch (const buffer::error& e) {
ldout(s->cct, 0) << __func__ << "decode life cycle config failed" << dendl;
+ ret = -EIO;
return;
}
}
void RGWGetLC_ObjStore_S3::send_response()
{
- if (ret)
- set_req_state_err(s, ret);
+ if (ret) {
+ if (ret == -ENOENT) {
+ set_req_state_err(s, ERR_NO_SUCH_LC);
+ } else {
+ set_req_state_err(s, ret);
+ }
+ }
dump_errno(s);
end_header(s, this, "application/xml");
dump_start(s);