Merge pull request #7691 from hashicorp/fix_7689

the build ami is made with an intermediary name, which means that we …
This commit is contained in:
Adrien Delorme 2019-05-31 10:59:10 +02:00 committed by GitHub
commit fd3f20a911
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 29 deletions

View File

@ -31,17 +31,18 @@ func (s *StepAMIRegionCopy) Run(ctx context.Context, state multistep.StateBag) m
snapshots := state.Get("snapshots").(map[string][]string)
ami := amis[s.OriginalRegion]
// Always copy back into original region to preserve the ami name
s.toDelete = ami
s.Regions = append(s.Regions, s.OriginalRegion)
if s.EncryptBootVolume != nil && *s.EncryptBootVolume {
// encrypt_boot is true, so we have to copy the temporary
// AMI with required encryption setting.
// temp image was created by stepCreateAMI.
s.Regions = append(s.Regions, s.OriginalRegion)
if s.RegionKeyIds == nil {
s.RegionKeyIds = make(map[string]string)
}
s.RegionKeyIds[s.OriginalRegion] = s.AMIKmsKeyId
s.toDelete = ami
}
if len(s.Regions) == 0 {
@ -57,20 +58,7 @@ func (s *StepAMIRegionCopy) Run(ctx context.Context, state multistep.StateBag) m
wg.Add(len(s.Regions))
for _, region := range s.Regions {
if region == s.OriginalRegion {
if s.EncryptBootVolume == nil || *s.EncryptBootVolume == false {
ui.Message(fmt.Sprintf(
"Avoiding copying AMI to duplicate region %s", region))
wg.Done()
continue
} else {
// encryption is true and we're in the original region
ui.Message(fmt.Sprintf("Creating encrypted copy in build region: %s", region))
}
} else {
// in non-build region
ui.Message(fmt.Sprintf("Copying to: %s", region))
}
ui.Message(fmt.Sprintf("Copying to: %s", region))
if s.EncryptBootVolume != nil && *s.EncryptBootVolume {
regKeyID = s.RegionKeyIds[region]
@ -108,11 +96,6 @@ func (s *StepAMIRegionCopy) Cleanup(state multistep.StateBag) {
ec2conn := state.Get("ec2").(*ec2.EC2)
ui := state.Get("ui").(packer.Ui)
// cleanup is only for encrypted copies.
if s.EncryptBootVolume == nil || !*s.EncryptBootVolume {
return
}
// Delete the unencrypted amis and snapshots
ui.Say("Deregistering the AMI and deleting unencrypted temporary " +
"AMIs and snapshots")

View File

@ -101,11 +101,11 @@ func TestStepAmiRegionCopy_nil_encryption(t *testing.T) {
state := tState()
stepAMIRegionCopy.Run(context.Background(), state)
if stepAMIRegionCopy.toDelete != "" {
t.Fatalf("Shouldn't delete original AMI if not encrypted")
if stepAMIRegionCopy.toDelete != "ami-12345" {
t.Fatalf("Should delete original intermediary ami even if not encrypted")
}
if len(stepAMIRegionCopy.Regions) > 0 {
t.Fatalf("Shouldn't have added original ami to original region")
if len(stepAMIRegionCopy.Regions) == 0 {
t.Fatalf("Should have added original ami to original region")
}
}
@ -126,11 +126,11 @@ func TestStepAmiRegionCopy_false_encryption(t *testing.T) {
state := tState()
stepAMIRegionCopy.Run(context.Background(), state)
if stepAMIRegionCopy.toDelete != "" {
t.Fatalf("Shouldn't delete original AMI if not encrypted")
if stepAMIRegionCopy.toDelete != "ami-12345" {
t.Fatalf("should be deleting the original intermediary ami")
}
if len(stepAMIRegionCopy.Regions) > 0 {
t.Fatalf("Shouldn't have added original ami to Regions")
if len(stepAMIRegionCopy.Regions) == 0 {
t.Fatalf("Should have added original ami to Regions")
}
}