adjustment
This commit is contained in:
72
controllers/loki.go
Normal file
72
controllers/loki.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"cloud.o-forge.io/core/oc-lib/config"
|
||||
beego "github.com/beego/beego/v2/server/web"
|
||||
)
|
||||
|
||||
// Operations about workflow
|
||||
type LokiController struct {
|
||||
beego.Controller
|
||||
}
|
||||
|
||||
type LokiInfo struct {
|
||||
Start string `json:"start"`
|
||||
End string `json:"end"`
|
||||
}
|
||||
|
||||
// @Title GetLogs
|
||||
// @Description get logs
|
||||
// @Param body body models.compute true "The compute content"
|
||||
// @Success 200 {workspace} models.workspace
|
||||
// @router / [post]
|
||||
func (o *LokiController) GetLogs() {
|
||||
path := "/loki/api/v1/query_range"
|
||||
var resp map[string]interface{}
|
||||
json.Unmarshal(o.Ctx.Input.CopyBody(100000), &resp)
|
||||
if len(resp) > 0 {
|
||||
start := fmt.Sprintf("%v", resp["start"])
|
||||
if len(start) > 10 {
|
||||
start = start[0:10]
|
||||
}
|
||||
end := fmt.Sprintf("%v", resp["end"])
|
||||
if len(end) > 10 {
|
||||
end = end[0:10]
|
||||
}
|
||||
query := []string{}
|
||||
for k, v := range resp {
|
||||
if k == "start" || k == "end" {
|
||||
continue
|
||||
}
|
||||
query = append(query, fmt.Sprintf("%v=\"%v\"", k, v))
|
||||
}
|
||||
if len(query) == 0 || len(start) < 10 || len(end) < 10 {
|
||||
o.Ctx.ResponseWriter.WriteHeader(403)
|
||||
o.Data["json"] = map[string]string{"error": "Query error, missing data : start, end or query"}
|
||||
o.ServeJSON()
|
||||
return
|
||||
}
|
||||
path += "?query={" + strings.Join(query, ", ") + "}&start=" + start + "&end=" + end
|
||||
resp, err := http.Get(config.GetConfig().LokiUrl + path) // CALL
|
||||
if err != nil {
|
||||
o.Ctx.ResponseWriter.WriteHeader(422)
|
||||
o.Data["json"] = map[string]string{"error": err.Error()}
|
||||
o.ServeJSON()
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
body, _ := io.ReadAll(resp.Body)
|
||||
o.Data["json"] = body
|
||||
o.ServeJSON()
|
||||
return
|
||||
}
|
||||
o.Ctx.ResponseWriter.WriteHeader(403)
|
||||
o.Data["json"] = map[string]string{"error": "Query error"}
|
||||
o.ServeJSON()
|
||||
}
|
||||
Reference in New Issue
Block a user