github.com/andresvia/terraform@v0.6.15-0.20160412045437-d51c75946785/builtin/providers/triton/resource_firewall_rule.go (about) 1 package triton 2 3 import ( 4 "github.com/hashicorp/terraform/helper/schema" 5 "github.com/joyent/gosdc/cloudapi" 6 ) 7 8 func resourceFirewallRule() *schema.Resource { 9 return &schema.Resource{ 10 Create: resourceFirewallRuleCreate, 11 Exists: resourceFirewallRuleExists, 12 Read: resourceFirewallRuleRead, 13 Update: resourceFirewallRuleUpdate, 14 Delete: resourceFirewallRuleDelete, 15 16 Schema: map[string]*schema.Schema{ 17 "rule": { 18 Description: "firewall rule text", 19 Type: schema.TypeString, 20 Required: true, 21 }, 22 "enabled": { 23 Description: "Indicates if the rule is enabled", 24 Type: schema.TypeBool, 25 Optional: true, 26 Default: false, 27 }, 28 }, 29 } 30 } 31 32 func resourceFirewallRuleCreate(d *schema.ResourceData, meta interface{}) error { 33 client := meta.(*cloudapi.Client) 34 35 rule, err := client.CreateFirewallRule(cloudapi.CreateFwRuleOpts{ 36 Rule: d.Get("rule").(string), 37 Enabled: d.Get("enabled").(bool), 38 }) 39 if err != nil { 40 return err 41 } 42 43 d.SetId(rule.Id) 44 45 err = resourceFirewallRuleRead(d, meta) 46 if err != nil { 47 return err 48 } 49 50 return nil 51 } 52 53 func resourceFirewallRuleExists(d *schema.ResourceData, meta interface{}) (bool, error) { 54 client := meta.(*cloudapi.Client) 55 56 rule, err := client.GetFirewallRule(d.Id()) 57 58 return rule != nil && err == nil, err 59 } 60 61 func resourceFirewallRuleRead(d *schema.ResourceData, meta interface{}) error { 62 client := meta.(*cloudapi.Client) 63 64 rule, err := client.GetFirewallRule(d.Id()) 65 if err != nil { 66 return err 67 } 68 69 d.SetId(rule.Id) 70 d.Set("rule", rule.Rule) 71 d.Set("enabled", rule.Enabled) 72 73 return nil 74 } 75 76 func resourceFirewallRuleUpdate(d *schema.ResourceData, meta interface{}) error { 77 client := meta.(*cloudapi.Client) 78 79 _, err := client.UpdateFirewallRule( 80 d.Id(), 81 cloudapi.CreateFwRuleOpts{ 82 Rule: d.Get("rule").(string), 83 Enabled: d.Get("enabled").(bool), 84 }, 85 ) 86 if err != nil { 87 return err 88 } 89 90 return resourceFirewallRuleRead(d, meta) 91 } 92 93 func resourceFirewallRuleDelete(d *schema.ResourceData, meta interface{}) error { 94 client := meta.(*cloudapi.Client) 95 96 if err := client.DeleteFirewallRule(d.Id()); err != nil { 97 return err 98 } 99 100 return nil 101 }