Skip to content

Commit 54de066

Browse files
address review comments
Signed-off-by: Mladjan Gadzic <[email protected]>
1 parent 8d8eafc commit 54de066

File tree

3 files changed

+36
-3
lines changed

3 files changed

+36
-3
lines changed

pkg/daemon/daemon.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,8 @@ func getPodNetworkInfo(netName string, pod *kapi.Pod, netMap networksMap) (*podN
250250
func (d *daemon) allocatePodNetworkGUID(allocatedGUID, podNetworkID string, podUID types.UID, targetPkey string) error {
251251
existingPkey, _ := d.guidPool.Get(allocatedGUID)
252252
if existingPkey != "" {
253+
// This happens when a GUID is being reallocated to a different PKey
254+
// (e.g., pod was rescheduled or network configuration changed)
253255
parsedPkey, err := utils.ParsePKey(existingPkey)
254256
if err != nil {
255257
log.Error().Msgf("failed to parse PKey %s with error: %v", existingPkey, err)

pkg/watcher/handler/pod.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ func (p *podEventHandler) OnAdd(obj interface{}, _ bool) {
6060
return
6161
}
6262

63+
if utils.PodIsRunning(pod) {
64+
log.Debug().Msg("pod is already in running state")
65+
return
66+
}
67+
6368
if utils.PodIsFinished(pod) {
6469
log.Debug().Msg("pod is already in finished state")
6570
return
@@ -93,6 +98,12 @@ func (p *podEventHandler) OnUpdate(oldObj, newObj interface{}) {
9398
return
9499
}
95100

101+
if utils.PodIsRunning(pod) {
102+
log.Debug().Msg("pod is already in running state")
103+
p.retryPods.Delete(pod.UID)
104+
return
105+
}
106+
96107
if utils.PodIsFinished(pod) {
97108
log.Debug().Msg("pod is finished")
98109
p.OnDelete(newObj)

pkg/watcher/handler/pod_test.go

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,17 @@ var _ = Describe("Pod Event Handler", func() {
6565
pod1 := &kapi.Pod{Spec: kapi.PodSpec{HostNetwork: true}}
6666
// Running pod
6767
pod2 := &kapi.Pod{Status: kapi.PodStatus{Phase: kapi.PodRunning}}
68+
// Finished pod (succeeded)
69+
pod3 := &kapi.Pod{Status: kapi.PodStatus{Phase: kapi.PodSucceeded}}
70+
// Finished pod (failed)
71+
pod4 := &kapi.Pod{Status: kapi.PodStatus{Phase: kapi.PodFailed}}
6872
// No network attachment annotation
69-
pod3 := &kapi.Pod{}
73+
pod5 := &kapi.Pod{}
7074
// Not scheduled
71-
pod4 := &kapi.Pod{ObjectMeta: metav1.ObjectMeta{Annotations: map[string]string{
75+
pod6 := &kapi.Pod{ObjectMeta: metav1.ObjectMeta{Annotations: map[string]string{
7276
v1.NetworkAttachmentAnnot: `[{"name":"test"}]`}}}
7377
// Invalid network attachment annotation
74-
pod5 := &kapi.Pod{ObjectMeta: metav1.ObjectMeta{Annotations: map[string]string{
78+
pod7 := &kapi.Pod{ObjectMeta: metav1.ObjectMeta{Annotations: map[string]string{
7579
v1.NetworkAttachmentAnnot: `[invalid]`}},
7680
Spec: kapi.PodSpec{NodeName: "test"}}
7781

@@ -81,6 +85,8 @@ var _ = Describe("Pod Event Handler", func() {
8185
podEventHandler.OnAdd(pod3, true)
8286
podEventHandler.OnAdd(pod4, true)
8387
podEventHandler.OnAdd(pod5, true)
88+
podEventHandler.OnAdd(pod6, true)
89+
podEventHandler.OnAdd(pod7, true)
8490

8591
addMap, _ := podEventHandler.GetResults()
8692
Expect(len(addMap.Items)).To(Equal(0))
@@ -129,6 +135,20 @@ var _ = Describe("Pod Event Handler", func() {
129135
addMap, _ := podEventHandler.GetResults()
130136
Expect(len(addMap.Items)).To(Equal(0))
131137
})
138+
It("On update finished pod should trigger delete", func() {
139+
// Finished pod that should trigger OnDelete
140+
pod := &kapi.Pod{ObjectMeta: metav1.ObjectMeta{Annotations: map[string]string{
141+
v1.NetworkAttachmentAnnot: `[{"name":"test", "namespace":"default", "cni-args":{"guid":"02:00:00:00:02:00:00:00", "mellanox.infiniband.app":"configured"}}]`}},
142+
Status: kapi.PodStatus{Phase: kapi.PodSucceeded}}
143+
144+
podEventHandler := NewPodEventHandler()
145+
podEventHandler.OnUpdate(nil, pod)
146+
147+
// Should be added to delete map
148+
_, delMap := podEventHandler.GetResults()
149+
Expect(len(delMap.Items)).To(Equal(1))
150+
Expect(len(delMap.Items["default_test"].([]*kapi.Pod))).To(Equal(1))
151+
})
132152
})
133153
Context("OnDelete", func() {
134154
It("On delete pod event", func() {

0 commit comments

Comments
 (0)