scaleway.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package scaleway
  2. import (
  3. "context"
  4. "sync"
  5. "github.com/external-secrets/external-secrets-e2e/framework"
  6. "github.com/external-secrets/external-secrets-e2e/suites/provider/cases/common"
  7. esv1 "github.com/external-secrets/external-secrets/apis/externalsecrets/v1"
  8. esmeta "github.com/external-secrets/external-secrets/apis/meta/v1"
  9. "github.com/onsi/ginkgo/v2"
  10. "github.com/onsi/gomega"
  11. v1 "k8s.io/api/core/v1"
  12. metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
  13. )
  14. var cleanupOnce sync.Once
  15. var _ = ginkgo.Describe("[scaleway]", ginkgo.Label("scaleway"), func() {
  16. f := framework.New("eso-scaleway")
  17. f.MakeRemoteRefKey = func(base string) string {
  18. return "name:" + base
  19. }
  20. // Initialization is deferred so that assertions work.
  21. provider := &secretStoreProvider{}
  22. ginkgo.BeforeEach(func() {
  23. cfg, err := loadConfigFromEnv()
  24. gomega.Expect(err).ToNot(gomega.HaveOccurred())
  25. provider.init(cfg)
  26. cleanupOnce.Do(provider.cleanup)
  27. createResources(context.Background(), f, cfg)
  28. })
  29. ginkgo.DescribeTable("sync secrets", framework.TableFuncWithExternalSecret(f, provider),
  30. //ginkgo.Entry(common.SyncV1Alpha1(f)), // not supported
  31. ginkgo.Entry(common.SimpleDataSync(f)),
  32. ginkgo.Entry(common.SyncWithoutTargetName(f)),
  33. ginkgo.Entry(common.JSONDataWithProperty(f)),
  34. ginkgo.Entry(common.JSONDataWithoutTargetName(f)),
  35. ginkgo.Entry(common.JSONDataWithTemplate(f)),
  36. ginkgo.Entry(common.JSONDataWithTemplateFromLiteral(f)),
  37. ginkgo.Entry(common.TemplateFromConfigmaps(f)),
  38. ginkgo.Entry(common.JSONDataFromSync(f)),
  39. ginkgo.Entry(common.JSONDataFromRewrite(f)),
  40. ginkgo.Entry(common.NestedJSONWithGJSON(f)),
  41. ginkgo.Entry(common.DockerJSONConfig(f)),
  42. ginkgo.Entry(common.DataPropertyDockerconfigJSON(f)),
  43. ginkgo.Entry(common.SSHKeySync(f)),
  44. ginkgo.Entry(common.SSHKeySyncDataProperty(f)),
  45. ginkgo.Entry(common.DeletionPolicyDelete(f)),
  46. //ginkgo.Entry(common.DecodingPolicySync(f)), // not supported
  47. ginkgo.Entry(common.FindByName(f)),
  48. ginkgo.Entry(common.FindByNameAndRewrite(f)),
  49. //ginkgo.Entry(common.FindByNameWithPath(f)), // not supported
  50. ginkgo.Entry(common.FindByTag(f)),
  51. //ginkgo.Entry(common.FindByTagWithPath(f)), // not supported
  52. )
  53. })
  54. func createResources(ctx context.Context, f *framework.Framework, cfg *config) {
  55. apiKeySecretName := "scw-api-key"
  56. apiKeySecretKey := "secret-key"
  57. // Creating a secret to hold the API key.
  58. secretSpec := v1.Secret{
  59. ObjectMeta: metav1.ObjectMeta{
  60. Name: apiKeySecretName,
  61. Namespace: f.Namespace.Name,
  62. },
  63. StringData: map[string]string{
  64. "secret-key": cfg.secretKey,
  65. },
  66. }
  67. err := f.CRClient.Create(ctx, &secretSpec)
  68. gomega.Expect(err).ToNot(gomega.HaveOccurred())
  69. // Creating SecretStore.
  70. secretStoreSpec := esv1.SecretStore{
  71. ObjectMeta: metav1.ObjectMeta{
  72. Name: f.Namespace.Name,
  73. Namespace: f.Namespace.Name,
  74. },
  75. Spec: esv1.SecretStoreSpec{
  76. Provider: &esv1.SecretStoreProvider{
  77. Scaleway: &esv1.ScalewayProvider{
  78. Region: cfg.region,
  79. ProjectID: cfg.projectId,
  80. AccessKey: &esv1.ScalewayProviderSecretRef{
  81. Value: cfg.accessKey, // TODO: test with secretRef as well
  82. },
  83. SecretKey: &esv1.ScalewayProviderSecretRef{
  84. SecretRef: &esmeta.SecretKeySelector{
  85. Name: apiKeySecretName,
  86. Key: apiKeySecretKey,
  87. },
  88. },
  89. },
  90. },
  91. },
  92. }
  93. if cfg.apiUrl != nil {
  94. secretStoreSpec.Spec.Provider.Scaleway.APIURL = *cfg.apiUrl
  95. }
  96. err = f.CRClient.Create(ctx, &secretStoreSpec)
  97. gomega.Expect(err).ToNot(gomega.HaveOccurred())
  98. }