ceph/examples/rgw/lua/elasticsearch_adapter.lua
Casey Bodley 36747b08ff examples: move rgw examples under subdirectory
Signed-off-by: Casey Bodley <cbodley@redhat.com>
2023-02-13 17:20:26 -05:00

115 lines
3.2 KiB
Lua

local elasticsearch = require ("elasticsearch")
local json = require ("lunajson")
local client = elasticsearch.client{
hosts = {
{
host = "localhost",
port = "9200"
}
}
}
local copyfrom = {}
if (Request.CopyFrom ~= nil) then
copyfrom = {
Tenant = Request.CopyFrom.Tenant,
Bucket = Request.CopyFrom.Bucket,
Object = {
Name = Request.CopyFrom.Object.Name,
Instance = Request.CopyFrom.Object.Instance,
Id = Request.CopyFrom.Object.Id,
Size = Request.CopyFrom.Object.Size,
MTime = Request.CopyFrom.Object.MTime
}
}
end
local res, status = client:index{
index = "rgw",
type = "Request",
id = Request.Id,
body =
{
RGWOp = Request.RGWOp,
DecodedURI = Request.DecodedURI,
ContentLength = Request.ContentLength,
GenericAttributes = json.encode(Request.GenericAttributes),
Response = {
HTTPStatusCode = Request.Response.HTTPStatusCode,
HTTPStatus = Request.Response.HTTPStatus,
RGWCode = Request.Response.RGWCode,
Message = Request.Response.Message
},
SwiftAccountName = Request.SwiftAccountName,
Bucket = {
Tenant = Request.Bucket.Tenant,
Name = Request.Bucket.Name,
Marker = Request.Bucket.Marker,
Id = Request.Bucket.Id,
Count = Request.Bucket.Count,
Size = Request.Bucket.Size,
ZoneGroupId = Request.Bucket.ZoneGroupId,
CreationTime = Request.Bucket.CreationTime,
MTime = Request.Bucket.MTime,
Quota = {
MaxSize = Request.Bucket.Quota.MaxSize,
MaxObjects = Request.Bucket.Quota.MaxObjects,
Enabled = Request.Bucket.Quota.Enabled,
Rounded = Request.Bucket.Quota.Rounded
},
PlacementRule = {
Name = Request.Bucket.PlacementRule.Name,
StorageClass = Request.Bucket.PlacementRule.StorageClass
},
User = {
Tenant = Request.Bucket.User.Tenant,
Id = Request.Bucket.User.Id
}
},
Object = {
Name = Request.Object.Name,
Instance = Request.Object.Instance,
Id = Request.Object.Id,
Size = Request.Object.Size,
MTime = Request.Object.MTime
},
CopyFrom = copyfrom,
ObjectOwner = {
DisplayName = Request.ObjectOwner.DisplayName,
User = {
Tenant = Request.ObjectOwner.User.Tenant,
Id = Request.ObjectOwner.User.Id
}
},
ZoneGroup = {
Name = Request.ZoneGroup.Name,
Endpoint = Request.ZoneGroup.Endpoint
},
Environment = json.encode(Request.Environment),
Policy = json.encode(Request.Policy),
UserPolicies = json.encode(Request.UserPolicies),
RGWId = Request.RGWId,
HTTP = {
Parameters = json.encode(Request.HTTP.Parameters),
Resources = json.encode(Request.HTTP.Resources),
Metadata = json.encode(Request.HTTP.Metadata),
Host = Request.HTTP.Host,
Method = Request.HTTP.Method,
URI = Request.HTTP.URI,
QueryString = Request.HTTP.QueryString,
Domain = Request.HTTP.Domain
},
Time = Request.Time,
Dialect = Request.Dialect,
Id = Request.Id,
TransactionId = Request.TransactionId,
Tags = json.encode(Request.Tags),
User = {
Tenant = Request.User.Tenant,
Id = Request.User.Id
}
}
}