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