github.com/rstandt/terraform@v0.12.32-0.20230710220336-b1063613405c/builtin/providers/test/resource_config_mode.go (about) 1 package test 2 3 import ( 4 "fmt" 5 6 "github.com/hashicorp/terraform/helper/schema" 7 ) 8 9 func testResourceConfigMode() *schema.Resource { 10 return &schema.Resource{ 11 Create: testResourceConfigModeCreate, 12 Read: testResourceConfigModeRead, 13 Delete: testResourceConfigModeDelete, 14 Update: testResourceConfigModeUpdate, 15 16 Schema: map[string]*schema.Schema{ 17 "resource_as_attr": { 18 Type: schema.TypeList, 19 ConfigMode: schema.SchemaConfigModeAttr, 20 Optional: true, 21 Computed: true, 22 Elem: &schema.Resource{ 23 Schema: map[string]*schema.Schema{ 24 "foo": { 25 Type: schema.TypeString, 26 Optional: true, 27 }, 28 }, 29 }, 30 }, 31 "nested_set": { 32 Type: schema.TypeSet, 33 Optional: true, 34 ConfigMode: schema.SchemaConfigModeAttr, 35 Elem: &schema.Resource{ 36 Schema: map[string]*schema.Schema{ 37 "value": { 38 Type: schema.TypeString, 39 Optional: true, 40 }, 41 "set": { 42 Type: schema.TypeSet, 43 Optional: true, 44 Elem: &schema.Schema{Type: schema.TypeString}, 45 }, 46 }, 47 }, 48 }, 49 }, 50 } 51 } 52 53 func testResourceConfigModeCreate(d *schema.ResourceData, meta interface{}) error { 54 d.SetId("placeholder") 55 return testResourceConfigModeRead(d, meta) 56 } 57 58 func testResourceConfigModeRead(d *schema.ResourceData, meta interface{}) error { 59 if l, ok := d.Get("resource_as_attr").([]interface{}); !ok { 60 return fmt.Errorf("resource_as_attr should appear as []interface{}, not %T", l) 61 } else { 62 for i, item := range l { 63 if _, ok := item.(map[string]interface{}); !ok { 64 return fmt.Errorf("resource_as_attr[%d] should appear as map[string]interface{}, not %T", i, item) 65 } 66 } 67 } 68 return nil 69 } 70 71 func testResourceConfigModeUpdate(d *schema.ResourceData, meta interface{}) error { 72 return testResourceConfigModeRead(d, meta) 73 } 74 75 func testResourceConfigModeDelete(d *schema.ResourceData, meta interface{}) error { 76 d.SetId("") 77 return nil 78 }