ceph/examples/lua/storage_class.lua
Curt Bruns bbd7f0dbaf rgw/lua: Example read/write of StorageClass field
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>
2021-11-01 19:45:38 -04:00

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