Compare commits
	
		
			8 Commits
		
	
	
		
			feature/na
			...
			demo-alpr
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| e74f3adcaa | |||
| af6aa9e17f | |||
| e7f8518f34 | |||
| af90189b89 | |||
| 469752f136 | |||
| df4e6fcc5c | |||
| e808556906 | |||
| 8f18da492b | 
							
								
								
									
										42
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								Dockerfile
									
									
									
									
									
								
							@@ -1,29 +1,45 @@
 | 
			
		||||
FROM golang:alpine AS deps
 | 
			
		||||
 | 
			
		||||
WORKDIR /app
 | 
			
		||||
COPY go.mod go.sum ./
 | 
			
		||||
RUN sed -i '/replace/d' go.mod
 | 
			
		||||
RUN go mod download
 | 
			
		||||
 | 
			
		||||
#----------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
FROM golang:alpine AS builder
 | 
			
		||||
 | 
			
		||||
WORKDIR /app 
 | 
			
		||||
 | 
			
		||||
COPY . .
 | 
			
		||||
 | 
			
		||||
RUN apk add git
 | 
			
		||||
 | 
			
		||||
RUN go get github.com/beego/bee/v2 && go install github.com/beego/bee/v2@master
 | 
			
		||||
RUN go install github.com/beego/bee/v2@latest
 | 
			
		||||
 | 
			
		||||
RUN timeout 15 bee run -gendoc=true -downdoc=true -runmode=dev || :
 | 
			
		||||
WORKDIR /oc-scheduler
 | 
			
		||||
 | 
			
		||||
RUN sed -i 's/http:\/\/127.0.0.1:8080\/swagger\/swagger.json/swagger.json/g' swagger/index.html
 | 
			
		||||
COPY --from=deps /go/pkg /go/pkg
 | 
			
		||||
COPY --from=deps /app/go.mod /app/go.sum ./
 | 
			
		||||
 | 
			
		||||
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" .
 | 
			
		||||
RUN export CGO_ENABLED=0 && \
 | 
			
		||||
    export GOOS=linux && \
 | 
			
		||||
    export GOARCH=amd64 && \
 | 
			
		||||
    export BUILD_FLAGS="-ldflags='-w -s'"
 | 
			
		||||
 | 
			
		||||
RUN ls /app
 | 
			
		||||
COPY . .
 | 
			
		||||
 | 
			
		||||
FROM scratch
 | 
			
		||||
RUN sed -i '/replace/d' go.mod
 | 
			
		||||
RUN bee pack
 | 
			
		||||
RUN mkdir -p /app/extracted && tar -zxvf oc-scheduler.tar.gz -C /app/extracted
 | 
			
		||||
RUN sed -i 's/http:\/\/127.0.0.1:8080\/swagger\/swagger.json/swagger.json/g' /app/extracted/swagger/index.html
 | 
			
		||||
 | 
			
		||||
#----------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
FROM golang:alpine
 | 
			
		||||
 | 
			
		||||
WORKDIR /app
 | 
			
		||||
 | 
			
		||||
COPY --from=builder /app/oc-scheduler /usr/bin/ 
 | 
			
		||||
COPY --from=builder /app/swagger /app/swagger
 | 
			
		||||
 | 
			
		||||
COPY docker_scheduler.json /etc/oc/scheduler.json
 | 
			
		||||
COPY --from=builder /app/extracted/oc-scheduler /usr/bin/ 
 | 
			
		||||
COPY --from=builder /app/extracted/swagger /app/swagger
 | 
			
		||||
COPY --from=builder /app/extracted/docker_scheduler.json /etc/oc/scheduler.json
 | 
			
		||||
 | 
			
		||||
EXPOSE 8080
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
.DEFAULT_GOAL := all
 | 
			
		||||
 | 
			
		||||
build: clean
 | 
			
		||||
	bee pack
 | 
			
		||||
 | 
			
		||||
run: 
 | 
			
		||||
	bee run -gendoc=true -downdoc=true
 | 
			
		||||
 | 
			
		||||
purge:
 | 
			
		||||
	lsof -t -i:8090 | xargs kill | true
 | 
			
		||||
 | 
			
		||||
run-dev:
 | 
			
		||||
	bee generate routers && bee run -gendoc=true -downdoc=true -runmode=prod
 | 
			
		||||
 | 
			
		||||
