From 62fd3ba36fcb87fae766eb4eca6272baf1a9215c Mon Sep 17 00:00:00 2001 From: Matheus Macabu Date: Tue, 15 Jul 2025 12:33:00 +0200 Subject: [PATCH] Secrets: Remove v0alpha1 spec, files and references (#108100) --- .github/CODEOWNERS | 1 - .github/dependabot.yml | 1 - .github/license_finder.yaml | 2 +- Dockerfile | 1 - Makefile | 1 - go.mod | 1 - go.sum | 2 - go.work | 1 - pkg/apis/secret/README.md | 20 - pkg/apis/secret/go.mod | 46 -- pkg/apis/secret/go.sum | 139 ---- pkg/apis/secret/v0alpha1/decrypt/buf.gen.yaml | 12 - pkg/apis/secret/v0alpha1/decrypt/buf.yaml | 7 - .../secret/v0alpha1/decrypt/decrypt.pb.go | 309 -------- .../secret/v0alpha1/decrypt/decrypt.proto | 32 - .../v0alpha1/decrypt/decrypt_grpc.pb.go | 110 --- pkg/apis/secret/v0alpha1/doc.go | 6 - .../secret/v0alpha1/exposed_secure_value.go | 66 -- .../v0alpha1/exposed_secure_value_test.go | 48 -- pkg/apis/secret/v0alpha1/keeper.go | 176 ----- pkg/apis/secret/v0alpha1/register.go | 105 --- pkg/apis/secret/v0alpha1/secure_value.go | 78 -- .../secret/v0alpha1/zz_generated.deepcopy.go | 384 ---------- .../secret/v0alpha1/zz_generated.defaults.go | 19 - .../secret/v0alpha1/zz_generated.openapi.go | 722 ------------------ ...enerated.openapi_violation_exceptions.list | 9 - pkg/services/apiserver/builder/openapi.go | 2 +- 27 files changed, 2 insertions(+), 2298 deletions(-) delete mode 100644 pkg/apis/secret/README.md delete mode 100644 pkg/apis/secret/go.mod delete mode 100644 pkg/apis/secret/go.sum delete mode 100644 pkg/apis/secret/v0alpha1/decrypt/buf.gen.yaml delete mode 100644 pkg/apis/secret/v0alpha1/decrypt/buf.yaml delete mode 100644 pkg/apis/secret/v0alpha1/decrypt/decrypt.pb.go delete mode 100644 pkg/apis/secret/v0alpha1/decrypt/decrypt.proto delete mode 100644 pkg/apis/secret/v0alpha1/decrypt/decrypt_grpc.pb.go delete mode 100644 pkg/apis/secret/v0alpha1/doc.go delete mode 100644 pkg/apis/secret/v0alpha1/exposed_secure_value.go delete mode 100644 pkg/apis/secret/v0alpha1/exposed_secure_value_test.go delete mode 100644 pkg/apis/secret/v0alpha1/keeper.go delete mode 100644 pkg/apis/secret/v0alpha1/register.go delete mode 100644 pkg/apis/secret/v0alpha1/secure_value.go delete mode 100644 pkg/apis/secret/v0alpha1/zz_generated.deepcopy.go delete mode 100644 pkg/apis/secret/v0alpha1/zz_generated.defaults.go delete mode 100644 pkg/apis/secret/v0alpha1/zz_generated.openapi.go delete mode 100644 pkg/apis/secret/v0alpha1/zz_generated.openapi_violation_exceptions.list diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f2f2e615ef9..4ff0ef8c3cb 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -88,7 +88,6 @@ /pkg/apis/ @grafana/grafana-app-platform-squad /pkg/apis/query @grafana/grafana-datasources-core-services /pkg/apis/userstorage @grafana/grafana-app-platform-squad @grafana/plugins-platform-backend -/pkg/apis/secret @grafana/grafana-operator-experience-squad /pkg/bus/ @grafana/grafana-search-and-storage /pkg/cmd/ @grafana/grafana-backend-group /pkg/cmd/grafana-cli/commands/install_command.go @grafana/plugins-platform-backend diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 3b1a02d0adb..1c62ef810eb 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -13,7 +13,6 @@ updates: - "/pkg/aggregator" - "/pkg/apimachinery" - "/pkg/apis/folder" - - "/pkg/apis/secret" - "/pkg/apiserver" - "/pkg/build" - "/pkg/build/wire" diff --git a/.github/license_finder.yaml b/.github/license_finder.yaml index f2fc8a144c4..1b1f5e1df13 100644 --- a/.github/license_finder.yaml +++ b/.github/license_finder.yaml @@ -99,7 +99,7 @@ :versions: [] :when: 2025-05-03 13:10:00.000000000 Z - - :license - - github.com/grafana/grafana/pkg/apis/secret + - github.com/grafana/grafana/apps/secret - unknown - :who: Carl Bergquist :why: repository is owned by Grafana Labs diff --git a/Dockerfile b/Dockerfile index 78c0ef13ad0..4de7a9b5b09 100644 --- a/Dockerfile +++ b/Dockerfile @@ -71,7 +71,6 @@ COPY .citools .citools # Include vendored dependencies COPY pkg/util/xorm pkg/util/xorm -COPY pkg/apis/secret pkg/apis/secret COPY pkg/apiserver pkg/apiserver COPY pkg/apimachinery pkg/apimachinery COPY pkg/build pkg/build diff --git a/Makefile b/Makefile index 7609670ddff..df23645fe0b 100644 --- a/Makefile +++ b/Makefile @@ -471,7 +471,6 @@ protobuf: ## Compile protobuf definitions go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.5 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.4.0 buf generate pkg/plugins/backendplugin/pluginextensionv2 --template pkg/plugins/backendplugin/pluginextensionv2/buf.gen.yaml - buf generate pkg/apis/secret/v0alpha1/decrypt --template pkg/apis/secret/v0alpha1/decrypt/buf.gen.yaml buf generate apps/secret/decrypt/v1beta1 --template apps/secret/decrypt/v1beta1/buf.gen.yaml buf generate pkg/storage/unified/proto --template pkg/storage/unified/proto/buf.gen.yaml buf generate pkg/services/authz/proto/v1 --template pkg/services/authz/proto/v1/buf.gen.yaml diff --git a/go.mod b/go.mod index 5b00ddf7965..a46003d9444 100644 --- a/go.mod +++ b/go.mod @@ -237,7 +237,6 @@ require ( github.com/grafana/grafana/apps/secret v0.0.0-20250711114246-c9b2126c4ad5 // @grafana/grafana-operator-experience-squad github.com/grafana/grafana/pkg/aggregator v0.0.0-20250627191313-2f1a6ae1712b // @grafana/grafana-app-platform-squad github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250711114246-c9b2126c4ad5 // @grafana/grafana-app-platform-squad - github.com/grafana/grafana/pkg/apis/secret v0.0.0-20250627191313-2f1a6ae1712b // @grafana/grafana-operator-experience-squad github.com/grafana/grafana/pkg/apiserver v0.0.0-20250627191313-2f1a6ae1712b // @grafana/grafana-app-platform-squad // This needs to be here for other projects that import grafana/grafana diff --git a/go.sum b/go.sum index d386e0f1c47..5158881d6d9 100644 --- a/go.sum +++ b/go.sum @@ -1627,8 +1627,6 @@ github.com/grafana/grafana/pkg/aggregator v0.0.0-20250627191313-2f1a6ae1712b h1: github.com/grafana/grafana/pkg/aggregator v0.0.0-20250627191313-2f1a6ae1712b/go.mod h1:+H4Va9jDJlGQJjAN+OFD/hLx2I/yEzDRMQLaKecvgAc= github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250711114246-c9b2126c4ad5 h1:f4fopIH6eQRoZ/E7bstn69UtDAHleIdQ6DrdzEs++Ug= github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250711114246-c9b2126c4ad5/go.mod h1:eAlOam2uWhrsEZlOoAr7XZ9hbBP7SyYGYn31/aQAPs8= -github.com/grafana/grafana/pkg/apis/secret v0.0.0-20250627191313-2f1a6ae1712b h1:rkQO7exsDLdr4KGA7kgEnkQnbJGePbDIP1SUQptLRs8= -github.com/grafana/grafana/pkg/apis/secret v0.0.0-20250627191313-2f1a6ae1712b/go.mod h1:9YjiHZzii2DZfocRDJbqSeC8M3GWenU5yexeHHxsZ4Y= github.com/grafana/grafana/pkg/apiserver v0.0.0-20250627191313-2f1a6ae1712b h1:QyJLJn3xwFTIXu9KPZujsrIUN0X8DdiR9b2h75L0AfI= github.com/grafana/grafana/pkg/apiserver v0.0.0-20250627191313-2f1a6ae1712b/go.mod h1:6OKkPWDB8PetDXqMVMOWL35iTCEUdpATwwpuew0k8+o= github.com/grafana/grafana/pkg/promlib v0.0.8 h1:VUWsqttdf0wMI4j9OX9oNrykguQpZcruudDAFpJJVw0= diff --git a/go.work b/go.work index 9ea7a9d70c7..8d1fff1ed6a 100644 --- a/go.work +++ b/go.work @@ -15,7 +15,6 @@ use ( ./apps/secret ./pkg/aggregator ./pkg/apimachinery - ./pkg/apis/secret // @grafana/grafana-operator-experience-squad ./pkg/apiserver ./pkg/build ./pkg/build/wire // skip:golangci-lint diff --git a/pkg/apis/secret/README.md b/pkg/apis/secret/README.md deleted file mode 100644 index a375b20df06..00000000000 --- a/pkg/apis/secret/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# pkg/apis/secret - -General documentation on the Secrets API for App Platform. - -## Regenerating codegen files - -Currently the generated files are not using `grafana-app-sdk` and does not have a CUE schema definition. - -In order to regenerate the codegen files (those prefixed by `zz_`), you can run: -```sh -./hack/update-codegen.sh secret -``` - -More details [here](https://github.com/grafana/grafana/tree/main/hack#kubernetes-hack-alert). - -## Regenerating Protobuf files - -```sh -make protobuf -``` diff --git a/pkg/apis/secret/go.mod b/pkg/apis/secret/go.mod deleted file mode 100644 index 85c2f22de40..00000000000 --- a/pkg/apis/secret/go.mod +++ /dev/null @@ -1,46 +0,0 @@ -module github.com/grafana/grafana/pkg/apis/secret - -go 1.24.4 - -require ( - github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250514132646-acbc7b54ed9e - github.com/stretchr/testify v1.10.0 - google.golang.org/grpc v1.73.0 - google.golang.org/protobuf v1.36.6 - gopkg.in/yaml.v3 v3.0.1 - k8s.io/apimachinery v0.33.2 - k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff - k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 -) - -require ( - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // indirect - github.com/go-logr/logr v1.4.2 // indirect - github.com/go-openapi/jsonpointer v0.21.0 // indirect - github.com/go-openapi/jsonreference v0.21.0 // indirect - github.com/go-openapi/swag v0.23.0 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/gnostic-models v0.6.9 // indirect - github.com/josharian/intern v1.0.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/mailru/easyjson v0.7.7 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/stretchr/objx v0.5.2 // indirect - github.com/x448/float16 v0.8.4 // indirect - go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.36.0 // indirect - golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.26.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - k8s.io/klog/v2 v2.130.1 // indirect - sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect - sigs.k8s.io/randfill v1.0.0 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect -) diff --git a/pkg/apis/secret/go.sum b/pkg/apis/secret/go.sum deleted file mode 100644 index 51a67b40da0..00000000000 --- a/pkg/apis/secret/go.sum +++ /dev/null @@ -1,139 +0,0 @@ -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= -github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= -github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= -github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= -github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= -github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= -github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250514132646-acbc7b54ed9e h1:BTKk7LHuG1kmAkucwTA7DuMbKpKvJTKrGdBmUNO4dfQ= -github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250514132646-acbc7b54ed9e/go.mod h1:IA4SOwun8QyST9c5UNs/fN37XL6boXXDvRYFcFwbipg= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= -github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= -go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/apimachinery v0.33.2 h1:IHFVhqg59mb8PJWTLi8m1mAoepkUNYmptHsV+Z1m5jY= -k8s.io/apimachinery v0.33.2/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM= -k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= -k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4= -k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= -k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= -sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= -sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= -sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= -sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= -sigs.k8s.io/structured-merge-diff/v4 v4.6.0 h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc= -sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/pkg/apis/secret/v0alpha1/decrypt/buf.gen.yaml b/pkg/apis/secret/v0alpha1/decrypt/buf.gen.yaml deleted file mode 100644 index f725fb6452d..00000000000 --- a/pkg/apis/secret/v0alpha1/decrypt/buf.gen.yaml +++ /dev/null @@ -1,12 +0,0 @@ -version: v1 - -plugins: - - plugin: go - out: pkg/apis/secret/v0alpha1/decrypt - opt: - - paths=source_relative - - plugin: go-grpc - out: pkg/apis/secret/v0alpha1/decrypt - opt: - - paths=source_relative - - require_unimplemented_servers=false diff --git a/pkg/apis/secret/v0alpha1/decrypt/buf.yaml b/pkg/apis/secret/v0alpha1/decrypt/buf.yaml deleted file mode 100644 index 1a5194568a9..00000000000 --- a/pkg/apis/secret/v0alpha1/decrypt/buf.yaml +++ /dev/null @@ -1,7 +0,0 @@ -version: v1 -breaking: - use: - - FILE -lint: - use: - - DEFAULT diff --git a/pkg/apis/secret/v0alpha1/decrypt/decrypt.pb.go b/pkg/apis/secret/v0alpha1/decrypt/decrypt.pb.go deleted file mode 100644 index cffa2065ef0..00000000000 --- a/pkg/apis/secret/v0alpha1/decrypt/decrypt.pb.go +++ /dev/null @@ -1,309 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.5 -// protoc (unknown) -// source: decrypt.proto - -package decrypt - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type SecureValueDecryptRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The stack_id or org_id. - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - // A list of secure value names to decrypt. - Names []string `protobuf:"bytes,2,rep,name=names,proto3" json:"names,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SecureValueDecryptRequest) Reset() { - *x = SecureValueDecryptRequest{} - mi := &file_decrypt_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SecureValueDecryptRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SecureValueDecryptRequest) ProtoMessage() {} - -func (x *SecureValueDecryptRequest) ProtoReflect() protoreflect.Message { - mi := &file_decrypt_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SecureValueDecryptRequest.ProtoReflect.Descriptor instead. -func (*SecureValueDecryptRequest) Descriptor() ([]byte, []int) { - return file_decrypt_proto_rawDescGZIP(), []int{0} -} - -func (x *SecureValueDecryptRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *SecureValueDecryptRequest) GetNames() []string { - if x != nil { - return x.Names - } - return nil -} - -type SecureValueDecryptResponseCollection struct { - state protoimpl.MessageState `protogen:"open.v1"` - // A map of secure value names and their decrypted values. - // The value will be an error message if the requestor does not have permissions to read it, or if the value does not exist. - // It will never return a 404 Not Found to avoid scanning of valid secure values. - DecryptedValues map[string]*Result `protobuf:"bytes,1,rep,name=decrypted_values,json=decryptedValues,proto3" json:"decrypted_values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SecureValueDecryptResponseCollection) Reset() { - *x = SecureValueDecryptResponseCollection{} - mi := &file_decrypt_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SecureValueDecryptResponseCollection) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SecureValueDecryptResponseCollection) ProtoMessage() {} - -func (x *SecureValueDecryptResponseCollection) ProtoReflect() protoreflect.Message { - mi := &file_decrypt_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SecureValueDecryptResponseCollection.ProtoReflect.Descriptor instead. -func (*SecureValueDecryptResponseCollection) Descriptor() ([]byte, []int) { - return file_decrypt_proto_rawDescGZIP(), []int{1} -} - -func (x *SecureValueDecryptResponseCollection) GetDecryptedValues() map[string]*Result { - if x != nil { - return x.DecryptedValues - } - return nil -} - -type Result struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Result: - // - // *Result_Value - // *Result_ErrorMessage - Result isResult_Result `protobuf_oneof:"result"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *Result) Reset() { - *x = Result{} - mi := &file_decrypt_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Result) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Result) ProtoMessage() {} - -func (x *Result) ProtoReflect() protoreflect.Message { - mi := &file_decrypt_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Result.ProtoReflect.Descriptor instead. -func (*Result) Descriptor() ([]byte, []int) { - return file_decrypt_proto_rawDescGZIP(), []int{2} -} - -func (x *Result) GetResult() isResult_Result { - if x != nil { - return x.Result - } - return nil -} - -func (x *Result) GetValue() string { - if x != nil { - if x, ok := x.Result.(*Result_Value); ok { - return x.Value - } - } - return "" -} - -func (x *Result) GetErrorMessage() string { - if x != nil { - if x, ok := x.Result.(*Result_ErrorMessage); ok { - return x.ErrorMessage - } - } - return "" -} - -type isResult_Result interface { - isResult_Result() -} - -type Result_Value struct { - Value string `protobuf:"bytes,1,opt,name=value,proto3,oneof"` -} - -type Result_ErrorMessage struct { - ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3,oneof"` -} - -func (*Result_Value) isResult_Result() {} - -func (*Result_ErrorMessage) isResult_Result() {} - -var File_decrypt_proto protoreflect.FileDescriptor - -var file_decrypt_proto_rawDesc = string([]byte{ - 0x0a, 0x0d, 0x64, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x07, 0x64, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x22, 0x4f, 0x0a, 0x19, 0x53, 0x65, 0x63, 0x75, - 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xea, 0x01, 0x0a, 0x24, 0x53, 0x65, - 0x63, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x6d, 0x0a, 0x10, 0x64, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x64, - 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0f, 0x64, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x1a, 0x53, 0x0a, 0x14, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x65, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x51, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x16, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, - 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x32, 0x80, 0x01, 0x0a, 0x14, 0x53, 0x65, - 0x63, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x65, 0x72, 0x12, 0x68, 0x0a, 0x13, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x64, 0x65, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, - 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, - 0x64, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x3d, 0x5a, 0x3b, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x61, - 0x6e, 0x61, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x2f, 0x76, 0x30, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2f, 0x64, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -}) - -var ( - file_decrypt_proto_rawDescOnce sync.Once - file_decrypt_proto_rawDescData []byte -) - -func file_decrypt_proto_rawDescGZIP() []byte { - file_decrypt_proto_rawDescOnce.Do(func() { - file_decrypt_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_decrypt_proto_rawDesc), len(file_decrypt_proto_rawDesc))) - }) - return file_decrypt_proto_rawDescData -} - -var file_decrypt_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_decrypt_proto_goTypes = []any{ - (*SecureValueDecryptRequest)(nil), // 0: decrypt.SecureValueDecryptRequest - (*SecureValueDecryptResponseCollection)(nil), // 1: decrypt.SecureValueDecryptResponseCollection - (*Result)(nil), // 2: decrypt.Result - nil, // 3: decrypt.SecureValueDecryptResponseCollection.DecryptedValuesEntry -} -var file_decrypt_proto_depIdxs = []int32{ - 3, // 0: decrypt.SecureValueDecryptResponseCollection.decrypted_values:type_name -> decrypt.SecureValueDecryptResponseCollection.DecryptedValuesEntry - 2, // 1: decrypt.SecureValueDecryptResponseCollection.DecryptedValuesEntry.value:type_name -> decrypt.Result - 0, // 2: decrypt.SecureValueDecrypter.DecryptSecureValues:input_type -> decrypt.SecureValueDecryptRequest - 1, // 3: decrypt.SecureValueDecrypter.DecryptSecureValues:output_type -> decrypt.SecureValueDecryptResponseCollection - 3, // [3:4] is the sub-list for method output_type - 2, // [2:3] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_decrypt_proto_init() } -func file_decrypt_proto_init() { - if File_decrypt_proto != nil { - return - } - file_decrypt_proto_msgTypes[2].OneofWrappers = []any{ - (*Result_Value)(nil), - (*Result_ErrorMessage)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_decrypt_proto_rawDesc), len(file_decrypt_proto_rawDesc)), - NumEnums: 0, - NumMessages: 4, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_decrypt_proto_goTypes, - DependencyIndexes: file_decrypt_proto_depIdxs, - MessageInfos: file_decrypt_proto_msgTypes, - }.Build() - File_decrypt_proto = out.File - file_decrypt_proto_goTypes = nil - file_decrypt_proto_depIdxs = nil -} diff --git a/pkg/apis/secret/v0alpha1/decrypt/decrypt.proto b/pkg/apis/secret/v0alpha1/decrypt/decrypt.proto deleted file mode 100644 index bf328ff5217..00000000000 --- a/pkg/apis/secret/v0alpha1/decrypt/decrypt.proto +++ /dev/null @@ -1,32 +0,0 @@ -syntax = "proto3"; - -package decrypt; - -option go_package = "github.com/grafana/grafana/pkg/apis/secret/v0alpha1/decrypt"; - -message SecureValueDecryptRequest { - // The stack_id or org_id. - string namespace = 1; - - // A list of secure value names to decrypt. - repeated string names = 2; -} - -message SecureValueDecryptResponseCollection { - // A map of secure value names and their decrypted values. - // The value will be an error message if the requestor does not have permissions to read it, or if the value does not exist. - // It will never return a 404 Not Found to avoid scanning of valid secure values. - map decrypted_values = 1; -} - -message Result { - oneof result { - string value = 1; - string error_message = 2; - } -} - -service SecureValueDecrypter { - // Decrypts a list of secure values and returns them as a map. - rpc DecryptSecureValues(SecureValueDecryptRequest) returns (SecureValueDecryptResponseCollection); -} diff --git a/pkg/apis/secret/v0alpha1/decrypt/decrypt_grpc.pb.go b/pkg/apis/secret/v0alpha1/decrypt/decrypt_grpc.pb.go deleted file mode 100644 index 9b14a013678..00000000000 --- a/pkg/apis/secret/v0alpha1/decrypt/decrypt_grpc.pb.go +++ /dev/null @@ -1,110 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.4.0 -// - protoc (unknown) -// source: decrypt.proto - -package decrypt - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 - -const ( - SecureValueDecrypter_DecryptSecureValues_FullMethodName = "/decrypt.SecureValueDecrypter/DecryptSecureValues" -) - -// SecureValueDecrypterClient is the client API for SecureValueDecrypter service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type SecureValueDecrypterClient interface { - // Decrypts a list of secure values and returns them as a map. - DecryptSecureValues(ctx context.Context, in *SecureValueDecryptRequest, opts ...grpc.CallOption) (*SecureValueDecryptResponseCollection, error) -} - -type secureValueDecrypterClient struct { - cc grpc.ClientConnInterface -} - -func NewSecureValueDecrypterClient(cc grpc.ClientConnInterface) SecureValueDecrypterClient { - return &secureValueDecrypterClient{cc} -} - -func (c *secureValueDecrypterClient) DecryptSecureValues(ctx context.Context, in *SecureValueDecryptRequest, opts ...grpc.CallOption) (*SecureValueDecryptResponseCollection, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(SecureValueDecryptResponseCollection) - err := c.cc.Invoke(ctx, SecureValueDecrypter_DecryptSecureValues_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// SecureValueDecrypterServer is the server API for SecureValueDecrypter service. -// All implementations should embed UnimplementedSecureValueDecrypterServer -// for forward compatibility -type SecureValueDecrypterServer interface { - // Decrypts a list of secure values and returns them as a map. - DecryptSecureValues(context.Context, *SecureValueDecryptRequest) (*SecureValueDecryptResponseCollection, error) -} - -// UnimplementedSecureValueDecrypterServer should be embedded to have forward compatible implementations. -type UnimplementedSecureValueDecrypterServer struct { -} - -func (UnimplementedSecureValueDecrypterServer) DecryptSecureValues(context.Context, *SecureValueDecryptRequest) (*SecureValueDecryptResponseCollection, error) { - return nil, status.Errorf(codes.Unimplemented, "method DecryptSecureValues not implemented") -} - -// UnsafeSecureValueDecrypterServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to SecureValueDecrypterServer will -// result in compilation errors. -type UnsafeSecureValueDecrypterServer interface { - mustEmbedUnimplementedSecureValueDecrypterServer() -} - -func RegisterSecureValueDecrypterServer(s grpc.ServiceRegistrar, srv SecureValueDecrypterServer) { - s.RegisterService(&SecureValueDecrypter_ServiceDesc, srv) -} - -func _SecureValueDecrypter_DecryptSecureValues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SecureValueDecryptRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SecureValueDecrypterServer).DecryptSecureValues(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: SecureValueDecrypter_DecryptSecureValues_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SecureValueDecrypterServer).DecryptSecureValues(ctx, req.(*SecureValueDecryptRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// SecureValueDecrypter_ServiceDesc is the grpc.ServiceDesc for SecureValueDecrypter service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var SecureValueDecrypter_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "decrypt.SecureValueDecrypter", - HandlerType: (*SecureValueDecrypterServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "DecryptSecureValues", - Handler: _SecureValueDecrypter_DecryptSecureValues_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "decrypt.proto", -} diff --git a/pkg/apis/secret/v0alpha1/doc.go b/pkg/apis/secret/v0alpha1/doc.go deleted file mode 100644 index f986c4ac24c..00000000000 --- a/pkg/apis/secret/v0alpha1/doc.go +++ /dev/null @@ -1,6 +0,0 @@ -// +k8s:deepcopy-gen=package -// +k8s:openapi-gen=true -// +k8s:defaulter-gen=TypeMeta -// +groupName=secret.grafana.app - -package v0alpha1 // import "github.com/grafana/grafana/pkg/apis/secret/v0alpha1" diff --git a/pkg/apis/secret/v0alpha1/exposed_secure_value.go b/pkg/apis/secret/v0alpha1/exposed_secure_value.go deleted file mode 100644 index 1f77cca2112..00000000000 --- a/pkg/apis/secret/v0alpha1/exposed_secure_value.go +++ /dev/null @@ -1,66 +0,0 @@ -package v0alpha1 - -import ( - "encoding/json" - "fmt" - "strconv" - - "gopkg.in/yaml.v3" -) - -const redacted = "[REDACTED]" - -// ExposedSecureValue contains the raw decrypted secure value. -type ExposedSecureValue string - -var ( - _ fmt.Stringer = (*ExposedSecureValue)(nil) - _ fmt.Formatter = (*ExposedSecureValue)(nil) - _ fmt.GoStringer = (*ExposedSecureValue)(nil) - _ json.Marshaler = (*ExposedSecureValue)(nil) - _ yaml.Marshaler = (*ExposedSecureValue)(nil) -) - -// NewExposedSecureValue creates a new exposed secure value wrapper. -func NewExposedSecureValue(v string) ExposedSecureValue { - return ExposedSecureValue(v) -} - -// DangerouslyExposeAndConsumeValue will move the decrypted secure value out of the wrapper and return it. -// Further attempts to call this method will panic. -// The function name is intentionally kept long and weird because this is a dangerous operation and should be used carefully! -func (s *ExposedSecureValue) DangerouslyExposeAndConsumeValue() string { - if *s == "" { - panic("underlying value is empty or was consumed") - } - - tmp := *s - *s = "" - - return string(tmp) -} - -// String must not return the exposed secure value. -func (s ExposedSecureValue) String() string { - return redacted -} - -// Format must not return the exposed secure value. -func (s ExposedSecureValue) Format(f fmt.State, _verb rune) { - _, _ = fmt.Fprint(f, redacted) -} - -// GoString must not return the exposed secure value. -func (s ExposedSecureValue) GoString() string { - return redacted -} - -// MarshalJSON must not return the exposed secure value. -func (s ExposedSecureValue) MarshalJSON() ([]byte, error) { - return []byte(strconv.Quote(redacted)), nil -} - -// MarshalYAML must not return the exposed secure value. -func (s ExposedSecureValue) MarshalYAML() (any, error) { - return redacted, nil -} diff --git a/pkg/apis/secret/v0alpha1/exposed_secure_value_test.go b/pkg/apis/secret/v0alpha1/exposed_secure_value_test.go deleted file mode 100644 index 1d21e0505bc..00000000000 --- a/pkg/apis/secret/v0alpha1/exposed_secure_value_test.go +++ /dev/null @@ -1,48 +0,0 @@ -package v0alpha1_test - -import ( - "bytes" - "encoding/json" - "fmt" - "testing" - - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1" - "github.com/stretchr/testify/require" - "gopkg.in/yaml.v3" -) - -func TestExposedSecureValue(t *testing.T) { - expected := "[REDACTED]" - - rawValue := "a-password" - esv := v0alpha1.NewExposedSecureValue(rawValue) - - // String must not return the exposed secure value. - require.Equal(t, expected, esv.String()) - - // Format/GoString must not return the exposed secure value. - require.Equal(t, expected, fmt.Sprintf("%+#v", esv)) - require.Equal(t, expected, fmt.Sprintf("%v", esv)) - require.Equal(t, expected, fmt.Sprintf("%s", esv)) - - buf := new(bytes.Buffer) - _, err := fmt.Fprintf(buf, "%#v", esv) - require.NoError(t, err) - require.Equal(t, expected, buf.String()) - - // MarshalJSON must not return the exposed secure value. - bytes, err := json.Marshal(esv) - require.NoError(t, err) - require.Equal(t, `"`+expected+`"`, string(bytes)) - - // MarshalYAML must not return the exposed secure value. - bytes, err = yaml.Marshal(esv) - require.NoError(t, err) - require.Equal(t, "'"+expected+"'\n", string(bytes)) - - // DangerouslyExposeAndConsumeValue returns the raw value. - require.Equal(t, rawValue, esv.DangerouslyExposeAndConsumeValue()) - - // Further calls to DangerouslyExposeAndConsumeValue will panic. - require.Panics(t, func() { esv.DangerouslyExposeAndConsumeValue() }) -} diff --git a/pkg/apis/secret/v0alpha1/keeper.go b/pkg/apis/secret/v0alpha1/keeper.go deleted file mode 100644 index 348df2ff914..00000000000 --- a/pkg/apis/secret/v0alpha1/keeper.go +++ /dev/null @@ -1,176 +0,0 @@ -package v0alpha1 - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -type Keeper struct { - metav1.TypeMeta `json:",inline"` - - // Standard object's metadata. It can only be one of `metav1.ObjectMeta` or `metav1.ListMeta`. - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - // +optional - metav1.ObjectMeta `json:"metadata,omitempty"` - - // This is the actual keeper schema. - // +patchStrategy=replace - // +patchMergeKey=name - Spec KeeperSpec `json:"spec" patchStrategy:"replace" patchMergeKey:"name"` -} - -// KeeperType represents the type of a Keeper. -type KeeperType string - -const ( - AWSKeeperType KeeperType = "aws" - AzureKeeperType KeeperType = "azure" - GCPKeeperType KeeperType = "gcp" - HashiCorpKeeperType KeeperType = "hashicorp" -) - -func (kt KeeperType) String() string { - return string(kt) -} - -// KeeperConfig is an interface that all keeper config types must implement. -type KeeperConfig interface { - Type() KeeperType -} - -type KeeperSpec struct { - // Short description for the Keeper. - // +k8s:validation:minLength=1 - // +k8s:validation:maxLength=253 - Description string `json:"description"` - - // AWS Keeper Configuration. - // +structType=atomic - // +optional - AWS *AWSKeeperConfig `json:"aws,omitempty"` - - // Azure Keeper Configuration. - // +structType=atomic - // +optional - Azure *AzureKeeperConfig `json:"azurekeyvault,omitempty"` - - // GCP Keeper Configuration. - // +structType=atomic - // +optional - GCP *GCPKeeperConfig `json:"gcp,omitempty"` - - // HashiCorp Vault Keeper Configuration. - // +structType=atomic - // +optional - HashiCorp *HashiCorpKeeperConfig `json:"hashivault,omitempty"` -} - -func (s *KeeperSpec) GetType() KeeperType { - if s.AWS != nil { - return AWSKeeperType - } - if s.Azure != nil { - return AzureKeeperType - } - if s.GCP != nil { - return GCPKeeperType - } - if s.HashiCorp != nil { - return HashiCorpKeeperType - } - return "" -} - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -type KeeperList struct { - metav1.TypeMeta `json:",inline"` - - // Standard list's metadata. It can only be one of `metav1.ObjectMeta` or `metav1.ListMeta`. - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - // +optional - metav1.ListMeta `json:"metadata,omitempty"` - - // Slice containing all keepers. - Items []Keeper `json:"items"` -} - -// Credentials of remote keepers. -type AWSCredentials struct { - AccessKeyID CredentialValue `json:"accessKeyId"` - SecretAccessKey CredentialValue `json:"secretAccessKey"` - KMSKeyID string `json:"kmsKeyId,omitempty"` -} - -type AzureCredentials struct { - KeyVaultName string `json:"keyVaultName"` - TenantID string `json:"tenantId"` - ClientID string `json:"clientId"` - ClientSecret CredentialValue `json:"clientSecret"` -} - -type GCPCredentials struct { - ProjectID string `json:"projectId"` - CredentialsFile string `json:"credentialsFile"` -} - -type HashiCorpCredentials struct { - Address string `json:"address"` - Token CredentialValue `json:"token"` -} - -// Holds the way credentials are obtained. -// +union -type CredentialValue struct { - // The name of the secure value that holds the actual value. - // +optional - SecureValueName string `json:"secureValueName,omitempty"` - - // The value is taken from the environment variable. - // +optional - ValueFromEnv string `json:"valueFromEnv,omitempty"` - - // The value is taken from the Grafana config file. - // TODO: how do we explain that this is a path to the config file? - // +optional - ValueFromConfig string `json:"valueFromConfig,omitempty"` -} - -// System Keeper. -type SystemKeeperConfig struct{} - -func (s *SystemKeeperConfig) Type() KeeperType { - return "system" -} - -// Remote Keepers. -type AWSKeeperConfig struct { - AWSCredentials `json:",inline"` -} - -type AzureKeeperConfig struct { - AzureCredentials `json:",inline"` -} - -type GCPKeeperConfig struct { - GCPCredentials `json:",inline"` -} - -type HashiCorpKeeperConfig struct { - HashiCorpCredentials `json:",inline"` -} - -func (s *AWSKeeperConfig) Type() KeeperType { - return AWSKeeperType -} - -func (s *AzureKeeperConfig) Type() KeeperType { - return AzureKeeperType -} - -func (s *GCPKeeperConfig) Type() KeeperType { - return GCPKeeperType -} - -func (s *HashiCorpKeeperConfig) Type() KeeperType { - return HashiCorpKeeperType -} diff --git a/pkg/apis/secret/v0alpha1/register.go b/pkg/apis/secret/v0alpha1/register.go deleted file mode 100644 index 87e99392e91..00000000000 --- a/pkg/apis/secret/v0alpha1/register.go +++ /dev/null @@ -1,105 +0,0 @@ -package v0alpha1 - -import ( - "fmt" - - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" - - "github.com/grafana/grafana/pkg/apimachinery/utils" -) - -const ( - GROUP = "secret.grafana.app" - VERSION = "v0alpha1" -) - -// SecureValuesResourceInfo is used when registering the API service. -var SecureValuesResourceInfo = utils.NewResourceInfo( - GROUP, - VERSION, - "securevalues", // resource name (e.g. `kubectl get securevalues`). - "securevalue", // singular name. Used when creating a resource (e.g. `securevalue-xxx`). - "SecureValue", // kind. - func() runtime.Object { return &SecureValue{} }, // constructor for single object. This is used by the rest storage layer `Create` method. - func() runtime.Object { return &SecureValueList{} }, // constructor for list object. This is used by the rest storage layer `List` method. - utils.TableColumns{ - // This defines the fields we view in `kubectl get`. Not related with the storage layer. - Definition: []metav1.TableColumnDefinition{ - {Name: "Name", Type: "string", Format: "name"}, - {Name: "Description", Type: "string", Format: "string", Description: "Short description that explains the purpose of this SecureValue"}, - {Name: "Keeper", Type: "string", Format: "string", Description: "Storage of the secure value"}, - {Name: "Ref", Type: "string", Format: "string", Description: "If present, the reference to a secret"}, - }, - // Decodes the object into a concrete type. Return order in the slice must be the same as in `Definition`. - Reader: func(obj any) ([]interface{}, error) { - r, ok := obj.(*SecureValue) - if ok { - return []interface{}{ - r.Name, - r.Spec.Description, - r.Spec.Keeper, - r.Spec.Ref, - }, nil - } - - return nil, fmt.Errorf("expected SecureValue but got %T", obj) - }, - }, -) - -var KeeperResourceInfo = utils.NewResourceInfo( - GROUP, - VERSION, - "keepers", // resource name (e.g. `kubectl get keepers`). - "keeper", // singular name. Used when creating a resource (e.g. `keeper-xxx`). - "Keeper", // kind. - func() runtime.Object { return &Keeper{} }, // constructor for single object. This is used by the rest storage layer `Create` method. - func() runtime.Object { return &KeeperList{} }, // constructor for list object. This is used by the rest storage layer `List` method. - utils.TableColumns{ - // This defines the fields we view in `kubectl get`. Not related with the storage layer. - Definition: []metav1.TableColumnDefinition{ - {Name: "Name", Type: "string", Format: "name"}, - {Name: "Description", Type: "string", Format: "string", Description: "Short description for the Keeper"}, - }, - // Decodes the object into a concrete type. Return order in the slice must be the same as in `Definition`. - Reader: func(obj any) ([]interface{}, error) { - r, ok := obj.(*Keeper) - if ok { - return []interface{}{ - r.Name, - r.Spec.Description, - }, nil - } - - return nil, fmt.Errorf("expected Keeper but got %T", obj) - }, - }, -) - -var ( - // SchemeGroupVersion is group version used to register these objects. - SchemeGroupVersion = schema.GroupVersion{Group: GROUP, Version: VERSION} - - // SchemaBuilder is used by standard codegen, this is not used in the code otherwise. - SchemeBuilder runtime.SchemeBuilder - localSchemeBuilder = &SchemeBuilder - AddToScheme = localSchemeBuilder.AddToScheme -) - -// Adds the list of known types to the given scheme. -func AddKnownTypes(scheme *runtime.Scheme, version string) error { - // TODO: do we need a type for the secure value decrypt? - // Since it is a subresource, it could be interesting to not use `SecureValue`, but rather something distinct like `DecryptedSecureValue`? - scheme.AddKnownTypes( - schema.GroupVersion{Group: GROUP, Version: version}, - &SecureValue{}, - &SecureValueList{}, - &Keeper{}, - &KeeperList{}, - // &secretV0.SecureValueActivityList{}, - ) - - return nil -} diff --git a/pkg/apis/secret/v0alpha1/secure_value.go b/pkg/apis/secret/v0alpha1/secure_value.go deleted file mode 100644 index 7208683cd0a..00000000000 --- a/pkg/apis/secret/v0alpha1/secure_value.go +++ /dev/null @@ -1,78 +0,0 @@ -package v0alpha1 - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -type SecureValue struct { - metav1.TypeMeta `json:",inline"` - - // Standard object's metadata. It can only be one of `metav1.ObjectMeta` or `metav1.ListMeta`. - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - // +optional - metav1.ObjectMeta `json:"metadata"` - - // This is the actual secure value schema. - Spec SecureValueSpec `json:"spec"` - - // Read-only observed status of the `SecureValue`. - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - Status SecureValueStatus `json:"status"` -} - -type SecureValueStatus struct { - Version int64 `json:"version"` - - // +optional - ExternalID string `json:"externalId,omitempty"` -} - -type SecureValueSpec struct { - // Short description that explains the purpose of this SecureValue. - // +k8s:validation:minLength=1 - // +k8s:validation:maxLength=253 - Description string `json:"description"` - - // The raw value is only valid for write. Read/List will always be empty. - // There is no support for mixing `value` and `ref`, you can't create a secret in a third-party keeper with a specified `ref`. - // Minimum and maximum lengths in bytes. - // +k8s:validation:minLength=1 - // +k8s:validation:maxLength=24576 - Value ExposedSecureValue `json:"value,omitempty"` - - // When using a third-party keeper, the `ref` is used to reference a value inside the remote storage. - // This should not contain sensitive information. - // +k8s:validation:minLength=1 - // +k8s:validation:maxLength=1024 - // +optional - Ref *string `json:"ref,omitempty"` - - // Name of the keeper, being the actual storage of the secure value. - // If not specified, the default keeper for the namespace will be used. - // +k8s:validation:minLength=1 - // +k8s:validation:maxLength=253 - // +optional - Keeper *string `json:"keeper,omitempty"` - - // The Decrypters that are allowed to decrypt this secret. - // An empty list means no service can decrypt it. - // +k8s:validation:maxItems=64 - // +k8s:validation:uniqueItems=true - // +listType=atomic - // +optional - Decrypters []string `json:"decrypters"` -} - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -type SecureValueList struct { - metav1.TypeMeta `json:",inline"` - - // Standard list's metadata. It can only be one of `metav1.ObjectMeta` or `metav1.ListMeta`. - // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - // +optional - metav1.ListMeta `json:"metadata"` - - // Slice containing all secure values. This will NOT output decrypted values. - Items []SecureValue `json:"items"` -} diff --git a/pkg/apis/secret/v0alpha1/zz_generated.deepcopy.go b/pkg/apis/secret/v0alpha1/zz_generated.deepcopy.go deleted file mode 100644 index 727f1e43034..00000000000 --- a/pkg/apis/secret/v0alpha1/zz_generated.deepcopy.go +++ /dev/null @@ -1,384 +0,0 @@ -//go:build !ignore_autogenerated -// +build !ignore_autogenerated - -// SPDX-License-Identifier: AGPL-3.0-only - -// Code generated by deepcopy-gen. DO NOT EDIT. - -package v0alpha1 - -import ( - runtime "k8s.io/apimachinery/pkg/runtime" -) - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AWSCredentials) DeepCopyInto(out *AWSCredentials) { - *out = *in - out.AccessKeyID = in.AccessKeyID - out.SecretAccessKey = in.SecretAccessKey - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSCredentials. -func (in *AWSCredentials) DeepCopy() *AWSCredentials { - if in == nil { - return nil - } - out := new(AWSCredentials) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AWSKeeperConfig) DeepCopyInto(out *AWSKeeperConfig) { - *out = *in - out.AWSCredentials = in.AWSCredentials - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSKeeperConfig. -func (in *AWSKeeperConfig) DeepCopy() *AWSKeeperConfig { - if in == nil { - return nil - } - out := new(AWSKeeperConfig) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AzureCredentials) DeepCopyInto(out *AzureCredentials) { - *out = *in - out.ClientSecret = in.ClientSecret - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureCredentials. -func (in *AzureCredentials) DeepCopy() *AzureCredentials { - if in == nil { - return nil - } - out := new(AzureCredentials) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AzureKeeperConfig) DeepCopyInto(out *AzureKeeperConfig) { - *out = *in - out.AzureCredentials = in.AzureCredentials - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureKeeperConfig. -func (in *AzureKeeperConfig) DeepCopy() *AzureKeeperConfig { - if in == nil { - return nil - } - out := new(AzureKeeperConfig) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *CredentialValue) DeepCopyInto(out *CredentialValue) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CredentialValue. -func (in *CredentialValue) DeepCopy() *CredentialValue { - if in == nil { - return nil - } - out := new(CredentialValue) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GCPCredentials) DeepCopyInto(out *GCPCredentials) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPCredentials. -func (in *GCPCredentials) DeepCopy() *GCPCredentials { - if in == nil { - return nil - } - out := new(GCPCredentials) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GCPKeeperConfig) DeepCopyInto(out *GCPKeeperConfig) { - *out = *in - out.GCPCredentials = in.GCPCredentials - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPKeeperConfig. -func (in *GCPKeeperConfig) DeepCopy() *GCPKeeperConfig { - if in == nil { - return nil - } - out := new(GCPKeeperConfig) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *HashiCorpCredentials) DeepCopyInto(out *HashiCorpCredentials) { - *out = *in - out.Token = in.Token - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HashiCorpCredentials. -func (in *HashiCorpCredentials) DeepCopy() *HashiCorpCredentials { - if in == nil { - return nil - } - out := new(HashiCorpCredentials) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *HashiCorpKeeperConfig) DeepCopyInto(out *HashiCorpKeeperConfig) { - *out = *in - out.HashiCorpCredentials = in.HashiCorpCredentials - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HashiCorpKeeperConfig. -func (in *HashiCorpKeeperConfig) DeepCopy() *HashiCorpKeeperConfig { - if in == nil { - return nil - } - out := new(HashiCorpKeeperConfig) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Keeper) DeepCopyInto(out *Keeper) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Keeper. -func (in *Keeper) DeepCopy() *Keeper { - if in == nil { - return nil - } - out := new(Keeper) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Keeper) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *KeeperList) DeepCopyInto(out *KeeperList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Keeper, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeeperList. -func (in *KeeperList) DeepCopy() *KeeperList { - if in == nil { - return nil - } - out := new(KeeperList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *KeeperList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *KeeperSpec) DeepCopyInto(out *KeeperSpec) { - *out = *in - if in.AWS != nil { - in, out := &in.AWS, &out.AWS - *out = new(AWSKeeperConfig) - **out = **in - } - if in.Azure != nil { - in, out := &in.Azure, &out.Azure - *out = new(AzureKeeperConfig) - **out = **in - } - if in.GCP != nil { - in, out := &in.GCP, &out.GCP - *out = new(GCPKeeperConfig) - **out = **in - } - if in.HashiCorp != nil { - in, out := &in.HashiCorp, &out.HashiCorp - *out = new(HashiCorpKeeperConfig) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeeperSpec. -func (in *KeeperSpec) DeepCopy() *KeeperSpec { - if in == nil { - return nil - } - out := new(KeeperSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SecureValue) DeepCopyInto(out *SecureValue) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - out.Status = in.Status - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecureValue. -func (in *SecureValue) DeepCopy() *SecureValue { - if in == nil { - return nil - } - out := new(SecureValue) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *SecureValue) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SecureValueList) DeepCopyInto(out *SecureValueList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]SecureValue, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecureValueList. -func (in *SecureValueList) DeepCopy() *SecureValueList { - if in == nil { - return nil - } - out := new(SecureValueList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *SecureValueList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SecureValueSpec) DeepCopyInto(out *SecureValueSpec) { - *out = *in - if in.Ref != nil { - in, out := &in.Ref, &out.Ref - *out = new(string) - **out = **in - } - if in.Keeper != nil { - in, out := &in.Keeper, &out.Keeper - *out = new(string) - **out = **in - } - if in.Decrypters != nil { - in, out := &in.Decrypters, &out.Decrypters - *out = make([]string, len(*in)) - copy(*out, *in) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecureValueSpec. -func (in *SecureValueSpec) DeepCopy() *SecureValueSpec { - if in == nil { - return nil - } - out := new(SecureValueSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SecureValueStatus) DeepCopyInto(out *SecureValueStatus) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecureValueStatus. -func (in *SecureValueStatus) DeepCopy() *SecureValueStatus { - if in == nil { - return nil - } - out := new(SecureValueStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SystemKeeperConfig) DeepCopyInto(out *SystemKeeperConfig) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SystemKeeperConfig. -func (in *SystemKeeperConfig) DeepCopy() *SystemKeeperConfig { - if in == nil { - return nil - } - out := new(SystemKeeperConfig) - in.DeepCopyInto(out) - return out -} diff --git a/pkg/apis/secret/v0alpha1/zz_generated.defaults.go b/pkg/apis/secret/v0alpha1/zz_generated.defaults.go deleted file mode 100644 index 238fc2f4edc..00000000000 --- a/pkg/apis/secret/v0alpha1/zz_generated.defaults.go +++ /dev/null @@ -1,19 +0,0 @@ -//go:build !ignore_autogenerated -// +build !ignore_autogenerated - -// SPDX-License-Identifier: AGPL-3.0-only - -// Code generated by defaulter-gen. DO NOT EDIT. - -package v0alpha1 - -import ( - runtime "k8s.io/apimachinery/pkg/runtime" -) - -// RegisterDefaults adds defaulters functions to the given scheme. -// Public to allow building arbitrary schemes. -// All generated defaulters are covering - they call all nested defaulters. -func RegisterDefaults(scheme *runtime.Scheme) error { - return nil -} diff --git a/pkg/apis/secret/v0alpha1/zz_generated.openapi.go b/pkg/apis/secret/v0alpha1/zz_generated.openapi.go deleted file mode 100644 index 836d33f83fa..00000000000 --- a/pkg/apis/secret/v0alpha1/zz_generated.openapi.go +++ /dev/null @@ -1,722 +0,0 @@ -//go:build !ignore_autogenerated -// +build !ignore_autogenerated - -// SPDX-License-Identifier: AGPL-3.0-only - -// Code generated by openapi-gen. DO NOT EDIT. - -package v0alpha1 - -import ( - common "k8s.io/kube-openapi/pkg/common" - spec "k8s.io/kube-openapi/pkg/validation/spec" - ptr "k8s.io/utils/ptr" -) - -func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition { - return map[string]common.OpenAPIDefinition{ - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.AWSCredentials": schema_pkg_apis_secret_v0alpha1_AWSCredentials(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.AWSKeeperConfig": schema_pkg_apis_secret_v0alpha1_AWSKeeperConfig(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.AzureCredentials": schema_pkg_apis_secret_v0alpha1_AzureCredentials(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.AzureKeeperConfig": schema_pkg_apis_secret_v0alpha1_AzureKeeperConfig(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue": schema_pkg_apis_secret_v0alpha1_CredentialValue(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.GCPCredentials": schema_pkg_apis_secret_v0alpha1_GCPCredentials(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.GCPKeeperConfig": schema_pkg_apis_secret_v0alpha1_GCPKeeperConfig(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.HashiCorpCredentials": schema_pkg_apis_secret_v0alpha1_HashiCorpCredentials(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.HashiCorpKeeperConfig": schema_pkg_apis_secret_v0alpha1_HashiCorpKeeperConfig(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.Keeper": schema_pkg_apis_secret_v0alpha1_Keeper(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.KeeperList": schema_pkg_apis_secret_v0alpha1_KeeperList(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.KeeperSpec": schema_pkg_apis_secret_v0alpha1_KeeperSpec(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.SecureValue": schema_pkg_apis_secret_v0alpha1_SecureValue(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.SecureValueList": schema_pkg_apis_secret_v0alpha1_SecureValueList(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.SecureValueSpec": schema_pkg_apis_secret_v0alpha1_SecureValueSpec(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.SecureValueStatus": schema_pkg_apis_secret_v0alpha1_SecureValueStatus(ref), - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.SystemKeeperConfig": schema_pkg_apis_secret_v0alpha1_SystemKeeperConfig(ref), - } -} - -func schema_pkg_apis_secret_v0alpha1_AWSCredentials(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Description: "Credentials of remote keepers.", - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "accessKeyId": { - SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"), - }, - }, - "secretAccessKey": { - SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"), - }, - }, - "kmsKeyId": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - }, - Required: []string{"accessKeyId", "secretAccessKey"}, - }, - }, - Dependencies: []string{ - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"}, - } -} - -func schema_pkg_apis_secret_v0alpha1_AWSKeeperConfig(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Description: "Remote Keepers.", - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "accessKeyId": { - SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"), - }, - }, - "secretAccessKey": { - SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"), - }, - }, - "kmsKeyId": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - }, - Required: []string{"accessKeyId", "secretAccessKey"}, - }, - }, - Dependencies: []string{ - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"}, - } -} - -func schema_pkg_apis_secret_v0alpha1_AzureCredentials(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "keyVaultName": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - "tenantId": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - "clientId": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - "clientSecret": { - SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"), - }, - }, - }, - Required: []string{"keyVaultName", "tenantId", "clientId", "clientSecret"}, - }, - }, - Dependencies: []string{ - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"}, - } -} - -func schema_pkg_apis_secret_v0alpha1_AzureKeeperConfig(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "keyVaultName": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - "tenantId": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - "clientId": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - "clientSecret": { - SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"), - }, - }, - }, - Required: []string{"keyVaultName", "tenantId", "clientId", "clientSecret"}, - }, - }, - Dependencies: []string{ - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"}, - } -} - -func schema_pkg_apis_secret_v0alpha1_CredentialValue(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Description: "Holds the way credentials are obtained.", - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "secureValueName": { - SchemaProps: spec.SchemaProps{ - Description: "The name of the secure value that holds the actual value.", - Type: []string{"string"}, - Format: "", - }, - }, - "valueFromEnv": { - SchemaProps: spec.SchemaProps{ - Description: "The value is taken from the environment variable.", - Type: []string{"string"}, - Format: "", - }, - }, - "valueFromConfig": { - SchemaProps: spec.SchemaProps{ - Description: "The value is taken from the Grafana config file.", - Type: []string{"string"}, - Format: "", - }, - }, - }, - }, - VendorExtensible: spec.VendorExtensible{ - Extensions: spec.Extensions{ - "x-kubernetes-unions": []interface{}{ - map[string]interface{}{ - "fields-to-discriminateBy": map[string]interface{}{ - "secureValueName": "SecureValueName", - "valueFromConfig": "ValueFromConfig", - "valueFromEnv": "ValueFromEnv", - }, - }, - }, - }, - }, - }, - } -} - -func schema_pkg_apis_secret_v0alpha1_GCPCredentials(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "projectId": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - "credentialsFile": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - }, - Required: []string{"projectId", "credentialsFile"}, - }, - }, - } -} - -func schema_pkg_apis_secret_v0alpha1_GCPKeeperConfig(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "projectId": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - "credentialsFile": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - }, - Required: []string{"projectId", "credentialsFile"}, - }, - }, - } -} - -func schema_pkg_apis_secret_v0alpha1_HashiCorpCredentials(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "address": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - "token": { - SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"), - }, - }, - }, - Required: []string{"address", "token"}, - }, - }, - Dependencies: []string{ - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"}, - } -} - -func schema_pkg_apis_secret_v0alpha1_HashiCorpKeeperConfig(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "address": { - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - "token": { - SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"), - }, - }, - }, - Required: []string{"address", "token"}, - }, - }, - Dependencies: []string{ - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.CredentialValue"}, - } -} - -func schema_pkg_apis_secret_v0alpha1_Keeper(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "kind": { - SchemaProps: spec.SchemaProps{ - Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - Type: []string{"string"}, - Format: "", - }, - }, - "apiVersion": { - SchemaProps: spec.SchemaProps{ - Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - Type: []string{"string"}, - Format: "", - }, - }, - "metadata": { - SchemaProps: spec.SchemaProps{ - Description: "Standard object's metadata. It can only be one of `metav1.ObjectMeta` or `metav1.ListMeta`. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - Default: map[string]interface{}{}, - Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"), - }, - }, - "spec": { - VendorExtensible: spec.VendorExtensible{ - Extensions: spec.Extensions{ - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "replace", - }, - }, - SchemaProps: spec.SchemaProps{ - Description: "This is the actual keeper schema.", - Default: map[string]interface{}{}, - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.KeeperSpec"), - }, - }, - }, - Required: []string{"spec"}, - }, - }, - Dependencies: []string{ - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.KeeperSpec", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"}, - } -} - -func schema_pkg_apis_secret_v0alpha1_KeeperList(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "kind": { - SchemaProps: spec.SchemaProps{ - Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - Type: []string{"string"}, - Format: "", - }, - }, - "apiVersion": { - SchemaProps: spec.SchemaProps{ - Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - Type: []string{"string"}, - Format: "", - }, - }, - "metadata": { - SchemaProps: spec.SchemaProps{ - Description: "Standard list's metadata. It can only be one of `metav1.ObjectMeta` or `metav1.ListMeta`. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - Default: map[string]interface{}{}, - Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"), - }, - }, - "items": { - SchemaProps: spec.SchemaProps{ - Description: "Slice containing all keepers.", - Type: []string{"array"}, - Items: &spec.SchemaOrArray{ - Schema: &spec.Schema{ - SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.Keeper"), - }, - }, - }, - }, - }, - }, - Required: []string{"items"}, - }, - }, - Dependencies: []string{ - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.Keeper", "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"}, - } -} - -func schema_pkg_apis_secret_v0alpha1_KeeperSpec(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "description": { - SchemaProps: spec.SchemaProps{ - Description: "Short description for the Keeper.", - Default: "", - MinLength: ptr.To[int64](1), - MaxLength: ptr.To[int64](253), - Type: []string{"string"}, - Format: "", - }, - }, - "aws": { - VendorExtensible: spec.VendorExtensible{ - Extensions: spec.Extensions{ - "x-kubernetes-map-type": "atomic", - }, - }, - SchemaProps: spec.SchemaProps{ - Description: "AWS Keeper Configuration.", - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.AWSKeeperConfig"), - }, - }, - "azurekeyvault": { - VendorExtensible: spec.VendorExtensible{ - Extensions: spec.Extensions{ - "x-kubernetes-map-type": "atomic", - }, - }, - SchemaProps: spec.SchemaProps{ - Description: "Azure Keeper Configuration.", - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.AzureKeeperConfig"), - }, - }, - "gcp": { - VendorExtensible: spec.VendorExtensible{ - Extensions: spec.Extensions{ - "x-kubernetes-map-type": "atomic", - }, - }, - SchemaProps: spec.SchemaProps{ - Description: "GCP Keeper Configuration.", - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.GCPKeeperConfig"), - }, - }, - "hashivault": { - VendorExtensible: spec.VendorExtensible{ - Extensions: spec.Extensions{ - "x-kubernetes-map-type": "atomic", - }, - }, - SchemaProps: spec.SchemaProps{ - Description: "HashiCorp Vault Keeper Configuration.", - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.HashiCorpKeeperConfig"), - }, - }, - }, - Required: []string{"description"}, - }, - }, - Dependencies: []string{ - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.AWSKeeperConfig", "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.AzureKeeperConfig", "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.GCPKeeperConfig", "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.HashiCorpKeeperConfig"}, - } -} - -func schema_pkg_apis_secret_v0alpha1_SecureValue(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "kind": { - SchemaProps: spec.SchemaProps{ - Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - Type: []string{"string"}, - Format: "", - }, - }, - "apiVersion": { - SchemaProps: spec.SchemaProps{ - Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - Type: []string{"string"}, - Format: "", - }, - }, - "metadata": { - SchemaProps: spec.SchemaProps{ - Description: "Standard object's metadata. It can only be one of `metav1.ObjectMeta` or `metav1.ListMeta`. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - Default: map[string]interface{}{}, - Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"), - }, - }, - "spec": { - SchemaProps: spec.SchemaProps{ - Description: "This is the actual secure value schema.", - Default: map[string]interface{}{}, - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.SecureValueSpec"), - }, - }, - "status": { - SchemaProps: spec.SchemaProps{ - Description: "Read-only observed status of the `SecureValue`. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", - Default: map[string]interface{}{}, - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.SecureValueStatus"), - }, - }, - }, - Required: []string{"spec", "status"}, - }, - }, - Dependencies: []string{ - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.SecureValueSpec", "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.SecureValueStatus", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"}, - } -} - -func schema_pkg_apis_secret_v0alpha1_SecureValueList(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "kind": { - SchemaProps: spec.SchemaProps{ - Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - Type: []string{"string"}, - Format: "", - }, - }, - "apiVersion": { - SchemaProps: spec.SchemaProps{ - Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - Type: []string{"string"}, - Format: "", - }, - }, - "metadata": { - SchemaProps: spec.SchemaProps{ - Description: "Standard list's metadata. It can only be one of `metav1.ObjectMeta` or `metav1.ListMeta`. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - Default: map[string]interface{}{}, - Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"), - }, - }, - "items": { - SchemaProps: spec.SchemaProps{ - Description: "Slice containing all secure values. This will NOT output decrypted values.", - Type: []string{"array"}, - Items: &spec.SchemaOrArray{ - Schema: &spec.Schema{ - SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("github.com/grafana/grafana/pkg/apis/secret/v0alpha1.SecureValue"), - }, - }, - }, - }, - }, - }, - Required: []string{"items"}, - }, - }, - Dependencies: []string{ - "github.com/grafana/grafana/pkg/apis/secret/v0alpha1.SecureValue", "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"}, - } -} - -func schema_pkg_apis_secret_v0alpha1_SecureValueSpec(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "description": { - SchemaProps: spec.SchemaProps{ - Description: "Short description that explains the purpose of this SecureValue.", - Default: "", - MinLength: ptr.To[int64](1), - MaxLength: ptr.To[int64](253), - Type: []string{"string"}, - Format: "", - }, - }, - "value": { - SchemaProps: spec.SchemaProps{ - Description: "The raw value is only valid for write. Read/List will always be empty. There is no support for mixing `value` and `ref`, you can't create a secret in a third-party keeper with a specified `ref`. Minimum and maximum lengths in bytes.", - MinLength: ptr.To[int64](1), - MaxLength: ptr.To[int64](24576), - Type: []string{"string"}, - Format: "", - }, - }, - "ref": { - SchemaProps: spec.SchemaProps{ - Description: "When using a third-party keeper, the `ref` is used to reference a value inside the remote storage. This should not contain sensitive information.", - MinLength: ptr.To[int64](1), - MaxLength: ptr.To[int64](1024), - Type: []string{"string"}, - Format: "", - }, - }, - "keeper": { - SchemaProps: spec.SchemaProps{ - Description: "Name of the keeper, being the actual storage of the secure value. If not specified, the default keeper for the namespace will be used.", - MinLength: ptr.To[int64](1), - MaxLength: ptr.To[int64](253), - Type: []string{"string"}, - Format: "", - }, - }, - "decrypters": { - VendorExtensible: spec.VendorExtensible{ - Extensions: spec.Extensions{ - "x-kubernetes-list-type": "atomic", - }, - }, - SchemaProps: spec.SchemaProps{ - Description: "The Decrypters that are allowed to decrypt this secret. An empty list means no service can decrypt it.", - MaxItems: ptr.To[int64](64), - UniqueItems: true, - Type: []string{"array"}, - Items: &spec.SchemaOrArray{ - Schema: &spec.Schema{ - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - }, - }, - }, - }, - Required: []string{"description"}, - }, - }, - } -} - -func schema_pkg_apis_secret_v0alpha1_SecureValueStatus(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "version": { - SchemaProps: spec.SchemaProps{ - Default: 0, - Type: []string{"integer"}, - Format: "int64", - }, - }, - "externalId": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - }, - Required: []string{"version"}, - }, - }, - } -} - -func schema_pkg_apis_secret_v0alpha1_SystemKeeperConfig(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Description: "System Keeper.", - Type: []string{"object"}, - }, - }, - } -} diff --git a/pkg/apis/secret/v0alpha1/zz_generated.openapi_violation_exceptions.list b/pkg/apis/secret/v0alpha1/zz_generated.openapi_violation_exceptions.list deleted file mode 100644 index 0487679a6a6..00000000000 --- a/pkg/apis/secret/v0alpha1/zz_generated.openapi_violation_exceptions.list +++ /dev/null @@ -1,9 +0,0 @@ -API rule violation: names_match,github.com/grafana/grafana/pkg/apis/secret/v0alpha1,AWSCredentials,AccessKeyID -API rule violation: names_match,github.com/grafana/grafana/pkg/apis/secret/v0alpha1,AWSCredentials,KMSKeyID -API rule violation: names_match,github.com/grafana/grafana/pkg/apis/secret/v0alpha1,AzureCredentials,ClientID -API rule violation: names_match,github.com/grafana/grafana/pkg/apis/secret/v0alpha1,AzureCredentials,TenantID -API rule violation: names_match,github.com/grafana/grafana/pkg/apis/secret/v0alpha1,GCPCredentials,ProjectID -API rule violation: names_match,github.com/grafana/grafana/pkg/apis/secret/v0alpha1,KeeperSpec,Azure -API rule violation: names_match,github.com/grafana/grafana/pkg/apis/secret/v0alpha1,KeeperSpec,HashiCorp -API rule violation: names_match,github.com/grafana/grafana/pkg/apis/secret/v0alpha1,SecureValueStatus,ExternalID -API rule violation: streaming_list_type_json_tags,github.com/grafana/grafana/pkg/apis/secret/v0alpha1,SecureValueList,ListMeta diff --git a/pkg/services/apiserver/builder/openapi.go b/pkg/services/apiserver/builder/openapi.go index b708e372d16..cddbb1e4b15 100644 --- a/pkg/services/apiserver/builder/openapi.go +++ b/pkg/services/apiserver/builder/openapi.go @@ -9,8 +9,8 @@ import ( spec "k8s.io/kube-openapi/pkg/validation/spec" data "github.com/grafana/grafana-plugin-sdk-go/experimental/apis/data/v0alpha1" + secret "github.com/grafana/grafana/apps/secret/pkg/apis/secret/v1beta1" common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1" - secret "github.com/grafana/grafana/pkg/apis/secret/v0alpha1" ) // This should eventually live in grafana-app-sdk