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