Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion npm/namespace.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
package npm

import (
"reflect"

"github.com/Azure/azure-container-networking/log"
"github.com/Azure/azure-container-networking/npm/ipsm"
"github.com/Azure/azure-container-networking/npm/iptm"
Expand Down Expand Up @@ -42,6 +44,15 @@ func isSystemNs(nsObj *corev1.Namespace) bool {
return nsObj.ObjectMeta.Name == util.KubeSystemFlag
}

func isInvalidNamespaceUpdate(oldNsObj, newNsObj *corev1.Namespace) (isInvalidUpdate bool) {
isInvalidUpdate = oldNsObj.ObjectMeta.Name == newNsObj.ObjectMeta.Name &&
newNsObj.ObjectMeta.DeletionTimestamp == nil &&
newNsObj.ObjectMeta.DeletionGracePeriodSeconds == nil
isInvalidUpdate = isInvalidUpdate && reflect.DeepEqual(oldNsObj.ObjectMeta.Labels, newNsObj.ObjectMeta.Labels)

return
}

func (ns *namespace) policyExists(npObj *networkingv1.NetworkPolicy) bool {
if np, exists := ns.rawNpMap[npObj.ObjectMeta.Name]; exists {
if isSamePolicy(np, npObj) {
Expand Down Expand Up @@ -134,8 +145,11 @@ func (npMgr *NetworkPolicyManager) AddNamespace(nsObj *corev1.Namespace) error {

// UpdateNamespace handles updating namespace in ipset.
func (npMgr *NetworkPolicyManager) UpdateNamespace(oldNsObj *corev1.Namespace, newNsObj *corev1.Namespace) error {
var err error
if isInvalidNamespaceUpdate(oldNsObj, newNsObj) {
return nil
}

var err error
oldNsNs, oldNsLabel := "ns-"+oldNsObj.ObjectMeta.Name, oldNsObj.ObjectMeta.Labels
newNsNs, newNsLabel := "ns-"+newNsObj.ObjectMeta.Name, newNsObj.ObjectMeta.Labels
log.Printf(
Expand Down
17 changes: 17 additions & 0 deletions npm/pod.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package npm

import (
"fmt"
"reflect"

"github.com/Azure/azure-container-networking/log"
"github.com/Azure/azure-container-networking/npm/util"
Expand All @@ -20,6 +21,18 @@ func isSystemPod(podObj *corev1.Pod) bool {
return podObj.ObjectMeta.Namespace == util.KubeSystemFlag
}

func isInvalidPodUpdate(oldPodObj, newPodObj *corev1.Pod) (isInvalidUpdate bool) {
isInvalidUpdate = oldPodObj.ObjectMeta.Namespace == newPodObj.ObjectMeta.Namespace &&
oldPodObj.ObjectMeta.Name == newPodObj.ObjectMeta.Name &&
oldPodObj.Status.Phase == newPodObj.Status.Phase &&
oldPodObj.Status.PodIP == newPodObj.Status.PodIP &&
newPodObj.ObjectMeta.DeletionTimestamp == nil &&
newPodObj.ObjectMeta.DeletionGracePeriodSeconds == nil
isInvalidUpdate = isInvalidUpdate && reflect.DeepEqual(oldPodObj.ObjectMeta.Labels, newPodObj.ObjectMeta.Labels)

return
}

// AddPod handles adding pod ip to its label's ipset.
func (npMgr *NetworkPolicyManager) AddPod(podObj *corev1.Pod) error {
if !isValidPod(podObj) {
Expand Down Expand Up @@ -92,6 +105,10 @@ func (npMgr *NetworkPolicyManager) UpdatePod(oldPodObj, newPodObj *corev1.Pod) e
return nil
}

if isInvalidPodUpdate(oldPodObj, newPodObj) {
return nil
}

var (
err error
oldPodObjNs = oldPodObj.ObjectMeta.Namespace
Expand Down