39 lines
831 B
Go
39 lines
831 B
Go
package linode
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/linode/linodego"
|
|
)
|
|
|
|
type Artifact struct {
|
|
ImageID string
|
|
ImageLabel string
|
|
|
|
Driver *linodego.Client
|
|
|
|
// StateData should store data such as GeneratedData
|
|
// to be shared with post-processors
|
|
StateData map[string]interface{}
|
|
}
|
|
|
|
func (a Artifact) BuilderId() string { return BuilderID }
|
|
func (a Artifact) Files() []string { return nil }
|
|
func (a Artifact) Id() string { return a.ImageID }
|
|
|
|
func (a Artifact) String() string {
|
|
return fmt.Sprintf("Linode image: %s (%s)", a.ImageLabel, a.ImageID)
|
|
}
|
|
|
|
func (a Artifact) State(name string) interface{} {
|
|
return a.StateData[name]
|
|
}
|
|
|
|
func (a Artifact) Destroy() error {
|
|
log.Printf("Destroying image: %s (%s)", a.ImageID, a.ImageLabel)
|
|
err := a.Driver.DeleteImage(context.TODO(), a.ImageID)
|
|
return err
|
|
}
|