ssid, bssic, band collection mapping logic improved

Signed-off-by: shivamcandela <shivam.thakur@candelatech.com>
This commit is contained in:
shivamcandela
2021-08-22 00:58:22 +05:30
parent 1dff83d44b
commit 5c76f338f3
3 changed files with 80 additions and 124 deletions

View File

@@ -433,7 +433,8 @@ class APNOS:
def get_iwinfo(self): def get_iwinfo(self):
try: try:
# [['ssid_wpa2_2g', 'wpa', 'something', '2G'], ['ssid_wpa2_2g', 'wpa', 'something', '5G']]
# {'wlan0': ['"ssid_wpa3_p_5g"', '12:34:56:78:90:12', '5G'], 'wlan1': ['"ssid_wpa3_p_2g"','00:03:7F:12:34:56', '5G']}
client = self.ssh_cli_connect() client = self.ssh_cli_connect()
cmd = "iwinfo" cmd = "iwinfo"
if self.mode: if self.mode:
@@ -449,7 +450,7 @@ class APNOS:
band = "2G" band = "2G"
else: else:
band = "5G" band = "5G"
iwinfo_bssid_data[o[i - 1]] = [o[i + 4], band] iwinfo_bssid_data[o[i - 1]] = [o[i+1].replace('"', ''), o[i + 4], band]
client.close() client.close()
except Exception as e: except Exception as e:
iwinfo_bssid_data = False iwinfo_bssid_data = False
@@ -536,5 +537,5 @@ if __name__ == '__main__':
'version': "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/uCentral/edgecore_eap102/20210625-edgecore_eap102-uCentral-trunk-4225122-upgrade.bin" 'version': "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/uCentral/edgecore_eap102/20210625-edgecore_eap102-uCentral-trunk-4225122-upgrade.bin"
} }
var = APNOS(credentials=obj, sdk="2.x") var = APNOS(credentials=obj, sdk="2.x")
x = var.get_ap_version_ucentral() x = var.get_iwinfo()
print(x.split("\n")[1]) print(x)

View File

