diff --git a/go.mod b/go.mod index 3a84c1b..2e1db49 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module oc-scheduler go 1.25.0 require ( - cloud.o-forge.io/core/oc-lib v0.0.0-20260317135927-72be3118b7af + cloud.o-forge.io/core/oc-lib v0.0.0-20260318143822-5976795d4406 github.com/beego/beego/v2 v2.3.8 github.com/google/uuid v1.6.0 github.com/robfig/cron v1.2.0 diff --git a/go.sum b/go.sum index bb24fce..eff8cfb 100644 --- a/go.sum +++ b/go.sum @@ -30,6 +30,8 @@ cloud.o-forge.io/core/oc-lib v0.0.0-20260317090440-1ac735cef10e h1:e/oYMPAqD27l3 cloud.o-forge.io/core/oc-lib v0.0.0-20260317090440-1ac735cef10e/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA= cloud.o-forge.io/core/oc-lib v0.0.0-20260317135927-72be3118b7af h1:IySCYxJrKUpmRa2R3hXSaYxfWf/cm28NRpmwluEmzBI= cloud.o-forge.io/core/oc-lib v0.0.0-20260317135927-72be3118b7af/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA= +cloud.o-forge.io/core/oc-lib v0.0.0-20260318143822-5976795d4406 h1:FN1EtRWn228JprAbnY5K863Fzj+SzMqQtKRtwvECbLw= +cloud.o-forge.io/core/oc-lib v0.0.0-20260318143822-5976795d4406/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= diff --git a/infrastructure/nats.go b/infrastructure/nats.go index c60b87a..19cf563 100644 --- a/infrastructure/nats.go +++ b/infrastructure/nats.go @@ -1,12 +1,9 @@ package infrastructure import ( - "context" "encoding/json" "fmt" - "oc-scheduler/conf" - oclib "cloud.o-forge.io/core/oc-lib" "cloud.o-forge.io/core/oc-lib/models/booking" "cloud.o-forge.io/core/oc-lib/models/resources/purchase_resource" "cloud.o-forge.io/core/oc-lib/models/utils" @@ -39,11 +36,11 @@ func EmitNATS(peerID string, message tools.PropalgationMessage) { func ListenNATS() { tools.NewNATSCaller().ListenNats(map[tools.NATSMethod]func(tools.NATSResponse){ - tools.PLANNER_EXECUTION: handlePlannerExecution, - tools.PROPALGATION_EVENT: handlePropagationEvent, - tools.REMOVE_RESOURCE: handleRemoveResource, - tools.CREATE_RESOURCE: handleCreateResource, - tools.CONFIRM_EVENT: handleConfirm, + tools.PLANNER_EXECUTION: handlePlannerExecution, + tools.CONSIDERS_EVENT: handleConsidersEvent, + tools.REMOVE_RESOURCE: handleRemoveResource, + tools.CREATE_RESOURCE: handleCreateResource, + tools.CONFIRM_EVENT: handleConfirm, }) } @@ -76,59 +73,3 @@ func draftTimeout(id string, dt tools.DataType) { } fmt.Printf("draftTimeout: %s %s deleted (still draft after 10 min)\n", dt.String(), id) } - -// --------------------------------------------------------------------------- -// Kubernetes namespace helper -// --------------------------------------------------------------------------- - -func createNamespace(ns string) error { - /* - * This function is used to create a namespace. - * It takes the following parameters: - * - ns: the namespace you want to create - */ - logger := oclib.GetLogger() - serv, err := tools.NewKubernetesService( - conf.GetConfig().KubeHost+":"+conf.GetConfig().KubePort, conf.GetConfig().KubeCA, - conf.GetConfig().KubeCert, conf.GetConfig().KubeData) - if err != nil { - return nil - } - c := context.Background() - - ok, err := serv.GetNamespace(c, ns) - if ok != nil && err == nil { - logger.Debug().Msg("A namespace with name " + ns + " already exists") - return nil - } - if err != nil { - return err - } - - err = serv.CreateNamespace(c, ns) - if err != nil { - return err - } - err = serv.CreateServiceAccount(c, ns) - if err != nil { - return err - } - role := "argo-role" - err = serv.CreateRole(c, ns, role, - [][]string{ - {"coordination.k8s.io"}, - {""}, - {""}}, - [][]string{ - {"leases"}, - {"secrets"}, - {"pods"}}, - [][]string{ - {"get", "create", "update"}, - {"get"}, - {"patch"}}) - if err != nil { - return err - } - return serv.CreateRoleBinding(c, ns, "argo-role-binding", role) -} diff --git a/infrastructure/nats_handlers.go b/infrastructure/nats_handlers.go index 0bab3b2..74a8560 100644 --- a/infrastructure/nats_handlers.go +++ b/infrastructure/nats_handlers.go @@ -32,24 +32,14 @@ func handlePlannerExecution(resp tools.NATSResponse) { storePlanner(fmt.Sprintf("%v", m["peer_id"]), &p) } -func handlePropagationEvent(resp tools.NATSResponse) { - if resp.FromApp != "oc-discovery" { - return - } - var prop tools.PropalgationMessage - if err := json.Unmarshal(resp.Payload, &prop); err != nil { - return - } - switch prop.Action { - case tools.PB_CONSIDERS: - fmt.Println("PB_CONSIDERS") - switch tools.DataType(prop.DataType) { - case tools.BOOKING, tools.PURCHASE_RESOURCE: - fmt.Println("updateExecutionState", tools.DataType(prop.DataType)) - updateExecutionState(prop.Payload, tools.DataType(prop.DataType)) - case tools.WORKFLOW_EXECUTION: - confirmExecutionDrafts(prop.Payload) - } +func handleConsidersEvent(resp tools.NATSResponse) { + fmt.Println("CONSIDERS_EVENT", resp.Datatype) + switch resp.Datatype { + case tools.BOOKING, tools.PURCHASE_RESOURCE: + fmt.Println("updateExecutionState", resp.Datatype) + updateExecutionState(resp.Payload, resp.Datatype) + case tools.WORKFLOW_EXECUTION: + confirmExecutionDrafts(resp.Payload) } } @@ -239,7 +229,6 @@ func confirmResource(id string, dt tools.DataType) { fmt.Printf("confirmResource: could not confirm booking %s: %v\n", id, err) return } - createNamespace(bk.ExecutionsID) // create Namespace locally self, err := oclib.GetMySelf() if err == nil && self != nil { go refreshSelfPlanner(self.PeerID, adminReq)