1
1
package kubernetes
2
2
3
3
import (
4
- "github.com/imdario/mergo"
5
4
"k8s.io/api/core/v1"
6
5
)
7
6
8
- func flattenReplicationControllerSpec (in v1.ReplicationControllerSpec ) ([]interface {}, error ) {
7
+ func flattenReplicationControllerSpec (in v1.ReplicationControllerSpec , useDeprecatedSpecFields bool ) ([]interface {}, error ) {
9
8
att := make (map [string ]interface {})
10
9
att ["min_ready_seconds" ] = in .MinReadySeconds
11
10
@@ -23,12 +22,16 @@ func flattenReplicationControllerSpec(in v1.ReplicationControllerSpec) ([]interf
23
22
return nil , err
24
23
}
25
24
template := make (map [string ]interface {})
26
- template ["spec" ] = podSpec
27
- template ["metadata" ] = flattenMetadata (in .Template .ObjectMeta )
28
25
29
- // Merge deprecated fields
30
- for k , v := range podSpec [0 ].(map [string ]interface {}) {
31
- template [k ] = v
26
+ if useDeprecatedSpecFields {
27
+ // Use deprecated fields
28
+ for k , v := range podSpec [0 ].(map [string ]interface {}) {
29
+ template [k ] = v
30
+ }
31
+ } else {
32
+ // Use new fields
33
+ template ["spec" ] = podSpec
34
+ template ["metadata" ] = flattenMetadata (in .Template .ObjectMeta )
32
35
}
33
36
34
37
att ["template" ] = []interface {}{template }
@@ -37,7 +40,7 @@ func flattenReplicationControllerSpec(in v1.ReplicationControllerSpec) ([]interf
37
40
return []interface {}{att }, nil
38
41
}
39
42
40
- func expandReplicationControllerSpec (rc []interface {}) (v1.ReplicationControllerSpec , error ) {
43
+ func expandReplicationControllerSpec (rc []interface {}, useDeprecatedSpecFields bool ) (v1.ReplicationControllerSpec , error ) {
41
44
obj := v1.ReplicationControllerSpec {}
42
45
if len (rc ) == 0 || rc [0 ] == nil {
43
46
return obj , nil
@@ -47,7 +50,7 @@ func expandReplicationControllerSpec(rc []interface{}) (v1.ReplicationController
47
50
obj .Replicas = ptrToInt32 (int32 (in ["replicas" ].(int )))
48
51
obj .Selector = expandStringMap (in ["selector" ].(map [string ]interface {}))
49
52
50
- template , err := expandReplicationControllerTemplate (in ["template" ].([]interface {}), obj .Selector )
53
+ template , err := expandReplicationControllerTemplate (in ["template" ].([]interface {}), obj .Selector , useDeprecatedSpecFields )
51
54
if err != nil {
52
55
return obj , err
53
56
}
@@ -57,7 +60,7 @@ func expandReplicationControllerSpec(rc []interface{}) (v1.ReplicationController
57
60
return obj , nil
58
61
}
59
62
60
- func expandReplicationControllerTemplate (rct []interface {}, selector map [string ]string ) (v1.PodTemplateSpec , error ) {
63
+ func expandReplicationControllerTemplate (rct []interface {}, selector map [string ]string , useDeprecatedSpecFields bool ) (v1.PodTemplateSpec , error ) {
61
64
obj := v1.PodTemplateSpec {}
62
65
in := rct [0 ].(map [string ]interface {})
63
66
@@ -70,24 +73,21 @@ func expandReplicationControllerTemplate(rct []interface{}, selector map[string]
70
73
}
71
74
obj .ObjectMeta = metadata
72
75
73
- // Get pod spec from new fields
74
- podSpec , err := expandPodSpec (in ["spec" ].([]interface {}))
75
- if err != nil {
76
- return obj , err
77
- }
78
-
79
- // Get pod spec from deprecated fields
80
- podSpecDeprecated , err := expandPodSpec (rct )
81
- if err != nil {
82
- return obj , err
83
- }
84
-
85
- // Merge them overriding the new ones by the deprecated ones
86
- if err := mergo .MergeWithOverwrite (& podSpec , podSpecDeprecated ); err != nil {
87
- return obj , err
76
+ if useDeprecatedSpecFields {
77
+ // Get pod spec from deprecated fields
78
+ podSpecDeprecated , err := expandPodSpec (rct )
79
+ if err != nil {
80
+ return obj , err
81
+ }
82
+ obj .Spec = podSpecDeprecated
83
+ } else {
84
+ // Get pod spec from new fields
85
+ podSpec , err := expandPodSpec (in ["spec" ].([]interface {}))
86
+ if err != nil {
87
+ return obj , err
88
+ }
89
+ obj .Spec = podSpec
88
90
}
89
91
90
- obj .Spec = podSpec
91
-
92
92
return obj , nil
93
93
}
0 commit comments