github.com/StackPointCloud/packer@v0.10.2-0.20180716202532-b28098e0f79b/builder/alicloud/ecs/step_check_source_image.go (about) 1 package ecs 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/denverdino/aliyungo/common" 8 "github.com/denverdino/aliyungo/ecs" 9 "github.com/hashicorp/packer/helper/multistep" 10 "github.com/hashicorp/packer/packer" 11 ) 12 13 type stepCheckAlicloudSourceImage struct { 14 SourceECSImageId string 15 } 16 17 func (s *stepCheckAlicloudSourceImage) Run(_ context.Context, state multistep.StateBag) multistep.StepAction { 18 client := state.Get("client").(*ecs.Client) 19 config := state.Get("config").(Config) 20 ui := state.Get("ui").(packer.Ui) 21 images, _, err := client.DescribeImages(&ecs.DescribeImagesArgs{RegionId: common.Region(config.AlicloudRegion), 22 ImageId: config.AlicloudSourceImage}) 23 if err != nil { 24 err := fmt.Errorf("Error querying alicloud image: %s", err) 25 state.Put("error", err) 26 ui.Error(err.Error()) 27 return multistep.ActionHalt 28 } 29 30 if len(images) == 0 { 31 err := fmt.Errorf("No alicloud image was found matching filters: %v", config.AlicloudSourceImage) 32 state.Put("error", err) 33 ui.Error(err.Error()) 34 return multistep.ActionHalt 35 } 36 37 ui.Message(fmt.Sprintf("Found image ID: %s", images[0].ImageId)) 38 39 state.Put("source_image", &images[0]) 40 return multistep.ActionContinue 41 } 42 43 func (s *stepCheckAlicloudSourceImage) Cleanup(multistep.StateBag) {}