1
1
package resourcemerge
2
2
3
3
import (
4
+ "strings"
5
+
4
6
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
5
7
apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
8
+ "k8s.io/utils/pointer"
6
9
7
10
"k8s.io/apimachinery/pkg/api/equality"
8
11
)
@@ -12,6 +15,29 @@ import (
12
15
func EnsureCustomResourceDefinitionV1beta1 (modified * bool , existing * apiextv1beta1.CustomResourceDefinition , required apiextv1beta1.CustomResourceDefinition ) {
13
16
EnsureObjectMeta (modified , & existing .ObjectMeta , required .ObjectMeta )
14
17
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
+
15
41
// we stomp everything
16
42
if ! equality .Semantic .DeepEqual (existing .Spec , required .Spec ) {
17
43
* modified = true
@@ -24,6 +50,14 @@ func EnsureCustomResourceDefinitionV1beta1(modified *bool, existing *apiextv1bet
24
50
func EnsureCustomResourceDefinitionV1 (modified * bool , existing * apiextv1.CustomResourceDefinition , required apiextv1.CustomResourceDefinition ) {
25
51
EnsureObjectMeta (modified , & existing .ObjectMeta , required .ObjectMeta )
26
52
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
+
27
61
// we stomp everything
28
62
if ! equality .Semantic .DeepEqual (existing .Spec , required .Spec ) {
29
63
* modified = true
0 commit comments