github.com/sarguru/terraform@v0.6.17-0.20160525232901-8fcdfd7e3dc9/builtin/providers/nsone/resource_datafeed.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 dataFeedResource() *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  			"source_id": &schema.Schema{
    16  				Type:     schema.TypeString,
    17  				Required: true,
    18  				ForceNew: true,
    19  			},
    20  			"name": &schema.Schema{
    21  				Type:     schema.TypeString,
    22  				Required: true,
    23  			},
    24  			"config": &schema.Schema{
    25  				Type:     schema.TypeMap,
    26  				Optional: true,
    27  			},
    28  		},
    29  		Create: DataFeedCreate,
    30  		Read:   DataFeedRead,
    31  		Update: DataFeedUpdate,
    32  		Delete: DataFeedDelete,
    33  	}
    34  }
    35  
    36  func dataFeedToResourceData(d *schema.ResourceData, df *nsone.DataFeed) {
    37  	d.SetId(df.Id)
    38  	d.Set("name", df.Name)
    39  	d.Set("config", df.Config)
    40  }
    41  
    42  func resourceDataToDataFeed(d *schema.ResourceData) *nsone.DataFeed {
    43  	df := nsone.NewDataFeed(d.Get("source_id").(string))
    44  	df.Name = d.Get("name").(string)
    45  	config := make(map[string]string)
    46  	for k, v := range d.Get("config").(map[string]interface{}) {
    47  		config[k] = v.(string)
    48  	}
    49  	df.Config = config
    50  	return df
    51  }
    52  
    53  // DataFeedCreate creates an ns1 datafeed
    54  func DataFeedCreate(d *schema.ResourceData, meta interface{}) error {
    55  	client := meta.(*nsone.APIClient)
    56  	df := resourceDataToDataFeed(d)
    57  	if err := client.CreateDataFeed(df); err != nil {
    58  		return err
    59  	}
    60  	dataFeedToResourceData(d, df)
    61  	return nil
    62  }
    63  
    64  // DataFeedRead reads the datafeed for the given ID from ns1
    65  func DataFeedRead(d *schema.ResourceData, meta interface{}) error {
    66  	client := meta.(*nsone.APIClient)
    67  	df, err := client.GetDataFeed(d.Get("source_id").(string), d.Id())
    68  	if err != nil {
    69  		return err
    70  	}
    71  	dataFeedToResourceData(d, df)
    72  	return nil
    73  }
    74  
    75  // DataFeedDelete delets the given datafeed from ns1
    76  func DataFeedDelete(d *schema.ResourceData, meta interface{}) error {
    77  	client := meta.(*nsone.APIClient)
    78  	err := client.DeleteDataFeed(d.Get("source_id").(string), d.Id())
    79  	d.SetId("")
    80  	return err
    81  }
    82  
    83  // DataFeedUpdate updates the given datafeed with modified parameters
    84  func DataFeedUpdate(d *schema.ResourceData, meta interface{}) error {
    85  	client := meta.(*nsone.APIClient)
    86  	df := resourceDataToDataFeed(d)
    87  	df.Id = d.Id()
    88  	if err := client.UpdateDataFeed(df); err != nil {
    89  		return err
    90  	}
    91  	dataFeedToResourceData(d, df)
    92  	return nil
    93  }