github.phpd.cn/hashicorp/packer@v1.3.2/builder/openstack/step_update_image_visibility.go (about) 1 package openstack 2 3 import ( 4 "context" 5 "fmt" 6 7 imageservice "github.com/gophercloud/gophercloud/openstack/imageservice/v2/images" 8 "github.com/hashicorp/packer/helper/multistep" 9 "github.com/hashicorp/packer/packer" 10 ) 11 12 type stepUpdateImageVisibility struct{} 13 14 func (s *stepUpdateImageVisibility) Run(_ context.Context, state multistep.StateBag) multistep.StepAction { 15 imageId := state.Get("image").(string) 16 ui := state.Get("ui").(packer.Ui) 17 config := state.Get("config").(*Config) 18 19 if config.ImageVisibility == "" { 20 return multistep.ActionContinue 21 } 22 imageClient, err := config.imageV2Client() 23 if err != nil { 24 err = fmt.Errorf("Error initializing image service client: %s", err) 25 state.Put("error", err) 26 return multistep.ActionHalt 27 } 28 29 ui.Say(fmt.Sprintf("Updating image visibility to %s", config.ImageVisibility)) 30 r := imageservice.Update( 31 imageClient, 32 imageId, 33 imageservice.UpdateOpts{ 34 imageservice.UpdateVisibility{ 35 Visibility: config.ImageVisibility, 36 }, 37 }, 38 ) 39 40 if _, err = r.Extract(); err != nil { 41 err = fmt.Errorf("Error updating image visibility: %s", err) 42 state.Put("error", err) 43 return multistep.ActionHalt 44 } 45 46 return multistep.ActionContinue 47 } 48 49 func (s *stepUpdateImageVisibility) Cleanup(multistep.StateBag) { 50 // No cleanup... 51 }