github.com/danrjohnson/terraform@v0.7.0-rc2.0.20160627135212-d0fc1fa086ff/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 } 44 } 45 46 func resourceArmDnsZoneCreate(d *schema.ResourceData, meta interface{}) error { 47 client := meta.(*ArmClient) 48 rivieraClient := client.rivieraClient 49 50 createRequest := rivieraClient.NewRequest() 51 createRequest.Command = &dns.CreateDNSZone{ 52 Name: d.Get("name").(string), 53 Location: "global", 54 ResourceGroupName: d.Get("resource_group_name").(string), 55 } 56 57 createResponse, err := createRequest.Execute() 58 if err != nil { 59 return fmt.Errorf("Error creating DNS Zone: %s", err) 60 } 61 if !createResponse.IsSuccessful() { 62 return fmt.Errorf("Error creating DNS Zone: %s", createResponse.Error) 63 } 64 65 readRequest := rivieraClient.NewRequest() 66 readRequest.Command = &dns.GetDNSZone{ 67 Name: d.Get("name").(string), 68 ResourceGroupName: d.Get("resource_group_name").(string), 69 } 70 71 readResponse, err := readRequest.Execute() 72 if err != nil { 73 return fmt.Errorf("Error reading DNS Zone: %s", err) 74 } 75 if !readResponse.IsSuccessful() { 76 return fmt.Errorf("Error reading DNS Zone: %s", readResponse.Error) 77 } 78 79 resp := readResponse.Parsed.(*dns.GetDNSZoneResponse) 80 d.SetId(*resp.ID) 81 82 return resourceArmDnsZoneRead(d, meta) 83 } 84 85 func resourceArmDnsZoneRead(d *schema.ResourceData, meta interface{}) error { 86 client := meta.(*ArmClient) 87 rivieraClient := client.rivieraClient 88 89 readRequest := rivieraClient.NewRequestForURI(d.Id()) 90 readRequest.Command = &dns.GetDNSZone{} 91 92 readResponse, err := readRequest.Execute() 93 if err != nil { 94 return fmt.Errorf("Error reading DNS Zone: %s", err) 95 } 96 if !readResponse.IsSuccessful() { 97 log.Printf("[INFO] Error reading DNS Zone %q - removing from state", d.Id()) 98 d.SetId("") 99 return fmt.Errorf("Error reading DNS Zone: %s", readResponse.Error) 100 } 101 102 resp := readResponse.Parsed.(*dns.GetDNSZoneResponse) 103 104 d.Set("number_of_record_sets", resp.NumberOfRecordSets) 105 d.Set("max_number_of_record_sets", resp.MaxNumberOfRecordSets) 106 107 return nil 108 } 109 110 func resourceArmDnsZoneDelete(d *schema.ResourceData, meta interface{}) error { 111 client := meta.(*ArmClient) 112 rivieraClient := client.rivieraClient 113 114 deleteRequest := rivieraClient.NewRequestForURI(d.Id()) 115 deleteRequest.Command = &dns.DeleteDNSZone{} 116 117 deleteResponse, err := deleteRequest.Execute() 118 if err != nil { 119 return fmt.Errorf("Error deleting DNS Zone: %s", err) 120 } 121 if !deleteResponse.IsSuccessful() { 122 return fmt.Errorf("Error deleting DNS Zone: %s", deleteResponse.Error) 123 } 124 125 return nil 126 }