Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion pkg/provider/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"encoding/base64"
"fmt"
"slices"
"strings"

"github.com/gardener/machine-controller-manager/pkg/util/provider/driver"
"github.com/gardener/machine-controller-manager/pkg/util/provider/machinecodes/codes"
Expand Down Expand Up @@ -56,7 +57,7 @@ func (p *Provider) CreateMachine(ctx context.Context, req *driver.CreateMachineR

// Initialize client on first use (lazy initialization)
if err := p.ensureClient(serviceAccountKey); err != nil {
return nil, status.Error(codes.Internal, fmt.Sprintf("failed to initialize STACKIT client: %v", err))
return nil, status.Error(codes.Unauthenticated, fmt.Sprintf("failed to initialize STACKIT client: %v", err))
}

// check if server already exists
Expand All @@ -71,6 +72,13 @@ func (p *Provider) CreateMachine(ctx context.Context, req *driver.CreateMachineR
server, err = p.client.CreateServer(ctx, projectID, providerSpec.Region, p.createServerRequest(req, providerSpec))
if err != nil {
klog.Errorf("Failed to create server for machine %q: %v", req.Machine.Name, err)

// Check for resource exhaustion errors to avoid spamming the API
errMsg := strings.ToLower(err.Error())
if strings.Contains(errMsg, "no valid host") || strings.Contains(errMsg, "quota exceeded") {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you sure that this will be a error on the creation. If I got it correctly only the quota exceeded is a error on the create call. The no valid host is in the errorMessage in the get server https://internal-docs.api.stackit.cloud/documentation/iaas/version/v2#tag/Servers/operation/v2GetServer . Or did I get this wrong?

return nil, status.Error(codes.ResourceExhausted, fmt.Sprintf("failed to create server: %v", err))
}

return nil, status.Error(codes.Unavailable, fmt.Sprintf("failed to create server: %v", err))
}
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/provider/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func (p *Provider) DeleteMachine(ctx context.Context, req *driver.DeleteMachineR

// Initialize client on first use (lazy initialization)
if err := p.ensureClient(serviceAccountKey); err != nil {
return nil, status.Error(codes.Internal, fmt.Sprintf("failed to initialize STACKIT client: %v", err))
return nil, status.Error(codes.Unauthenticated, fmt.Sprintf("failed to initialize STACKIT client: %v", err))
}

var projectID, serverID string
Expand Down
2 changes: 1 addition & 1 deletion pkg/provider/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func (p *Provider) ListMachines(ctx context.Context, req *driver.ListMachinesReq

// Initialize client on first use (lazy initialization)
if err := p.ensureClient(serviceAccountKey); err != nil {
return nil, status.Error(codes.Internal, fmt.Sprintf("failed to initialize STACKIT client: %v", err))
return nil, status.Error(codes.Unauthenticated, fmt.Sprintf("failed to initialize STACKIT client: %v", err))
}

// Decode ProviderSpec from MachineClass
Expand Down
2 changes: 1 addition & 1 deletion pkg/provider/status.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func (p *Provider) GetMachineStatus(ctx context.Context, req *driver.GetMachineS

// Initialize client on first use (lazy initialization)
if err := p.ensureClient(serviceAccountKey); err != nil {
return nil, status.Error(codes.Internal, fmt.Sprintf("failed to initialize STACKIT client: %v", err))
return nil, status.Error(codes.Unauthenticated, fmt.Sprintf("failed to initialize STACKIT client: %v", err))
}

// Parse ProviderID to extract projectID and serverID
Expand Down