feature: add step check root device step in chrrot builder
This commit is contained in:
parent
bc907f0fd0
commit
66cf27fe31
|
@ -225,6 +225,19 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
|
||||||
&StepVmInfo{},
|
&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!
|
// Run!
|
||||||
b.runner = common.NewRunner(steps, b.config.PackerConfig, ui)
|
b.runner = common.NewRunner(steps, b.config.PackerConfig, ui)
|
||||||
b.runner.Run(state)
|
b.runner.Run(state)
|
||||||
|
|
|
@ -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) {}
|
Loading…
Reference in New Issue