@@ -112,9 +112,9 @@ func NewDaemon() (Daemon, error) {
112112
113113 // Pass configuration from daemon to the plugin
114114 pluginConfig := map [string ]interface {}{
115- "ENABLE_IP_OVER_IB" : daemonConfig .EnableIPOverIB ,
116- "DEFAULT_LIMITED_PARTITION" : daemonConfig .DefaultLimitedPartition ,
117- "ENABLE_INDEX0_FOR_PRIMARY_PKEY" : daemonConfig .EnableIndex0ForPrimaryPkey ,
115+ "ENABLE_IP_OVER_IB" : daemonConfig .EnableIPOverIB ,
116+ "DEFAULT_LIMITED_PARTITION" : daemonConfig .DefaultLimitedPartition ,
117+ "ENABLE_INDEX0_FOR_PRIMARY_PKEY" : daemonConfig .EnableIndex0ForPrimaryPkey ,
118118 }
119119 if err := smClient .SetConfig (pluginConfig ); err != nil {
120120 log .Warn ().Msgf ("Failed to set configuration on subnet manager plugin: %v" , err )
@@ -206,6 +206,14 @@ func (d *daemon) getIbSriovNetwork(networkID string) (string, *utils.IbSriovCniS
206206 }
207207 log .Debug ().Msgf ("networkName attachment %v" , netAttInfo )
208208
209+ // Check if this network's resource is managed by this daemon
210+ resourceName := netAttInfo .Annotations ["k8s.v1.cni.cncf.io/resourceName" ]
211+ if resourceName == "" || ! d .config .IsManagedResource (resourceName ) {
212+ // TODO(Nik) dev qol, check if someone else manages this resource or if it is orphan
213+ // checkResourceOwner(networkNamespace, networkName)
214+ return "" , nil , fmt .Errorf ("network %s uses resource %s which is not managed by this daemon" , networkName , resourceName )
215+ }
216+
209217 networkSpec := make (map [string ]interface {})
210218 err = json .Unmarshal ([]byte (netAttInfo .Spec .Config ), & networkSpec )
211219 if err != nil {
@@ -245,9 +253,10 @@ func getPodNetworkInfo(netName string, pod *kapi.Pod, netMap networksMap) (*podN
245253}
246254
247255// addPodFinalizer adds the GUID cleanup finalizer to a pod
248- func (d * daemon ) addPodFinalizer (pod * kapi.Pod ) error {
256+ func (d * daemon ) addPodFinalizer (pod * kapi.Pod , networkName string ) error {
249257 return wait .ExponentialBackoff (backoffValues , func () (bool , error ) {
250- if err := d .kubeClient .AddFinalizerToPod (pod , PodGUIDFinalizer ); err != nil {
258+ podFinalizer := fmt .Sprintf ("%s-%s" , PodGUIDFinalizer , networkName )
259+ if err := d .kubeClient .AddFinalizerToPod (pod , podFinalizer ); err != nil {
251260 log .Warn ().Msgf ("failed to add finalizer to pod %s/%s: %v" ,
252261 pod .Namespace , pod .Name , err )
253262 return false , nil
@@ -257,9 +266,10 @@ func (d *daemon) addPodFinalizer(pod *kapi.Pod) error {
257266}
258267
259268// removePodFinalizer removes the GUID cleanup finalizer from a pod
260- func (d * daemon ) removePodFinalizer (pod * kapi.Pod ) error {
269+ func (d * daemon ) removePodFinalizer (pod * kapi.Pod , networkName string ) error {
261270 return wait .ExponentialBackoff (backoffValues , func () (bool , error ) {
262- if err := d .kubeClient .RemoveFinalizerFromPod (pod , PodGUIDFinalizer ); err != nil {
271+ podFinalizer := fmt .Sprintf ("%s-%s" , PodGUIDFinalizer , networkName )
272+ if err := d .kubeClient .RemoveFinalizerFromPod (pod , podFinalizer ); err != nil {
263273 log .Warn ().Msgf ("failed to remove finalizer from pod %s/%s: %v" ,
264274 pod .Namespace , pod .Name , err )
265275 return false , nil
@@ -557,7 +567,7 @@ func (d *daemon) AddPeriodicUpdate() {
557567 }
558568
559569 // Add finalizer to pod since it now has a GUID that needs cleanup
560- if err = d .addPodFinalizer (pi .pod ); err != nil {
570+ if err = d .addPodFinalizer (pi .pod , networkName ); err != nil {
561571 log .Error ().Msgf ("failed to add finalizer to pod %s/%s: %v" , pi .pod .Namespace , pi .pod .Name , err )
562572 continue
563573 } else {
@@ -728,7 +738,7 @@ func (d *daemon) DeletePeriodicUpdate() {
728738
729739 // Remove finalizer from pod after successfully cleaning up GUID
730740 if pod , exists := podGUIDMap [guidAddr .String ()]; exists {
731- if err = d .removePodFinalizer (pod ); err != nil {
741+ if err = d .removePodFinalizer (pod , networkName ); err != nil {
732742 log .Error ().Msgf ("failed to remove finalizer from pod %s/%s: %v" , pod .Namespace , pod .Name , err )
733743 } else {
734744 log .Info ().Msgf ("removed finalizer %s from pod %s/%s" ,
0 commit comments