mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-01-25 14:56:18 -05:00
constellation-node-operator: don't bail out on listing errors (#3522)
If the GCP project has scaling groups for which our checks can't be performed (which is the case for regional scaling groups, as they "don't exist" for the operator, if deployed in another region) . In that case, we should not bail out directly but go on with the next group. An error should only be thrown if there are no matching groups at all.
This commit is contained in:
parent
0aa44a8221
commit
b03e671a62
@ -105,6 +105,8 @@ func (c *Client) GetAutoscalingGroupName(scalingGroupID string) (string, error)
|
||||
// ListScalingGroups retrieves a list of scaling groups for the cluster.
|
||||
func (c *Client) ListScalingGroups(ctx context.Context, uid string) ([]cspapi.ScalingGroup, error) {
|
||||
results := []cspapi.ScalingGroup{}
|
||||
var retErr error
|
||||
|
||||
iter := c.instanceGroupManagersAPI.AggregatedList(ctx, &computepb.AggregatedListInstanceGroupManagersRequest{
|
||||
Project: c.projectID,
|
||||
})
|
||||
@ -129,7 +131,8 @@ func (c *Client) ListScalingGroups(ctx context.Context, uid string) ([]cspapi.Sc
|
||||
}
|
||||
template, err := c.instanceTemplateAPI.Get(c.projectID, templateURI[len(templateURI)-1])
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getting instance template: %w", err)
|
||||
retErr = errors.Join(retErr, fmt.Errorf("getting instance template %q: %w", templateURI[len(templateURI)-1], err))
|
||||
continue
|
||||
}
|
||||
if template.Properties == nil || template.Properties.Labels == nil {
|
||||
continue
|
||||
@ -140,14 +143,16 @@ func (c *Client) ListScalingGroups(ctx context.Context, uid string) ([]cspapi.Sc
|
||||
|
||||
groupID, err := c.canonicalInstanceGroupID(ctx, *grpManager.SelfLink)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("normalizing instance group ID: %w", err)
|
||||
retErr = errors.Join(retErr, fmt.Errorf("getting canonical instance group ID: %w", err))
|
||||
continue
|
||||
}
|
||||
|
||||
role := updatev1alpha1.NodeRoleFromString(template.Properties.Labels["constellation-role"])
|
||||
|
||||
name, err := c.GetScalingGroupName(groupID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getting scaling group name: %w", err)
|
||||
retErr = errors.Join(retErr, fmt.Errorf("getting scaling group name: %w", err))
|
||||
continue
|
||||
}
|
||||
|
||||
nodeGroupName := template.Properties.Labels["constellation-node-group"]
|
||||
@ -164,7 +169,8 @@ func (c *Client) ListScalingGroups(ctx context.Context, uid string) ([]cspapi.Sc
|
||||
|
||||
autoscalerGroupName, err := c.GetAutoscalingGroupName(groupID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getting autoscaling group name: %w", err)
|
||||
retErr = errors.Join(retErr, fmt.Errorf("getting autoscaling group name: %w", err))
|
||||
continue
|
||||
}
|
||||
|
||||
results = append(results, cspapi.ScalingGroup{
|
||||
@ -176,6 +182,11 @@ func (c *Client) ListScalingGroups(ctx context.Context, uid string) ([]cspapi.Sc
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if len(results) == 0 {
|
||||
return nil, errors.Join(errors.New("no scaling groups found"), retErr)
|
||||
}
|
||||
|
||||
return results, nil
|
||||
}
|
||||
|
||||
|
@ -427,8 +427,11 @@ func TestListScalingGroups(t *testing.T) {
|
||||
templateLabels: map[string]string{
|
||||
"label": "value",
|
||||
},
|
||||
wantErr: true,
|
||||
},
|
||||
"invalid instance group manager": {
|
||||
wantErr: true,
|
||||
},
|
||||
"invalid instance group manager": {},
|
||||
}
|
||||
|
||||
for name, tc := range testCases {
|
||||
|
Loading…
x
Reference in New Issue
Block a user