@@ -27,6 +27,7 @@ def table_name():
2727 '''Table name'''
2828 return 'interfaces'
2929
30+ # pylint: disable=too-many-statements
3031 def get (self , ** kwargs ):
3132 """Handling state outside of regular filters"""
3233 state = kwargs .pop ('state' , '' )
@@ -38,11 +39,16 @@ def get(self, **kwargs):
3839 user_query = kwargs .pop ('query_str' , '' )
3940 vlan = kwargs .pop ('vlan' , '' )
4041 portmode = kwargs .pop ('portmode' , '' )
42+ macaddr : List [str ] = kwargs .pop ('macaddr' , [])
43+ bond : List [str ] = kwargs .pop ('bond' , [])
4144
4245 addnl_fields = []
4346 if vrf :
4447 master .extend (vrf )
4548
49+ if bond :
50+ master .extend (bond )
51+
4652 fields = self .schema .get_display_fields (columns )
4753 self ._add_active_to_fields (kwargs .get ('view' , self .iobj .view ), fields ,
4854 addnl_fields )
@@ -51,6 +57,29 @@ def get(self, **kwargs):
5157 user_query_cols = self ._get_user_query_cols (user_query )
5258 addnl_fields += [x for x in user_query_cols if x not in addnl_fields ]
5359
60+ if vlan or portmode or ('vlan' in columns and
61+ 'portmode' not in addnl_fields + fields ):
62+ addnl_fields .append ('portmode' )
63+ if 'vlan' not in fields + addnl_fields :
64+ addnl_fields .append ('vlan' )
65+
66+ if state and 'state' not in addnl_fields + fields :
67+ addnl_fields .append ('state' )
68+
69+ if macaddr and 'macaddr' not in fields + addnl_fields :
70+ addnl_fields .append ('macaddr' )
71+
72+ if any (x in addnl_fields + fields
73+ for x in ['portmode' , 'vlanList' , 'vlan' ]):
74+ req_pm_fields = ['namespace' , 'hostname' , 'state' , 'adminState' ,
75+ 'type' , 'ipAddressList' , 'ip6AddressList' ]
76+ addnl_fields .extend ([f for f in req_pm_fields
77+ if f not in addnl_fields + fields ])
78+
79+ if bond :
80+ if 'master' not in fields + addnl_fields :
81+ addnl_fields .append ('master' )
82+
5483 if not ifname and iftype and iftype != ["all" ]:
5584 df = super ().get (type = iftype , master = master , columns = fields ,
5685 addnl_fields = addnl_fields , ** kwargs )
@@ -75,9 +104,9 @@ def get(self, **kwargs):
75104 if vlan or "vlanList" in fields :
76105 df = self ._add_vlanlist (df , ** kwargs )
77106
78- if state or portmode :
107+ if state or portmode or macaddr :
79108 query_str = build_query_str ([], self .schema , state = state ,
80- portmode = portmode )
109+ portmode = portmode , macaddr = macaddr )
81110
82111 df = df .query (query_str ).reset_index (drop = True )
83112
@@ -728,7 +757,7 @@ def _add_portmode(self, df: pd.DataFrame, **kwargs):
728757 return df .drop (columns = ['portmode_y' , 'vlan_y' ],
729758 errors = 'ignore' )
730759
731- def _add_vlanlist (self , df : pd .DataFrame , ** kwargs ) -> pd .DataFrame () :
760+ def _add_vlanlist (self , df : pd .DataFrame , ** kwargs ) -> pd .DataFrame :
732761 """Add list of active, unpruned VLANs on trunked ports
733762
734763 :param df[pd.Dataframe]: The dataframe to add vlanList to
0 commit comments