github.com/bradfeehan/terraform@v0.7.0-rc3.0.20170529055808-34b45c5ad841/builtin/providers/aws/resource_aws_default_vpc_dhcp_options.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/aws/aws-sdk-go/aws" 8 "github.com/aws/aws-sdk-go/service/ec2" 9 "github.com/hashicorp/terraform/helper/schema" 10 ) 11 12 func resourceAwsDefaultVpcDhcpOptions() *schema.Resource { 13 // reuse aws_vpc_dhcp_options schema, and methods for READ, UPDATE 14 dvpc := resourceAwsVpcDhcpOptions() 15 dvpc.Create = resourceAwsDefaultVpcDhcpOptionsCreate 16 dvpc.Delete = resourceAwsDefaultVpcDhcpOptionsDelete 17 18 // domain_name is a computed value for Default Default DHCP Options Sets 19 dvpc.Schema["domain_name"] = &schema.Schema{ 20 Type: schema.TypeString, 21 Computed: true, 22 } 23 // domain_name_servers is a computed value for Default Default DHCP Options Sets 24 dvpc.Schema["domain_name_servers"] = &schema.Schema{ 25 Type: schema.TypeString, 26 Computed: true, 27 } 28 // ntp_servers is a computed value for Default Default DHCP Options Sets 29 dvpc.Schema["ntp_servers"] = &schema.Schema{ 30 Type: schema.TypeString, 31 Computed: true, 32 } 33 34 return dvpc 35 } 36 37 func resourceAwsDefaultVpcDhcpOptionsCreate(d *schema.ResourceData, meta interface{}) error { 38 conn := meta.(*AWSClient).ec2conn 39 40 var domainName string 41 awsRegion := meta.(*AWSClient).region 42 if awsRegion == "us-east-1" { 43 domainName = "ec2.internal" 44 } else { 45 domainName = awsRegion + ".compute.internal" 46 } 47 req := &ec2.DescribeDhcpOptionsInput{ 48 Filters: []*ec2.Filter{ 49 &ec2.Filter{ 50 Name: aws.String("key"), 51 Values: aws.StringSlice([]string{"domain-name"}), 52 }, 53 &ec2.Filter{ 54 Name: aws.String("value"), 55 Values: aws.StringSlice([]string{domainName}), 56 }, 57 &ec2.Filter{ 58 Name: aws.String("key"), 59 Values: aws.StringSlice([]string{"domain-name-servers"}), 60 }, 61 &ec2.Filter{ 62 Name: aws.String("value"), 63 Values: aws.StringSlice([]string{"AmazonProvidedDNS"}), 64 }, 65 }, 66 } 67 68 resp, err := conn.DescribeDhcpOptions(req) 69 if err != nil { 70 return err 71 } 72 73 if len(resp.DhcpOptions) != 1 || resp.DhcpOptions[0] == nil { 74 return fmt.Errorf("Default DHCP Options Set not found") 75 } 76 77 d.SetId(aws.StringValue(resp.DhcpOptions[0].DhcpOptionsId)) 78 79 if err := resourceAwsVpcDhcpOptionsUpdate(d, meta); err != nil { 80 return err 81 } 82 83 return resourceAwsVpcDhcpOptionsRead(d, meta) 84 } 85 86 func resourceAwsDefaultVpcDhcpOptionsDelete(d *schema.ResourceData, meta interface{}) error { 87 log.Printf("[WARN] Cannot destroy Default DHCP Options Set. Terraform will remove this resource from the state file, however resources may remain.") 88 d.SetId("") 89 return nil 90 }