github.com/bendemaree/terraform@v0.5.4-0.20150613200311-f50d97d6eee6/builtin/providers/azure/resource_azure_security_group.go (about) 1 package azure 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/Azure/azure-sdk-for-go/management" 8 "github.com/Azure/azure-sdk-for-go/management/networksecuritygroup" 9 "github.com/hashicorp/terraform/helper/schema" 10 ) 11 12 func resourceAzureSecurityGroup() *schema.Resource { 13 return &schema.Resource{ 14 Create: resourceAzureSecurityGroupCreate, 15 Read: resourceAzureSecurityGroupRead, 16 Delete: resourceAzureSecurityGroupDelete, 17 18 Schema: map[string]*schema.Schema{ 19 "name": &schema.Schema{ 20 Type: schema.TypeString, 21 Required: true, 22 ForceNew: true, 23 }, 24 25 "label": &schema.Schema{ 26 Type: schema.TypeString, 27 Optional: true, 28 Computed: true, 29 ForceNew: true, 30 }, 31 32 "location": &schema.Schema{ 33 Type: schema.TypeString, 34 Required: true, 35 ForceNew: true, 36 }, 37 }, 38 } 39 } 40 41 func resourceAzureSecurityGroupCreate(d *schema.ResourceData, meta interface{}) (err error) { 42 mc := meta.(*Client).mgmtClient 43 44 name := d.Get("name").(string) 45 46 // Compute/set the label 47 label := d.Get("label").(string) 48 if label == "" { 49 label = name 50 } 51 52 req, err := networksecuritygroup.NewClient(mc).CreateNetworkSecurityGroup( 53 name, 54 label, 55 d.Get("location").(string), 56 ) 57 if err != nil { 58 return fmt.Errorf("Error creating Network Security Group %s: %s", name, err) 59 } 60 61 if err := mc.WaitForOperation(req, nil); err != nil { 62 return fmt.Errorf( 63 "Error waiting for Network Security Group %s to be created: %s", name, err) 64 } 65 66 d.SetId(name) 67 68 return resourceAzureSecurityGroupRead(d, meta) 69 } 70 71 func resourceAzureSecurityGroupRead(d *schema.ResourceData, meta interface{}) error { 72 mc := meta.(*Client).mgmtClient 73 74 sg, err := networksecuritygroup.NewClient(mc).GetNetworkSecurityGroup(d.Id()) 75 if err != nil { 76 if management.IsResourceNotFoundError(err) { 77 d.SetId("") 78 return nil 79 } 80 return fmt.Errorf("Error retrieving Network Security Group %s: %s", d.Id(), err) 81 } 82 83 d.Set("label", sg.Label) 84 d.Set("location", sg.Location) 85 86 return nil 87 } 88 89 func resourceAzureSecurityGroupDelete(d *schema.ResourceData, meta interface{}) error { 90 mc := meta.(*Client).mgmtClient 91 92 log.Printf("[DEBUG] Deleting Network Security Group: %s", d.Id()) 93 req, err := networksecuritygroup.NewClient(mc).DeleteNetworkSecurityGroup(d.Id()) 94 if err != nil { 95 return fmt.Errorf("Error deleting Network Security Group %s: %s", d.Id(), err) 96 } 97 98 // Wait until the network security group is deleted 99 if err := mc.WaitForOperation(req, nil); err != nil { 100 return fmt.Errorf( 101 "Error waiting for Network Security Group %s to be deleted: %s", d.Id(), err) 102 } 103 104 d.SetId("") 105 106 return nil 107 }