github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/opc/resource_sec_rule.go (about) 1 package opc 2 3 import ( 4 "fmt" 5 6 "github.com/hashicorp/go-oracle-terraform/compute" 7 "github.com/hashicorp/terraform/helper/schema" 8 ) 9 10 func resourceOPCSecRule() *schema.Resource { 11 return &schema.Resource{ 12 Create: resourceOPCSecRuleCreate, 13 Read: resourceOPCSecRuleRead, 14 Update: resourceOPCSecRuleUpdate, 15 Delete: resourceOPCSecRuleDelete, 16 Importer: &schema.ResourceImporter{ 17 State: schema.ImportStatePassthrough, 18 }, 19 20 Schema: map[string]*schema.Schema{ 21 "name": { 22 Type: schema.TypeString, 23 Required: true, 24 ForceNew: true, 25 }, 26 "description": { 27 Type: schema.TypeString, 28 Optional: true, 29 }, 30 "source_list": { 31 Type: schema.TypeString, 32 Required: true, 33 ForceNew: true, 34 }, 35 "destination_list": { 36 Type: schema.TypeString, 37 Required: true, 38 ForceNew: true, 39 }, 40 "application": { 41 Type: schema.TypeString, 42 Required: true, 43 ForceNew: true, 44 }, 45 "action": { 46 Type: schema.TypeString, 47 Required: true, 48 }, 49 "disabled": { 50 Type: schema.TypeBool, 51 Optional: true, 52 Default: false, 53 }, 54 }, 55 } 56 } 57 58 func resourceOPCSecRuleCreate(d *schema.ResourceData, meta interface{}) error { 59 client := meta.(*compute.Client).SecRules() 60 61 name := d.Get("name").(string) 62 sourceList := d.Get("source_list").(string) 63 destinationList := d.Get("destination_list").(string) 64 application := d.Get("application").(string) 65 action := d.Get("action").(string) 66 disabled := d.Get("disabled").(bool) 67 68 input := compute.CreateSecRuleInput{ 69 Name: name, 70 Action: action, 71 SourceList: sourceList, 72 DestinationList: destinationList, 73 Disabled: disabled, 74 Application: application, 75 } 76 desc, descOk := d.GetOk("description") 77 if descOk { 78 input.Description = desc.(string) 79 } 80 81 info, err := client.CreateSecRule(&input) 82 if err != nil { 83 return fmt.Errorf("Error creating sec rule %s: %s", name, err) 84 } 85 86 d.SetId(info.Name) 87 88 return resourceOPCSecRuleRead(d, meta) 89 } 90 91 func resourceOPCSecRuleRead(d *schema.ResourceData, meta interface{}) error { 92 client := meta.(*compute.Client).SecRules() 93 94 name := d.Id() 95 96 input := compute.GetSecRuleInput{ 97 Name: name, 98 } 99 result, err := client.GetSecRule(&input) 100 if err != nil { 101 // Sec Rule does not exist 102 if compute.WasNotFoundError(err) { 103 d.SetId("") 104 return nil 105 } 106 return fmt.Errorf("Error reading sec list %s: %s", name, err) 107 } 108 109 d.Set("name", result.Name) 110 d.Set("description", result.Description) 111 d.Set("source_list", result.SourceList) 112 d.Set("destination_list", result.DestinationList) 113 d.Set("application", result.Application) 114 d.Set("action", result.Action) 115 d.Set("disabled", result.Disabled) 116 117 return nil 118 } 119 120 func resourceOPCSecRuleUpdate(d *schema.ResourceData, meta interface{}) error { 121 client := meta.(*compute.Client).SecRules() 122 123 name := d.Get("name").(string) 124 sourceList := d.Get("source_list").(string) 125 destinationList := d.Get("destination_list").(string) 126 application := d.Get("application").(string) 127 action := d.Get("action").(string) 128 disabled := d.Get("disabled").(bool) 129 130 input := compute.UpdateSecRuleInput{ 131 Action: action, 132 Application: application, 133 DestinationList: destinationList, 134 Disabled: disabled, 135 Name: name, 136 SourceList: sourceList, 137 } 138 desc, descOk := d.GetOk("description") 139 if descOk { 140 input.Description = desc.(string) 141 } 142 143 _, err := client.UpdateSecRule(&input) 144 if err != nil { 145 return fmt.Errorf("Error updating sec rule %s: %s", name, err) 146 } 147 148 return resourceOPCSecRuleRead(d, meta) 149 } 150 151 func resourceOPCSecRuleDelete(d *schema.ResourceData, meta interface{}) error { 152 client := meta.(*compute.Client).SecRules() 153 name := d.Id() 154 155 input := compute.DeleteSecRuleInput{ 156 Name: name, 157 } 158 if err := client.DeleteSecRule(&input); err != nil { 159 return fmt.Errorf("Error deleting sec rule %s: %s", name, err) 160 } 161 162 return nil 163 }