diff --git a/env.env b/env.env new file mode 100644 index 0000000..3f29c1f --- /dev/null +++ b/env.env @@ -0,0 +1,4 @@ +KUBERNETES_SERVICE_HOST=kubernetes.default.svc.cluster.local +KUBE_CA="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkakNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTnpNeE1qY3dPVFl3SGhjTk1qWXdNekV3TURjeE9ERTJXaGNOTXpZd016QTNNRGN4T0RFMgpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTnpNeE1qY3dPVFl3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFReG81cXQ0MGxEekczRHJKTE1wRVBrd0ZBY1FmbC8vVE1iWjZzemMreHAKbmVzVzRTSTdXK1lWdFpRYklmV2xBMTRaazQvRFlDMHc1YlgxZU94RVVuL0pvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVXBLM2pGK25IRlZSbDcwb3ZRVGZnCmZabGNQZE13Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnVnkyaUx0Y0xaYm1vTnVoVHdKbU5sWlo3RVlBYjJKNW0KSjJYbG1UbVF5a2tDSUhLbzczaDBkdEtUZTlSa0NXYTJNdStkS1FzOXRFU0tBV0x1emlnYXBHYysKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" +KUBE_CERT="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrakNDQVRlZ0F3SUJBZ0lJQUkvSUg2R2Rodm93Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOemN6TVRJM01EazJNQjRYRFRJMk1ETXhNREEzTVRneE5sb1hEVEkzTURNeApNREEzTVRneE5sb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJQTTdBVEZQSmFMMjUrdzAKUU1vZUIxV2hBRW4vWnViM0tSRERrYnowOFhwQWJ2akVpdmdnTkdpdG4wVmVsaEZHamRmNHpBT29Nd1J3M21kbgpYSGtHVDB5alNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCUVZLOThaMEMxcFFyVFJSMGVLZHhIa2o0ejFJREFLQmdncWhrak9QUVFEQWdOSkFEQkcKQWlFQXZYWll6Zk9iSUtlWTRtclNsRmt4ZS80a0E4K01ieDc1UDFKRmNlRS8xdGNDSVFDNnM0ZXlZclhQYmNWSgpxZm5EamkrZ1RacGttN0tWSTZTYTlZN2FSRGFabUE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlCZURDQ0FSMmdBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwClpXNTBMV05oUURFM056TXhNamN3T1RZd0hoY05Nall3TXpFd01EY3hPREUyV2hjTk16WXdNekEzTURjeE9ERTIKV2pBak1TRXdId1lEVlFRRERCaHJNM010WTJ4cFpXNTBMV05oUURFM056TXhNamN3T1RZd1dUQVRCZ2NxaGtqTwpQUUlCQmdncWhrak9QUU1CQndOQ0FBUzV1NGVJbStvVnV1SFI0aTZIOU1kVzlyUHdJbFVPNFhIMEJWaDRUTGNlCkNkMnRBbFVXUW5FakxMdlpDWlVaYTlzTlhKOUVtWWt5S0dtQWR2TE9FbUVrbzBJd1FEQU9CZ05WSFE4QkFmOEUKQkFNQ0FxUXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVGU3ZmR2RBdGFVSzAwVWRIaW5jUgo1SStNOVNBd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFMY2xtQnR4TnpSVlBvV2hoVEVKSkM1Z3VNSGsvcFZpCjFvYXJ2UVJxTWRKcUFpRUEyR1dNTzlhZFFYTEQwbFZKdHZMVkc1M3I0M0lxMHpEUUQwbTExMVZyL1MwPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" +KUBE_DATA="LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUVkSTRZN3lRU1ZwRGNrblhsQmJEaXBWZHRMWEVsYVBkN3VBZHdBWFFya2xvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFOHpzQk1VOGxvdmJuN0RSQXloNEhWYUVBU2Y5bTV2Y3BFTU9SdlBUeGVrQnUrTVNLK0NBMAphSzJmUlY2V0VVYU4xL2pNQTZnekJIRGVaMmRjZVFaUFRBPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=" diff --git a/inglying-exonts_09_03_2026_104547.yml b/inglying-exonts_09_03_2026_104547.yml new file mode 100644 index 0000000..4c3cf40 --- /dev/null +++ b/inglying-exonts_09_03_2026_104547.yml @@ -0,0 +1,41 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Workflow +metadata: + name: oc-monitor-inglying-exonts5 +spec: + entrypoint: dag + volumeClaimTemplates: + - metadata: + name: chu-storage-global + spec: + accessModes: [ReadWriteOnce] + resources: + requests: + storage: 500Gi + templates: + - name: dag + dag: + tasks: + - name: chu-analyzer-3957aa22-8141-4346-8bdd-ba7687a41305 + template: chu-analyzer-3957aa22-8141-4346-8bdd-ba7687a41305 + dependencies: + - chu-statistics-831cbdbb-db94-4864-a181-5361cf8edf12 + - name: chu-statistics-831cbdbb-db94-4864-a181-5361cf8edf12 + template: chu-statistics-831cbdbb-db94-4864-a181-5361cf8edf12 + - name: chu-analyzer-3957aa22-8141-4346-8bdd-ba7687a41305 + container: + image: opencloudregistry/chu-analyzer:latest + command: [sh, -c] + args: ['echo "chu-analyzer-3957aa22-8141-4346-8bdd-ba7687a41305" && chu-analyzer '] + volumeMounts: + - name: chu-storage-global + mountPath: /data + - name: chu-statistics-831cbdbb-db94-4864-a181-5361cf8edf12 + container: + image: opencloudregistry/chu-statistics:latest + command: [sh, -c] + args: ['echo "chu-statistics-831cbdbb-db94-4864-a181-5361cf8edf12" && chu-statistics '] + volumeMounts: + - name: chu-storage-global + mountPath: /data + activeDeadlineSeconds: 3600 diff --git a/main.go b/main.go index 2fac24e..ee8fc3e 100644 --- a/main.go +++ b/main.go @@ -114,7 +114,7 @@ func main() { func executeInside(execID string, ns string, argo_file_path string, stepMax int) { t, err := tools2.NewService(conf.GetConfig().Mode) if err != nil { - logger.Error().Msg("Could not create KubernetesTool") + logger.Error().Msg("Could not create KubernetesTool : " + err.Error()) } name, err := t.CreateArgoWorkflow(argo_file_path, ns) if err != nil { diff --git a/models/template.go b/models/template.go index e9f36df..6489e90 100644 --- a/models/template.go +++ b/models/template.go @@ -116,7 +116,7 @@ func (template *Template) CreateContainer(processing *resources.ProcessingResour template.Outputs.Parameters = append(template.Inputs.Parameters, Parameter{Name: v.Name}) } cmd := strings.ReplaceAll(inst.Access.Container.Command, container.Image, "") - container.Args = append(container.Args, "echo "+templateName+" && ") // a casual echo to know where we are for logs purpose + container.Args = append(container.Args, "echo \""+templateName+"\" && ") // a casual echo to know where we are for logs purpose for _, a := range strings.Split(cmd, " ") { container.Args = append(container.Args, template.ReplacePerEnv(a, inst.Env)) } diff --git a/tools/kubernetes.go b/tools/kubernetes.go index d92171b..f0c976d 100644 --- a/tools/kubernetes.go +++ b/tools/kubernetes.go @@ -32,6 +32,7 @@ type KubernetesTools struct { } func NewKubernetesTool() (Tool, error) { + fmt.Println(conf.GetConfig().KubeCA, conf.GetConfig().KubeCert, conf.GetConfig().KubeData) // Load Kubernetes config (from ~/.kube/config) config := &rest.Config{ Host: conf.GetConfig().KubeHost + ":" + conf.GetConfig().KubePort, diff --git a/workflow_builder/argo_builder.go b/workflow_builder/argo_builder.go index 2b146eb..7fc598d 100644 --- a/workflow_builder/argo_builder.go +++ b/workflow_builder/argo_builder.go @@ -16,7 +16,9 @@ import ( oclib "cloud.o-forge.io/core/oc-lib" "cloud.o-forge.io/core/oc-lib/models/common/enum" "cloud.o-forge.io/core/oc-lib/models/resources" + "cloud.o-forge.io/core/oc-lib/models/workflow" w "cloud.o-forge.io/core/oc-lib/models/workflow" + "cloud.o-forge.io/core/oc-lib/models/workflow/graph" "github.com/nwtgck/go-fakelish" "github.com/rs/zerolog" "gopkg.in/yaml.v3" @@ -178,6 +180,27 @@ func (b *ArgoBuilder) createTemplates(namespace string) ([]string, []string, []V return firstItems, lastItems, volumes } +func (b *ArgoBuilder) GetByRelatedProcessing(w *workflow.Workflow, processingID string, g func(item graph.GraphItem) bool) []string { + related := []string{} + for _, link := range w.Graph.Links { + nodeID := link.Destination.ID + var node resources.ResourceInterface + if g(w.Graph.Items[link.Source.ID]) { + item := w.Graph.Items[link.Source.ID] + _, node = item.GetResource() + } + if node == nil && g(w.Graph.Items[link.Destination.ID]) { // if the source is not a storage, we consider that the destination is the storage + nodeID = link.Source.ID + item := w.Graph.Items[link.Destination.ID] // and the processing is the source + _, node = item.GetResource() // we are looking for the storage as destination + } + if processingID == nodeID && node != nil { // if the storage is linked to the processing + related = append(related, node.GetID()) + } + } + return related +} + func (b *ArgoBuilder) createArgoTemplates(namespace string, id string, processing *resources.ProcessingResource,