github.com/keshavdv/terraform@v0.7.0-rc2.0.20160711232630-d69256dcb425/builtin/providers/test/resource.go (about) 1 package test 2 3 import ( 4 "fmt" 5 6 "github.com/hashicorp/terraform/helper/schema" 7 ) 8 9 func testResource() *schema.Resource { 10 return &schema.Resource{ 11 Create: testResourceCreate, 12 Read: testResourceRead, 13 Update: testResourceUpdate, 14 Delete: testResourceDelete, 15 Schema: map[string]*schema.Schema{ 16 "required": { 17 Type: schema.TypeString, 18 Required: true, 19 }, 20 "optional": { 21 Type: schema.TypeString, 22 Optional: true, 23 }, 24 "optional_bool": { 25 Type: schema.TypeBool, 26 Optional: true, 27 }, 28 "optional_force_new": { 29 Type: schema.TypeString, 30 Optional: true, 31 ForceNew: true, 32 }, 33 "optional_computed_map": { 34 Type: schema.TypeMap, 35 Optional: true, 36 Computed: true, 37 }, 38 "computed_read_only": { 39 Type: schema.TypeString, 40 Computed: true, 41 ForceNew: true, 42 }, 43 "computed_read_only_force_new": { 44 Type: schema.TypeString, 45 Computed: true, 46 ForceNew: true, 47 }, 48 "computed_list": { 49 Type: schema.TypeList, 50 Computed: true, 51 Elem: &schema.Schema{ 52 Type: schema.TypeString, 53 }, 54 }, 55 "set": { 56 Type: schema.TypeSet, 57 Optional: true, 58 Elem: &schema.Schema{ 59 Type: schema.TypeString, 60 }, 61 Set: schema.HashString, 62 }, 63 "computed_set": { 64 Type: schema.TypeSet, 65 Computed: true, 66 Elem: &schema.Schema{ 67 Type: schema.TypeString, 68 }, 69 Set: schema.HashString, 70 }, 71 "map": { 72 Type: schema.TypeMap, 73 Optional: true, 74 }, 75 "optional_map": { 76 Type: schema.TypeMap, 77 Optional: true, 78 }, 79 "required_map": { 80 Type: schema.TypeMap, 81 Required: true, 82 }, 83 "map_that_look_like_set": { 84 Type: schema.TypeMap, 85 Optional: true, 86 Elem: &schema.Schema{ 87 Type: schema.TypeString, 88 }, 89 }, 90 "computed_map": { 91 Type: schema.TypeMap, 92 Computed: true, 93 }, 94 "list_of_map": { 95 Type: schema.TypeList, 96 Optional: true, 97 Elem: &schema.Schema{ 98 Type: schema.TypeMap, 99 Elem: &schema.Schema{ 100 Type: schema.TypeString, 101 }, 102 }, 103 }, 104 }, 105 } 106 } 107 108 func testResourceCreate(d *schema.ResourceData, meta interface{}) error { 109 d.SetId("testId") 110 111 // Required must make it through to Create 112 if _, ok := d.GetOk("required"); !ok { 113 return fmt.Errorf("Missing attribute 'required', but it's required!") 114 } 115 if _, ok := d.GetOk("required_map"); !ok { 116 return fmt.Errorf("Missing attribute 'required_map', but it's required!") 117 } 118 119 return testResourceRead(d, meta) 120 } 121 122 func testResourceRead(d *schema.ResourceData, meta interface{}) error { 123 d.Set("computed_read_only", "value_from_api") 124 d.Set("computed_read_only_force_new", "value_from_api") 125 if _, ok := d.GetOk("optional_computed_map"); !ok { 126 d.Set("optional_computed_map", map[string]string{}) 127 } 128 d.Set("computed_map", map[string]string{"key1": "value1"}) 129 d.Set("computed_list", []string{"listval1", "listval2"}) 130 d.Set("computed_set", []string{"setval1", "setval2"}) 131 return nil 132 } 133 134 func testResourceUpdate(d *schema.ResourceData, meta interface{}) error { 135 return nil 136 } 137 138 func testResourceDelete(d *schema.ResourceData, meta interface{}) error { 139 d.SetId("") 140 return nil 141 }