11import random
2+ import traceback
3+ from inspect import trace
24
35from panos import device , network
6+ from panos .network import Interface
47from tests .live import testlib
58
69
@@ -586,6 +589,44 @@ def cleanup_dependencies(self, fw, state):
586589 except Exception :
587590 pass
588591
592+ class TestVirtualRouterInterfaces (testlib .FwFlow ):
593+ def create_dependencies (self , fw , state ):
594+ # Disable ARE on the device so we're just using VR setup
595+ advanced_routing_engine = device .AdvancedRoutingEngine (enable = False )
596+ fw .add (advanced_routing_engine )
597+ advanced_routing_engine .create ()
598+
599+ state .eth_obj = None
600+ state .eth = testlib .get_available_interfaces (fw , max_interfaces = 7 )[0 ]
601+
602+ state .eth_obj = network .EthernetInterface (
603+ state .eth , "layer3" , testlib .random_ip ("/24" )
604+ )
605+ fw .add (state .eth_obj )
606+ state .eth_obj .create ()
607+
608+ state .obj = network .VirtualRouter (testlib .random_name ())
609+ fw .add (state .obj )
610+
611+ def setup_state_obj (self , fw , state ):
612+ pass
613+
614+ def test_10_set_vr (self , fw , state_map ):
615+ state = self .sanity (fw , state_map )
616+ state .eth_obj .set_virtual_router (state .obj .name )
617+
618+ def cleanup_dependencies (self , fw , state ):
619+ return
620+ try :
621+ state .vr .delete ()
622+ except Exception :
623+ pass
624+
625+ try :
626+ state .eth_obj .delete ()
627+ except Exception :
628+ pass
629+
589630
590631class TestStaticRouteV6 (testlib .FwFlow ):
591632 def create_dependencies (self , fw , state ):
@@ -1659,13 +1700,21 @@ def create_dependencies(self, fw, state):
16591700 state .advanced_routing_engine_obj .create ()
16601701
16611702 state .eth_obj = None
1662- state .eth = testlib .get_available_interfaces (fw )[0 ]
1703+ available_interfaces = testlib .get_available_interfaces (fw , 2 , 7 )
1704+ state .eth = available_interfaces [0 ]
1705+ state .eth_2 = available_interfaces [1 ]
16631706
16641707 state .eth_obj = network .EthernetInterface (
16651708 state .eth , "layer3" , testlib .random_ip ("/24" )
16661709 )
1710+ state .eth_obj_2 = network .EthernetInterface (
1711+ state .eth_2 , "layer3" , testlib .random_ip ("/24" )
1712+ )
16671713 fw .add (state .eth_obj )
1714+ fw .add (state .eth_obj_2 )
16681715 state .eth_obj .create ()
1716+ state .eth_obj_2 .create ()
1717+
16691718
16701719 def setup_state_obj (self , fw , state ):
16711720 vrf = network .Vrf (
@@ -1690,18 +1739,41 @@ def setup_state_obj(self, fw, state):
16901739 )
16911740 lr = network .LogicalRouter (testlib .random_name ())
16921741 lr .add (vrf )
1742+
1743+ lr_2 = network .LogicalRouter (testlib .random_name ())
1744+ vrf2 = network .Vrf (
1745+ "default"
1746+ )
1747+ lr_2 .add (vrf2 )
1748+
16931749 state .obj = lr
1750+ state .obj_2 = lr_2
16941751 fw .add (state .obj )
1752+ fw .add (state .obj_2 )
1753+ state .obj .create ()
1754+ state .obj_2 .create ()
1755+
1756+ def test_10_set_lr_for_interface (self , fw , state_map ):
1757+ """Test setting the LR for an interface instead of the other way around"""
1758+ state = self .sanity (fw , state_map )
1759+ eth : Interface = state .eth_obj_2
1760+ eth .set_logical_router (state .obj_2 , update = True )
16951761
16961762 def update_state_obj (self , fw , state ):
16971763 state .obj .ad_static = random .randint (10 , 240 )
16981764 state .obj .ad_rip = random .randint (10 , 240 )
16991765
17001766 def cleanup_dependencies (self , fw , state ):
17011767 try :
1768+ fw .add (state .obj )
1769+ fw .add (state .obj_2 )
1770+ state .obj .delete ()
1771+ state .obj_2 .delete ()
17021772 state .eth_obj .delete ()
1703- state .advanced_routing_engine_obj .delete ()
1704- except Exception :
1773+ state .eth_obj_2 .delete ()
1774+ except Exception as e :
1775+ print (traceback .format_exc ())
1776+ print (e )
17051777 pass
17061778
17071779
0 commit comments