mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-11-04 04:38:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			165 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import realm
 | 
						|
from realm import Realm
 | 
						|
import random
 | 
						|
from realm import BaseProfile
 | 
						|
 | 
						|
class VRProfile(BaseProfile):
 | 
						|
    """
 | 
						|
    Virtual Router profile
 | 
						|
    """
 | 
						|
    def __init__(self,
 | 
						|
                 local_realm,
 | 
						|
                 debug=False):
 | 
						|
        super().__init__(local_realm=local_realm,
 | 
						|
                         debug=debug)
 | 
						|
        self.vr_eid = None
 | 
						|
        self.created_rdds = []
 | 
						|
        self.created_vrcxs = []
 | 
						|
 | 
						|
        # self.vrcx_data = {
 | 
						|
        #     'shelf': 1,
 | 
						|
        #     'resource': 1,
 | 
						|
        #     'vr-name': None,
 | 
						|
        #     'local_dev': None,  # outer rdd
 | 
						|
        #     'remote_dev': None,  # inner rdd
 | 
						|
        #     "x": 200+ran,
 | 
						|
        #     "y": 0,
 | 
						|
        #     "width": 10,
 | 
						|
        #     "height": 10,
 | 
						|
        #     'flags': 0,
 | 
						|
        #     "subnets": None,
 | 
						|
        #     "nexthop": None,
 | 
						|
        #     "vrrp_ip": "0.0.0.0"
 | 
						|
        # }
 | 
						|
        #
 | 
						|
        # self.set_port_data = {
 | 
						|
        #     "shelf": 1,
 | 
						|
        #     "resource": 1,
 | 
						|
        #     "port": None,
 | 
						|
        #     "ip_addr": None,
 | 
						|
        #     "netmask": None,
 | 
						|
        #     "gateway": None
 | 
						|
        # }
 | 
						|
 | 
						|
    def create_rdd(self,
 | 
						|
                   resource=1,
 | 
						|
                   ip_addr=None,
 | 
						|
                   netmask=None,
 | 
						|
                   gateway=None,
 | 
						|
                   suppress_related_commands_=True,
 | 
						|
                   debug_=False):
 | 
						|
        rdd_data = {
 | 
						|
            "shelf": 1,
 | 
						|
            "resource": resource,
 | 
						|
            "port": "rdd0",
 | 
						|
            "peer_ifname": "rdd1"
 | 
						|
        }
 | 
						|
        # print("creating rdd0")
 | 
						|
        self.json_post("/cli-json/add_rdd",
 | 
						|
                       rdd_data,
 | 
						|
                       )
 | 
						|
 | 
						|
        rdd_data = {
 | 
						|
            "shelf": 1,
 | 
						|
            "resource": resource,
 | 
						|
            "port": "rdd1",
 | 
						|
            "peer_ifname": "rdd0"
 | 
						|
        }
 | 
						|
        # print("creating rdd1")
 | 
						|
        # self.json_post("/cli-json/add_rdd",
 | 
						|
        #                rdd_data,
 | 
						|
        #                suppress_related_commands_=suppress_related_commands_,
 | 
						|
        #                debug_=debug_)
 | 
						|
        #
 | 
						|
        # self.set_port_data["port"] = "rdd0"
 | 
						|
        # self.set_port_data["ip_addr"] = gateway
 | 
						|
        # self.set_port_data["netmask"] = netmask
 | 
						|
        # self.set_port_data["gateway"] = gateway
 | 
						|
        # self.json_post("/cli-json/set_port",
 | 
						|
        #                self.set_port_data,
 | 
						|
        #                suppress_related_commands_=suppress_related_commands_,
 | 
						|
        #                debug_=debug_)
 | 
						|
        #
 | 
						|
        # self.set_port_data["port"] = "rdd1"
 | 
						|
        # self.set_port_data["ip_addr"] = ip_addr
 | 
						|
        # self.set_port_data["netmask"] = netmask
 | 
						|
        # self.set_port_data["gateway"] = gateway
 | 
						|
        # self.json_post("/cli-json/set_port",
 | 
						|
        #                self.set_port_data,
 | 
						|
        #                suppress_related_commands_=suppress_related_commands_,
 | 
						|
        #                debug_=debug_)
 | 
						|
        #
 | 
						|
        # self.created_rdds.append("rdd0")
 | 
						|
        # self.created_rdds.append("rdd1")
 | 
						|
 | 
						|
    def create_vrcx(self,
 | 
						|
                    resource=1,
 | 
						|
                    local_dev=None,
 | 
						|
                    remote_dev=None,
 | 
						|
                    subnets=None,
 | 
						|
                    nexthop=None,
 | 
						|
                    flags=0,
 | 
						|
                    suppress_related_commands_=True,
 | 
						|
                    debug_=False):
 | 
						|
        if self.vr_name is not None:
 | 
						|
            self.vrcx_data["resource"] = resource
 | 
						|
            self.vrcx_data["vr_name"] = self.vr_name
 | 
						|
            self.vrcx_data["local_dev"] = local_dev
 | 
						|
            self.vrcx_data["remote_dev"] = remote_dev
 | 
						|
            self.vrcx_data["subnets"] = subnets
 | 
						|
            self.vrcx_data["nexthop"] = nexthop
 | 
						|
            self.vrcx_data["flags"] = flags
 | 
						|
            self.json_post("/cli-json/add_vrcx",
 | 
						|
                           self.vrcx_data,
 | 
						|
                           suppress_related_commands_=suppress_related_commands_,
 | 
						|
                           debug_=debug_)
 | 
						|
        else:
 | 
						|
            raise ValueError("vr_name must be set. Current name: %s" % self.vr_name)
 | 
						|
 | 
						|
    def create(self,
 | 
						|
               vr_name=None,
 | 
						|
               upstream_port=None,
 | 
						|
               upstream_subnets=[],
 | 
						|
               upstream_nexthop=None,
 | 
						|
               local_subnets=[],
 | 
						|
               local_nexthop=None,
 | 
						|
               debug=False,
 | 
						|
               suppress_related_commands_=True):
 | 
						|
        # Create vr
 | 
						|
        if self.debug:
 | 
						|
            debug = True
 | 
						|
        if vr_name is None:
 | 
						|
            raise ValueError("vr_name must be set. Current name: %s" % vr_name)
 | 
						|
        self.vr_eid = self.parent_realm.name_to_eid(vr_name)
 | 
						|
        from random import randint
 | 
						|
        x = randint(100, 200)
 | 
						|
        y = randint(100, 200)
 | 
						|
        self.add_vr_data = {
 | 
						|
            "alias": self.vr_eid[2],
 | 
						|
            "shelf": 1,
 | 
						|
            "resource": self.vr_eid[1],
 | 
						|
            "x": x,
 | 
						|
            "y": y,
 | 
						|
            "width": 250,
 | 
						|
            "height": 250,
 | 
						|
            "flags": 0
 | 
						|
        }
 | 
						|
 | 
						|
        self.json_post("/cli-json/add_vr", self.add_vr_data)
 | 
						|
        # # Create 1 rdd pair
 | 
						|
        # self.create_rdd(resource=resource, ip_addr=rdd_ip, gateway=rdd_gateway,
 | 
						|
        #                 netmask=rdd_netmask)  # rdd0, rdd1; rdd0 gateway, rdd1 connected to network
 | 
						|
        #
 | 
						|
        # # connect rdds and upstream
 | 
						|
        # self.create_vrcx(resource=resource, local_dev=upstream_port, remote_dev="NA", subnets=upstream_subnets,
 | 
						|
        #                  nexthop=upstream_nexthop,
 | 
						|
        #                  flags=257, suppress_related_commands_=suppress_related_commands_, debug_=debug)
 | 
						|
        # self.create_vrcx(resource=resource, local_dev="rdd0", remote_dev="rdd1", subnets=local_subnets,
 | 
						|
        #                  nexthop=local_nexthop,
 | 
						|
        #                  flags=1, suppress_related_commands_=suppress_related_commands_, debug_=debug)
 | 
						|
 | 
						|
    def cleanup(self, resource, delay=0.03):
 | 
						|
        # TODO: Cleanup for VRProfile
 | 
						|
        pass
 | 
						|
 | 
						|
# |