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