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