Skip to content

Commit ecf4ac4

Browse files
committed
fixup! OCPBUGS-90710: Destroy all private cluster backend service resources
1 parent 062b048 commit ecf4ac4

1 file changed

Lines changed: 14 additions & 20 deletions

File tree

pkg/destroy/gcp/cloudcontroller.go

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,25 @@ func (o *ClusterUninstaller) listCloudControllerBackendServices(ctx context.Cont
3434
filter := "name eq \"a[0-9a-f]{30,50}\""
3535
result := []cloudResource{}
3636

37-
req := o.computeSvc.RegionBackendServices.List(o.ProjectID, o.Region).Fields(googleapi.Field("items(name,backends),nextPageToken"))
38-
if len(filter) > 0 {
39-
req = req.Filter(filter)
37+
// Fetch firewall rules once (fully paginated); used to validate backend
38+
// services that have no backends.
39+
var firewalls []*compute.Firewall
40+
if err := o.computeSvc.Firewalls.List(o.ProjectID).
41+
Fields(googleapi.Field("items(name,targetTags),nextPageToken")).
42+
Pages(ctx, func(list *compute.FirewallList) error {
43+
firewalls = append(firewalls, list.Items...)
44+
return nil
45+
}); err != nil {
46+
return nil, err
4047
}
48+
49+
req := o.computeSvc.RegionBackendServices.List(o.ProjectID, o.Region).Fields(googleapi.Field("items(name,backends),nextPageToken")).Filter(filter)
4150
err := req.Pages(ctx, func(list *compute.BackendServiceList) error {
4251
for _, item := range list.Items {
4352
if len(item.Backends) == 0 {
4453
o.Logger.Debugf("Backend service %s has no backends, checking firewall rules for cluster ID", item.Name)
45-
fwList, err := o.computeSvc.Firewalls.List(o.ProjectID).Fields(googleapi.Field("items(name,targetTags),nextPageToken")).Context(ctx).Do()
46-
if err != nil {
47-
o.Logger.Debugf("failed to list firewall rules associated with backend service %s: %v", item.Name, err)
48-
continue
49-
}
5054
found := false
51-
for _, fw := range fwList.Items {
55+
for _, fw := range firewalls {
5256
if strings.Contains(fw.Name, item.Name) {
5357
for _, tag := range fw.TargetTags {
5458
if strings.Contains(tag, o.ClusterID) {
@@ -84,10 +88,7 @@ func (o *ClusterUninstaller) listCloudControllerBackendServices(ctx context.Cont
8488
quota: []gcp.QuotaUsage{{
8589
Metric: &gcp.Metric{
8690
Service: gcp.ServiceComputeEngineAPI,
87-
Limit: "internal_lb_forwarding_rules",
88-
Dimensions: map[string]string{
89-
"region": o.Region,
90-
},
91+
Limit: "backend_services",
9192
},
9293
Amount: 1,
9394
}},
@@ -196,13 +197,6 @@ func (o *ClusterUninstaller) discoverCloudControllerLoadBalancerResources(ctx co
196197
}
197198
o.insertPendingItems("healthcheck", found)
198199

199-
// Discover associated health checks: loadBalancerName - GLOBAL
200-
found, err = o.listHealthChecksWithFilter(ctx, "globalhealthcheck", "items(name),nextPageToken", loadBalancerNameFilter, nil)
201-
if err != nil {
202-
return err
203-
}
204-
o.insertPendingItems("globalhealthcheck", found)
205-
206200
// Discover associated http health checks: loadBalancerName
207201
found, err = o.listHTTPHealthChecksWithFilter(ctx, "items(name),nextPageToken", loadBalancerNameFilter, nil)
208202
if err != nil {

0 commit comments

Comments
 (0)