Skip to content

Commit 2fc390d

Browse files
dvaldiviaDirectXMan12
authored andcommitted
Add deprecated marker for versions
1 parent f284e2e commit 2fc390d

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

pkg/crd/markers/crd.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ var CRDMarkers = []*definitionWithHelp{
4848

4949
must(markers.MakeDefinition("kubebuilder:unservedversion", markers.DescribesType, UnservedVersion{})).
5050
WithHelp(UnservedVersion{}.Help()),
51+
52+
must(markers.MakeDefinition("kubebuilder:deprecatedversion", markers.DescribesType, DeprecatedVersion{})).
53+
WithHelp(DeprecatedVersion{}.Help()),
5154
}
5255

5356
// TODO: categories and singular used to be annotations types
@@ -316,3 +319,29 @@ func (s UnservedVersion) ApplyToCRD(crd *apiext.CustomResourceDefinitionSpec, ve
316319
}
317320

318321
// NB(directxman12): singular was historically distinct, so we keep it here for backwards compat
322+
323+
// +controllertools:marker:generateHelp:category=CRD
324+
325+
// DeprecatedVersion marks this version as deprecated.
326+
type DeprecatedVersion struct {
327+
// Warning message to be shown on the deprecated version
328+
Warning *string `marker:",optional"`
329+
}
330+
331+
func (s DeprecatedVersion) ApplyToCRD(crd *apiext.CustomResourceDefinitionSpec, version string) error {
332+
if version == "" {
333+
// single-version, do nothing
334+
return nil
335+
}
336+
// multi-version
337+
for i := range crd.Versions {
338+
ver := &crd.Versions[i]
339+
if ver.Name != version {
340+
continue
341+
}
342+
ver.Deprecated = true
343+
ver.DeprecationWarning = s.Warning
344+
break
345+
}
346+
return nil
347+
}

pkg/crd/markers/zz_generated.markerhelp.go

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)