mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-09-28 10:45:44 +00:00
config/crd/{v1,v2alpha1}/crds/crds.go were generated files that
gzip-compressed the CRD YAML bases into committed []byte literals via
hack/crd-gen, requiring `go generate` and a dedicated CI drift check
(hack/verify-generated-crd-code.sh). This made the files large,
unreviewable in diffs, and a frequent source of merge conflicts.
Replace the generated files with config/crd/{v1,v2alpha1}/crds.go
using `//go:embed bases/*.yaml` to embed the already-committed YAML
manifests directly, decoding them the same way at init. Since Go's
go:embed can't reach outside a file's own directory tree, the crds
package now lives alongside bases/ instead of in a bases-sibling
subdirectory; import paths in pkg/install and pkg/controller were
updated accordingly.
Drop hack/crd-gen and hack/verify-generated-crd-code.sh entirely, and
trim their references from update-3generated-crd-code.sh and the
codespell skip-list. No codegen step remains, so no drift is possible.
Fixes #10328
AI-Tool-Used: Claude Code
AI-Tool-Use-Level: Category 1 (High)
AI-Code-Category: Category 1 (Production)
Signed-off-by: lubronzhan <lubron.zhan@broadcom.com>
Co-authored-by: Daniel Jiang <daniel.jiang@broadcom.com>
59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
/*
|
|
Copyright the Velero contributors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
// Package crds embeds the controller-tools generated CRD manifests from
|
|
// ./bases into the binary via go:embed.
|
|
package crds
|
|
|
|
import (
|
|
"embed"
|
|
|
|
apiextinstall "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install"
|
|
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
|
"k8s.io/client-go/kubernetes/scheme"
|
|
)
|
|
|
|
//go:embed bases/*.yaml
|
|
var basesFS embed.FS
|
|
|
|
var CRDs = crds()
|
|
|
|
func crds() []*apiextv1.CustomResourceDefinition {
|
|
apiextinstall.Install(scheme.Scheme)
|
|
decode := scheme.Codecs.UniversalDeserializer().Decode
|
|
|
|
entries, err := basesFS.ReadDir("bases")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
objs := make([]*apiextv1.CustomResourceDefinition, 0, len(entries))
|
|
for _, entry := range entries {
|
|
data, err := basesFS.ReadFile("bases/" + entry.Name())
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
obj, _, err := decode(data, nil, nil)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
objs = append(objs, obj.(*apiextv1.CustomResourceDefinition))
|
|
}
|
|
|
|
return objs
|
|
}
|