mirror of
https://github.com/ceph/ceph
synced 2025-01-08 20:21:33 +00:00
bbd7f0dbaf
Admins may setup different pools for RGW objects and having the StorageClass field mutable allows the steering of RGW objects to the proper pools. This Lua example shows how a user can modify the StorageClass header when it is empty on a PUT request and steer objects to different pools based on size (Request.ContentLength). Signed-off-by: Curt Bruns <curt.e.bruns@gmail.com>
20 lines
792 B
Lua
20 lines
792 B
Lua
local function isempty(input)
|
|
return input == nil or input == ''
|
|
end
|
|
|
|
if Request.RGWOp == 'put_obj' then
|
|
RGWDebugLog("Put_Obj with StorageClass: " .. Request.HTTP.StorageClass )
|
|
if (isempty(Request.HTTP.StorageClass)) then
|
|
if (Request.ContentLength >= 65536) then
|
|
RGWDebugLog("No StorageClass for Object and size >= threshold: " .. Request.Object.Name .. " adding QLC StorageClass")
|
|
Request.HTTP.StorageClass = "QLC_CLASS"
|
|
else
|
|
RGWDebugLog("No StorageClass for Object and size < threshold: " .. Request.Object.Name .. " adding STANDARD StorageClass")
|
|
Request.HTTP.StorageClass = "STANDARD"
|
|
end
|
|
else
|
|
RGWDebugLog("Storage Class Header Present on Object: " .. Request.Object.Name .. " with StorageClass: " .. Request.HTTP.StorageClass)
|
|
end
|
|
end
|
|
|