6 Commits

Author SHA1 Message Date
mr
1a241183ef Listen nats struct 2026-02-06 11:09:46 +01:00
mr
07abce0e06 publish ci 2026-02-05 12:00:28 +01:00
mr
1453730b3d publish-registry 2026-02-05 11:55:58 +01:00
mr
38fbfe5947 compact oclib 2026-02-03 16:19:00 +01:00
mr
5dd80d0bad oclib debug 2026-02-03 09:40:16 +01:00
mr
6a83f6cf40 Discovery Catalog in Main 2026-02-03 08:46:31 +01:00
5 changed files with 26 additions and 36 deletions

View File

@@ -20,20 +20,22 @@ clean:
docker:
DOCKER_BUILDKIT=1 docker build -t oc-catalog -f Dockerfile . --build-arg=HOST=$(HOST)
docker tag oc-catalog:latest oc/oc-catalog:0.0.1
docker tag opencloudregistry/oc-catalog:latest oc/oc-catalog:0.0.1
publish-kind:
kind load docker-image oc/oc-catalog:0.0.1 --name $(CLUSTER_NAME) | true
publish-registry:
@echo "TODO"
docker push opencloudregistry/oc-catalog:latest
docker-deploy:
docker compose up -d
run-docker: docker publish-kind publish-registry docker-deploy
all: docker publish-kind publish-registry
all: docker publish-kind
ci: docker publish-registry
dev: purge run-dev

2
go.mod
View File

@@ -5,7 +5,7 @@ go 1.24
toolchain go1.24.0
require (
cloud.o-forge.io/core/oc-lib v0.0.0-20260129122033-186ba3e689c7
cloud.o-forge.io/core/oc-lib v0.0.0-20260205143023-b9e7ce20b6d9
github.com/beego/beego/v2 v2.3.4
github.com/smartystreets/goconvey v1.7.2
)

8
go.sum
View File

@@ -4,6 +4,14 @@ cloud.o-forge.io/core/oc-lib v0.0.0-20260128162702-97cf629e27ec h1:/uvrtEt7A5rwq
cloud.o-forge.io/core/oc-lib v0.0.0-20260128162702-97cf629e27ec/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI=
cloud.o-forge.io/core/oc-lib v0.0.0-20260129122033-186ba3e689c7 h1:NRFGRqN+j5g3DrtXMYN5T5XSYICG+OU2DisjBdID3j8=
cloud.o-forge.io/core/oc-lib v0.0.0-20260129122033-186ba3e689c7/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI=
cloud.o-forge.io/core/oc-lib v0.0.0-20260203074447-30e6c9a6183c h1:c19lIseiUk5Hp+06EowfEbMWH1pK8AC/hvQ4ryWgJtY=
cloud.o-forge.io/core/oc-lib v0.0.0-20260203074447-30e6c9a6183c/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI=
cloud.o-forge.io/core/oc-lib v0.0.0-20260203083753-4f28b9b589d6 h1:N+0xkioACl3PNo+MquCIIOL/kSICevg340IYOFGQeOw=
cloud.o-forge.io/core/oc-lib v0.0.0-20260203083753-4f28b9b589d6/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI=
cloud.o-forge.io/core/oc-lib v0.0.0-20260203150531-ef916fe2d995 h1:ZDRvnzTTNHgMm5hYmseHdEPqQ6rn/4v+P9f/JIxPaNw=
cloud.o-forge.io/core/oc-lib v0.0.0-20260203150531-ef916fe2d995/go.mod h1:T0UCxRd8w+qCVVC0NEyDiWIGC5ADwEbQ7hFcvftd4Ks=
cloud.o-forge.io/core/oc-lib v0.0.0-20260205143023-b9e7ce20b6d9 h1:NoeL4aA2/z2MEqU3YWbafz6vXkRf4DZNaYSKFpv6R2k=
cloud.o-forge.io/core/oc-lib v0.0.0-20260205143023-b9e7ce20b6d9/go.mod h1:T0UCxRd8w+qCVVC0NEyDiWIGC5ADwEbQ7hFcvftd4Ks=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/beego/beego/v2 v2.3.4 h1:HurQEOGIEhLlPFCTR6ZDuQkybrUl2Ag2i6CdVD2rGiI=
github.com/beego/beego/v2 v2.3.4/go.mod h1:5cqHsOHJIxkq44tBpRvtDe59GuVRVv/9/tyVDxd5ce4=

View File

@@ -5,6 +5,7 @@ import (
"fmt"
oclib "cloud.o-forge.io/core/oc-lib"
"cloud.o-forge.io/core/oc-lib/config"
"cloud.o-forge.io/core/oc-lib/models/resources"
"cloud.o-forge.io/core/oc-lib/tools"
)
@@ -29,15 +30,19 @@ func ListenNATS() {
tools.CATALOG_SEARCH_EVENT: func(resp tools.NATSResponse) {
p, err := resources.ToResource(int(resp.Datatype), resp.Payload)
if err == nil {
SearchStream[resp.User] <- p
SearchStream[resp.User] <- p // TODO when do we update it in our catalog ?
}
},
tools.CREATE_RESOURCE: func(resp tools.NATSResponse) {
if resp.FromApp == config.GetAppName() {
return
}
p := map[string]interface{}{}
err := json.Unmarshal(resp.Payload, &p)
if err == nil {
access := oclib.NewRequestAdmin(oclib.LibDataEnum(resp.Datatype), nil)
if data := access.LoadOne(fmt.Sprintf("%v", p["id"])); data.Data != nil {
delete(p, "id")
access.UpdateOne(p, fmt.Sprintf("%v", p["id"]))
} else {
access.StoreOne(p)
@@ -45,6 +50,9 @@ func ListenNATS() {
}
},
tools.REMOVE_RESOURCE: func(resp tools.NATSResponse) {
if resp.FromApp == config.GetAppName() {
return
}
p := map[string]interface{}{}
access := oclib.NewRequestAdmin(oclib.LibDataEnum(resp.Datatype), nil)
err := json.Unmarshal(resp.Payload, &p)

34
main.go
View File

@@ -1,46 +1,18 @@
package main
import (
"oc-catalog/infrastructure"
_ "oc-catalog/routers"
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-catalog"
func main() {
// Init the oc-lib
oclib.Init(appname)
// Load the right config file
o := oclib.GetConfLoader()
// feed the library with the loaded config
oclib.SetConfig(
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("LOG_LEVEL", "info"),
)
// Beego initialization
beego.BConfig.AppName = appname
beego.BConfig.Listen.HTTPPort = o.GetIntDefault("port", 8080)
beego.BConfig.WebConfig.DirectoryIndex = true
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,
}))
oclib.InitAPI(appname)
infrastructure.ListenNATS()
beego.Run()
}
// TODO VERIFY IF LOOP OF GET VALUE is ENOUGH TO REFRESH