github.com/leeprovoost/terraform@v0.6.10-0.20160119085442-96f3f76118e7/builtin/providers/digitalocean/resource_digitalocean_domain.go (about) 1 package digitalocean 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/digitalocean/godo" 8 "github.com/hashicorp/terraform/helper/schema" 9 ) 10 11 func resourceDigitalOceanDomain() *schema.Resource { 12 return &schema.Resource{ 13 Create: resourceDigitalOceanDomainCreate, 14 Read: resourceDigitalOceanDomainRead, 15 Delete: resourceDigitalOceanDomainDelete, 16 17 Schema: map[string]*schema.Schema{ 18 "name": &schema.Schema{ 19 Type: schema.TypeString, 20 Required: true, 21 ForceNew: true, 22 }, 23 24 "ip_address": &schema.Schema{ 25 Type: schema.TypeString, 26 Required: true, 27 ForceNew: true, 28 }, 29 }, 30 } 31 } 32 33 func resourceDigitalOceanDomainCreate(d *schema.ResourceData, meta interface{}) error { 34 client := meta.(*godo.Client) 35 36 // Build up our creation options 37 38 opts := &godo.DomainCreateRequest{ 39 Name: d.Get("name").(string), 40 IPAddress: d.Get("ip_address").(string), 41 } 42 43 log.Printf("[DEBUG] Domain create configuration: %#v", opts) 44 domain, _, err := client.Domains.Create(opts) 45 if err != nil { 46 return fmt.Errorf("Error creating Domain: %s", err) 47 } 48 49 d.SetId(domain.Name) 50 log.Printf("[INFO] Domain Name: %s", domain.Name) 51 52 return resourceDigitalOceanDomainRead(d, meta) 53 } 54 55 func resourceDigitalOceanDomainRead(d *schema.ResourceData, meta interface{}) error { 56 client := meta.(*godo.Client) 57 58 domain, resp, err := client.Domains.Get(d.Id()) 59 if err != nil { 60 // If the domain is somehow already destroyed, mark as 61 // successfully gone 62 if resp.StatusCode == 404 { 63 d.SetId("") 64 return nil 65 } 66 67 return fmt.Errorf("Error retrieving domain: %s", err) 68 } 69 70 d.Set("name", domain.Name) 71 72 return nil 73 } 74 75 func resourceDigitalOceanDomainDelete(d *schema.ResourceData, meta interface{}) error { 76 client := meta.(*godo.Client) 77 78 log.Printf("[INFO] Deleting Domain: %s", d.Id()) 79 _, err := client.Domains.Delete(d.Id()) 80 if err != nil { 81 return fmt.Errorf("Error deleting Domain: %s", err) 82 } 83 84 d.SetId("") 85 return nil 86 }