driver.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package helm
  2. // Helm contains support for several different storage drivers.
  3. //
  4. // This includes (as of October 2020):
  5. // - configmap
  6. // - secret
  7. // - memory
  8. // - postgres
  9. //
  10. // This file implements first-class support for each driver type, and integrates with the
  11. // logger.
  12. import (
  13. "github.com/porter-dev/porter/internal/logger"
  14. "helm.sh/helm/v3/pkg/storage"
  15. "helm.sh/helm/v3/pkg/storage/driver"
  16. "k8s.io/client-go/kubernetes"
  17. )
  18. // NewStorageDriver is a function type for returning a new storage driver
  19. type NewStorageDriver func(l *logger.Logger, namespace string, clientset *kubernetes.Clientset) *storage.Storage
  20. // NewSecretStorageDriver returns a storage using the Secret driver.
  21. func NewSecretStorageDriver(
  22. l *logger.Logger,
  23. namespace string,
  24. clientset *kubernetes.Clientset,
  25. ) *storage.Storage {
  26. d := driver.NewSecrets(clientset.CoreV1().Secrets(namespace))
  27. d.Log = l.Printf
  28. return storage.Init(d)
  29. }
  30. // NewConfigMapsStorageDriver returns a storage using the ConfigMap driver.
  31. func NewConfigMapsStorageDriver(
  32. l *logger.Logger,
  33. namespace string,
  34. clientset *kubernetes.Clientset,
  35. ) *storage.Storage {
  36. d := driver.NewConfigMaps(clientset.CoreV1().ConfigMaps(namespace))
  37. d.Log = l.Printf
  38. return storage.Init(d)
  39. }
  40. // NewMemoryStorageDriver returns a storage using the In-Memory driver.
  41. func NewMemoryStorageDriver(
  42. l *logger.Logger,
  43. namespace string,
  44. clientset *kubernetes.Clientset,
  45. ) *storage.Storage {
  46. d := driver.NewMemory()
  47. return storage.Init(d)
  48. }