feature: add step check root device step in chrrot builder

This commit is contained in:
Marin Salinas 2019-02-22 09:50:46 -06:00 committed by Megan Marsh
parent bc907f0fd0
commit 66cf27fe31
2 changed files with 45 additions and 0 deletions

View File

@ -225,6 +225,19 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
&StepVmInfo{},
}
if !b.config.FromScratch {
steps = append(steps,
&osccommon.StepSourceOMIInfo{
SourceOmi: b.config.SourceOMI,
EnableOMISriovNetSupport: b.config.OMISriovNetSupport,
EnableOMIENASupport: b.config.OMIENASupport,
OmiFilters: b.config.SourceOMIFilter,
OMIVirtType: b.config.OMIVirtType,
},
&StepCheckRootDevice{},
)
}
// Run!
b.runner = common.NewRunner(steps, b.config.PackerConfig, ui)
b.runner.Run(state)

View File

@ -0,0 +1,32 @@
package chroot
import (
"context"
"fmt"
"github.com/hashicorp/packer/helper/multistep"
"github.com/hashicorp/packer/packer"
"github.com/outscale/osc-go/oapi"
)
// StepCheckRootDevice makes sure the root device on the AMI is EBS-backed.
type StepCheckRootDevice struct{}
func (s *StepCheckRootDevice) Run(_ context.Context, state multistep.StateBag) multistep.StepAction {
image := state.Get("source_image").(oapi.Image)
ui := state.Get("ui").(packer.Ui)
ui.Say("Checking the root device on source AMI...")
// It must be EBS-backed otherwise the build won't work
if image.RootDeviceType != "ebs" {
err := fmt.Errorf("The root device of the source AMI must be EBS-backed.")
state.Put("error", err)
ui.Error(err.Error())
return multistep.ActionHalt
}
return multistep.ActionContinue
}
func (s *StepCheckRootDevice) Cleanup(multistep.StateBag) {}