Skip to content

Commit 60ea03b

Browse files
authored
fix: propagate errors upon ipam failure and use lb zone instead of annotations (#155)
1 parent 1643637 commit 60ea03b

File tree

2 files changed

+21
-18
lines changed

2 files changed

+21
-18
lines changed

scaleway/instances.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func (i *instances) NodeAddresses(ctx context.Context, name types.NodeName) ([]v
5858
if err != nil {
5959
return nil, err
6060
}
61-
return i.instanceAddresses(server), nil
61+
return i.instanceAddresses(server)
6262
}
6363

6464
// NodeAddressesByProviderID returns the addresses of the specified instance.
@@ -68,7 +68,7 @@ func (i *instances) NodeAddressesByProviderID(ctx context.Context, providerID st
6868
if err != nil {
6969
return nil, err
7070
}
71-
return i.instanceAddresses(instanceServer), nil
71+
return i.instanceAddresses(instanceServer)
7272
}
7373

7474
// InstanceID returns the cloud provider ID of the node with the specified NodeName.
@@ -161,7 +161,7 @@ func (i *instances) GetZoneByNodeName(ctx context.Context, nodeName types.NodeNa
161161
// ===========================
162162

163163
// instanceAddresses extracts NodeAdress from the server
164-
func (i *instances) instanceAddresses(server *scwinstance.Server) []v1.NodeAddress {
164+
func (i *instances) instanceAddresses(server *scwinstance.Server) ([]v1.NodeAddress, error) {
165165
addresses := []v1.NodeAddress{
166166
{Type: v1.NodeHostName, Address: server.Hostname},
167167
}
@@ -194,13 +194,11 @@ func (i *instances) instanceAddresses(server *scwinstance.Server) []v1.NodeAddre
194194
Region: region,
195195
})
196196
if err != nil {
197-
klog.Errorf("unable to query ipam for node %s: %v", server.Name, err)
198-
return addresses
197+
return addresses, fmt.Errorf("unable to query ipam for node %s: %v", server.Name, err)
199198
}
200199

201200
if len(ips.IPs) == 0 {
202-
klog.Errorf("no private network ip for node %s", server.Name)
203-
return addresses
201+
return addresses, fmt.Errorf("no private network ip for node %s", server.Name)
204202
}
205203

206204
for _, nicIP := range ips.IPs {
@@ -210,7 +208,7 @@ func (i *instances) instanceAddresses(server *scwinstance.Server) []v1.NodeAddre
210208
)
211209
}
212210

213-
return addresses
211+
return addresses, nil
214212
}
215213

216214
// fallback to legacy private ip
@@ -222,7 +220,7 @@ func (i *instances) instanceAddresses(server *scwinstance.Server) []v1.NodeAddre
222220
)
223221
}
224222

225-
return addresses
223+
return addresses, nil
226224
}
227225

