github.com/danrjohnson/terraform@v0.7.0-rc2.0.20160627135212-d0fc1fa086ff/builtin/providers/azurerm/resource_arm_sql_firewall_rule.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/azure"
     9  	"github.com/jen20/riviera/sql"
    10  )
    11  
    12  func resourceArmSqlFirewallRule() *schema.Resource {
    13  	return &schema.Resource{
    14  		Create: resourceArmSqlFirewallRuleCreate,
    15  		Read:   resourceArmSqlFirewallRuleRead,
    16  		Update: resourceArmSqlFirewallRuleCreate,
    17  		Delete: resourceArmSqlFirewallRuleDelete,
    18  
    19  		Schema: map[string]*schema.Schema{
    20  			"name": &schema.Schema{
    21  				Type:     schema.TypeString,
    22  				Required: true,
    23  				ForceNew: true,
    24  			},
    25  
    26  			"resource_group_name": &schema.Schema{
    27  				Type:     schema.TypeString,
    28  				Required: true,
    29  				ForceNew: true,
    30  			},
    31  
    32  			"server_name": &schema.Schema{
    33  				Type:     schema.TypeString,
    34  				Required: true,
    35  				ForceNew: true,
    36  			},
    37  
    38  			"start_ip_address": &schema.Schema{
    39  				Type:     schema.TypeString,
    40  				Required: true,
    41  			},
    42  
    43  			"end_ip_address": &schema.Schema{
    44  				Type:     schema.TypeString,
    45  				Required: true,
    46  			},
    47  		},
    48  	}
    49  }
    50  
    51  func resourceArmSqlFirewallRuleCreate(d *schema.ResourceData, meta interface{}) error {
    52  	client := meta.(*ArmClient)
    53  	rivieraClient := client.rivieraClient
    54  
    55  	createRequest := rivieraClient.NewRequest()
    56  	createRequest.Command = &sql.CreateOrUpdateFirewallRule{
    57  		Name:              d.Get("name").(string),
    58  		ResourceGroupName: d.Get("resource_group_name").(string),
    59  		ServerName:        d.Get("server_name").(string),
    60  		StartIPAddress:    azure.String(d.Get("start_ip_address").(string)),
    61  		EndIPAddress:      azure.String(d.Get("end_ip_address").(string)),
    62  	}
    63  
    64  	createResponse, err := createRequest.Execute()
    65  	if err != nil {
    66  		return fmt.Errorf("Error creating SQL Server Firewall Rule: %s", err)
    67  	}
    68  	if !createResponse.IsSuccessful() {
    69  		return fmt.Errorf("Error creating SQL Server Firewall Rule: %s", createResponse.Error)
    70  	}
    71  
    72  	readRequest := rivieraClient.NewRequest()
    73  	readRequest.Command = &sql.GetFirewallRule{
    74  		Name:              d.Get("name").(string),
    75  		ResourceGroupName: d.Get("resource_group_name").(string),
    76  		ServerName:        d.Get("server_name").(string),
    77  	}
    78  
    79  	readResponse, err := readRequest.Execute()
    80  	if err != nil {
    81  		return fmt.Errorf("Error reading SQL Server Firewall Rule: %s", err)
    82  	}
    83  	if !readResponse.IsSuccessful() {
    84  		return fmt.Errorf("Error reading SQL Server Firewall Rule: %s", readResponse.Error)
    85  	}
    86  
    87  	resp := readResponse.Parsed.(*sql.GetFirewallRuleResponse)
    88  	d.SetId(*resp.ID)
    89  
    90  	return resourceArmSqlFirewallRuleRead(d, meta)
    91  }
    92  
    93  func resourceArmSqlFirewallRuleRead(d *schema.ResourceData, meta interface{}) error {
    94  	client := meta.(*ArmClient)
    95  	rivieraClient := client.rivieraClient
    96  
    97  	readRequest := rivieraClient.NewRequestForURI(d.Id())
    98  	readRequest.Command = &sql.GetFirewallRule{}
    99  
   100  	readResponse, err := readRequest.Execute()
   101  	if err != nil {
   102  		return fmt.Errorf("Error reading SQL Server Firewall Rule: %s", err)
   103  	}
   104  	if !readResponse.IsSuccessful() {
   105  		log.Printf("[INFO] Error reading SQL Server Firewall Rule %q - removing from state", d.Id())
   106  		d.SetId("")
   107  		return fmt.Errorf("Error reading SQL Server Firewall Rule: %s", readResponse.Error)
   108  	}
   109  
   110  	resp := readResponse.Parsed.(*sql.GetFirewallRuleResponse)
   111  
   112  	d.Set("start_ip_address", resp.StartIPAddress)
   113  	d.Set("end_ip_address", resp.EndIPAddress)
   114  
   115  	return nil
   116  }
   117  
   118  func resourceArmSqlFirewallRuleDelete(d *schema.ResourceData, meta interface{}) error {
   119  	client := meta.(*ArmClient)
   120  	rivieraClient := client.rivieraClient
   121  
   122  	deleteRequest := rivieraClient.NewRequestForURI(d.Id())
   123  	deleteRequest.Command = &sql.DeleteFirewallRule{}
   124  
   125  	deleteResponse, err := deleteRequest.Execute()
   126  	if err != nil {
   127  		return fmt.Errorf("Error deleting SQL Server Firewall Rule: %s", err)
   128  	}
   129  	if !deleteResponse.IsSuccessful() {
   130  		return fmt.Errorf("Error deleting SQL Server Firewall Rule: %s", deleteResponse.Error)
   131  	}
   132  
   133  	return nil
   134  }