github.com/sixgill/terraform@v0.9.0-beta2.0.20170316214032-033f6226ae50/builtin/providers/kubernetes/structures.go (about)

     1  package kubernetes
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	api "k8s.io/kubernetes/pkg/api/v1"
     8  )
     9  
    10  func idParts(id string) (string, string) {
    11  	parts := strings.Split(id, "/")
    12  	return parts[0], parts[1]
    13  }
    14  
    15  func buildId(meta api.ObjectMeta) string {
    16  	return meta.Namespace + "/" + meta.Name
    17  }
    18  
    19  func expandMetadata(in []interface{}) api.ObjectMeta {
    20  	meta := api.ObjectMeta{}
    21  	if len(in) < 1 {
    22  		return meta
    23  	}
    24  	m := in[0].(map[string]interface{})
    25  
    26  	meta.Annotations = expandStringMap(m["annotations"].(map[string]interface{}))
    27  	meta.Labels = expandStringMap(m["labels"].(map[string]interface{}))
    28  
    29  	if v, ok := m["generate_name"]; ok {
    30  		meta.GenerateName = v.(string)
    31  	}
    32  	if v, ok := m["name"]; ok {
    33  		meta.Name = v.(string)
    34  	}
    35  	if v, ok := m["namespace"]; ok {
    36  		meta.Namespace = v.(string)
    37  	}
    38  
    39  	return meta
    40  }
    41  
    42  func expandStringMap(m map[string]interface{}) map[string]string {
    43  	result := make(map[string]string)
    44  	for k, v := range m {
    45  		result[k] = v.(string)
    46  	}
    47  	return result
    48  }
    49  
    50  func flattenMetadata(meta api.ObjectMeta) []map[string]interface{} {
    51  	m := make(map[string]interface{})
    52  	m["annotations"] = meta.Annotations
    53  	m["generate_name"] = meta.GenerateName
    54  	m["labels"] = meta.Labels
    55  	m["name"] = meta.Name
    56  	m["resource_version"] = meta.ResourceVersion
    57  	m["self_link"] = meta.SelfLink
    58  	m["uid"] = fmt.Sprintf("%v", meta.UID)
    59  	m["generation"] = meta.Generation
    60  
    61  	if meta.Namespace != "" {
    62  		m["namespace"] = meta.Namespace
    63  	}
    64  
    65  	return []map[string]interface{}{m}
    66  }