mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-13 22:05:59 +00:00
daemonset handle DeletedFinalStateUnknown
This commit is contained in:
parent
9784dff94e
commit
4d6fee74d0
@ -168,11 +168,7 @@ func NewDaemonSetsController(podInformer framework.SharedIndexInformer, kubeClie
|
|||||||
glog.V(4).Infof("Updating daemon set %s", oldDS.Name)
|
glog.V(4).Infof("Updating daemon set %s", oldDS.Name)
|
||||||
dsc.enqueueDaemonSet(curDS)
|
dsc.enqueueDaemonSet(curDS)
|
||||||
},
|
},
|
||||||
DeleteFunc: func(obj interface{}) {
|
DeleteFunc: dsc.deleteDaemonset,
|
||||||
ds := obj.(*extensions.DaemonSet)
|
|
||||||
glog.V(4).Infof("Deleting daemon set %s", ds.Name)
|
|
||||||
dsc.enqueueDaemonSet(ds)
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -217,6 +213,24 @@ func NewDaemonSetsControllerFromClient(kubeClient clientset.Interface, resyncPer
|
|||||||
return dsc
|
return dsc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dsc *DaemonSetsController) deleteDaemonset(obj interface{}) {
|
||||||
|
ds, ok := obj.(*extensions.DaemonSet)
|
||||||
|
if !ok {
|
||||||
|
tombstone, ok := obj.(cache.DeletedFinalStateUnknown)
|
||||||
|
if !ok {
|
||||||
|
glog.Errorf("Couldn't get object from tombstone %+v", obj)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ds, ok = tombstone.Obj.(*extensions.DaemonSet)
|
||||||
|
if !ok {
|
||||||
|
glog.Errorf("Tombstone contained object that is not a DaemonSet %+v", obj)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
glog.V(4).Infof("Deleting daemon set %s", ds.Name)
|
||||||
|
dsc.enqueueDaemonSet(ds)
|
||||||
|
}
|
||||||
|
|
||||||
// Run begins watching and syncing daemon sets.
|
// Run begins watching and syncing daemon sets.
|
||||||
func (dsc *DaemonSetsController) Run(workers int, stopCh <-chan struct{}) {
|
func (dsc *DaemonSetsController) Run(workers int, stopCh <-chan struct{}) {
|
||||||
defer utilruntime.HandleCrash()
|
defer utilruntime.HandleCrash()
|
||||||
|
@ -158,6 +158,18 @@ func syncAndValidateDaemonSets(t *testing.T, manager *DaemonSetsController, ds *
|
|||||||
validateSyncDaemonSets(t, podControl, expectedCreates, expectedDeletes)
|
validateSyncDaemonSets(t, podControl, expectedCreates, expectedDeletes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDeleteFinalStateUnknown(t *testing.T) {
|
||||||
|
manager, _ := newTestController()
|
||||||
|
addNodes(manager.nodeStore.Store, 0, 1, nil)
|
||||||
|
ds := newDaemonSet("foo")
|
||||||
|
// DeletedFinalStateUnknown should queue the embedded DS if found.
|
||||||
|
manager.deleteDaemonset(cache.DeletedFinalStateUnknown{Key: "foo", Obj: ds})
|
||||||
|
enqueuedKey, _ := manager.queue.Get()
|
||||||
|
if enqueuedKey.(string) != "default/foo" {
|
||||||
|
t.Errorf("expected delete of DeletedFinalStateUnknown to enqueue the daemonset but found: %#v", enqueuedKey)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// DaemonSets without node selectors should launch pods on every node.
|
// DaemonSets without node selectors should launch pods on every node.
|
||||||
func TestSimpleDaemonSetLaunchesPods(t *testing.T) {
|
func TestSimpleDaemonSetLaunchesPods(t *testing.T) {
|
||||||
manager, podControl := newTestController()
|
manager, podControl := newTestController()
|
||||||
|
Loading…
Reference in New Issue
Block a user