package tools import ( "errors" "io" wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/watch" ) type Tool interface { CreateArgoWorkflow(path string, ns string) (string, error) CreateAccessSecret(user string, password string, storageId string, namespace string) (string, error) // CreateSourceSecret creates an ephemeral K8s Secret holding a pre-signed URL // for a private source resource. The secret is labelled with the execution ID // so it can be bulk-cleaned up after workflow completion. CreateSourceSecret(secretName, presignedURL, executionID, namespace string) error GetArgoWatch(executionId string, wfName string) (watch.Interface, error) GetArgoWorkflow(ns string, wfName string) (*wfv1.Workflow, error) GetPodLogger(ns string, wfName string, podName string) (io.ReadCloser, error) GetS3Secret(storageId string, namespace string) *v1.Secret } var _service = map[string]func() (Tool, error){ "kubernetes": NewKubernetesTool, } func NewService(name string) (Tool, error) { return NewKubernetesTool() service, ok := _service[name] if !ok { return nil, errors.New("service not found") } return service() }