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 }