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()
 | 
			
		||||
}
 | 
			
		||||
@@ -15,7 +15,10 @@ type VersionController struct {
 | 
			
		||||
// @Success 200
 | 
			
		||||
// @router / [get]
 | 
			
		||||
func (c *VersionController) GetAll() {
 | 
			
		||||
	c.Data["json"] = map[string]string{"version": "1"}
 | 
			
		||||
	c.Data["json"] = map[string]string{
 | 
			
		||||
		"service": "oc-scheduler",
 | 
			
		||||
		"version": "1",
 | 
			
		||||
	}
 | 
			
		||||
	c.ServeJSON()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user