emit event when controller delete pod

This commit is contained in:
jiangyaoguo
2015-11-28 00:36:39 +08:00
parent 7a8b9e64bd
commit 91e0bbebfb
4 changed files with 20 additions and 9 deletions

View File

@@ -231,7 +231,7 @@ type PodControlInterface interface {
// CreatePodsOnNode creates a new pod accorting to the spec on the specified node.
CreatePodsOnNode(nodeName, namespace string, template *api.PodTemplateSpec, object runtime.Object) error
// DeletePod deletes the pod identified by podID.
DeletePod(namespace string, podID string) error
DeletePod(namespace string, podID string, object runtime.Object) error
}
// RealPodControl is the default implementation of PodControlInterface.
@@ -324,8 +324,19 @@ func (r RealPodControl) createPods(nodeName, namespace string, template *api.Pod
return nil
}
func (r RealPodControl) DeletePod(namespace, podID string) error {
return r.KubeClient.Pods(namespace).Delete(podID, nil)
func (r RealPodControl) DeletePod(namespace string, podID string, object runtime.Object) error {
meta, err := api.ObjectMetaFor(object)
if err != nil {
return fmt.Errorf("object does not have ObjectMeta, %v", err)
}
if err := r.KubeClient.Pods(namespace).Delete(podID, nil); err != nil {
r.Recorder.Eventf(object, api.EventTypeWarning, "FailedDelete", "Error deleting: %v", err)
return fmt.Errorf("unable to delete pods: %v", err)
} else {
glog.V(4).Infof("Controller %v deleted pod %v", meta.Name, podID)
r.Recorder.Eventf(object, api.EventTypeNormal, "SuccessfulDelete", "Deleted pod: %v", podID)
}
return nil
}
type FakePodControl struct {
@@ -357,13 +368,13 @@ func (f *FakePodControl) CreatePodsOnNode(nodeName, namespace string, template *
return nil
}
func (f *FakePodControl) DeletePod(namespace string, podName string) error {
func (f *FakePodControl) DeletePod(namespace string, podID string, object runtime.Object) error {
f.Lock()
defer f.Unlock()
if f.Err != nil {
return f.Err
}
f.DeletePodName = append(f.DeletePodName, podName)
f.DeletePodName = append(f.DeletePodName, podID)
return nil
}