github.com/memsql/terraform@v0.7.0-rc2.0.20160706152241-21e2173e0a32/builtin/providers/azurerm/resource_arm_dns_zone.go (about) 1 package azurerm 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/hashicorp/terraform/helper/schema" 8 "github.com/jen20/riviera/dns" 9 ) 10 11 func resourceArmDnsZone() *schema.Resource { 12 return &schema.Resource{ 13 Create: resourceArmDnsZoneCreate, 14 Read: resourceArmDnsZoneRead, 15 Update: resourceArmDnsZoneCreate, 16 Delete: resourceArmDnsZoneDelete, 17 18 Schema: map[string]*schema.Schema{ 19 "name": &schema.Schema{ 20 Type: schema.TypeString, 21 Required: true, 22 ForceNew: true, 23 }, 24 25 "resource_group_name": &schema.Schema{ 26 Type: schema.TypeString, 27 Required: true, 28 ForceNew: true, 29 }, 30 31 "number_of_record_sets": &schema.Schema{ 32 Type: schema.TypeString, 33 Optional: true, 34 Computed: true, 35 }, 36 37 "max_number_of_record_sets": &schema.Schema{ 38 Type: schema.TypeString, 39 Optional: true, 40 Computed: true, 41 }, 42 43 "name_servers": &schema.Schema{ 44 Type: schema.TypeSet, 45 Computed: true, 46 Elem: &schema.Schema{Type: schema.TypeString}, 47 Set: schema.HashString, 48 }, 49 }, 50 } 51 } 52 53 func resourceArmDnsZoneCreate(d *schema.ResourceData, meta interface{}) error { 54 client := meta.(*ArmClient) 55 rivieraClient := client.rivieraClient 56 57 createRequest := rivieraClient.NewRequest() 58 createRequest.Command = &dns.CreateDNSZone{ 59 Name: d.Get("name").(string), 60 Location: "global", 61 ResourceGroupName: d.Get("resource_group_name").(string), 62 } 63 64 createResponse, err := createRequest.Execute() 65 if err != nil { 66 return fmt.Errorf("Error creating DNS Zone: %s", err) 67 } 68 if !createResponse.IsSuccessful() { 69 return fmt.Errorf("Error creating DNS Zone: %s", createResponse.Error) 70 } 71 72 readRequest := rivieraClient.NewRequest() 73 readRequest.Command = &dns.GetDNSZone{ 74 Name: d.Get("name").(string), 75 ResourceGroupName: d.Get("resource_group_name").(string), 76 } 77 78 readResponse, err := readRequest.Execute() 79 if err != nil { 80 return fmt.Errorf("Error reading DNS Zone: %s", err) 81 } 82 if !readResponse.IsSuccessful() { 83 return fmt.Errorf("Error reading DNS Zone: %s", readResponse.Error) 84 } 85 86 resp := readResponse.Parsed.(*dns.GetDNSZoneResponse) 87 d.SetId(*resp.ID) 88 89 return resourceArmDnsZoneRead(d, meta) 90 } 91 92 func resourceArmDnsZoneRead(d *schema.ResourceData, meta interface{}) error { 93 client := meta.(*ArmClient) 94 rivieraClient := client.rivieraClient 95 96 readRequest := rivieraClient.NewRequestForURI(d.Id()) 97 readRequest.Command = &dns.GetDNSZone{} 98 99 readResponse, err := readRequest.Execute() 100 if err != nil { 101 return fmt.Errorf("Error reading DNS Zone: %s", err) 102 } 103 if !readResponse.IsSuccessful() { 104 log.Printf("[INFO] Error reading DNS Zone %q - removing from state", d.Id()) 105 d.SetId("") 106 return fmt.Errorf("Error reading DNS Zone: %s", readResponse.Error) 107 } 108 109 resp := readResponse.Parsed.(*dns.GetDNSZoneResponse) 110 111 d.Set("number_of_record_sets", resp.NumberOfRecordSets) 112 d.Set("max_number_of_record_sets", resp.MaxNumberOfRecordSets) 113 114 nameServers := make([]string, 0, len(resp.NameServers)) 115 for _, ns := range resp.NameServers { 116 nameServers = append(nameServers, *ns) 117 } 118 if err := d.Set("name_servers", nameServers); err != nil { 119 return err 120 } 121 122 return nil 123 } 124 125 func resourceArmDnsZoneDelete(d *schema.ResourceData, meta interface{}) error { 126 client := meta.(*ArmClient) 127 rivieraClient := client.rivieraClient 128 129 deleteRequest := rivieraClient.NewRequestForURI(d.Id()) 130 deleteRequest.Command = &dns.DeleteDNSZone{} 131 132 deleteResponse, err := deleteRequest.Execute() 133 if err != nil { 134 return fmt.Errorf("Error deleting DNS Zone: %s", err) 135 } 136 if !deleteResponse.IsSuccessful() { 137 return fmt.Errorf("Error deleting DNS Zone: %s", deleteResponse.Error) 138 } 139 140 return nil 141 }