package digitalocean import ( "context" "fmt" "log" "strconv" "strings" "github.com/digitalocean/godo" ) type Artifact struct { // The name of the snapshot snapshotName string // The ID of the image snapshotId int // The name of the region regionNames []string // The client for making API calls client *godo.Client } func (*Artifact) BuilderId() string { return BuilderId } func (*Artifact) Files() []string { // No files with DigitalOcean return nil } func (a *Artifact) Id() string { return fmt.Sprintf("%s:%s", strings.Join(a.regionNames[:], ","), strconv.FormatUint(uint64(a.snapshotId), 10)) } func (a *Artifact) String() string { return fmt.Sprintf("A snapshot was created: '%v' (ID: %v) in regions '%v'", a.snapshotName, a.snapshotId, strings.Join(a.regionNames[:], ",")) } func (a *Artifact) State(name string) interface{} { return nil } func (a *Artifact) Destroy() error { log.Printf("Destroying image: %d (%s)", a.snapshotId, a.snapshotName) _, err := a.client.Images.Delete(context.TODO(), a.snapshotId) return err }