From 3540346c9ae15d6baa05353169421b717248d637 Mon Sep 17 00:00:00 2001 From: Alexander Kita Date: Tue, 1 Oct 2024 17:26:14 -0500 Subject: [PATCH] Add wait in creation for user tags --- ibm/service/power/resource_ibm_pi_capture.go | 16 ++++++++++++++++ ibm/service/power/resource_ibm_pi_instance.go | 14 ++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/ibm/service/power/resource_ibm_pi_capture.go b/ibm/service/power/resource_ibm_pi_capture.go index 962d1c8a010..c021c6a6eb2 100644 --- a/ibm/service/power/resource_ibm_pi_capture.go +++ b/ibm/service/power/resource_ibm_pi_capture.go @@ -192,6 +192,22 @@ func resourceIBMPICaptureCreate(ctx context.Context, d *schema.ResourceData, met if err != nil { return diag.FromErr(err) } + + if _, ok := d.GetOk(Arg_UserTags); ok && capturedestination != cloudStorageDestination { + imageClient := st.NewIBMPIImageClient(ctx, sess, cloudInstanceID) + imagedata, err := imageClient.Get(capturename) + if err != nil { + log.Printf("Error on get of ibm pi capture (%s) while applying pi_user_tags: %s", capturename, err) + } + if imagedata.Crn != "" { + oldList, newList := d.GetChange(Arg_UserTags) + err = flex.UpdateGlobalTagsUsingCRN(oldList, newList, meta, string(imagedata.Crn), "", UserTagType) + if err != nil { + log.Printf("Error on update of pi capture (%s) pi_user_tags during creation: %s", *imagedata.ImageID, err) + } + } + } + return resourceIBMPICaptureRead(ctx, d, meta) } diff --git a/ibm/service/power/resource_ibm_pi_instance.go b/ibm/service/power/resource_ibm_pi_instance.go index 342a84c1a59..83c1901214a 100644 --- a/ibm/service/power/resource_ibm_pi_instance.go +++ b/ibm/service/power/resource_ibm_pi_instance.go @@ -484,6 +484,20 @@ func resourceIBMPIInstanceCreate(ctx context.Context, d *schema.ResourceData, me } } } + + // If user tags are set, make sure tags are set correctly before moving on + if _, ok := d.GetOk(Arg_UserTags); ok { + oldList, newList := d.GetChange(Arg_UserTags) + for _, s := range *pvmList { + if s.Crn != "" { + err := flex.UpdateGlobalTagsUsingCRN(oldList, newList, meta, string(s.Crn), "", UserTagType) + if err != nil { + log.Printf("Error on update of pi instance (%s) pi_user_tags during creation: %s", *s.PvmInstanceID, err) + } + } + } + } + // If virtual optical device provided then update cloud initialization if vod, ok := d.GetOk(Arg_VirtualOpticalDevice); ok { for _, s := range *pvmList {