builder/amazonebs: interpolate create time into AMI name

This commit is contained in:
Mitchell Hashimoto 2013-06-04 12:52:52 -07:00
parent 04a4d91431
commit a436b91330
1 changed files with 19 additions and 2 deletions

View File

@ -1,25 +1,42 @@
package amazonebs package amazonebs
import ( import (
"bytes"
"fmt" "fmt"
"github.com/mitchellh/goamz/ec2" "github.com/mitchellh/goamz/ec2"
"github.com/mitchellh/multistep" "github.com/mitchellh/multistep"
"github.com/mitchellh/packer/packer" "github.com/mitchellh/packer/packer"
"text/template"
"time"
) )
type stepCreateAMI struct{} type stepCreateAMI struct{}
type amiNameData struct {
CreateTime string
}
func (s *stepCreateAMI) Run(state map[string]interface{}) multistep.StepAction { func (s *stepCreateAMI) Run(state map[string]interface{}) multistep.StepAction {
config := state["config"].(config) config := state["config"].(config)
ec2conn := state["ec2"].(*ec2.EC2) ec2conn := state["ec2"].(*ec2.EC2)
instance := state["instance"].(*ec2.Instance) instance := state["instance"].(*ec2.Instance)
ui := state["ui"].(packer.Ui) ui := state["ui"].(packer.Ui)
// Parse the name of the AMI
amiNameBuf := new(bytes.Buffer)
tData := amiNameData{
time.Now().UTC().String(),
}
t := template.Must(template.New("ami").Parse(config.AMIName))
t.Execute(amiNameBuf, tData)
amiName := amiNameBuf.String()
// Create the image // Create the image
ui.Say("Creating the AMI...") ui.Say(fmt.Sprintf("Creating the AMI: %s", amiName))
createOpts := &ec2.CreateImage{ createOpts := &ec2.CreateImage{
InstanceId: instance.InstanceId, InstanceId: instance.InstanceId,
Name: config.AMIName, Name: amiName,
} }
createResp, err := ec2conn.CreateImage(createOpts) createResp, err := ec2conn.CreateImage(createOpts)