From f1d88f6d2f627eee58af9738c53f4c96c2f2b9a4 Mon Sep 17 00:00:00 2001 From: Ravi Sankar Penta Date: Wed, 8 Apr 2015 18:22:44 -0700 Subject: [PATCH] Record an event on node schedulable changes --- pkg/kubelet/kubelet.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index c58189628a..27a7f0d41b 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -1770,6 +1770,21 @@ func (kl *Kubelet) recordNodeOnlineEvent() { kl.recorder.Eventf(kl.nodeRef, "online", "Node %s is now online", kl.hostname) } +func (kl *Kubelet) recordNodeSchedulableEvent() { + // TODO: This requires a transaction, either both node status is updated + // and event is recorded or neither should happen, see issue #6055. + kl.recorder.Eventf(kl.nodeRef, "schedulable", "Node %s is now schedulable", kl.hostname) +} + +func (kl *Kubelet) recordNodeUnschedulableEvent() { + // TODO: This requires a transaction, either both node status is updated + // and event is recorded or neither should happen, see issue #6055. + kl.recorder.Eventf(kl.nodeRef, "unschedulable", "Node %s is now unschedulable", kl.hostname) +} + +// Maintains Node.Spec.Unschedulable value from previous run of tryUpdateNodeStatus() +var oldNodeUnschedulable bool + // tryUpdateNodeStatus tries to update node status to master. func (kl *Kubelet) tryUpdateNodeStatus() error { node, err := kl.kubeClient.Nodes().Get(kl.hostname) @@ -1836,6 +1851,14 @@ func (kl *Kubelet) tryUpdateNodeStatus() error { kl.recordNodeOnlineEvent() } + if oldNodeUnschedulable != node.Spec.Unschedulable { + if node.Spec.Unschedulable { + kl.recordNodeUnschedulableEvent() + } else { + kl.recordNodeSchedulableEvent() + } + oldNodeUnschedulable = node.Spec.Unschedulable + } _, err = kl.kubeClient.Nodes().UpdateStatus(node) return err }