provider.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package remote
  2. import (
  3. "context"
  4. "errors"
  5. "fmt"
  6. "log"
  7. esapi "github.com/external-secrets/external-secrets/apis/externalsecrets/v1beta1"
  8. pb "github.com/external-secrets/external-secrets/pkg/plugin/grpc"
  9. "google.golang.org/grpc"
  10. "google.golang.org/grpc/credentials/insecure"
  11. "sigs.k8s.io/controller-runtime/pkg/client"
  12. )
  13. type Provider struct{}
  14. var provider = &Provider{}
  15. func GetProvider(store esapi.GenericStore) (esapi.Provider, error) {
  16. return provider, nil
  17. }
  18. // NewClient constructs a SecretsManager Provider
  19. func (p *Provider) NewClient(ctx context.Context, store esapi.GenericStore, kube client.Client, namespace string) (esapi.SecretsClient, error) {
  20. spec := store.GetSpec()
  21. if spec == nil {
  22. return nil, errors.New("store spec is nil")
  23. }
  24. if spec.Provider == nil {
  25. return nil, errors.New("store provider is nil")
  26. }
  27. providerName, err := esapi.GetProviderName(spec.Provider)
  28. if err != nil {
  29. return nil, errors.New("could not get provider name")
  30. }
  31. log.Printf("remote provider found providerName=%s\n", providerName)
  32. addr := fmt.Sprintf("unix:///var/run/eso/provider/sockets/%s.sock", providerName)
  33. // Set up a connection to the server.
  34. conn, err := grpc.Dial(addr, grpc.WithTransportCredentials(insecure.NewCredentials()))
  35. if err != nil {
  36. return nil, fmt.Errorf("unable to connect: %w", err)
  37. }
  38. grpcClient := pb.NewSecretsClientClient(conn)
  39. return &Client{
  40. store: store,
  41. namespace: namespace,
  42. kube: kube,
  43. conn: conn,
  44. grpcClient: grpcClient,
  45. }, nil
  46. }
  47. // ValidateStore checks if the provided store is valid
  48. func (p *Provider) ValidateStore(store esapi.GenericStore) error {
  49. return nil
  50. }
  51. // Capabilities returns the provider Capabilities (Read, Write, ReadWrite)
  52. func (p *Provider) Capabilities() esapi.SecretStoreCapabilities {
  53. return esapi.SecretStoreReadWrite
  54. }