github.com/nathanielks/terraform@v0.6.1-0.20170509030759-13e1a62319dc/builtin/providers/heroku/resource_heroku_pipeline.go (about) 1 package heroku 2 3 import ( 4 "context" 5 "fmt" 6 "log" 7 8 "github.com/cyberdelia/heroku-go/v3" 9 "github.com/hashicorp/terraform/helper/schema" 10 ) 11 12 func resourceHerokuPipeline() *schema.Resource { 13 return &schema.Resource{ 14 Create: resourceHerokuPipelineCreate, 15 Update: resourceHerokuPipelineUpdate, 16 Read: resourceHerokuPipelineRead, 17 Delete: resourceHerokuPipelineDelete, 18 19 Schema: map[string]*schema.Schema{ 20 "name": { 21 Type: schema.TypeString, 22 Required: true, 23 }, 24 }, 25 } 26 } 27 28 func resourceHerokuPipelineCreate(d *schema.ResourceData, meta interface{}) error { 29 client := meta.(*heroku.Service) 30 31 opts := heroku.PipelineCreateOpts{ 32 Name: d.Get("name").(string), 33 } 34 35 log.Printf("[DEBUG] Pipeline create configuration: %#v", opts) 36 37 p, err := client.PipelineCreate(context.TODO(), opts) 38 if err != nil { 39 return fmt.Errorf("Error creating pipeline: %s", err) 40 } 41 42 d.SetId(p.ID) 43 d.Set("name", p.Name) 44 45 log.Printf("[INFO] Pipeline ID: %s", d.Id()) 46 47 return resourceHerokuPipelineUpdate(d, meta) 48 } 49 50 func resourceHerokuPipelineUpdate(d *schema.ResourceData, meta interface{}) error { 51 client := meta.(*heroku.Service) 52 53 if d.HasChange("name") { 54 name := d.Get("name").(string) 55 opts := heroku.PipelineUpdateOpts{ 56 Name: &name, 57 } 58 59 _, err := client.PipelineUpdate(context.TODO(), d.Id(), opts) 60 if err != nil { 61 return err 62 } 63 } 64 65 return resourceHerokuPipelineRead(d, meta) 66 } 67 68 func resourceHerokuPipelineDelete(d *schema.ResourceData, meta interface{}) error { 69 client := meta.(*heroku.Service) 70 71 log.Printf("[INFO] Deleting pipeline: %s", d.Id()) 72 73 _, err := client.PipelineDelete(context.TODO(), d.Id()) 74 if err != nil { 75 return fmt.Errorf("Error deleting pipeline: %s", err) 76 } 77 78 return nil 79 } 80 81 func resourceHerokuPipelineRead(d *schema.ResourceData, meta interface{}) error { 82 client := meta.(*heroku.Service) 83 84 p, err := client.PipelineInfo(context.TODO(), d.Id()) 85 if err != nil { 86 return fmt.Errorf("Error retrieving pipeline: %s", err) 87 } 88 89 d.Set("name", p.Name) 90 91 return nil 92 }