From 5d3522dc7aba6e2b2f17faa8b1c7fcf3ef668d71 Mon Sep 17 00:00:00 2001 From: jiangyaoguo Date: Wed, 12 Aug 2015 01:05:53 +0800 Subject: [PATCH] Keep event reason consistant in scheduler and controller --- contrib/mesos/pkg/scheduler/plugin.go | 6 +++--- pkg/client/record/event.go | 7 ++++--- pkg/controller/controller_utils.go | 4 ++-- pkg/controller/node/nodecontroller.go | 12 ++++++------ plugin/pkg/scheduler/scheduler.go | 6 +++--- plugin/pkg/scheduler/scheduler_test.go | 10 +++++----- 6 files changed, 23 insertions(+), 22 deletions(-) diff --git a/contrib/mesos/pkg/scheduler/plugin.go b/contrib/mesos/pkg/scheduler/plugin.go index 5506026dd02..c353165f7e6 100644 --- a/contrib/mesos/pkg/scheduler/plugin.go +++ b/contrib/mesos/pkg/scheduler/plugin.go @@ -758,7 +758,7 @@ func (s *schedulingPlugin) scheduleOne() { dest, err := s.config.Algorithm.Schedule(pod, s.config.MinionLister) // call kubeScheduler.Schedule if err != nil { log.V(1).Infof("Failed to schedule: %v", pod) - s.config.Recorder.Eventf(pod, "failedScheduling", "Error scheduling: %v", err) + s.config.Recorder.Eventf(pod, "FailedScheduling", "Error scheduling: %v", err) s.config.Error(pod, err) return } @@ -771,11 +771,11 @@ func (s *schedulingPlugin) scheduleOne() { } if err := s.config.Binder.Bind(b); err != nil { log.V(1).Infof("Failed to bind pod: %v", err) - s.config.Recorder.Eventf(pod, "failedScheduling", "Binding rejected: %v", err) + s.config.Recorder.Eventf(pod, "FailedScheduling", "Binding rejected: %v", err) s.config.Error(pod, err) return } - s.config.Recorder.Eventf(pod, "scheduled", "Successfully assigned %v to %v", pod.Name, dest) + s.config.Recorder.Eventf(pod, "Scheduled", "Successfully assigned %v to %v", pod.Name, dest) } // this pod may be out of sync with respect to the API server registry: diff --git a/pkg/client/record/event.go b/pkg/client/record/event.go index a4ebfaf76ac..a5e71324a86 100644 --- a/pkg/client/record/event.go +++ b/pkg/client/record/event.go @@ -51,9 +51,10 @@ type EventRecorder interface { // Event constructs an event from the given information and puts it in the queue for sending. // 'object' is the object this event is about. Event will make a reference-- or you may also // pass a reference to the object directly. - // 'reason' is the reason this event is generated. 'reason' should be short and unique; it will - // be used to automate handling of events, so imagine people writing switch statements to - // handle them. You want to make that easy. + // 'reason' is the reason this event is generated. 'reason' should be short and unique; it + // should be in UpperCamelCase format (starting with a capital letter). "reason" will be used + // to automate handling of events, so imagine people writing switch statements to handle them. + // You want to make that easy. // 'message' is intended to be human readable. // // The resulting event will be created in the same namespace as the reference object. diff --git a/pkg/controller/controller_utils.go b/pkg/controller/controller_utils.go index 87ae47a8a27..2438c8148ad 100644 --- a/pkg/controller/controller_utils.go +++ b/pkg/controller/controller_utils.go @@ -281,11 +281,11 @@ func (r RealPodControl) CreateReplica(namespace string, controller *api.Replicat return fmt.Errorf("unable to create pod replica, no labels") } if newPod, err := r.KubeClient.Pods(namespace).Create(pod); err != nil { - r.Recorder.Eventf(controller, "failedCreate", "Error creating: %v", err) + r.Recorder.Eventf(controller, "FailedCreate", "Error creating: %v", err) return fmt.Errorf("unable to create pod replica: %v", err) } else { glog.V(4).Infof("Controller %v created pod %v", controller.Name, newPod.Name) - r.Recorder.Eventf(controller, "successfulCreate", "Created pod: %v", newPod.Name) + r.Recorder.Eventf(controller, "SuccessfulCreate", "Created pod: %v", newPod.Name) } return nil } diff --git a/pkg/controller/node/nodecontroller.go b/pkg/controller/node/nodecontroller.go index 3c180e99a4c..22fa7f89c42 100644 --- a/pkg/controller/node/nodecontroller.go +++ b/pkg/controller/node/nodecontroller.go @@ -163,7 +163,7 @@ func (nc *NodeController) deletePods(nodeID string) error { if err != nil { return err } - nc.recordNodeEvent(nodeID, fmt.Sprintf("Deleting all Pods from Node %v.", nodeID)) + nc.recordNodeEvent(nodeID, "DeletingAllPods", fmt.Sprintf("Deleting all Pods from Node %v.", nodeID)) for _, pod := range pods.Items { // Defensive check, also needed for tests. if pod.Spec.NodeName != nodeID { @@ -214,7 +214,7 @@ func (nc *NodeController) monitorNodeStatus() error { for _, node := range nodes.Items { if !nc.knownNodeSet.Has(node.Name) { glog.V(1).Infof("NodeController observed a new Node: %#v", node) - nc.recordNodeEvent(node.Name, fmt.Sprintf("Registered Node %v in NodeController", node.Name)) + nc.recordNodeEvent(node.Name, "RegisteredNode", fmt.Sprintf("Registered Node %v in NodeController", node.Name)) nc.knownNodeSet.Insert(node.Name) } } @@ -228,7 +228,7 @@ func (nc *NodeController) monitorNodeStatus() error { deleted := nc.knownNodeSet.Difference(observedSet) for node := range deleted { glog.V(1).Infof("NodeController observed a Node deletion: %v", node) - nc.recordNodeEvent(node, fmt.Sprintf("Removing Node %v from NodeController", node)) + nc.recordNodeEvent(node, "RemovingNode", fmt.Sprintf("Removing Node %v from NodeController", node)) nc.deleteNode(node) nc.knownNodeSet.Delete(node) } @@ -302,7 +302,7 @@ func (nc *NodeController) monitorNodeStatus() error { } if _, err := instances.ExternalID(node.Name); err != nil && err == cloudprovider.InstanceNotFound { glog.Infof("Deleting node (no longer present in cloud provider): %s", node.Name) - nc.recordNodeEvent(node.Name, fmt.Sprintf("Deleting Node %v because it's not present according to cloud provider", node.Name)) + nc.recordNodeEvent(node.Name, "DeleteingNode", fmt.Sprintf("Deleting Node %v because it's not present according to cloud provider", node.Name)) if err := nc.deletePods(node.Name); err != nil { glog.Errorf("Unable to delete pods from node %s: %v", node.Name, err) continue @@ -347,7 +347,7 @@ func (nc *NodeController) reconcileNodeCIDRs(nodes *api.NodeList) { } } -func (nc *NodeController) recordNodeEvent(nodeName string, event string) { +func (nc *NodeController) recordNodeEvent(nodeName string, reason string, event string) { ref := &api.ObjectReference{ Kind: "Node", Name: nodeName, @@ -355,7 +355,7 @@ func (nc *NodeController) recordNodeEvent(nodeName string, event string) { Namespace: "", } glog.V(2).Infof("Recording %s event message for node %s", event, nodeName) - nc.recorder.Eventf(ref, event, "Node %s event: %s", nodeName, event) + nc.recorder.Eventf(ref, reason, "Node %s event: %s", nodeName, event) } func (nc *NodeController) recordNodeStatusChange(node *api.Node, new_status string) { diff --git a/plugin/pkg/scheduler/scheduler.go b/plugin/pkg/scheduler/scheduler.go index 1bcc0e6695e..26abe5ce66c 100644 --- a/plugin/pkg/scheduler/scheduler.go +++ b/plugin/pkg/scheduler/scheduler.go @@ -125,7 +125,7 @@ func (s *Scheduler) scheduleOne() { metrics.SchedulingAlgorithmLatency.Observe(metrics.SinceInMicroseconds(start)) if err != nil { glog.V(1).Infof("Failed to schedule: %v", pod) - s.config.Recorder.Eventf(pod, "failedScheduling", "%v", err) + s.config.Recorder.Eventf(pod, "FailedScheduling", "%v", err) s.config.Error(pod, err) return } @@ -145,11 +145,11 @@ func (s *Scheduler) scheduleOne() { metrics.BindingLatency.Observe(metrics.SinceInMicroseconds(bindingStart)) if err != nil { glog.V(1).Infof("Failed to bind pod: %v", err) - s.config.Recorder.Eventf(pod, "failedScheduling", "Binding rejected: %v", err) + s.config.Recorder.Eventf(pod, "FailedScheduling", "Binding rejected: %v", err) s.config.Error(pod, err) return } - s.config.Recorder.Eventf(pod, "scheduled", "Successfully assigned %v to %v", pod.Name, dest) + s.config.Recorder.Eventf(pod, "Scheduled", "Successfully assigned %v to %v", pod.Name, dest) // tell the model to assume that this binding took effect. assumed := *pod assumed.Spec.NodeName = dest diff --git a/plugin/pkg/scheduler/scheduler_test.go b/plugin/pkg/scheduler/scheduler_test.go index 83089bf08ce..e89847db85c 100644 --- a/plugin/pkg/scheduler/scheduler_test.go +++ b/plugin/pkg/scheduler/scheduler_test.go @@ -85,13 +85,13 @@ func TestScheduler(t *testing.T) { algo: mockScheduler{"machine1", nil}, expectBind: &api.Binding{ObjectMeta: api.ObjectMeta{Name: "foo"}, Target: api.ObjectReference{Kind: "Node", Name: "machine1"}}, expectAssumedPod: podWithID("foo", "machine1"), - eventReason: "scheduled", + eventReason: "Scheduled", }, { sendPod: podWithID("foo", ""), algo: mockScheduler{"machine1", errS}, expectError: errS, expectErrorPod: podWithID("foo", ""), - eventReason: "failedScheduling", + eventReason: "FailedScheduling", }, { sendPod: podWithID("foo", ""), algo: mockScheduler{"machine1", nil}, @@ -99,7 +99,7 @@ func TestScheduler(t *testing.T) { injectBindError: errB, expectError: errB, expectErrorPod: podWithID("foo", ""), - eventReason: "failedScheduling", + eventReason: "FailedScheduling", }, } @@ -218,7 +218,7 @@ func TestSchedulerForgetAssumedPodAfterDelete(t *testing.T) { s := New(c) called := make(chan struct{}) events := eventBroadcaster.StartEventWatcher(func(e *api.Event) { - if e, a := "scheduled", e.Reason; e != a { + if e, a := "Scheduled", e.Reason; e != a { t.Errorf("expected %v, got %v", e, a) } close(called) @@ -277,7 +277,7 @@ func TestSchedulerForgetAssumedPodAfterDelete(t *testing.T) { called = make(chan struct{}) events = eventBroadcaster.StartEventWatcher(func(e *api.Event) { - if e, a := "scheduled", e.Reason; e != a { + if e, a := "Scheduled", e.Reason; e != a { t.Errorf("expected %v, got %v", e, a) } close(called)