@@ -96,7 +96,6 @@ class ConfigureController:
gw_host = urlparse(services["endpoints"][0]["uri"]) gw_host = urlparse(services["endpoints"][0]["uri"])
return gw_host return gw_host
def logout(self): def logout(self):
uri = self.build_uri_sec('oauth2/%s' % self.access_token) uri = self.build_uri_sec('oauth2/%s' % self.access_token)
resp = requests.delete(uri, headers=self.make_headers(), verify=False, timeout=100) resp = requests.delete(uri, headers=self.make_headers(), verify=False, timeout=100)
@@ -160,7 +159,7 @@ class UProfileUtility:
def __init__(self, sdk_client=None, controller_data=None): def __init__(self, sdk_client=None, controller_data=None):
if sdk_client is None: if sdk_client is None:
self.sdk_client = UController(controller_data=controller_data) self.sdk_client = Controller(controller_data=controller_data)
self.sdk_client = sdk_client self.sdk_client = sdk_client
self.base_profile_config = { self.base_profile_config = {
"uuid": 1, "uuid": 1,
@@ -168,7 +167,7 @@ class UProfileUtility:
"interfaces": [{ "interfaces": [{
"name": "WAN", "name": "WAN",
"role": "upstream", "role": "upstream",
"services": ["lldp", "dhcp-snooping"], "services": ["ssh", "lldp", "dhcp-snooping"],
"ethernet": [ "ethernet": [
{ {
"select-ports": [ "select-ports": [
@@ -254,6 +253,42 @@ class UProfileUtility:
} }
self.mode = None self.mode = None
def encryption_lookup(self, encryption="psk"):
encryption_mapping = {
"none": "open",
"psk": "wpa",
"psk2": "wpa2",
"sae": "wpa3",
"psk-mixed": "wpa|wpa2",
"sae-mixed": "wpa3",
"wpa": 'wap',
"wpa2": "eap",
"wpa3": "eap",
"wpa-mixed": "eap",
"wpa3-mixed": "sae"
}
if encryption in encryption_mapping.keys():
return encryption_mapping[encryption]
else:
return False
def get_ssid_info(self):
ssid_info = []
for interfaces in self.base_profile_config["interfaces"]:
if "ssids" in interfaces.keys():
for ssid_data in interfaces["ssids"]:
for band in ssid_data["wifi-bands"]:
temp = [ssid_data["name"]]
if ssid_data["encryption"]["proto"] == "none" or "radius" in ssid_data.keys():
temp.append(self.encryption_lookup(encryption=ssid_data["encryption"]["proto"]))
temp.append('[BLANK]')
else:
temp.append(self.encryption_lookup(encryption=ssid_data["encryption"]["proto"]))
temp.append(ssid_data["encryption"]["key"])
temp.append(band)
ssid_info.append(temp)
return ssid_info
def set_radio_config(self, radio_config=None): def set_radio_config(self, radio_config=None):
self.base_profile_config["radios"].append({ self.base_profile_config["radios"].append({
"band": "2G", "band": "2G",
@@ -277,9 +312,7 @@ class UProfileUtility:
self.mode = mode self.mode = mode
if mode == "NAT": if mode == "NAT":
self.base_profile_config['interfaces'][1]['ssids'] = [] self.base_profile_config['interfaces'][1]['ssids'] = []
elif mode == "BRIDGE": elif mode == "BRIDGE":
del self.base_profile_config['interfaces'][1]
self.base_profile_config['interfaces'][0]['ssids'] = [] self.base_profile_config['interfaces'][0]['ssids'] = []
elif mode == "VLAN": elif mode == "VLAN":
del self.base_profile_config['interfaces'][1] del self.base_profile_config['interfaces'][1]
@@ -288,7 +321,7 @@ class UProfileUtility:
wan_section_vlan = { wan_section_vlan = {
"name": "WAN", "name": "WAN",
"role": "upstream", "role": "upstream",
"services": ["lldp"], "services": ["lldp", "ssh", "dhcp-snooping"],
"ethernet": [ "ethernet": [
{ {
"select-ports": [ "select-ports": [
@@ -381,6 +414,7 @@ class UProfileUtility:
uri = self.sdk_client.build_uri("device/" + serial_number + "/configure") uri = self.sdk_client.build_uri("device/" + serial_number + "/configure")
basic_cfg_str = json.dumps(payload) basic_cfg_str = json.dumps(payload)
print(self.base_profile_config)
allure.attach(name="ucentral_config: ", body=str(self.base_profile_config)) allure.attach(name="ucentral_config: ", body=str(self.base_profile_config))
print(self.base_profile_config) print(self.base_profile_config)
resp = requests.post(uri, data=basic_cfg_str, headers=self.sdk_client.make_headers(), resp = requests.post(uri, data=basic_cfg_str, headers=self.sdk_client.make_headers(),
@@ -398,12 +432,13 @@ if __name__ == '__main__':
'password': 'openwifi', 'password': 'openwifi',
} }
obj = Controller(controller_data=controller) obj = Controller(controller_data=controller)
# profile = UProfileUtility(sdk_client=obj) profile = UProfileUtility(sdk_client=obj)
# profile.set_mode(mode="BRIDGE") profile.set_mode(mode="BRIDGE")
# profile.set_radio_config() profile.set_radio_config()
# ssid = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G"], "security": "psk", "security_key": "something", ssid = {"ssid_name": "ssid_wpa2_2g", "appliedRadios": ["2G", "5G"], "security": "psk", "security_key": "something",
# "vlan": 100, "rate-limit": {"ingress-rate": 50, "egress-rate": 50}} "vlan": 100}
# profile.add_ssid(ssid_data=ssid) profile.add_ssid(ssid_data=ssid, radius=False)
# profile.push_config(serial_number="903cb39d6918") profile.push_config(serial_number="903cb39d6918")
print(profile.get_ssid_info())
# print(obj.get_devices()) # print(obj.get_devices())
obj.logout() obj.logout()

View File

@@ -285,116 +285,36 @@ class Fixtures_2x:
else: else:
print("AP is Not Broadcasting Applied Config") print("AP is Not Broadcasting Applied Config")
allure.attach(name="Failed to Apply Config : Active Config in AP : ", body=str(ap_config_active)) allure.attach(name="Failed to Apply Config : Active Config in AP : ", body=str(ap_config_active))
time.sleep(10)
ap_logs = ap_ssh.logread() ap_logs = ap_ssh.logread()
allure.attach(body=ap_logs, name="AP LOgs: ") allure.attach(body=ap_logs, name="AP Logs: ")
ap_wifi_data = ap_ssh.get_interface_details() ssid_info_sdk = instantiate_profile_obj.get_ssid_info()
idx_mapping = {} ap_wifi_data = ap_ssh.get_iwinfo()
ssid_data = []
ap_interfaces = list(ap_wifi_data.keys())
for interface in range(len(ap_interfaces)):
if ap_wifi_data[ap_interfaces[interface]][1] == "none":
ssid = ["ssid_idx=" + str(interface) +
" ssid=" + ap_wifi_data[ap_interfaces[interface]][0] +
" security=OPEN" +
" bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0]
]
idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0],
ap_wifi_data[ap_interfaces[interface]][2],
ap_wifi_data[ap_interfaces[interface]][1],
ap_wifi_data[ap_interfaces[interface]][3][1],
ap_wifi_data[ap_interfaces[interface]][3][0]
]
# pass
if ap_wifi_data[ap_interfaces[interface]][1] == "psk":
ssid = ["ssid_idx=" + str(interface) +
" ssid=" + ap_wifi_data[ap_interfaces[interface]][0] +
" security=WPA" +
" password=" + ap_wifi_data[ap_interfaces[interface]][2] +
" bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0]
]
idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0],
ap_wifi_data[ap_interfaces[interface]][2],
ap_wifi_data[ap_interfaces[interface]][1],
ap_wifi_data[ap_interfaces[interface]][3][1],
ap_wifi_data[ap_interfaces[interface]][3][0]
]
# pass
if ap_wifi_data[ap_interfaces[interface]][1] == "psk-mixed":
ssid = ["ssid_idx=" + str(interface) +
" ssid=" + ap_wifi_data[ap_interfaces[interface]][0] +
" security=WPA|WPA2" +
" password=" + ap_wifi_data[ap_interfaces[interface]][2] +
" bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0]
]
idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0],
ap_wifi_data[ap_interfaces[interface]][2],
ap_wifi_data[ap_interfaces[interface]][1],
ap_wifi_data[ap_interfaces[interface]][3][1],
ap_wifi_data[ap_interfaces[interface]][3][0]
]
# pass
if ap_wifi_data[ap_interfaces[interface]][1] == "psk2":
ssid = ["ssid_idx=" + str(interface) +
" ssid=" + ap_wifi_data[ap_interfaces[interface]][0] +
" security=WPA2" +
" password=" + ap_wifi_data[ap_interfaces[interface]][2] +
" bssid=" + str(ap_wifi_data[ap_interfaces[interface]][3][0]).lower()
]
print(ssid)
idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0],
ap_wifi_data[ap_interfaces[interface]][2],
ap_wifi_data[ap_interfaces[interface]][1],
ap_wifi_data[ap_interfaces[interface]][3][1],
ap_wifi_data[ap_interfaces[interface]][3][0]
]
# pass
if ap_wifi_data[ap_interfaces[interface]][1] == "sae":
ssid = ["ssid_idx=" + str(interface) +
" ssid=" + ap_wifi_data[ap_interfaces[interface]][0] +
" security=WPA3" +
" password=" + ap_wifi_data[ap_interfaces[interface]][2] +
" bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0]
]
idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0],
ap_wifi_data[ap_interfaces[interface]][2],
ap_wifi_data[ap_interfaces[interface]][1],
ap_wifi_data[ap_interfaces[interface]][3][1],
ap_wifi_data[ap_interfaces[interface]][3][0]
]
# pass
if ap_wifi_data[ap_interfaces[interface]][1] == "sae-mixed":
ssid = ["ssid_idx=" + str(interface) +
" ssid=" + ap_wifi_data[ap_interfaces[interface]][0] +
" security=WPA3" +
" password=" + ap_wifi_data[ap_interfaces[interface]][2] +
" bssid=" + ap_wifi_data[ap_interfaces[interface]][3][0]
]
idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0],
ap_wifi_data[ap_interfaces[interface]][2],
ap_wifi_data[ap_interfaces[interface]][1],
ap_wifi_data[ap_interfaces[interface]][3][1],
ap_wifi_data[ap_interfaces[interface]][3][0]
]
# pass
if ap_wifi_data[ap_interfaces[interface]][1] == "wpa2":
ssid = ["ssid_idx=" + str(interface) +
" ssid=" + ap_wifi_data[ap_interfaces[interface]][0] +
" security=EAP-TTLS" +
" bssid=" + str(ap_wifi_data[ap_interfaces[interface]][3][0]).lower()
]
idx_mapping[str(interface)] = [ap_wifi_data[ap_interfaces[interface]][0], for p in ap_wifi_data:
ap_wifi_data[ap_interfaces[interface]][2], for q in ssid_info_sdk:
ap_wifi_data[ap_interfaces[interface]][1], if ap_wifi_data[p][0] == q[0] and ap_wifi_data[p][2] == q[3]:
ap_wifi_data[ap_interfaces[interface]][3][1], q.append(ap_wifi_data[p][1])
ap_wifi_data[ap_interfaces[interface]][3][0]
ssid_data = []
idx_mapping = {}
for interface in range(len(ssid_info_sdk)):
ssid = ["ssid_idx=" + str(interface) +
" ssid=" + ssid_info_sdk[interface][0] +
" security=" + ssid_info_sdk[interface][1].upper() +
" password=" + ssid_info_sdk[interface][2] +
" bssid=" + ssid_info_sdk[interface][4].lower()
]
idx_mapping[str(interface)] = [ssid_info_sdk[interface][0],
ssid_info_sdk[interface][2],
ssid_info_sdk[interface][1],
ssid_info_sdk[interface][3],
ssid_info_sdk[interface][4].lower()
] ]
# pass
ssid_data.append(ssid) ssid_data.append(ssid)
lf_tools.ssid_list.append(ap_wifi_data[ap_interfaces[interface]][0]) lf_tools.ssid_list.append(ssid_info_sdk[interface][0])
lf_tools.dut_idx_mapping = idx_mapping lf_tools.dut_idx_mapping = idx_mapping
print(ssid_data)
lf_tools.update_ssid(ssid_data=ssid_data) lf_tools.update_ssid(ssid_data=ssid_data)
def teardown_session(): def teardown_session():