Skip to content

Commit 8f95f5f

Browse files
jamandbreuerfelix
andcommitted
chore: Refactor NIC fetching in CreateMachine (PR feedback)
Co-authored-by: Felix Breuer <f.breuer94@gmail.com>
1 parent a1942c7 commit 8f95f5f

2 files changed

Lines changed: 24 additions & 20 deletions

File tree

pkg/client/sdk_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
. "github.com/onsi/ginkgo/v2"
99
. "github.com/onsi/gomega"
1010
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
11-
"github.com/stackitcloud/stackit-sdk-go/services/iaas"
11+
iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api"
1212
"k8s.io/utils/ptr"
1313
)
1414

@@ -252,7 +252,7 @@ var _ = Describe("SDK Type Conversion Helpers", func() {
252252
sdkNIC := &iaas.NIC{
253253
Id: ptr.To("nic-1"),
254254
NetworkId: ptr.To("net-1"),
255-
AllowedAddresses: &[]iaas.AllowedAddressesInner{
255+
AllowedAddresses: []iaas.AllowedAddressesInner{
256256
{String: &addr},
257257
},
258258
}

pkg/provider/create.go

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -94,20 +94,10 @@ func (p *Provider) CreateMachine(ctx context.Context, req *driver.CreateMachineR
9494
return nil, status.Error(codes.DeadlineExceeded, fmt.Sprintf("failed waiting for server to be ACTIVE: %v", err))
9595
}
9696

97-
nics, err := p.client.GetNICsForServer(ctx, projectID, providerSpec.Region, server.ID)
97+
nics, err := p.patchNetworkInterfaces(ctx, projectID, server.ID, providerSpec)
9898
if err != nil {
99-
klog.Errorf("Failed to get NICs for server %q: %v", req.Machine.Name, err)
100-
return nil, status.Error(codes.Unavailable, fmt.Sprintf("failed to get NICs for server: %v", err))
101-
}
102-
103-
if len(nics) == 0 {
104-
klog.Errorf("No NICs found for server %q (ID: %s)", req.Machine.Name, server.ID)
105-
return nil, status.Error(codes.Unavailable, fmt.Sprintf("no NICs found for server %q", server.ID))
106-
}
107-
108-
if err := p.patchNetworkInterface(ctx, projectID, nics, providerSpec); err != nil {
109-
klog.Errorf("Failed to patch network interface for server %q: %v", req.Machine.Name, err)
110-
return nil, status.Error(codes.Unavailable, fmt.Sprintf("failed to patch network interface for server: %v", err))
99+
klog.Errorf("Failed to patch NICs for server %q: %v", req.Machine.Name, err)
100+
return nil, status.Error(codes.Unavailable, fmt.Sprintf("failed to patch NICs for server: %v", err))
111101
}
112102

113103
// Generate ProviderID in format: stackit://<projectId>/<serverId>
@@ -265,17 +255,28 @@ func (p *Provider) getServerByName(ctx context.Context, projectID, region, serve
265255
return nil, nil
266256
}
267257

268-
func (p *Provider) patchNetworkInterface(ctx context.Context, projectID string, nics []*client.NIC, providerSpec *api.ProviderSpec) error {
258+
func (p *Provider) patchNetworkInterfaces(ctx context.Context, projectID, serverID string, providerSpec *api.ProviderSpec) ([]*client.NIC, error) {
259+
nics, err := p.client.GetNICsForServer(ctx, projectID, providerSpec.Region, serverID)
260+
if err != nil {
261+
return nil, fmt.Errorf("failed to get NICs for server %q: %w", serverID, err)
262+
}
263+
264+
if len(nics) == 0 {
265+
return nil, fmt.Errorf("no NICs found for server %q", serverID)
266+
}
267+
269268
if len(providerSpec.AllowedAddresses) == 0 {
270-
return nil
269+
return nics, nil
271270
}
272271

272+
result := make([]*client.NIC, 0, len(nics))
273273
for _, nic := range nics {
274274
// if networking is not set, server is inside the default network
275275
// just patch the interface since the server should only have one
276276
if providerSpec.Networking != nil {
277277
// only process interfaces that are either in the configured network (NetworkID) or are defined in NICIDs
278278
if providerSpec.Networking.NetworkID != nic.NetworkID && !slices.Contains(providerSpec.Networking.NICIDs, nic.ID) {
279+
result = append(result, nic)
279280
continue
280281
}
281282
}
@@ -290,17 +291,20 @@ func (p *Provider) patchNetworkInterface(ctx context.Context, projectID string,
290291
}
291292

292293
if !updateNic {
294+
result = append(result, nic)
293295
continue
294296
}
295297

296-
if _, err := p.client.UpdateNIC(ctx, projectID, providerSpec.Region, nic.NetworkID, nic.ID, nic.AllowedAddresses); err != nil {
297-
return fmt.Errorf("failed to update allowed addresses for NIC %s: %w", nic.ID, err)
298+
updatedNic, err := p.client.UpdateNIC(ctx, projectID, providerSpec.Region, nic.NetworkID, nic.ID, nic.AllowedAddresses)
299+
if err != nil {
300+
return nil, fmt.Errorf("failed to update allowed addresses for NIC %s: %w", nic.ID, err)
298301
}
299302

300303
klog.V(2).Infof("Updated allowed addresses for NIC %s to %v", nic.ID, nic.AllowedAddresses)
304+
result = append(result, updatedNic)
301305
}
302306

303-
return nil
307+
return result, nil
304308
}
305309

306310
func (p *Provider) WaitUntilServerRunning(ctx context.Context, projectID, region, serverID string) error {

0 commit comments

Comments
 (0)