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 }