Skip to content

Commit 7fbeebb

Browse files
committed
Stop hotlooping of CRDs
1 parent 4ee7b07 commit 7fbeebb

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

lib/resourcemerge/apiext.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package resourcemerge
22

33
import (
4+
"strings"
5+
46
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
57
apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
8+
"k8s.io/utils/pointer"
69

710
"k8s.io/apimachinery/pkg/api/equality"
811
)
@@ -12,6 +15,29 @@ import (
1215
func EnsureCustomResourceDefinitionV1beta1(modified *bool, existing *apiextv1beta1.CustomResourceDefinition, required apiextv1beta1.CustomResourceDefinition) {
1316
EnsureObjectMeta(modified, &existing.ObjectMeta, required.ObjectMeta)
1417

18+
// apply defaults to blue print
19+
if len(required.Spec.Versions) > 0 && len(required.Spec.Version) == 0 {
20+
required.Spec.Version = required.Spec.Versions[0].Name
21+
}
22+
if len(required.Spec.Versions) == 0 && len(required.Spec.Version) > 0 {
23+
required.Spec.Versions = []apiextv1beta1.CustomResourceDefinitionVersion{
24+
{
25+
Name: required.Spec.Version,
26+
Served: true,
27+
Storage: true,
28+
},
29+
}
30+
}
31+
if required.Spec.PreserveUnknownFields == nil {
32+
required.Spec.PreserveUnknownFields = pointer.BoolPtr(true)
33+
}
34+
if len(required.Spec.Names.Singular) == 0 {
35+
required.Spec.Names.Singular = strings.ToLower(required.Spec.Names.Kind)
36+
}
37+
if len(required.Spec.Names.ListKind) == 0 {
38+
required.Spec.Names.ListKind = required.Spec.Names.Kind + "List"
39+
}
40+
1541
// we stomp everything
1642
if !equality.Semantic.DeepEqual(existing.Spec, required.Spec) {
1743
*modified = true
@@ -24,6 +50,14 @@ func EnsureCustomResourceDefinitionV1beta1(modified *bool, existing *apiextv1bet
2450
func EnsureCustomResourceDefinitionV1(modified *bool, existing *apiextv1.CustomResourceDefinition, required apiextv1.CustomResourceDefinition) {
2551
EnsureObjectMeta(modified, &existing.ObjectMeta, required.ObjectMeta)
2652

53+
// apply defaults to blue print
54+
if len(required.Spec.Names.Singular) == 0 {
55+
required.Spec.Names.Singular = strings.ToLower(required.Spec.Names.Kind)
56+
}
57+
if len(required.Spec.Names.ListKind) == 0 {
58+
required.Spec.Names.ListKind = required.Spec.Names.Kind + "List"
59+
}
60+
2761
// we stomp everything
2862
if !equality.Semantic.DeepEqual(existing.Spec, required.Spec) {
2963
*modified = true

0 commit comments

Comments
 (0)