dev: purge run-dev
 | 
			
		||||
 | 
			
		||||
debug:
 | 
			
		||||
	bee run -downdebug -gendebug
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm -rf oc-peer.tar.gz
 | 
			
		||||
 | 
			
		||||
docker:
 | 
			
		||||
	DOCKER_BUILDKIT=1 docker build -t oc/oc-scheduler:0.0.1 -f Dockerfile .
 | 
			
		||||
	docker tag oc/oc-scheduler:0.0.1 oc/oc-scheduler:latest
 | 
			
		||||
 | 
			
		||||
publish-kind:
 | 
			
		||||
	kind load docker-image oc/oc-scheduler:0.0.1 --name opencloud
 | 
			
		||||
 | 
			
		||||
publish-registry:
 | 
			
		||||
	@echo "TODO"
 | 
			
		||||
 | 
			
		||||
all: docker publish-kind publish-registry
 | 
			
		||||
 | 
			
		||||
.PHONY: build run clean docker publish-kind publish-registry
 | 
			
		||||
@@ -6,6 +6,8 @@ To build :
 | 
			
		||||
 | 
			
		||||
    bee generate routers
 | 
			
		||||
    bee run -gendoc=true -downdoc=true
 | 
			
		||||
OR 
 | 
			
		||||
    make dev
 | 
			
		||||
 | 
			
		||||
If default Swagger page is displayed instead of tyour api, change url in swagger/index.html file to :
 | 
			
		||||
<>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
appname = oc-scheduler
 | 
			
		||||
httpport = 8080
 | 
			
		||||
httpport = 8090
 | 
			
		||||
runmode = dev
 | 
			
		||||
autorender = false
 | 
			
		||||
copyrequestbody = true
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										82
									
								
								controllers/loki.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								controllers/loki.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,82 @@
 | 
			
		||||
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
 | 
			
		||||
		fmt.Println(resp, path)
 | 
			
		||||
		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)
 | 
			
		||||
		var result map[string]interface{}
 | 
			
		||||
		// Unmarshal: string → []byte → object
 | 
			
		||||
		err = json.Unmarshal(body, &result)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			o.Ctx.ResponseWriter.WriteHeader(403)
 | 
			
		||||
			o.Data["json"] = map[string]string{"error": err.Error()}
 | 
			
		||||
			o.ServeJSON()
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		o.Data["json"] = result
 | 
			
		||||
		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()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,6 @@ package controllers
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
 | 
			
		||||
	oclib "cloud.o-forge.io/core/oc-lib"
 | 
			
		||||
	"cloud.o-forge.io/core/oc-lib/dbs"
 | 
			
		||||
