package workflow_builder import ( "oc-monitord/models" "strings" "cloud.o-forge.io/core/oc-lib/models/resources" ) func (b *ArgoBuilder) CreateService(id string, processing *resources.ProcessingResource) { new_service := models.Service{ APIVersion: "v1", Kind: "Service", Metadata: models.Metadata{ Name: "workflow-service", }, Spec: models.ServiceSpec{ Selector: map[string]string{"app": "oc-service"}, Ports: []models.ServicePort{}, Type: "NodePort", }, } if processing == nil { return } b.completeServicePorts(&new_service, id, processing) b.Services = append(b.Services, &new_service) } func (b *ArgoBuilder) completeServicePorts(service *models.Service, id string, processing *resources.ProcessingResource) { instance := processing.GetSelectedInstance() if instance != nil && instance.(*resources.ProcessingInstance).Access != nil && instance.(*resources.ProcessingInstance).Access.Container != nil { for _, execute := range instance.(*resources.ProcessingInstance).Access.Container.Exposes { if execute.PAT != 0 { new_port_translation := models.ServicePort{ Name: strings.ToLower(processing.Name) + id, Port: execute.Port, TargetPort: execute.PAT, Protocol: "TCP", } service.Spec.Ports = append(service.Spec.Ports, new_port_translation) } } } } func (b *ArgoBuilder) addServiceToArgo() error { for _, service := range b.Services { if err := service.BindToArgo(b.Workflow); err != nil { return err } } return nil }