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 }