Skip to content

Commit e852484

Browse files
authored
Merge pull request #973 from 08volt/release-1.35
[Cherry-Pick #972 and #979] update EnsureLoadBalancer to return nil instead of status when syncResult is nil
2 parents 1684496 + bcd8379 commit e852484

3 files changed

Lines changed: 48 additions & 6 deletions

File tree

WORKSPACE

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,11 @@ http_archive(
5050

5151
http_archive(
5252
name = "io_bazel_rules_docker",
53-
sha256 = "b1e80761a8a8243d03ebca8845e9cc1ba6c82ce7c5179ce2b295cd36f7e394bf",
54-
urls = ["https://github.com/bazelbuild/rules_docker/releases/download/v0.25.0/rules_docker-v0.25.0.tar.gz"],
53+
sha256 = "f6dcb97e992f13bc9effd794e9bb300f06b0dadc88061f81ae68d8d5994be964",
54+
urls = [
55+
"https://mirror.bazel.build/github.com/bazelbuild/rules_docker/releases/download/v0.26.0/rules_docker-v0.26.0.tar.gz",
56+
"https://github.com/bazelbuild/rules_docker/releases/download/v0.26.0/rules_docker-v0.26.0.tar.gz",
57+
],
5558
)
5659

5760
load("@bazel_skylib//lib:versions.bzl", "versions")

providers/gce/gce_loadbalancer.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -227,17 +227,25 @@ func (g *Cloud) EnsureLoadBalancer(ctx context.Context, clusterName string, svc
227227
}
228228
if err != nil {
229229
klog.Errorf("Failed to EnsureLoadBalancer(%s, %s, %s, %s, %s), err: %v", clusterName, svc.Namespace, svc.Name, loadBalancerName, g.region, err)
230-
return syncResult.status, err
230+
return nil, err
231+
}
232+
233+
var status *v1.LoadBalancerStatus
234+
var annotations map[string]string
235+
236+
if syncResult != nil {
237+
status = syncResult.status
238+
annotations = syncResult.annotations
231239
}
232240

233241
if g.enableL4LBAnnotations {
234-
if err = g.updateL4ResourcesAnnotations(ctx, svc, syncResult.annotations); err != nil {
235-
return syncResult.status, fmt.Errorf("failed to set resource annotations, err: %w", err)
242+
if err = g.updateL4ResourcesAnnotations(ctx, svc, annotations); err != nil {
243+
return status, fmt.Errorf("failed to set resource annotations, err: %w", err)
236244
}
237245
}
238246

239247
klog.V(4).Infof("EnsureLoadBalancer(%s, %s, %s, %s, %s): done ensuring loadbalancer.", clusterName, svc.Namespace, svc.Name, loadBalancerName, g.region)
240-
return syncResult.status, err
248+
return status, err
241249
}
242250

243251
func (g *Cloud) updateL4ResourcesAnnotations(ctx context.Context, svc *v1.Service, newL4LBAnnotations map[string]string) error {

providers/gce/gce_loadbalancer_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,39 @@ import (
2929
v1 "k8s.io/api/core/v1"
3030
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3131
cloudprovider "k8s.io/cloud-provider"
32+
33+
"github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud"
34+
"github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta"
35+
"google.golang.org/api/compute/v1"
3236
)
3337

38+
func TestEnsureLoadBalancerError(t *testing.T) {
39+
t.Parallel()
40+
41+
vals := DefaultTestClusterValues()
42+
gce, err := fakeGCECloud(vals)
43+
require.NoError(t, err)
44+
45+
nodeNames := []string{"test-node-1"}
46+
nodes, err := createAndInsertNodes(gce, nodeNames, vals.ZoneName)
47+
require.NoError(t, err)
48+
49+
apiService := fakeLoadbalancerService(string(LBTypeInternal))
50+
apiService, err = gce.client.CoreV1().Services(apiService.Namespace).Create(context.TODO(), apiService, metav1.CreateOptions{})
51+
require.NoError(t, err)
52+
53+
// Inject error
54+
mockGCE := gce.c.(*cloud.MockGCE)
55+
mockGCE.MockInstanceGroups.GetHook = func(ctx context.Context, key *meta.Key, m *cloud.MockInstanceGroups, options ...cloud.Option) (bool, *compute.InstanceGroup, error) {
56+
return true, nil, fmt.Errorf("injected error")
57+
}
58+
59+
status, err := gce.EnsureLoadBalancer(context.Background(), vals.ClusterName, apiService, nodes)
60+
require.Error(t, err)
61+
assert.Nil(t, status)
62+
assert.Contains(t, err.Error(), "injected error")
63+
}
64+
3465
func TestGetLoadBalancer(t *testing.T) {
3566
t.Parallel()
3667

0 commit comments

Comments
 (0)