228226
func instanceZone(instanceServer *scwinstance.Server) (cloudprovider.Zone, error) {
@@ -369,10 +367,15 @@ func (i *instances) InstanceMetadata(ctx context.Context, node *v1.Node) (*cloud
369367
return nil, err
370368
}
371369

370+
addresses, err := i.instanceAddresses(instance)
371+
if err != nil {
372+
return nil, err
373+
}
374+
372375
return &cloudprovider.InstanceMetadata{
373376
ProviderID: BuildProviderID(InstanceTypeInstance, instance.Zone.String(), instance.ID),
374377
InstanceType: instance.CommercialType,
375-
NodeAddresses: i.instanceAddresses(instance),
378+
NodeAddresses: addresses,
376379
Region: region.String(),
377380
Zone: instance.Zone.String(),
378381
}, nil

scaleway/loadbalancers.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -747,7 +747,7 @@ func (l *loadbalancers) updateLoadBalancer(ctx context.Context, loadbalancer *sc
747747
if !stringArrayEqual(backend.Pool, targetIPs) {
748748
klog.V(3).Infof("update server list for backend: %s port: %d loadbalancer: %s", backend.ID, port.NodePort, loadbalancer.ID)
749749
if _, err := l.api.SetBackendServers(&scwlb.ZonedAPISetBackendServersRequest{
750-
Zone: getLoadBalancerZone(service),
750+
Zone: loadbalancer.Zone,
751751
BackendID: backend.ID,
752752
ServerIP: targetIPs,
753753
}); err != nil {
@@ -800,7 +800,7 @@ func (l *loadbalancers) updateLoadBalancer(ctx context.Context, loadbalancer *sc
800800
klog.Infof("remove all ACLs from frontend: %s port: %d loadbalancer: %s", frontend.ID, frontend.InboundPort, loadbalancer.ID)
801801
for _, acl := range aclsResp.ACLs {
802802
if err := l.api.DeleteACL(&scwlb.ZonedAPIDeleteACLRequest{
803-
Zone: getLoadBalancerZone(service),
803+
Zone: loadbalancer.Zone,
804804
ACLID: acl.ID,
805805
}); err != nil {
806806
return fmt.Errorf("failed removing ACL %s from frontend: %s port: %d loadbalancer: %s err: %v", acl.Name, frontend.ID, frontend.InboundPort, loadbalancer.ID, err)
@@ -810,7 +810,7 @@ func (l *loadbalancers) updateLoadBalancer(ctx context.Context, loadbalancer *sc
810810
klog.Infof("create all ACLs for frontend: %s port: %d loadbalancer: %s", frontend.ID, frontend.InboundPort, loadbalancer.ID)
811811
for _, acl := range svcAcls {
812812
if _, err := l.api.SetACLs(&scwlb.ZonedAPISetACLsRequest{
813-
Zone: getLoadBalancerZone(service),
813+
Zone: loadbalancer.Zone,
814814
FrontendID: frontend.ID,
815815
ACLs: svcAcls,
816816
}); err != nil {
@@ -2069,7 +2069,7 @@ func aclsEquals(got []*scwlb.ACL, want []*scwlb.ACLSpec) bool {
20692069

20702070
func (l *loadbalancers) createBackend(service *v1.Service, loadbalancer *scwlb.LB, backend *scwlb.Backend) (*scwlb.Backend, error) {
20712071
b, err := l.api.CreateBackend(&scwlb.ZonedAPICreateBackendRequest{
2072-
Zone: getLoadBalancerZone(service),
2072+
Zone: loadbalancer.Zone,
20732073
LBID: loadbalancer.ID,
20742074
Name: backend.Name,
20752075
ForwardProtocol: backend.ForwardProtocol,
@@ -2096,7 +2096,7 @@ func (l *loadbalancers) createBackend(service *v1.Service, loadbalancer *scwlb.L
20962096

20972097
func (l *loadbalancers) updateBackend(service *v1.Service, loadbalancer *scwlb.LB, backend *scwlb.Backend) (*scwlb.Backend, error) {
20982098
b, err := l.api.UpdateBackend(&scwlb.ZonedAPIUpdateBackendRequest{
2099-
Zone: getLoadBalancerZone(service),
2099+
Zone: loadbalancer.Zone,
21002100
BackendID: backend.ID,
21012101
Name: backend.Name,
21022102
ForwardProtocol: backend.ForwardProtocol,
@@ -2117,7 +2117,7 @@ func (l *loadbalancers) updateBackend(service *v1.Service, loadbalancer *scwlb.L
21172117
}
21182118

21192119
if _, err := l.api.UpdateHealthCheck(&scwlb.ZonedAPIUpdateHealthCheckRequest{
2120-
Zone: getLoadBalancerZone(service),
2120+
Zone: loadbalancer.Zone,
21212121
BackendID: backend.ID,
21222122
Port: backend.ForwardPort,
21232123
CheckDelay: backend.HealthCheck.CheckDelay,
@@ -2141,7 +2141,7 @@ func (l *loadbalancers) updateBackend(service *v1.Service, loadbalancer *scwlb.L
21412141

21422142
func (l *loadbalancers) createFrontend(service *v1.Service, loadbalancer *scwlb.LB, frontend *scwlb.Frontend, backend *scwlb.Backend) (*scwlb.Frontend, error) {
21432143
f, err := l.api.CreateFrontend(&scwlb.ZonedAPICreateFrontendRequest{
2144-
Zone: getLoadBalancerZone(service),
2144+
Zone: loadbalancer.Zone,
21452145
LBID: loadbalancer.ID,
21462146
Name: frontend.Name,
21472147
InboundPort: frontend.InboundPort,
@@ -2156,7 +2156,7 @@ func (l *loadbalancers) createFrontend(service *v1.Service, loadbalancer *scwlb.
21562156

21572157
func (l *loadbalancers) updateFrontend(service *v1.Service, loadbalancer *scwlb.LB, frontend *scwlb.Frontend, backend *scwlb.Backend) (*scwlb.Frontend, error) {
21582158
f, err := l.api.UpdateFrontend(&scwlb.ZonedAPIUpdateFrontendRequest{
2159-
Zone: getLoadBalancerZone(service),
2159+
Zone: loadbalancer.Zone,
21602160
FrontendID: frontend.ID,
21612161
Name: frontend.Name,
21622162
InboundPort: frontend.InboundPort,

0 commit comments

Comments
 (0)