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