@@ -44,10 +43,11 @@ func (o *WorkflowSchedulerController) Schedule() {
 | 
			
		||||
	req := oclib.NewRequest(collection, user, peerID, groups, caller)
 | 
			
		||||
	resp.UUID = uuid.New().String()
 | 
			
		||||
	sch, err := req.Schedule(id, resp)
 | 
			
		||||
	fmt.Println("SCHEDULE", sch, err)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		for _, w := range sch.WorkflowExecution {
 | 
			
		||||
			req.DeleteOne(w.GetID())
 | 
			
		||||
		if sch != nil {
 | 
			
		||||
			for _, w := range sch.WorkflowExecution {
 | 
			
		||||
				req.DeleteOne(w.GetID())
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		o.Data["json"] = map[string]interface{}{
 | 
			
		||||
			"data":  nil,
 | 
			
		||||
@@ -58,7 +58,7 @@ func (o *WorkflowSchedulerController) Schedule() {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	o.Data["json"] = map[string]interface{}{
 | 
			
		||||
		"data":  sch,
 | 
			
		||||
		"data":  sch.WorkflowExecution,
 | 
			
		||||
		"code":  code,
 | 
			
		||||
		"error": e,
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,33 +0,0 @@
 | 
			
		||||
version: '3.4'
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  mongo:
 | 
			
		||||
    image: 'mongo:latest'
 | 
			
		||||
    networks: 
 | 
			
		||||
      - catalog
 | 
			
		||||
    ports:
 | 
			
		||||
      - 27017:27017
 | 
			
		||||
    container_name: mongo
 | 
			
		||||
    volumes: 
 | 
			
		||||
      - oc-catalog-data:/data/db
 | 
			
		||||
      - oc-catalog-data:/data/configdb
 | 
			
		||||
  
 | 
			
		||||
  mongo-express:
 | 
			
		||||
    image: "mongo-express:latest"
 | 
			
		||||
    restart: always
 | 
			
		||||
    depends_on: 
 | 
			
		||||
      - mongo
 | 
			
		||||
    networks: 
 | 
			
		||||
      - catalog
 | 
			
		||||
    ports:
 | 
			
		||||
      - 8081:8081
 | 
			
		||||
    environment:
 | 
			
		||||
      - ME_CONFIG_BASICAUTH_USERNAME=test
 | 
			
		||||
      - ME_CONFIG_BASICAUTH_PASSWORD=test
 | 
			
		||||
 | 
			
		||||
volumes:
 | 
			
		||||
  oc-catalog-data:
 | 
			
		||||
 | 
			
		||||
networks: 
 | 
			
		||||
  catalog:
 | 
			
		||||
    # name: catalog
 | 
			
		||||
@@ -8,16 +8,18 @@ services:
 | 
			
		||||
    labels:
 | 
			
		||||
        - "traefik.enable=true"
 | 
			
		||||
        - "traefik.http.routers.scheduler.entrypoints=web"
 | 
			
		||||
        - "traefik.http.middlewares.auth.forwardauth.address=http://oc-auth:8080/oc/forward"
 | 
			
		||||
        - "traefik.http.routers.workflow.rule=PathPrefix(/scheduler)"
 | 
			
		||||
        - "traefik.http.routers.scheduler.tls=false"
 | 
			
		||||
        - "traefik.http.routers.scheduler.middlewares=auth"
 | 
			
		||||
        - "traefik.http.routers.scheduler.rule=PathPrefix(`/scheduler`)"
 | 
			
		||||
        - "traefik.http.middlewares.scheduler-rewrite.replacepathregex.regex=^/scheduler(.*)"
 | 
			
		||||
        - "traefik.http.middlewares.scheduler-rewrite.replacepathregex.replacement=/oc$$1"
 | 
			
		||||
        - "traefik.http.routers.scheduler.middlewares=scheduler-rewrite"
 | 
			
		||||
        - "traefik.http.services.scheduler.loadbalancer.server.port=8080"
 | 
			
		||||
        - "traefik.http.middlewares.scheduler.forwardauth.address=http://oc-auth:8080/oc/forward"
 | 
			
		||||
    ports:
 | 
			
		||||
      - 8090:8080
 | 
			
		||||
    container_name: oc-scheduler
 | 
			
		||||
    networks: 
 | 
			
		||||
      - catalog
 | 
			
		||||
      - oc
 | 
			
		||||
 | 
			
		||||
networks: 
 | 
			
		||||
  catalog:
 | 
			
		||||
  oc:
 | 
			
		||||
    external: true
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "MONGO_URL":"mongodb://mongo:27017/", 
 | 
			
		||||
    "NATS_URL":"nats://nats:4222",
 | 
			
		||||
    "MONGO_DATABASE":"DC_myDC"
 | 
			
		||||
    "MONGO_DATABASE":"DC_myDC",
 | 
			
		||||
    "LOKI_URL": "http://loki:3100"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										4
									
								
								env.env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								env.env
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
KUBERNETES_SERVICE_HOST=192.168.1.169
 | 
			
		||||
KUBE_CA="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTWpNeE1USXdNell3SGhjTk1qUXdPREE0TVRBeE16VTJXaGNOTXpRd09EQTJNVEF4TXpVMgpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTWpNeE1USXdNell3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFTVlk3ZHZhNEdYTVdkMy9jMlhLN3JLYjlnWXgyNSthaEE0NmkyNVBkSFAKRktQL2UxSVMyWVF0dzNYZW1TTUQxaStZdzJSaVppNUQrSVZUamNtNHdhcnFvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVWtlUVJpNFJiODduME5yRnZaWjZHClc2SU55NnN3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnRXA5ck04WmdNclRZSHYxZjNzOW5DZXZZeWVVa3lZUk4KWjUzazdoaytJS1FDSVFDbk05TnVGKzlTakIzNDFacGZ5ays2NEpWdkpSM3BhcmVaejdMd2lhNm9kdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
 | 
			
		||||
KUBE_CERT="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrVENDQVRlZ0F3SUJBZ0lJWUxWNkFPQkdrU1F3Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOekl6TVRFeU1ETTJNQjRYRFRJME1EZ3dPREV3TVRNMU5sb1hEVEkxTURndwpPREV3TVRNMU5sb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJGQ2Q1MFdPeWdlQ2syQzcKV2FrOWY4MVAvSkJieVRIajRWOXBsTEo0ck5HeHFtSjJOb2xROFYxdUx5RjBtOTQ2Nkc0RmRDQ2dqaXFVSk92Swp3NVRPNnd5alNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCVFJkOFI5cXVWK2pjeUVmL0ovT1hQSzMyS09XekFLQmdncWhrak9QUVFEQWdOSUFEQkYKQWlFQTArbThqTDBJVldvUTZ0dnB4cFo4NVlMalF1SmpwdXM0aDdnSXRxS3NmUVVDSUI2M2ZNdzFBMm5OVWU1TgpIUGZOcEQwSEtwcVN0Wnk4djIyVzliYlJUNklZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJlRENDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdFkyeHAKWlc1MExXTmhRREUzTWpNeE1USXdNell3SGhjTk1qUXdPREE0TVRBeE16VTJXaGNOTXpRd09EQTJNVEF4TXpVMgpXakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwWlc1MExXTmhRREUzTWpNeE1USXdNell3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFRc3hXWk9pbnIrcVp4TmFEQjVGMGsvTDF5cE01VHAxOFRaeU92ektJazQKRTFsZWVqUm9STW0zNmhPeVljbnN3d3JoNnhSUnBpMW5RdGhyMzg0S0Z6MlBvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVTBYZkVmYXJsZm8zTWhIL3lmemx6Cnl0OWlqbHN3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQUxJL2dNYnNMT3MvUUpJa3U2WHVpRVMwTEE2cEJHMXgKcnBlTnpGdlZOekZsQWlFQW1wdjBubjZqN3M0MVI0QzFNMEpSL0djNE53MHdldlFmZWdEVGF1R2p3cFk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
 | 
			
		||||
KUBE_DATA="LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSU5ZS1BFb1dhd1NKUzJlRW5oWmlYMk5VZlY1ZlhKV2krSVNnV09TNFE5VTlvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFVUozblJZN0tCNEtUWUx0WnFUMS96VS84a0Z2Sk1lUGhYMm1Vc25pczBiR3FZblkyaVZEeApYVzR2SVhTYjNqcm9iZ1YwSUtDT0twUWs2OHJEbE03ckRBPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo="
 | 
			
		||||
							
								
								
									
										4
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.mod
									
									
									
									
									
								
							@@ -5,13 +5,14 @@ go 1.22.0
 | 
			
		||||
toolchain go1.22.4
 | 
			
		||||
 | 
			
		||||
require (
 | 
			
		||||
	cloud.o-forge.io/core/oc-lib v0.0.0-20250219142942-5111c9c8bec7
 | 
			
		||||
	github.com/beego/beego/v2 v2.3.4
 | 
			
		||||
	github.com/google/uuid v1.6.0
 | 
			
		||||
	github.com/smartystreets/goconvey v1.7.2
 | 
			
		||||
	go.mongodb.org/mongo-driver v1.17.2
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
require (
 | 
			
		||||
	cloud.o-forge.io/core/oc-lib v0.0.0-20250212130857-4833bcb7103e // indirect
 | 
			
		||||
	github.com/beorn7/perks v1.0.1 // indirect
 | 
			
		||||
	github.com/biter777/countries v1.7.5 // indirect
 | 
			
		||||
	github.com/cespare/xxhash/v2 v2.3.0 // indirect
 | 
			
		||||
@@ -21,7 +22,6 @@ require (
 | 
			
		||||
	github.com/go-playground/universal-translator v0.18.1 // indirect
 | 
			
		||||
	github.com/go-playground/validator/v10 v10.24.0 // indirect
 | 
			
		||||
	github.com/golang/snappy v0.0.4 // indirect
 | 
			
		||||
	github.com/google/uuid v1.6.0 // indirect
 | 
			
		||||
	github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 // indirect
 | 
			
		||||
	github.com/goraz/onion v0.1.3 // indirect
 | 
			
		||||
	github.com/hashicorp/golang-lru v1.0.2 // indirect
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										57
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										57
									
								
								go.sum
									
									
									
									
									
								
							@@ -1,8 +1,32 @@
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250212130857-4833bcb7103e h1:a4eVChOa20MFCCnSZr72h3n8P6E5IZdePJhYizUDMZs=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250212130857-4833bcb7103e/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250213093249-c53e25e69a7b h1:HAb2h0011mE3QrHdOwJCua5w0r/BDOFLNb/557ZAzL0=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250213093249-c53e25e69a7b/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250217072519-cafadec1469f h1:esLB0EAn8IuOChW35kcBrPaN80z4A4yYyz1mXT45GQo=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250217072519-cafadec1469f/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218080121-a098f0a672ee h1:UIGIiE+O5LUrP18C8nrZxN1v6Lmzfdlv8pvHnSLKJz8=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218080121-a098f0a672ee/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218085355-6e6ed4ea2c64 h1:dANQHoMCyp3uioCHnUOpLFiG/UO+biyPUoSelDNJ814=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218085355-6e6ed4ea2c64/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218092508-b771b5d25ee5 h1:EwoctMKdVG1PJHRcBcRKCxgdAxy+TV1T617vxIZwkio=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218092508-b771b5d25ee5/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218101140-6bf058ab5ca4 h1:7om8VD4ZivHA2BKBwvqM98/a7D+MTwppd2FloNBg1Y4=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218101140-6bf058ab5ca4/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218113916-04f7537066c1 h1:on0zLtHo1Jj6FvQ/wuJCc/sxfBfgrd2qTFknpDh3wQM=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218113916-04f7537066c1/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218115549-81d3406305c5 h1:DP/XYrxSOc5ORMGvVNqTvFjxLF4cymUW/d3HIZXKDEk=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218115549-81d3406305c5/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218130229-7c30633bded0 h1:3EsRmeTz6OWHJETrPObctnGF8WgZtXHfwL2cjyHcfOk=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250218130229-7c30633bded0/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250219075511-241c6a5a0861 h1:XqTFKSZ8hXGCJbuu/SBwakpftevg1AKV7hDI50cXNUg=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250219075511-241c6a5a0861/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250219100312-b4a176667754 h1:7J5EUe/iNS6cT6KVDklpgGH7ak30iEFgWJDEPF6wik4=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250219100312-b4a176667754/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250219104152-3ecb0e9d960b h1:DhRqJdw2VePaYVlsh8OUA3zl+76Q0FWwGu+a+3aOf6s=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250219104152-3ecb0e9d960b/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250219142942-5111c9c8bec7 h1:fh6SzBPenzIxufIIzExtx4jEE4OhFposqn3EbHFr92Q=
 | 
			
		||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250219142942-5111c9c8bec7/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE=
 | 
			
		||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 | 
			
		||||
github.com/beego/beego/v2 v2.3.1 h1:7MUKMpJYzOXtCUsTEoXOxsDV/UcHw6CPbaWMlthVNsc=
 | 
			
		||||
github.com/beego/beego/v2 v2.3.1/go.mod h1:5cqHsOHJIxkq44tBpRvtDe59GuVRVv/9/tyVDxd5ce4=
 | 
			
		||||
github.com/beego/beego/v2 v2.3.4 h1:HurQEOGIEhLlPFCTR6ZDuQkybrUl2Ag2i6CdVD2rGiI=
 | 
			
		||||
github.com/beego/beego/v2 v2.3.4/go.mod h1:5cqHsOHJIxkq44tBpRvtDe59GuVRVv/9/tyVDxd5ce4=
 | 
			
		||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 | 
			
		||||
@@ -23,8 +47,6 @@ github.com/elazarl/go-bindata-assetfs v1.0.1 h1:m0kkaHRKEu7tUIUFVwhGGGYClXvyl4RE
 | 
			
		||||
github.com/elazarl/go-bindata-assetfs v1.0.1/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
 | 
			
		||||
github.com/etcd-io/etcd v3.3.17+incompatible/go.mod h1:cdZ77EstHBwVtD6iTgzgvogwcjo9m4iOqoijouPJ4bs=
 | 
			
		||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 | 
			
		||||
github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc=
 | 
			
		||||
github.com/gabriel-vasile/mimetype v1.4.6/go.mod h1:JX1qVKqZd40hUPpAfiNTe0Sne7hdfKSbOqqmkq8GCXc=
 | 
			
		||||
github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM=
 | 
			
		||||
github.com/gabriel-vasile/mimetype v1.4.8/go.mod h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8=
 | 
			
		||||
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
 | 
			
		||||
@@ -33,8 +55,6 @@ github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/o
 | 
			
		||||
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
 | 
			
		||||
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
 | 
			
		||||
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
 | 
			
		||||
github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27HYW8P9FDk5PbgA=
 | 
			
		||||
github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
 | 
			
		||||
github.com/go-playground/validator/v10 v10.24.0 h1:KHQckvo8G6hlWnrPX4NJJ+aBfWNAE/HH+qdL2cBpCmg=
 | 
			
		||||
github.com/go-playground/validator/v10 v10.24.0/go.mod h1:GGzBIJMuE98Ic/kJsBXbz1x/7cByt++cQ+YOuDM5wus=
 | 
			
		||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 | 
			
		||||
@@ -66,7 +86,6 @@ github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+
 | 
			
		||||
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
 | 
			
		||||
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
 | 
			
		||||
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
 | 
			
		||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
 | 
			
		||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
 | 
			
		||||
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
 | 
			
		||||
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
 | 
			
		||||
@@ -85,12 +104,8 @@ github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8
 | 
			
		||||
github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
 | 
			
		||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
 | 
			
		||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
 | 
			
		||||
github.com/nats-io/nats.go v1.37.0 h1:07rauXbVnnJvv1gfIyghFEo6lUcYRY0WXc3x7x0vUxE=
 | 
			
		||||
github.com/nats-io/nats.go v1.37.0/go.mod h1:Ubdu4Nh9exXdSz0RVWRFBbRfrbSxOYd26oF0wkWclB8=
 | 
			
		||||
github.com/nats-io/nats.go v1.39.0 h1:2/yg2JQjiYYKLwDuBzV0FbB2sIV+eFNkEevlRi4n9lI=
 | 
			
		||||
github.com/nats-io/nats.go v1.39.0/go.mod h1:MgRb8oOdigA6cYpEPhXJuRVH6UE/V4jblJ2jQ27IXYM=
 | 
			
		||||
github.com/nats-io/nkeys v0.4.7 h1:RwNJbbIdYCoClSDNY7QVKZlyb/wfT6ugvFCiKy6vDvI=
 | 
			
		||||
github.com/nats-io/nkeys v0.4.7/go.mod h1:kqXRgRDPlGy7nGaEDMuYzmiJCIAAWDK0IMBtDmGD0nc=
 | 
			
		||||
github.com/nats-io/nkeys v0.4.10 h1:glmRrpCmYLHByYcePvnTBEAwawwapjCPMjy2huw20wc=
 | 
			
		||||
github.com/nats-io/nkeys v0.4.10/go.mod h1:OjRrnIKnWBFl+s4YK5ChQfvHP2fxqZexrKJoVVyWB3U=
 | 
			
		||||
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
 | 
			
		||||
@@ -105,8 +120,6 @@ github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+
 | 
			
		||||
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
 | 
			
		||||
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
 | 
			
		||||
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
 | 
			
		||||
github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc=
 | 
			
		||||
github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw=
 | 
			
		||||
github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io=
 | 
			
		||||
github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I=
 | 
			
		||||
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
 | 
			
		||||
@@ -129,8 +142,8 @@ github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hg
 | 
			
		||||
github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM=
 | 
			
		||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 | 
			
		||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 | 
			
		||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
 | 
			
		||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
 | 
			
		||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
 | 
			
		||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
 | 
			
		||||
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
 | 
			
		||||
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
 | 
			
		||||
github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY=
 | 
			
		||||
@@ -140,15 +153,11 @@ github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gi
 | 
			
		||||
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM=
 | 
			
		||||
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=
 | 
			
		||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 | 
			
		||||
go.mongodb.org/mongo-driver v1.17.1 h1:Wic5cJIwJgSpBhe3lx3+/RybR5PiYRMpVFgO7cOHyIM=
 | 
			
		||||
go.mongodb.org/mongo-driver v1.17.1/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4=
 | 
			
		||||
go.mongodb.org/mongo-driver v1.17.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793SqyhzM=
 | 
			
		||||
go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
 | 
			
		||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
			
		||||
golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
			
		||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 | 
			
		||||
golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
 | 
			
		||||
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
 | 
			
		||||
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
 | 
			
		||||
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
 | 
			
		||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
 | 
			
		||||
@@ -157,14 +166,10 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
 | 
			
		||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
			
		||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 | 
			
		||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 | 
			
		||||
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
 | 
			
		||||
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
 | 
			
		||||
golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
 | 
			
		||||
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
 | 
			
		||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
 | 
			
		||||
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
 | 
			
		||||
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
 | 
			
		||||
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
@@ -177,8 +182,6 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
 | 
			
		||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
			
		||||
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
 | 
			
		||||
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 | 
			
		||||
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
 | 
			
		||||
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 | 
			
		||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 | 
			
		||||
@@ -187,8 +190,6 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
			
		||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 | 
			
		||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 | 
			
		||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
 | 
			
		||||
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
 | 
			
		||||
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
 | 
			
		||||
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
 | 
			
		||||
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
 | 
			
		||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 | 
			
		||||
@@ -196,8 +197,6 @@ golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3
 | 
			
		||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
			
		||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 | 
			
		||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
			
		||||
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
 | 
			
		||||
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
 | 
			
		||||
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
 | 
			
		||||
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
 | 
			
		||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								main.go
									
									
									
									
									
								
							@@ -6,6 +6,7 @@ import (
 | 
			
		||||
	oclib "cloud.o-forge.io/core/oc-lib"
 | 
			
		||||
	"cloud.o-forge.io/core/oc-lib/tools"
 | 
			
		||||
	beego "github.com/beego/beego/v2/server/web"
 | 
			
		||||
	"github.com/beego/beego/v2/server/web/filter/cors"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const appname = "oc-scheduler"
 | 
			
		||||
@@ -23,7 +24,7 @@ func main() {
 | 
			
		||||
		o.GetStringDefault("MONGO_URL", "mongodb://127.0.0.1:27017"),
 | 
			
		||||
		o.GetStringDefault("MONGO_DATABASE", "DC_myDC"),
 | 
			
		||||
		o.GetStringDefault("NATS_URL", "nats://localhost:4222"),
 | 
			
		||||
		o.GetStringDefault("LOKI_URL", ""),
 | 
			
		||||
		o.GetStringDefault("LOKI_URL", "loki://localhost:3100"),
 | 
			
		||||
		o.GetStringDefault("LOG_LEVEL", "info"),
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
@@ -34,6 +35,12 @@ func main() {
 | 
			
		||||
	beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
 | 
			
		||||
	api := &tools.API{}
 | 
			
		||||
	api.Discovered(beego.BeeApp.Handlers.GetAllControllerInfo())
 | 
			
		||||
 | 
			
		||||
	beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
 | 
			
		||||
		AllowAllOrigins:  true,
 | 
			
		||||
		AllowMethods:     []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
 | 
			
		||||
		AllowHeaders:     []string{"Origin", "Authorization", "Content-Type"},
 | 
			
		||||
		ExposeHeaders:    []string{"Content-Length", "Content-Type"},
 | 
			
		||||
		AllowCredentials: true,
 | 
			
		||||
	}))
 | 
			
		||||
	beego.Run()
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								oc-scheduler
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								oc-scheduler
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -7,6 +7,15 @@ import (
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
 | 
			
		||||
    beego.GlobalControllerRouter["oc-scheduler/controllers:LokiController"] = append(beego.GlobalControllerRouter["oc-scheduler/controllers:LokiController"],
 | 
			
		||||
        beego.ControllerComments{
 | 
			
		||||
            Method: "GetLogs",
 | 
			
		||||
            Router: `/`,
 | 
			
		||||
            AllowHTTPMethods: []string{"post"},
 | 
			
		||||
            MethodParams: param.Make(),
 | 
			
		||||
            Filters: nil,
 | 
			
		||||
            Params: nil})
 | 
			
		||||
 | 
			
		||||
    beego.GlobalControllerRouter["oc-scheduler/controllers:VersionController"] = append(beego.GlobalControllerRouter["oc-scheduler/controllers:VersionController"],
 | 
			
		||||
        beego.ControllerComments{
 | 
			
		||||
            Method: "GetAll",
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,11 @@ func init() {
 | 
			
		||||
		beego.NSInclude(
 | 
			
		||||
			&controllers.WorkflowSchedulerController{},
 | 
			
		||||
		),
 | 
			
		||||
		beego.NSNamespace("/loki",
 | 
			
		||||
			beego.NSInclude(
 | 
			
		||||
				&controllers.LokiController{},
 | 
			
		||||
			),
 | 
			
		||||
		),
 | 
			
		||||
		beego.NSNamespace("/execution",
 | 
			
		||||
			beego.NSInclude(
 | 
			
		||||
				&controllers.WorkflowExecutionController{},
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "port":8080,
 | 
			
		||||
    "port":8090,
 | 
			
		||||
    "MONGO_URL":"mongodb://localhost:27017/", 
 | 
			
		||||
    "MONGO_DATABASE":"DC_myDC"
 | 
			
		||||
    "MONGO_DATABASE":"DC_myDC",
 | 
			
		||||
    "LOKI_URL": "http://localhost:3100"
 | 
			
		||||
}
 | 
			
		||||
@@ -125,6 +125,31 @@
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "/loki/": {
 | 
			
		||||
            "post": {
 | 
			
		||||
                "tags": [
 | 
			
		||||
                    "loki"
 | 
			
		||||
                ],
 | 
			
		||||
                "description": "get logs\n\u003cbr\u003e",
 | 
			
		||||
                "operationId": "LokiController.GetLogs",
 | 
			
		||||
                "parameters": [
 | 
			
		||||
                    {
 | 
			
		||||
                        "in": "body",
 | 
			
		||||
                        "name": "body",
 | 
			
		||||
                        "description": "The compute content",
 | 
			
		||||
                        "required": true,
 | 
			
		||||
                        "schema": {
 | 
			
		||||
                            "$ref": "#/definitions/models.compute"
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                ],
 | 
			
		||||
                "responses": {
 | 
			
		||||
                    "200": {
 | 
			
		||||
                        "description": "{workspace} models.workspace"
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "/version/": {
 | 
			
		||||
            "get": {
 | 
			
		||||
                "tags": [
 | 
			
		||||
@@ -250,6 +275,10 @@
 | 
			
		||||
            "name": "oc-scheduler/controllersWorkflowSchedulerController",
 | 
			
		||||
            "description": "Operations about workflow\n"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "loki",
 | 
			
		||||
            "description": "Operations about workflow\n"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "execution",
 | 
			
		||||
            "description": "Operations about workflow\n"
 | 
			
		||||
 
 | 
			
		||||
@@ -154,6 +154,24 @@ paths:
 | 
			
		||||
      responses:
 | 
			
		||||
        "200":
 | 
			
		||||
          description: '{workspace} models.workspace'
 | 
			
		||||
  /loki/:
 | 
			
		||||
    post:
 | 
			
		||||
      tags:
 | 
			
		||||
      - loki
 | 
			
		||||
      description: |-
 | 
			
		||||
        get logs
 | 
			
		||||
        <br>
 | 
			
		||||
      operationId: LokiController.GetLogs
 | 
			
		||||
      parameters:
 | 
			
		||||
      - in: body
 | 
			
		||||
        name: body
 | 
			
		||||
        description: The compute content
 | 
			
		||||
        required: true
 | 
			
		||||
        schema:
 | 
			
		||||
          $ref: '#/definitions/models.compute'
 | 
			
		||||
      responses:
 | 
			
		||||
        "200":
 | 
			
		||||
          description: '{workspace} models.workspace'
 | 
			
		||||
  /version/:
 | 
			
		||||
    get:
 | 
			
		||||
      tags:
 | 
			
		||||
@@ -184,6 +202,9 @@ tags:
 | 
			
		||||
- name: oc-scheduler/controllersWorkflowSchedulerController
 | 
			
		||||
  description: |
 | 
			
		||||
    Operations about workflow
 | 
			
		||||
- name: loki
 | 
			
		||||
  description: |
 | 
			
		||||
    Operations about workflow
 | 
			
		||||
- name: execution
 | 
			
		||||
  description: |
 | 
			
		||||
    Operations about workflow
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user