@@ -325,6 +325,28 @@ func (c *Controller) networkManagedByMe(networkSelectors crdtypes.NetworkSelecto
325325 switch networkSelector .NetworkSelectionType {
326326 case crdtypes .DefaultNetwork :
327327 return c .IsDefault (), nil
328+ case crdtypes .PrimaryUserDefinedNetworks :
329+ if ! c .IsPrimaryNetwork () {
330+ return false , nil
331+ }
332+ if networkSelector .PrimaryUserDefinedNetworkSelector == nil {
333+ return false , fmt .Errorf ("empty primary user defined network selector" )
334+ }
335+ selectedNads , err = c .getNetAttachDefsByNamespace (& networkSelector .PrimaryUserDefinedNetworkSelector .NamespaceSelector )
336+ if err != nil {
337+ return false , err
338+ }
339+ case crdtypes .SecondaryUserDefinedNetworks :
340+ if ! c .IsSecondary () {
341+ return false , nil
342+ }
343+ if networkSelector .SecondaryUserDefinedNetworkSelector == nil {
344+ return false , fmt .Errorf ("empty secondary user defined network selector" )
345+ }
346+ selectedNads , err = c .getNetAttachDefsBySelectors (& networkSelector .SecondaryUserDefinedNetworkSelector .NamespaceSelector , & networkSelector .SecondaryUserDefinedNetworkSelector .NetworkSelector )
347+ if err != nil {
348+ return false , err
349+ }
328350 case crdtypes .ClusterUserDefinedNetworks :
329351 if networkSelector .ClusterUserDefinedNetworkSelector == nil {
330352 return false , fmt .Errorf ("empty cluster user defined network selector" )
@@ -388,6 +410,28 @@ func (c *Controller) getAllNetworkQoSes() ([]*networkqosapi.NetworkQoS, error) {
388410 return nqoses , nil
389411}
390412
413+ func (c * Controller ) getNetAttachDefsByNamespace (namespaceSelector * metav1.LabelSelector ) ([]* nadv1.NetworkAttachmentDefinition , error ) {
414+ var selectedNads []* nadv1.NetworkAttachmentDefinition
415+ if namespaceSelector != nil && namespaceSelector .Size () > 0 {
416+ nsSelector , err := metav1 .LabelSelectorAsSelector (namespaceSelector )
417+ if err != nil {
418+ return nil , fmt .Errorf ("invalid namespace selector %v: %v" , namespaceSelector .String (), err )
419+ }
420+ namespaces , err := c .nqosNamespaceLister .List (nsSelector )
421+ if err != nil {
422+ return nil , fmt .Errorf ("failed to list namespaces: %v" , err )
423+ }
424+ for _ , ns := range namespaces {
425+ nads , err := c .nadLister .NetworkAttachmentDefinitions (ns .Name ).List (labels .Everything ())
426+ if err != nil {
427+ return nil , fmt .Errorf ("failed to list NADs in namespace %s: %v" , ns .Name , err )
428+ }
429+ selectedNads = append (selectedNads , nads ... )
430+ }
431+ }
432+ return selectedNads , nil
433+ }
434+
391435func (c * Controller ) getNetAttachDefsBySelectors (namespaceSelector , nadSelector * metav1.LabelSelector ) ([]* nadv1.NetworkAttachmentDefinition , error ) {
392436 if nadSelector == nil || nadSelector .Size () == 0 {
393437 return nil , fmt .Errorf ("empty network selector" )
0 commit comments