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) {}