Skip to content

Commit 8829aef

Browse files
committed
Return an error if new spec fields are used no metadata is defined to preserve the Required property of the metadata field
1 parent 6b60d04 commit 8829aef

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

kubernetes/structures_replication_controller.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package kubernetes
22

33
import (
4+
"errors"
5+
46
"k8s.io/api/core/v1"
57
)
68

@@ -34,9 +36,6 @@ func flattenReplicationControllerSpec(in v1.ReplicationControllerSpec, useDeprec
3436
template["metadata"] = flattenMetadata(in.Template.ObjectMeta)
3537
}
3638

37-
// TODO: Add conditional logic that returns an error if both the old and new attributes are not defined to preserve the Required property of the spec fields.
38-
// cf. https://www.terraform.io/docs/extend/best-practices/deprecations.html#renaming-a-required-attribute
39-
4039
att["template"] = []interface{}{template}
4140
}
4241

@@ -78,9 +77,16 @@ func expandReplicationControllerTemplate(rct []interface{}, selector map[string]
7877
obj.Spec = *podSpecDeprecated
7978
} else {
8079
in := rct[0].(map[string]interface{})
80+
metadata := in["metadata"].([]interface{})
81+
82+
// Return an error if new spec fields are used no metadata is defined to preserve the Required property of the metadata field
83+
// cf. https://www.terraform.io/docs/extend/best-practices/deprecations.html#renaming-a-required-attribute
84+
if len(metadata) < 1 {
85+
return obj, errors.New("`spec.template.metadata` is Required when new 'spec.template.spec' fields are used.")
86+
}
8187

8288
// Get user defined metadata
83-
obj.ObjectMeta = expandMetadata(in["metadata"].([]interface{}))
89+
obj.ObjectMeta = expandMetadata(metadata)
8490

8591
// Get pod spec from new fields
8692
podSpec, err := expandPodSpec(in["spec"].([]interface{}))

0 commit comments

Comments
 (0)