Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9ccd349

Browse files
committed
Add event generation when create/delete of balancers fails.
1 parent b7caede commit 9ccd349

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

pkg/cloudprovider/servicecontroller/servicecontroller.go

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors"
2828
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
2929
"github.com/GoogleCloudPlatform/kubernetes/pkg/client/cache"
30+
"github.com/GoogleCloudPlatform/kubernetes/pkg/client/record"
3031
"github.com/GoogleCloudPlatform/kubernetes/pkg/cloudprovider"
3132
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields"
3233
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels"
@@ -62,22 +63,30 @@ type serviceCache struct {
6263
}
6364

6465
type ServiceController struct {
65-
cloud cloudprovider.Interface
66-
kubeClient client.Interface
67-
clusterName string
68-
balancer cloudprovider.TCPLoadBalancer
69-
zone cloudprovider.Zone
70-
cache *serviceCache
66+
cloud cloudprovider.Interface
67+
kubeClient client.Interface
68+
clusterName string
69+
balancer cloudprovider.TCPLoadBalancer
70+
zone cloudprovider.Zone
71+
cache *serviceCache
72+
eventBroadcaster record.EventBroadcaster
73+
eventRecorder record.EventRecorder
7174
}
7275

7376
// New returns a new service controller to keep cloud provider service resources
7477
// (like external load balancers) in sync with the registry.
7578
func New(cloud cloudprovider.Interface, kubeClient client.Interface, clusterName string) *ServiceController {
79+
broadcaster := record.NewBroadcaster()
80+
broadcaster.StartRecordingToSink(kubeClient.Events(""))
81+
recorder := broadcaster.NewRecorder(api.EventSource{Component: "service-controller"})
82+
7683
return &ServiceController{
77-
cloud: cloud,
78-
kubeClient: kubeClient,
79-
clusterName: clusterName,
80-
cache: &serviceCache{serviceMap: make(map[string]*cachedService)},
84+
cloud: cloud,
85+
kubeClient: kubeClient,
86+
clusterName: clusterName,
87+
cache: &serviceCache{serviceMap: make(map[string]*cachedService)},
88+
eventBroadcaster: broadcaster,
89+
eventRecorder: recorder,
8190
}
8291
}
8392

@@ -206,6 +215,7 @@ func (s *ServiceController) processDelta(delta *cache.Delta) (error, bool) {
206215
case cache.Sync:
207216
err, retry := s.createLoadBalancerIfNeeded(namespacedName, service, cachedService.service)
208217
if err != nil {
218+
s.eventRecorder.Event(service, "creating loadbalancer failed", err.Error())
209219
return err, retry
210220
}
211221
// Always update the cache upon success.
@@ -217,6 +227,7 @@ func (s *ServiceController) processDelta(delta *cache.Delta) (error, bool) {
217227
case cache.Deleted:
218228
err := s.balancer.EnsureTCPLoadBalancerDeleted(s.loadBalancerName(service), s.zone.Region)
219229
if err != nil {
230+
s.eventRecorder.Event(service, "deleting loadbalancer failed", err.Error())
220231
return err, retryable
221232
}
222233
s.cache.delete(namespacedName.String())

0 commit comments

Comments
 (0)