mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-03 12:18:00 +00:00
realm.py: WIP:
- refer to lfclient not mgr in variable names - refactoring to use flag names defined in py-json/LANforge
This commit is contained in:
131
py-json/realm.py
131
py-json/realm.py
@@ -4,23 +4,24 @@ import time
|
|||||||
|
|
||||||
from LANforge import LFRequest
|
from LANforge import LFRequest
|
||||||
from LANforge import LFUtils
|
from LANforge import LFUtils
|
||||||
|
from LANforge import set_port
|
||||||
|
from LANforge import add_sta
|
||||||
|
|
||||||
class Realm:
|
class Realm:
|
||||||
|
|
||||||
def __init__(self, mgr_url="http://localhost:8080"):
|
def __init__(self, lfclient_url="http://localhost:8080"):
|
||||||
self.mgrURL = mgr_url
|
self.lfclient_url = lfclient_url
|
||||||
|
|
||||||
def cx_list(self):
|
def cx_list(self):
|
||||||
#Returns json response from webpage of all layer 3 cross connects
|
#Returns json response from webpage of all layer 3 cross connects
|
||||||
lf_r = LFRequest.LFRequest(self.mgrURL + "/cx")
|
lf_r = LFRequest.LFRequest(self.lfclient_url + "/cx")
|
||||||
response = lf_r.getAsJson(True)
|
response = lf_r.getAsJson(True)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def station_list(self):
|
def station_list(self):
|
||||||
#Returns list of all stations with "sta" in their name
|
#Returns list of all stations with "sta" in their name
|
||||||
sta_list = []
|
sta_list = []
|
||||||
lf_r = LFRequest.LFRequest(self.mgrURL + "/port/list?fields=_links,alias,device,port+type")
|
lf_r = LFRequest.LFRequest(self.lfclient_url + "/port/list?fields=_links,alias,device,port+type")
|
||||||
response = lf_r.getAsJson(True)
|
response = lf_r.getAsJson(True)
|
||||||
for x in range(len(response['interfaces'])):
|
for x in range(len(response['interfaces'])):
|
||||||
for k,v in response['interfaces'][x].items():
|
for k,v in response['interfaces'][x].items():
|
||||||
@@ -32,7 +33,7 @@ class Realm:
|
|||||||
def vap_list(self):
|
def vap_list(self):
|
||||||
#Returns list of all VAPs with "vap" in their name
|
#Returns list of all VAPs with "vap" in their name
|
||||||
sta_list = []
|
sta_list = []
|
||||||
lf_r = LFRequest.LFRequest(self.mgrURL + "/port/list?fields=_links,alias,device,port+type")
|
lf_r = LFRequest.LFRequest(self.lfclient_url + "/port/list?fields=_links,alias,device,port+type")
|
||||||
response = lf_r.getAsJson(True)
|
response = lf_r.getAsJson(True)
|
||||||
|
|
||||||
for x in range(len(response['interfaces'])):
|
for x in range(len(response['interfaces'])):
|
||||||
@@ -46,7 +47,7 @@ class Realm:
|
|||||||
def find_ports_like(self, pattern=""):
|
def find_ports_like(self, pattern=""):
|
||||||
#Searches for ports that match a given pattern and returns a list of names
|
#Searches for ports that match a given pattern and returns a list of names
|
||||||
device_name_list = []
|
device_name_list = []
|
||||||
lf_r = LFRequest.LFRequest(self.mgrURL + "/port/list?fields=_links,alias,device,port+type")
|
lf_r = LFRequest.LFRequest(self.lfclient_url + "/port/list?fields=_links,alias,device,port+type")
|
||||||
response = lf_r.getAsJson(True)
|
response = lf_r.getAsJson(True)
|
||||||
#print(response)
|
#print(response)
|
||||||
for x in range(len(response['interfaces'])):
|
for x in range(len(response['interfaces'])):
|
||||||
@@ -86,9 +87,12 @@ class Realm:
|
|||||||
print(e)
|
print(e)
|
||||||
return matched_list
|
return matched_list
|
||||||
|
|
||||||
class CXProfile:
|
def newCxProfile(self):
|
||||||
|
cxprof = CXProfile(self.lfclient_url)
|
||||||
|
return cxprof
|
||||||
|
|
||||||
def __init__(self, mgr_url="http://localhost:8080"):
|
class CXProfile:
|
||||||
|
def __init__(self, mgr_url):
|
||||||
self.mgr_url = mgr_url
|
self.mgr_url = mgr_url
|
||||||
self.post_data = []
|
self.post_data = []
|
||||||
|
|
||||||
@@ -159,40 +163,97 @@ class CXProfile:
|
|||||||
time.sleep(sleep_time)
|
time.sleep(sleep_time)
|
||||||
|
|
||||||
|
|
||||||
|
# use the station profile to set the combination of features you want on your stations
|
||||||
|
# once this combination is configured, build the stations with the build(resource, radio, number) call
|
||||||
|
# build() calls will fail if the station already exists. Please survey and clean your resource
|
||||||
|
# before calling build()
|
||||||
|
# survey = Realm.findStations(resource=1)
|
||||||
|
# Realm.removeStations(survey)
|
||||||
|
# profile = Realm.newStationProfile()
|
||||||
|
# profile.set...
|
||||||
|
# profile.build(resource, radio, 64)
|
||||||
|
#
|
||||||
class StationProfile:
|
class StationProfile:
|
||||||
|
def __init__(self, lfclient_url, ssid="NA", ssid_pass="NA", security="open", start_id="", mode=0, up=True, dhcp=True):
|
||||||
def __init__(self, mgr_url="localhost:8080", ssid="NA", ssid_pass="NA", security="open", start_id="", mode=0, up=True, dhcp=True):
|
self.lfclient_url = lfclient_url
|
||||||
self.mgrURL = mgr_url
|
|
||||||
self.ssid = ssid
|
self.ssid = ssid
|
||||||
self.ssid_pass = ssid_pass
|
self.ssid_pass = ssid_pass
|
||||||
self.mode = mode
|
self.mode = mode
|
||||||
self.up = up
|
self.up = up
|
||||||
self.dhcp = dhcp
|
self.dhcp = dhcp
|
||||||
self.security = security
|
self.security = security
|
||||||
|
self.COMMANDS = ["add_sta", "set_port"]
|
||||||
def build(self, resource_radio, num_stations):
|
self.desired_add_sta_flags = ["wpa2_enable", "80211u_enable", "create_admin_down"]
|
||||||
#Checks for errors in initialization values and creates specified number of stations using init parameters
|
self.add_sta_data = {
|
||||||
try:
|
"shelf": 1,
|
||||||
resource = resource_radio[0: resource_radio.index(".")]
|
"resource": 1,
|
||||||
name = resource_radio[resource_radio.index(".") + 1:]
|
"radio": None,
|
||||||
if name.index(".") >= 0:
|
"sta_name": None,
|
||||||
radio_name = name[name.index(".")+1 : ]
|
"ssid": None,
|
||||||
except ValueError as e:
|
"key": None,
|
||||||
print(e)
|
"mode": 0,
|
||||||
|
"mac": "xx:xx:xx:xx:*:xx",
|
||||||
lf_r = LFRequest.LFRequest(self.mgrURL + "/cli-json/add_sta")
|
"flags": 0, # (0x400 + 0x20000 + 0x1000000000) # create admin down
|
||||||
for num in range(num_stations):
|
|
||||||
data = {
|
|
||||||
"shelf":1,
|
|
||||||
"resource":resource,
|
|
||||||
"radio":radio_name,
|
|
||||||
"sta_name":f"sta{num:05}",
|
|
||||||
"ssid":self.ssid,
|
|
||||||
"key":self.ssid_pass,
|
|
||||||
"mode":1,
|
|
||||||
"mac":"xx:xx:xx:xx:*:xx",
|
|
||||||
"flags":
|
|
||||||
}
|
}
|
||||||
|
self.desired_set_port_flags = ["down", "dhcp"]
|
||||||
|
self.set_port_data = {
|
||||||
|
"shelf": 1,
|
||||||
|
"resource": 1,
|
||||||
|
"port": None,
|
||||||
|
"current_flags": 0,
|
||||||
|
"interest": 0, #(0x2 + 0x4000 + 0x800000) # current, dhcp, down,
|
||||||
|
}
|
||||||
|
|
||||||
|
def setParam(self, cli_name, param_name, param_val):
|
||||||
|
# we have to check what the param name is
|
||||||
|
if (cli_name is None) or (cli_name == ""):
|
||||||
|
return
|
||||||
|
if (param_name is None) or (param_name == ""):
|
||||||
|
return
|
||||||
|
if cli_name not in self.COMMANDS:
|
||||||
|
print(f"Command name name [{cli_name}] not defined in {self.COMMANDS}")
|
||||||
|
return
|
||||||
|
if cli_name == "add_sta":
|
||||||
|
if (param_name not in add_sta.add_sta_flags) or (param_name not in add_sta.add_sta_modes):
|
||||||
|
print(f"Parameter name [{param_name}] not defined in add_sta.py")
|
||||||
|
return
|
||||||
|
elif cli_name == "set_port":
|
||||||
|
if (param_name not in set_port.set_port_current_flags) or (param_name not in set_port.set_port_cmd_flags):
|
||||||
|
print(f"Parameter name [{param_name}] not defined in set_port.py")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Checks for errors in initialization values and creates specified number of stations using init parameters
|
||||||
|
def build(self, resource, resource_radio, num_stations):
|
||||||
|
# try:
|
||||||
|
# resource = resource_radio[0: resource_radio.index(".")]
|
||||||
|
# name = resource_radio[resource_radio.index(".") + 1:]
|
||||||
|
# if name.index(".") >= 0:
|
||||||
|
# radio_name = name[name.index(".")+1 : ]
|
||||||
|
# print(f"Building {num_stations} on radio {resource}.{radio_name}")
|
||||||
|
# except ValueError as e:
|
||||||
|
# print(e)
|
||||||
|
|
||||||
|
# create stations down, do set_port on them, then set stations up
|
||||||
|
self.add_sta_data["flags"] = ( 0
|
||||||
|
+ (0, add_sta.add_sta_flags["wpa_enable"])[self.desired_add_sta_flags["wpa_enable"]]
|
||||||
|
+ (0, add_sta.add_sta_flags["wep_enable"])[self.desired_add_sta_flags["wpa_enable"]]
|
||||||
|
+ (0, add_sta.add_sta_flags["wpa2_enable "])[self.desired_add_sta_flags["wpa_enable"]]
|
||||||
|
+ (0, add_sta.add_sta_flags["ht40_disable"])[self.desired_add_sta_flags["wpa_enable"]]
|
||||||
|
|
||||||
|
)
|
||||||
|
lf_r = LFRequest.LFRequest(self.lfclient_url + "/cli-json/add_sta")
|
||||||
|
for num in range(num_stations):
|
||||||
|
# data = {
|
||||||
|
# "shelf":1,
|
||||||
|
# "resource":resource,
|
||||||
|
# "radio":radio_name,
|
||||||
|
# "sta_name":f"sta{num:05}",
|
||||||
|
# "ssid":self.ssid,
|
||||||
|
# "key":self.ssid_pass,
|
||||||
|
# "mode":1,
|
||||||
|
# "mac":"xx:xx:xx:xx:*:xx",
|
||||||
|
# "flags": self.add
|
||||||
|
# }
|
||||||
lf_r.addPostData(data)
|
lf_r.addPostData(data)
|
||||||
json_response = lf_r.jsonPost(True)
|
json_response = lf_r.jsonPost(True)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user