From 793ce368fcfb5110c1531d0d92f6b1eb400c6078 Mon Sep 17 00:00:00 2001 From: Radek Simko Date: Sun, 2 Apr 2017 07:08:16 +0100 Subject: [PATCH] kubernetes: Make generatable name optional in metadataSchema --- .../resource_kubernetes_namespace.go | 2 +- .../providers/kubernetes/schema_metadata.go | 34 +++++++++++-------- builtin/providers/kubernetes/structures.go | 4 ++- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/builtin/providers/kubernetes/resource_kubernetes_namespace.go b/builtin/providers/kubernetes/resource_kubernetes_namespace.go index a26ca5751..0f1a7366e 100644 --- a/builtin/providers/kubernetes/resource_kubernetes_namespace.go +++ b/builtin/providers/kubernetes/resource_kubernetes_namespace.go @@ -25,7 +25,7 @@ func resourceKubernetesNamespace() *schema.Resource { }, Schema: map[string]*schema.Schema{ - "metadata": metadataSchema("namespace"), + "metadata": metadataSchema("namespace", true), }, } } diff --git a/builtin/providers/kubernetes/schema_metadata.go b/builtin/providers/kubernetes/schema_metadata.go index 27644f83a..684acd6ae 100644 --- a/builtin/providers/kubernetes/schema_metadata.go +++ b/builtin/providers/kubernetes/schema_metadata.go @@ -26,13 +26,12 @@ func metadataFields(objectName string) map[string]*schema.Schema { ValidateFunc: validateLabels, }, "name": { - Type: schema.TypeString, - Description: fmt.Sprintf("Name of the %s, must be unique. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", objectName), - Optional: true, - ForceNew: true, - Computed: true, - ValidateFunc: validateName, - ConflictsWith: []string{"metadata.generate_name"}, + Type: schema.TypeString, + Description: fmt.Sprintf("Name of the %s, must be unique. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", objectName), + Optional: true, + ForceNew: true, + Computed: true, + ValidateFunc: validateName, }, "resource_version": { Type: schema.TypeString, @@ -52,15 +51,19 @@ func metadataFields(objectName string) map[string]*schema.Schema { } } -func metadataSchema(objectName string) *schema.Schema { +func metadataSchema(objectName string, generatableName bool) *schema.Schema { fields := metadataFields(objectName) - fields["generate_name"] = &schema.Schema{ - Type: schema.TypeString, - Description: "Prefix, used by the server, to generate a unique name ONLY IF the `name` field has not been provided. This value will also be combined with a unique suffix. Read more: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#idempotency", - Optional: true, - ForceNew: true, - ValidateFunc: validateGenerateName, - ConflictsWith: []string{"metadata.name"}, + + if generatableName { + fields["generate_name"] = &schema.Schema{ + Type: schema.TypeString, + Description: "Prefix, used by the server, to generate a unique name ONLY IF the `name` field has not been provided. This value will also be combined with a unique suffix. Read more: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#idempotency", + Optional: true, + ForceNew: true, + ValidateFunc: validateGenerateName, + ConflictsWith: []string{"metadata.name"}, + } + fields["name"].ConflictsWith = []string{"metadata.generate_name"} } return &schema.Schema{ @@ -92,6 +95,7 @@ func namespacedMetadataSchema(objectName string, generatableName bool) *schema.S ValidateFunc: validateGenerateName, ConflictsWith: []string{"metadata.name"}, } + fields["name"].ConflictsWith = []string{"metadata.generate_name"} } return &schema.Schema{ diff --git a/builtin/providers/kubernetes/structures.go b/builtin/providers/kubernetes/structures.go index 878890d56..4c724ddbb 100644 --- a/builtin/providers/kubernetes/structures.go +++ b/builtin/providers/kubernetes/structures.go @@ -68,7 +68,9 @@ func expandStringMap(m map[string]interface{}) map[string]string { func flattenMetadata(meta api.ObjectMeta) []map[string]interface{} { m := make(map[string]interface{}) m["annotations"] = filterAnnotations(meta.Annotations) - m["generate_name"] = meta.GenerateName + if meta.GenerateName != "" { + m["generate_name"] = meta.GenerateName + } m["labels"] = meta.Labels m["name"] = meta.Name m["resource_version"] = meta.ResourceVersion