package tools import ( "errors" "io" "oc-monitord/models" "sync" ) type Tool interface { CreateArgoWorkflow(path string, ns string) (string, error) CreateAccessSecret(ns string, login string, password string) (string, error) LogWorkflow(execID string, namespace string, workflowName string, argoFilePath string, stepMax int, current_watch *models.ArgoWatch, previous_watch *models.ArgoWatch, argoLogs *models.ArgoLogs, seen []string, logFunc func(argoFilePath string, stepMax int, pipe io.ReadCloser, current_watch *models.ArgoWatch, previous_watch *models.ArgoWatch, argoLogs *models.ArgoLogs, seen []string, wg *sync.WaitGroup)) error } var _service = map[string]func() (Tool, error){ "kubernetes": NewKubernetesTool, } func NewService(name string) (Tool, error) { service, ok := _service[name] if !ok { return nil, errors.New("service not found") } return service() }