Skip to content

Commit d3e94ca

Browse files
committed
test
1 parent 780ffe9 commit d3e94ca

File tree

2 files changed

+49
-10
lines changed

2 files changed

+49
-10
lines changed

ibm/flex/structures.go

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2853,13 +2853,21 @@ func fetchTagsForBatch(gsClient globalsearchv2.GlobalSearchV2, crns []string, re
28532853
options.SetFields([]string{"access_tags", "tags", "service_tags", "crn"})
28542854
options.SetLimit(500)
28552855

2856+
log.Printf("[DEBUG] Fetching tags for %d CRNs", len(crns))
2857+
28562858
// Handle pagination
2859+
pageCount := 0
28572860
for {
2861+
pageCount++
2862+
log.Printf("[DEBUG] Fetching page %d", pageCount)
2863+
28582864
result, resp, err := gsClient.Search(options)
28592865
if err != nil {
2860-
return nil, fmt.Errorf("[ERROR] Error querying tags (batch size: %d): %s %s", len(crns), err, resp)
2866+
return nil, fmt.Errorf("[ERROR] Error querying tags (batch size: %d, page: %d): %s %s", len(crns), pageCount, err, resp)
28612867
}
28622868

2869+
log.Printf("[DEBUG] Page %d returned %d items", pageCount, len(result.Items))
2870+
28632871
// Process items
28642872
for _, item := range result.Items {
28652873
crnProp := item.GetProperty("crn")
@@ -2892,13 +2900,24 @@ func fetchTagsForBatch(gsClient globalsearchv2.GlobalSearchV2, crns []string, re
28922900
tagsMap[crn] = NewStringSet(ResourceIBMVPCHash, taglist)
28932901
}
28942902

2895-
// Check for pagination
2903+
// Check for pagination - break if no cursor or empty cursor
28962904
if result.SearchCursor == nil || *result.SearchCursor == "" {
2905+
log.Printf("[DEBUG] No more pages, breaking pagination loop")
2906+
break
2907+
}
2908+
2909+
// Also break if we got no items (empty page)
2910+
if len(result.Items) == 0 {
2911+
log.Printf("[DEBUG] Empty page returned, breaking pagination loop")
28972912
break
28982913
}
2914+
2915+
log.Printf("[DEBUG] Setting search cursor for next page: %s", *result.SearchCursor)
28992916
options.SetSearchCursor(*result.SearchCursor)
29002917
}
29012918

2919+
log.Printf("[DEBUG] Total tags fetched for %d CRNs across %d pages", len(tagsMap), pageCount)
2920+
29022921
return tagsMap, nil
29032922
}
29042923

ibm/service/vpc/data_source_ibm_is_images.go

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -485,19 +485,30 @@ func processImagesConcurrently(ctx context.Context, images []vpcv1.Image, meta i
485485
isStockImage := strings.HasPrefix(strings.ToLower(*image.Name), "ibm")
486486
isRemoteImage := image.Remote != nil
487487

488-
if !isStockImage && !isRemoteImage {
488+
if !isStockImage {
489489
crnsForBulkFetch = append(crnsForBulkFetch, *image.CRN)
490+
log.Printf("[DEBUG] UJJK Image %s (%s) needs tag fetch", *image.Name, *image.CRN)
491+
} else {
492+
log.Printf("[DEBUG] UJJK Image %s skipped - stock: %v, remote: %v", *image.Name, isStockImage, isRemoteImage)
490493
}
491494
}
492495

496+
log.Printf("[DEBUG] UJJK Total images needing tags: %d", len(crnsForBulkFetch))
497+
493498
// Bulk fetch all tags in one API call
494499
var bulkTags map[string]*schema.Set
495500
if len(crnsForBulkFetch) > 0 {
496501
var err error
497502
bulkTags, err = flex.GetGlobalTagsUsingCRNBulk(meta, crnsForBulkFetch, "", isImageAccessTagType)
498503
if err != nil {
499-
log.Printf("[ERROR] Bulk tag fetch failed: %s", err)
500-
bulkTags = make(map[string]*schema.Set) // Initialize empty map to avoid nil checks
504+
log.Printf("[ERROR] UJJK Bulk tag fetch failed: %s", err)
505+
bulkTags = make(map[string]*schema.Set)
506+
} else {
507+
log.Printf("[DEBUG] UJJK Bulk tags fetched successfully. Got tags for %d images", len(bulkTags))
508+
// Log what we got
509+
for crn, tags := range bulkTags {
510+
log.Printf("[DEBUG] UJJK CRN: %s has %d tags", crn, tags.Len())
511+
}
501512
}
502513
} else {
503514
bulkTags = make(map[string]*schema.Set)
@@ -511,15 +522,15 @@ func processImagesConcurrently(ctx context.Context, images []vpcv1.Image, meta i
511522
}
512523

513524
results := make(chan result, len(images))
514-
sem := make(chan struct{}, 10) // Limit to 10 concurrent goroutines
525+
sem := make(chan struct{}, 10)
515526
var wg sync.WaitGroup
516527

517528
for idx, image := range images {
518529
wg.Add(1)
519530
go func(i int, img vpcv1.Image) {
520531
defer wg.Done()
521-
sem <- struct{}{} // Acquire
522-
defer func() { <-sem }() // Release
532+
sem <- struct{}{}
533+
defer func() { <-sem }()
523534

524535
data, err := processImageWithBulkTags(ctx, img, bulkTags)
525536
results <- result{index: i, data: data, err: err}
@@ -535,7 +546,7 @@ func processImagesConcurrently(ctx context.Context, images []vpcv1.Image, meta i
535546
orderedResults := make([]map[string]interface{}, len(images))
536547
for res := range results {
537548
if res.err != nil {
538-
log.Printf("[WARN] Error processing image at index %d: %s", res.index, res.err)
549+
log.Printf("[WARN] UJJK Error processing image at index %d: %s", res.index, res.err)
539550
continue
540551
}
541552
orderedResults[res.index] = res.data
@@ -549,6 +560,8 @@ func processImagesConcurrently(ctx context.Context, images []vpcv1.Image, meta i
549560
}
550561
}
551562

563+
log.Printf("[DEBUG] UJJK Final processed images: %d", len(imagesInfo))
564+
552565
return imagesInfo, nil
553566
}
554567

@@ -623,13 +636,20 @@ func processImageWithBulkTags(ctx context.Context, image vpcv1.Image, bulkTags m
623636
l["allowed_use"] = []map[string]interface{}{modelMap}
624637
}
625638

626-
// Add access tags from bulk fetch (only for non-stock)
639+
// Add access tags from bulk fetch (only for non-stock, non-remote images)
627640
isStockImage := strings.HasPrefix(strings.ToLower(*image.Name), "ibm")
641+
isRemoteImage := image.Remote != nil
628642

629643
if !isStockImage {
630644
if tags, exists := bulkTags[*image.CRN]; exists {
645+
log.Printf("[DEBUG] UJJK Setting tags for image %s: %d tags found", *image.Name, tags.Len())
631646
l[isImageAccessTags] = tags
647+
} else {
648+
log.Printf("[DEBUG] UJJK No tags found for image %s (CRN: %s) in bulkTags map", *image.Name, *image.CRN)
649+
l[isImageAccessTags] = flex.NewStringSet(flex.ResourceIBMVPCHash, []string{})
632650
}
651+
} else {
652+
log.Printf("[DEBUG] UJJK Image %s - stock: %v, remote: %v - not setting tags", *image.Name, isStockImage, isRemoteImage)
633653
}
634654

635655
return l, nil

0 commit comments

Comments
 (0)