github.com/anfernee/terraform@v0.6.16-0.20160430000239-06e5085a92f2/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": &schema.Schema{ 17 Type: schema.TypeString, 18 Required: true, 19 }, 20 "optional": &schema.Schema{ 21 Type: schema.TypeString, 22 Optional: true, 23 }, 24 "optional_force_new": &schema.Schema{ 25 Type: schema.TypeString, 26 Optional: true, 27 ForceNew: true, 28 }, 29 "optional_computed_map": &schema.Schema{ 30 Type: schema.TypeMap, 31 Optional: true, 32 Computed: true, 33 }, 34 "computed_read_only": &schema.Schema{ 35 Type: schema.TypeString, 36 Computed: true, 37 ForceNew: true, 38 }, 39 "computed_read_only_force_new": &schema.Schema{ 40 Type: schema.TypeString, 41 Computed: true, 42 ForceNew: true, 43 }, 44 }, 45 } 46 } 47 48 func testResourceCreate(d *schema.ResourceData, meta interface{}) error { 49 d.SetId("testId") 50 51 // Required must make it through to Create 52 if _, ok := d.GetOk("required"); !ok { 53 return fmt.Errorf("Missing attribute 'required', but it's required!") 54 } 55 return testResourceRead(d, meta) 56 } 57 58 func testResourceRead(d *schema.ResourceData, meta interface{}) error { 59 d.Set("computed_read_only", "value_from_api") 60 d.Set("computed_read_only_force_new", "value_from_api") 61 if _, ok := d.GetOk("optional_computed_map"); !ok { 62 d.Set("optional_computed_map", map[string]string{}) 63 } 64 return nil 65 } 66 67 func testResourceUpdate(d *schema.ResourceData, meta interface{}) error { 68 return nil 69 } 70 71 func testResourceDelete(d *schema.ResourceData, meta interface{}) error { 72 return nil 73 }