GBP: learn from ARP and L2 packets
[vpp.git] / test / vpp_papi_provider.py
index c21d8c2..9955518 100644 (file)
@@ -174,11 +174,15 @@ class VppPapiProvider(object):
             return self.api(apifn, d)
         return f
 
-    def __getattr__(self, name):
+    def __getattribute__(self, name):
         try:
-            return getattr(self, name)
-        except:
-            return self.factory(name, getattr(self.papi, name))
+            method = super(VppPapiProvider, self).__getattribute__(name)
+        except AttributeError:
+            method = self.factory(name, getattr(self.papi, name))
+            # lazily load the method so we don't need to call factory
+            # again for this name.
+            setattr(self, name, method)
+        return method
 
     def connect(self):
         """Connect the API to VPP"""
@@ -3711,14 +3715,15 @@ class VppPapiProvider(object):
         """ GBP contract Dump """
         return self.api(self.papi.gbp_contract_dump, {})
 
-    def gbp_vxlan_tunnel_add(self, vni, bd_rd_id, mode):
+    def gbp_vxlan_tunnel_add(self, vni, bd_rd_id, mode, src):
         """ GBP VXLAN tunnel add """
         return self.api(self.papi.gbp_vxlan_tunnel_add,
                         {
                             'tunnel': {
                                 'vni': vni,
                                 'mode': mode,
-                                'bd_rd_id': bd_rd_id
+                                'bd_rd_id': bd_rd_id,
+                                'src': src
                             }
                         })