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  }