From bbd71136dc7a980a692dab38595b78da236221b8 Mon Sep 17 00:00:00 2001 From: psinghal20 Date: Wed, 21 Aug 2019 15:45:46 +0530 Subject: [PATCH] fix: move adding metadata step after waiting for uploading step Signed-off-by: psinghal20 --- builder/openstack/step_create_image.go | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/builder/openstack/step_create_image.go b/builder/openstack/step_create_image.go index 27dce4a1b..1899d4d3f 100644 --- a/builder/openstack/step_create_image.go +++ b/builder/openstack/step_create_image.go @@ -45,6 +45,7 @@ func (s *stepCreateImage) Run(ctx context.Context, state multistep.StateBag) mul // Block Storage service volume or regular Compute service local volume. ui.Say(fmt.Sprintf("Creating the image: %s", config.ImageName)) var imageId string + var blockStorageClient *gophercloud.ServiceClient if s.UseBlockStorageVolume { // We need the v3 block storage client. blockStorageClient, err := config.blockStorageV3Client() @@ -64,15 +65,6 @@ func (s *stepCreateImage) Run(ctx context.Context, state multistep.StateBag) mul ui.Error(err.Error()) return multistep.ActionHalt } - err = volumeactions.SetImageMetadata(blockStorageClient, volume, volumeactions.ImageMetadataOpts{ - Metadata: config.ImageMetadata, - }).ExtractErr() - if err != nil { - err := fmt.Errorf("Error setting image metadata: %s", err) - state.Put("error", err) - ui.Error(err.Error()) - return multistep.ActionHalt - } imageId = image.ImageID } else { imageId, err = servers.CreateImage(computeClient, server.ID, servers.CreateImageOpts{ @@ -100,6 +92,19 @@ func (s *stepCreateImage) Run(ctx context.Context, state multistep.StateBag) mul return multistep.ActionHalt } + volume := state.Get("volume_id").(string) + if len(config.ImageMetadata) > 0 && s.UseBlockStorageVolume { + err = volumeactions.SetImageMetadata(blockStorageClient, volume, volumeactions.ImageMetadataOpts{ + Metadata: config.ImageMetadata, + }).ExtractErr() + if err != nil { + err := fmt.Errorf("Error setting image metadata: %s", err) + state.Put("error", err) + ui.Error(err.Error()) + return multistep.ActionHalt + } + } + return multistep.ActionContinue }