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  }