mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-03 04:07:52 +00:00
Added VRProfile for creating virtual routers and vr connections
This commit is contained in:
126
py-json/realm.py
126
py-json/realm.py
@@ -678,6 +678,10 @@ class Realm(LFCliBase):
|
|||||||
vap_prof = VAPProfile(lfclient_url=self.lfclient_url, local_realm=self, debug_=self.debug)
|
vap_prof = VAPProfile(lfclient_url=self.lfclient_url, local_realm=self, debug_=self.debug)
|
||||||
return vap_prof
|
return vap_prof
|
||||||
|
|
||||||
|
def new_vr_profile(self):
|
||||||
|
vap_prof = VRProfile(lfclient_url=self.lfclient_url, local_realm=self, debug_=self.debug)
|
||||||
|
return vap_prof
|
||||||
|
|
||||||
def new_http_profile(self):
|
def new_http_profile(self):
|
||||||
http_prof = HTTPProfile(self.lfclient_host, self.lfclient_port, local_realm=self, debug_=self.debug)
|
http_prof = HTTPProfile(self.lfclient_host, self.lfclient_port, local_realm=self, debug_=self.debug)
|
||||||
return http_prof
|
return http_prof
|
||||||
@@ -1805,6 +1809,128 @@ class VAPProfile(LFCliBase):
|
|||||||
# And now see if they are gone
|
# And now see if they are gone
|
||||||
LFUtils.wait_until_ports_disappear(base_url=self.lfclient_url, port_list=desired_ports)
|
LFUtils.wait_until_ports_disappear(base_url=self.lfclient_url, port_list=desired_ports)
|
||||||
|
|
||||||
|
class VRProfile(LFCliBase):
|
||||||
|
def __init__(self, lfclient_url, local_realm, ssid="NA", ssid_pass="NA", mode=0, debug_=False):
|
||||||
|
self.debug = debug_
|
||||||
|
self.lfclient_url = lfclient_url
|
||||||
|
self.ssid = ssid
|
||||||
|
self.ssid_pass = ssid_pass
|
||||||
|
self.mode = mode
|
||||||
|
self.local_realm = local_realm
|
||||||
|
self.vr_name = None
|
||||||
|
|
||||||
|
self.created_rdds = []
|
||||||
|
self.created_vrcxs = []
|
||||||
|
|
||||||
|
self.add_vr_data = {
|
||||||
|
"alias": None,
|
||||||
|
"shelf": 1,
|
||||||
|
"resource": 1,
|
||||||
|
"x": 100,
|
||||||
|
"y": 100,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250,
|
||||||
|
"flags": 0
|
||||||
|
}
|
||||||
|
|
||||||
|
self.vrcx_data = {
|
||||||
|
'shelf': 1,
|
||||||
|
'resource': 1,
|
||||||
|
'vr-name': None,
|
||||||
|
'local_dev': None, # outer rdd
|
||||||
|
'remote_dev': None, # inner rdd
|
||||||
|
"x": 0,
|
||||||
|
"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, ip_addr, netmask, gateway, suppress_related_commands_=True, debug_=False):
|
||||||
|
rdd_data = {
|
||||||
|
"shelf": 1,
|
||||||
|
"resource": resource,
|
||||||
|
"port": "rdd0",
|
||||||
|
"peer_ifname": "rdd1"
|
||||||
|
}
|
||||||
|
# print("creating rdd0")
|
||||||
|
self.local_realm.json_post("add_rdd", rdd_data, suppress_related_commands_=suppress_related_commands_, debug_=debug_)
|
||||||
|
|
||||||
|
rdd_data = {
|
||||||
|
"shelf": 1,
|
||||||
|
"resource": resource,
|
||||||
|
"port": "rdd1",
|
||||||
|
"peer_ifname": "rdd0"
|
||||||
|
}
|
||||||
|
# print("creating rdd1")
|
||||||
|
self.local_realm.json_post("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.local_realm.json_post("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.local_realm.json_post("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, local_dev, remote_dev, subnets, nexthop, flags, 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.local_realm.json_post("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, resource, upstream_port="eth1", debug=False,
|
||||||
|
upstream_subnets="20.20.20.0/24", upstream_nexthop="20.20.20.1",
|
||||||
|
local_subnets="10.40.0.0/24", local_nexthop="10.40.3.198",
|
||||||
|
rdd_ip="20.20.20.20", rdd_gateway="20.20.20.1", rdd_netmask="255.255.255.0",
|
||||||
|
suppress_related_commands_=True):
|
||||||
|
|
||||||
|
# Create vr
|
||||||
|
if self.vr_name is not None:
|
||||||
|
self.add_vr_data["alias"] = self.vr_name
|
||||||
|
self.local_realm.json_post("add_vr", self.add_vr_data, debug_=debug)
|
||||||
|
else:
|
||||||
|
raise ValueError("vr_name must be set. Current name: %s" % self.vr_name)
|
||||||
|
# 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
|
||||||
|
|
||||||
class FIOCXProfile(LFCliBase):
|
class FIOCXProfile(LFCliBase):
|
||||||
def __init__(self, lfclient_host, lfclient_port, local_realm, debug_=False):
|
def __init__(self, lfclient_host, lfclient_port, local_realm, debug_=False):
|
||||||
super().__init__(lfclient_host, lfclient_port, debug_, _halt_on_error=True)
|
super().__init__(lfclient_host, lfclient_port, debug_, _halt_on_error=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user