github.com/koding/terraform@v0.6.4-0.20170608090606-5d7e0339779d/builtin/providers/google/data_source_google_compute_subnetwork.go (about)

     1  package google
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/hashicorp/terraform/helper/schema"
     7  	"google.golang.org/api/googleapi"
     8  )
     9  
    10  func dataSourceGoogleComputeSubnetwork() *schema.Resource {
    11  	return &schema.Resource{
    12  		Read: dataSourceGoogleComputeSubnetworkRead,
    13  
    14  		Schema: map[string]*schema.Schema{
    15  			"name": &schema.Schema{
    16  				Type:     schema.TypeString,
    17  				Required: true,
    18  			},
    19  
    20  			"description": &schema.Schema{
    21  				Type:     schema.TypeString,
    22  				Computed: true,
    23  			},
    24  			"self_link": &schema.Schema{
    25  				Type:     schema.TypeString,
    26  				Computed: true,
    27  			},
    28  			"ip_cidr_range": &schema.Schema{
    29  				Type:     schema.TypeString,
    30  				Computed: true,
    31  			},
    32  			"private_ip_google_access": &schema.Schema{
    33  				Type:     schema.TypeBool,
    34  				Computed: true,
    35  			},
    36  			"network": &schema.Schema{
    37  				Type:     schema.TypeString,
    38  				Computed: true,
    39  			},
    40  			"gateway_address": &schema.Schema{
    41  				Type:     schema.TypeString,
    42  				Computed: true,
    43  			},
    44  			"region": &schema.Schema{
    45  				Type:     schema.TypeString,
    46  				Optional: true,
    47  			},
    48  
    49  			"project": &schema.Schema{
    50  				Type:     schema.TypeString,
    51  				Optional: true,
    52  			},
    53  		},
    54  	}
    55  }
    56  
    57  func dataSourceGoogleComputeSubnetworkRead(d *schema.ResourceData, meta interface{}) error {
    58  	config := meta.(*Config)
    59  
    60  	project, err := getProject(d, config)
    61  	if err != nil {
    62  		return err
    63  	}
    64  	region, err := getRegion(d, config)
    65  	if err != nil {
    66  		return err
    67  	}
    68  
    69  	subnetwork, err := config.clientCompute.Subnetworks.Get(
    70  		project, region, d.Get("name").(string)).Do()
    71  	if err != nil {
    72  		if gerr, ok := err.(*googleapi.Error); ok && gerr.Code == 404 {
    73  			// The resource doesn't exist anymore
    74  
    75  			return fmt.Errorf("Subnetwork Not Found")
    76  		}
    77  
    78  		return fmt.Errorf("Error reading Subnetwork: %s", err)
    79  	}
    80  
    81  	d.Set("ip_cidr_range", subnetwork.IpCidrRange)
    82  	d.Set("private_ip_google_access", subnetwork.PrivateIpGoogleAccess)
    83  	d.Set("self_link", subnetwork.SelfLink)
    84  	d.Set("description", subnetwork.Description)
    85  	d.Set("gateway_address", subnetwork.GatewayAddress)
    86  	d.Set("network", subnetwork.Network)
    87  
    88  	//Subnet id creation is defined in resource_compute_subnetwork.go
    89  	subnetwork.Region = region
    90  	d.SetId(createSubnetID(subnetwork))
    91  	return nil
    92  }