github.com/verrazzano/verrazzano-monitoring-operator@v0.0.30/verrazzano-backup-hook/utilities/k8s/interface.go (about) 1 // Copyright (c) 2022, Oracle and/or its affiliates. 2 // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 3 4 package k8s 5 6 import ( 7 model "github.com/verrazzano/verrazzano-monitoring-operator/verrazzano-backup-hook/types" 8 "go.uber.org/zap" 9 v1 "k8s.io/api/core/v1" 10 "k8s.io/client-go/dynamic" 11 "k8s.io/client-go/kubernetes" 12 "k8s.io/client-go/rest" 13 "k8s.io/client-go/tools/remotecommand" 14 "sigs.k8s.io/controller-runtime/pkg/client" 15 "sync" 16 ) 17 18 type K8s interface { 19 PopulateConnData(veleroNamespace, backupName string) (*model.ConnectionData, error) 20 GetObjectStoreCreds(secretName, namespace, secretKey string) (*model.ObjectStoreSecret, error) 21 GetBackup(veleroNamespace, backupName string) (*model.VeleroBackup, error) 22 GetBackupStorageLocation(veleroNamespace, bslName string) (*model.VeleroBackupStorageLocation, error) 23 ScaleDeployment(labelSelector, namespace, deploymentName string, replicaCount int32, log *zap.SugaredLogger) error 24 CheckDeployment(labelSelector, namespace string) (bool, error) 25 CheckPodStatus(podName, namespace, checkFlag string, timeout string, wg *sync.WaitGroup) error 26 CheckAllPodsAfterRestore() error 27 IsPodReady(pod *v1.Pod) (bool, error) 28 ExecPod(cfg *rest.Config, pod *v1.Pod, container string, command []string) (string, string, error) 29 UpdateKeystore(connData *model.ConnectionData, timeout string) (bool, error) 30 ExecRetry(pod *v1.Pod, container, timeout string, execCmd []string) error 31 } 32 33 type K8sImpl struct { 34 DynamicK8sInterface dynamic.Interface 35 K8sClient client.Client 36 K8sInterface kubernetes.Interface 37 K8sConfig *rest.Config 38 CredentialProfile string //default value `default` 39 Log *zap.SugaredLogger 40 } 41 42 func New(dclient dynamic.Interface, kclient client.Client, kclientInterface kubernetes.Interface, cfg *rest.Config, credentialProfile string, log *zap.SugaredLogger) *K8sImpl { 43 return &K8sImpl{ 44 DynamicK8sInterface: dclient, 45 K8sClient: kclient, 46 K8sInterface: kclientInterface, 47 K8sConfig: cfg, 48 CredentialProfile: credentialProfile, 49 Log: log, 50 } 51 } 52 53 // NewPodExecutor is to be overridden during unit tests 54 var NewPodExecutor = remotecommand.NewSPDYExecutor