github.com/spotahome/redis-operator@v1.2.4/service/k8s/secret.go (about)

     1  package k8s
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/spotahome/redis-operator/log"
     7  	"github.com/spotahome/redis-operator/metrics"
     8  	corev1 "k8s.io/api/core/v1"
     9  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    10  	"k8s.io/client-go/kubernetes"
    11  )
    12  
    13  // Secret interacts with k8s to get secrets
    14  type Secret interface {
    15  	GetSecret(namespace, name string) (*corev1.Secret, error)
    16  }
    17  
    18  // SecretService is the secret service implementation using API calls to kubernetes.
    19  type SecretService struct {
    20  	kubeClient      kubernetes.Interface
    21  	logger          log.Logger
    22  	metricsRecorder metrics.Recorder
    23  }
    24  
    25  func NewSecretService(kubeClient kubernetes.Interface, logger log.Logger, metricsRecorder metrics.Recorder) *SecretService {
    26  
    27  	logger = logger.With("service", "k8s.secret")
    28  	return &SecretService{
    29  		kubeClient:      kubeClient,
    30  		logger:          logger,
    31  		metricsRecorder: metricsRecorder,
    32  	}
    33  }
    34  
    35  func (s *SecretService) GetSecret(namespace, name string) (*corev1.Secret, error) {
    36  
    37  	secret, err := s.kubeClient.CoreV1().Secrets(namespace).Get(context.TODO(), name, metav1.GetOptions{})
    38  	recordMetrics(namespace, "Secret", name, "GET", err, s.metricsRecorder)
    39  	if err != nil {
    40  		return nil, err
    41  	}
    42  
    43  	return secret, err
    44  }