57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package googlecompute
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
)
|
|
|
|
// Artifact represents a GCE image as the result of a Packer build.
|
|
type Artifact struct {
|
|
image Image
|
|
driver Driver
|
|
config *Config
|
|
}
|
|
|
|
// BuilderId returns the builder Id.
|
|
func (*Artifact) BuilderId() string {
|
|
return BuilderId
|
|
}
|
|
|
|
// Destroy destroys the GCE image represented by the artifact.
|
|
func (a *Artifact) Destroy() error {
|
|
log.Printf("Destroying image: %s", a.image.Name)
|
|
errCh := a.driver.DeleteImage(a.image.Name)
|
|
return <-errCh
|
|
}
|
|
|
|
// Files returns the files represented by the artifact.
|
|
func (*Artifact) Files() []string {
|
|
return nil
|
|
}
|
|
|
|
// Id returns the GCE image name.
|
|
func (a *Artifact) Id() string {
|
|
return a.image.Name
|
|
}
|
|
|
|
// String returns the string representation of the artifact.
|
|
func (a *Artifact) String() string {
|
|
return fmt.Sprintf("A disk image was created: %v", a.image.Name)
|
|
}
|
|
|
|
func (a *Artifact) State(name string) interface{} {
|
|
switch name {
|
|
case "ImageName":
|
|
return a.image.Name
|
|
case "ImageSizeGb":
|
|
return a.image.SizeGb
|
|
case "AccountFilePath":
|
|
return a.config.AccountFile
|
|
case "ProjectId":
|
|
return a.config.ProjectId
|
|
case "BuildZone":
|
|
return a.config.Zone
|
|
}
|
|
return nil
|
|
}
|