Added snapshots to artifacts
Increased Snapshot wait timeout
This commit is contained in:
parent
0f83ba6ee6
commit
b199ce9a22
|
@ -154,10 +154,17 @@ func (w *AWSPollingConfig) WaitUntilSnapshotDone(ctx aws.Context, conn *ec2.EC2,
|
||||||
SnapshotIds: []*string{&snapshotID},
|
SnapshotIds: []*string{&snapshotID},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
waitOpts := w.getWaiterOptions()
|
||||||
|
if len(waitOpts) == 0 {
|
||||||
|
// Bump this default to 30 minutes.
|
||||||
|
// Large snapshots can take a long time for the copy to s3
|
||||||
|
waitOpts = append(waitOpts, request.WithWaiterMaxAttempts(120))
|
||||||
|
}
|
||||||
|
|
||||||
err := conn.WaitUntilSnapshotCompletedWithContext(
|
err := conn.WaitUntilSnapshotCompletedWithContext(
|
||||||
ctx,
|
ctx,
|
||||||
&snapInput,
|
&snapInput,
|
||||||
w.getWaiterOptions()...)
|
waitOpts...)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,11 +13,15 @@ import (
|
||||||
// map of region to list of volume IDs
|
// map of region to list of volume IDs
|
||||||
type EbsVolumes map[string][]string
|
type EbsVolumes map[string][]string
|
||||||
|
|
||||||
|
// map of region to list of snapshot IDs
|
||||||
|
type EbsSnapshots map[string][]string
|
||||||
|
|
||||||
// Artifact is an artifact implementation that contains built AMIs.
|
// Artifact is an artifact implementation that contains built AMIs.
|
||||||
type Artifact struct {
|
type Artifact struct {
|
||||||
// A map of regions to EBS Volume IDs.
|
// A map of regions to EBS Volume IDs.
|
||||||
Volumes EbsVolumes
|
Volumes EbsVolumes
|
||||||
|
// A map of regions to EBS Snapshot IDs.
|
||||||
|
Snapshots EbsSnapshots
|
||||||
// BuilderId is the unique ID for the builder that created this AMI
|
// BuilderId is the unique ID for the builder that created this AMI
|
||||||
BuilderIdValue string
|
BuilderIdValue string
|
||||||
|
|
||||||
|
@ -40,13 +44,21 @@ func (*Artifact) Files() []string {
|
||||||
|
|
||||||
// returns a sorted list of region:ID pairs
|
// returns a sorted list of region:ID pairs
|
||||||
func (a *Artifact) idList() []string {
|
func (a *Artifact) idList() []string {
|
||||||
parts := make([]string, 0, len(a.Volumes))
|
|
||||||
|
parts := make([]string, 0, len(a.Volumes)+len(a.Snapshots))
|
||||||
|
|
||||||
for region, volumeIDs := range a.Volumes {
|
for region, volumeIDs := range a.Volumes {
|
||||||
for _, volumeID := range volumeIDs {
|
for _, volumeID := range volumeIDs {
|
||||||
parts = append(parts, fmt.Sprintf("%s:%s", region, volumeID))
|
parts = append(parts, fmt.Sprintf("%s:%s", region, volumeID))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for region, snapshotIDs := range a.Snapshots {
|
||||||
|
for _, snapshotID := range snapshotIDs {
|
||||||
|
parts = append(parts, fmt.Sprintf("%s:%s", region, snapshotID))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sort.Strings(parts)
|
sort.Strings(parts)
|
||||||
return parts
|
return parts
|
||||||
}
|
}
|
||||||
|
|
|
@ -337,6 +337,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook)
|
||||||
// Build the artifact and return it
|
// Build the artifact and return it
|
||||||
artifact := &Artifact{
|
artifact := &Artifact{
|
||||||
Volumes: state.Get("ebsvolumes").(EbsVolumes),
|
Volumes: state.Get("ebsvolumes").(EbsVolumes),
|
||||||
|
Snapshots: state.Get("ebssnapshots").(EbsSnapshots),
|
||||||
BuilderIdValue: BuilderId,
|
BuilderIdValue: BuilderId,
|
||||||
Conn: ec2conn,
|
Conn: ec2conn,
|
||||||
StateData: map[string]interface{}{"generated_data": state.Get("generated_data")},
|
StateData: map[string]interface{}{"generated_data": state.Get("generated_data")},
|
||||||
|
|
|
@ -144,6 +144,16 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Record all snapshots in current Region.
|
||||||
|
snapshots := make(EbsSnapshots)
|
||||||
|
for snapID := range s.SnapshotMap {
|
||||||
|
snapshots[*ec2conn.Config.Region] = append(
|
||||||
|
snapshots[*ec2conn.Config.Region],
|
||||||
|
snapID)
|
||||||
|
}
|
||||||
|
//Records artifacts
|
||||||
|
state.Put("ebssnapshots", snapshots)
|
||||||
|
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue