github.com/koding/terraform@v0.6.4-0.20170608090606-5d7e0339779d/builtin/providers/google/data_source_google_container_engine_versions.go (about) 1 package google 2 3 import ( 4 "fmt" 5 "time" 6 7 "github.com/hashicorp/terraform/helper/schema" 8 ) 9 10 func dataSourceGoogleContainerEngineVersions() *schema.Resource { 11 return &schema.Resource{ 12 Read: dataSourceGoogleContainerEngineVersionsRead, 13 Schema: map[string]*schema.Schema{ 14 "project": { 15 Type: schema.TypeString, 16 Optional: true, 17 }, 18 "zone": { 19 Type: schema.TypeString, 20 Required: true, 21 }, 22 "latest_master_version": { 23 Type: schema.TypeString, 24 Computed: true, 25 }, 26 "latest_node_version": { 27 Type: schema.TypeString, 28 Computed: true, 29 }, 30 "valid_master_versions": { 31 Type: schema.TypeList, 32 Computed: true, 33 Elem: &schema.Schema{Type: schema.TypeString}, 34 }, 35 "valid_node_versions": { 36 Type: schema.TypeList, 37 Computed: true, 38 Elem: &schema.Schema{Type: schema.TypeString}, 39 }, 40 }, 41 } 42 } 43 44 func dataSourceGoogleContainerEngineVersionsRead(d *schema.ResourceData, meta interface{}) error { 45 config := meta.(*Config) 46 47 project, err := getProject(d, config) 48 if err != nil { 49 return err 50 } 51 52 zone := d.Get("zone").(string) 53 54 resp, err := config.clientContainer.Projects.Zones.GetServerconfig(project, zone).Do() 55 if err != nil { 56 return fmt.Errorf("Error retrieving available container cluster versions: %s", err.Error()) 57 } 58 59 d.Set("valid_master_versions", resp.ValidMasterVersions) 60 d.Set("valid_node_versions", resp.ValidNodeVersions) 61 d.Set("latest_master_version", resp.ValidMasterVersions[0]) 62 d.Set("latest_node_version", resp.ValidNodeVersions[0]) 63 64 d.SetId(time.Now().UTC().String()) 65 66 return nil 67 }