github.com/sarguru/terraform@v0.6.17-0.20160525232901-8fcdfd7e3dc9/builtin/providers/nsone/resource_datasource.go (about)

     1  package nsone
     2  
     3  import (
     4  	"github.com/bobtfish/go-nsone-api"
     5  	"github.com/hashicorp/terraform/helper/schema"
     6  )
     7  
     8  func dataSourceResource() *schema.Resource {
     9  	return &schema.Resource{
    10  		Schema: map[string]*schema.Schema{
    11  			"id": &schema.Schema{
    12  				Type:     schema.TypeString,
    13  				Computed: true,
    14  			},
    15  			"name": &schema.Schema{
    16  				Type:     schema.TypeString,
    17  				Required: true,
    18  			},
    19  			"sourcetype": &schema.Schema{
    20  				Type:     schema.TypeString,
    21  				Required: true,
    22  				ForceNew: true,
    23  			},
    24  		},
    25  		Create: DataSourceCreate,
    26  		Read:   DataSourceRead,
    27  		Update: DataSourceUpdate,
    28  		Delete: DataSourceDelete,
    29  	}
    30  }
    31  
    32  func dataSourceToResourceData(d *schema.ResourceData, ds *nsone.DataSource) {
    33  	d.SetId(ds.Id)
    34  	d.Set("name", ds.Name)
    35  	d.Set("sourcetype", ds.SourceType)
    36  }
    37  
    38  // DataSourceCreate creates an ns1 datasource
    39  func DataSourceCreate(d *schema.ResourceData, meta interface{}) error {
    40  	client := meta.(*nsone.APIClient)
    41  	ds := nsone.NewDataSource(d.Get("name").(string), d.Get("sourcetype").(string))
    42  	if err := client.CreateDataSource(ds); err != nil {
    43  		return err
    44  	}
    45  	dataSourceToResourceData(d, ds)
    46  	return nil
    47  }
    48  
    49  // DataSourceRead fetches info for the given datasource from ns1
    50  func DataSourceRead(d *schema.ResourceData, meta interface{}) error {
    51  	client := meta.(*nsone.APIClient)
    52  	ds, err := client.GetDataSource(d.Id())
    53  	if err != nil {
    54  		return err
    55  	}
    56  	dataSourceToResourceData(d, ds)
    57  	return nil
    58  }
    59  
    60  // DataSourceDelete deteltes the given datasource from ns1
    61  func DataSourceDelete(d *schema.ResourceData, meta interface{}) error {
    62  	client := meta.(*nsone.APIClient)
    63  	err := client.DeleteDataSource(d.Id())
    64  	d.SetId("")
    65  	return err
    66  }
    67  
    68  // DataSourceUpdate updates the datasource with given parameters
    69  func DataSourceUpdate(d *schema.ResourceData, meta interface{}) error {
    70  	client := meta.(*nsone.APIClient)
    71  	ds := nsone.NewDataSource(d.Get("name").(string), d.Get("sourcetype").(string))
    72  	ds.Id = d.Id()
    73  	if err := client.UpdateDataSource(ds); err != nil {
    74  		return err
    75  	}
    76  	dataSourceToResourceData(d, ds)
    77  	return nil
    78  }