package clean import ( "time" "github.com/caos/zitadel/operator" "github.com/caos/orbos/mntr" "github.com/caos/orbos/pkg/kubernetes" "github.com/caos/orbos/pkg/kubernetes/resources/job" "github.com/caos/orbos/pkg/labels" corev1 "k8s.io/api/core/v1" ) const ( Instant = "clean" defaultMode = int32(256) certPath = "/cockroach/cockroach-certs" secretPath = "/secrets/sa.json" internalSecretName = "client-certs" rootSecretName = "cockroachdb.client.root" jobPrefix = "backup-" jobSuffix = "-clean" timeout = 60 * time.Second ) func AdaptFunc( monitor mntr.Monitor, backupName string, namespace string, componentLabels *labels.Component, databases []string, users []string, nodeselector map[string]string, tolerations []corev1.Toleration, checkDBReady operator.EnsureFunc, secretName string, secretKey string, image string, ) ( queryFunc operator.QueryFunc, destroyFunc operator.DestroyFunc, err error, ) { command := getCommand(databases, users) jobDef := getJob( namespace, labels.MustForName(componentLabels, GetJobName(backupName)), nodeselector, tolerations, secretName, secretKey, command, image, ) destroyJ, err := job.AdaptFuncToDestroy(jobDef.Namespace, jobDef.Name) if err != nil { return nil, nil, err } destroyers := []operator.DestroyFunc{ operator.ResourceDestroyToZitadelDestroy(destroyJ), } queryJ, err := job.AdaptFuncToEnsure(jobDef) if err != nil { return nil, nil, err } queriers := []operator.QueryFunc{ operator.EnsureFuncToQueryFunc(checkDBReady), operator.ResourceQueryToZitadelQuery(queryJ), } return func(k8sClient kubernetes.ClientInt, queried map[string]interface{}) (operator.EnsureFunc, error) { return operator.QueriersToEnsureFunc(monitor, false, queriers, k8sClient, queried) }, operator.DestroyersToDestroyFunc(monitor, destroyers), nil } func GetJobName(backupName string) string { return jobPrefix + backupName + jobSuffix }