mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-04 04:38:02 +00:00
addition of query for port cols, beginning of acquiring port cols
This commit is contained in:
@@ -619,18 +619,18 @@ class LFCliBase:
|
|||||||
#================ Pandas Dataframe Functions ======================================
|
#================ Pandas Dataframe Functions ======================================
|
||||||
|
|
||||||
#takes any dataframe and returns the specified outputfile format of it
|
#takes any dataframe and returns the specified outputfile format of it
|
||||||
def df_to_file(dataframe, outputfile_name_path):
|
def df_to_file(dataframe=None, output_f=None):
|
||||||
df = dataframe
|
df = dataframe
|
||||||
if output_file_type == 'hdf':
|
if output_f == 'hdf':
|
||||||
return df.to_hdf(output_file_type, 'table', append=True)
|
return df.to_hdf(output_f, 'table', append=True)
|
||||||
if output_file_type == 'parquet':
|
if output_f == 'parquet':
|
||||||
return df.to_parquet(output_file_type, engine='pyarrow')
|
return df.to_parquet(output_f, engine='pyarrow')
|
||||||
if output_file_type == 'png':
|
if output_f == 'png':
|
||||||
fig = df.plot().get_figure()
|
fig = df.plot().get_figure()
|
||||||
return fig.savefig(output_file_type)
|
return fig.savefig(output_f)
|
||||||
if output_file_type.lower() in ['excel', 'xlsx'] or report_file.split('.')[-1] == 'xlsx':
|
if output_f.lower() in ['excel', 'xlsx']:
|
||||||
return df.to_excel(output_file_type, index=False)
|
return df.to_excel(output_f, index=False)
|
||||||
if output_file_type == 'df':
|
if output_f == 'df':
|
||||||
return df
|
return df
|
||||||
supported_formats = ['csv', 'json', 'stata', 'pickle','html']
|
supported_formats = ['csv', 'json', 'stata', 'pickle','html']
|
||||||
#for format in supported_formats:
|
#for format in supported_formats:
|
||||||
@@ -638,7 +638,10 @@ class LFCliBase:
|
|||||||
# return exec('df.to_' + x + '("'+file_name'")')
|
# return exec('df.to_' + x + '("'+file_name'")')
|
||||||
|
|
||||||
#takes any format of a file and returns a dataframe of it
|
#takes any format of a file and returns a dataframe of it
|
||||||
def file_to_df(file_type, file_name):
|
def file_to_df(file_name=None):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def compare_two_df(dataframe_one=None,dataframe_two=None):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def append_df_to_file(dataframe, file_name):
|
def append_df_to_file(dataframe, file_name):
|
||||||
|
|||||||
@@ -1160,7 +1160,8 @@ class L3CXProfile(LFCliBase):
|
|||||||
def monitor(self,
|
def monitor(self,
|
||||||
duration_sec=60,
|
duration_sec=60,
|
||||||
monitor_interval=1,
|
monitor_interval=1,
|
||||||
col_names=None,
|
layer3_cols=None,
|
||||||
|
port_mgr_cols=None,
|
||||||
created_cx=None,
|
created_cx=None,
|
||||||
monitor=True,
|
monitor=True,
|
||||||
report_file=None,
|
report_file=None,
|
||||||
@@ -1182,7 +1183,7 @@ class L3CXProfile(LFCliBase):
|
|||||||
raise ValueError("Monitor needs a list of Layer 3 connections")
|
raise ValueError("Monitor needs a list of Layer 3 connections")
|
||||||
if (monitor_interval is None) or (monitor_interval < 1):
|
if (monitor_interval is None) or (monitor_interval < 1):
|
||||||
raise ValueError("L3CXProfile::monitor wants monitor_interval >= 1 second")
|
raise ValueError("L3CXProfile::monitor wants monitor_interval >= 1 second")
|
||||||
if col_names is None:
|
if layer3_cols is None:
|
||||||
raise ValueError("L3CXProfile::monitor wants a list of column names to monitor")
|
raise ValueError("L3CXProfile::monitor wants a list of column names to monitor")
|
||||||
if output_format is not None:
|
if output_format is not None:
|
||||||
if output_format.lower() != report_file.split('.')[-1]:
|
if output_format.lower() != report_file.split('.')[-1]:
|
||||||
@@ -1204,9 +1205,9 @@ class L3CXProfile(LFCliBase):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
#================== Step 1, set column names and header row
|
#================== Step 1, set column names and header row
|
||||||
col_names=[self.replace_special_char(x) for x in col_names]
|
layer3_cols=[self.replace_special_char(x) for x in layer3_cols]
|
||||||
fields = ",".join(col_names)
|
fields = ",".join(layer3_cols)
|
||||||
header_row=col_names
|
header_row=layer3_cols
|
||||||
header_row.insert(0,'Timestamp milliseconds')
|
header_row.insert(0,'Timestamp milliseconds')
|
||||||
header_row.insert(0,'Timestamp')
|
header_row.insert(0,'Timestamp')
|
||||||
|
|
||||||
@@ -1229,9 +1230,16 @@ class L3CXProfile(LFCliBase):
|
|||||||
#csvwriter.writerow(arguments)
|
#csvwriter.writerow(arguments)
|
||||||
csvwriter.writerow(header_row)
|
csvwriter.writerow(header_row)
|
||||||
|
|
||||||
|
#get shelf,resource,port to json_get from /port
|
||||||
|
cx_a_side_list=[]
|
||||||
|
|
||||||
|
port_info_dict=self.json_get("/endp/%s?fields=eid" % (cx_a_side_list))
|
||||||
|
|
||||||
|
|
||||||
# for x in range(0,int(round(iterations,0))):
|
# for x in range(0,int(round(iterations,0))):
|
||||||
while datetime.datetime.now() < end_time:
|
while datetime.datetime.now() < end_time:
|
||||||
response = self.json_get("/endp/%s?fields=%s" % (created_cx, fields))
|
response = self.json_get("/endp/%s?fields=%s" % (created_cx, fields))
|
||||||
|
#get info from port manager with list of values from cx_a_side_list
|
||||||
if "endpoint" not in response or response is None:
|
if "endpoint" not in response or response is None:
|
||||||
print(response)
|
print(response)
|
||||||
raise ValueError("Cannot find columns requested to be searched. Exiting script, please retry.")
|
raise ValueError("Cannot find columns requested to be searched. Exiting script, please retry.")
|
||||||
@@ -1273,7 +1281,9 @@ class L3CXProfile(LFCliBase):
|
|||||||
|
|
||||||
#here, do df to final report file output
|
#here, do df to final report file output
|
||||||
if output_format.lower() != 'csv':
|
if output_format.lower() != 'csv':
|
||||||
dataframe_output = self.file_to_df(report_file, output_format)
|
dataframe_output = self.file_to_df(file_name=report_file)
|
||||||
|
file_output_file = self.df_to_file(dataframe=dataframe_output, output_f=output_format)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -137,7 +137,8 @@ def main():
|
|||||||
optional.append({'name':'--a_min','help':'--a_min bps rate minimum for side_a', 'default':256000})
|
optional.append({'name':'--a_min','help':'--a_min bps rate minimum for side_a', 'default':256000})
|
||||||
optional.append({'name':'--b_min','help':'--b_min bps rate minimum for side_b', 'default':256000})
|
optional.append({'name':'--b_min','help':'--b_min bps rate minimum for side_b', 'default':256000})
|
||||||
optional.append({'name':'--test_duration','help':'--test_duration sets the duration of the test', 'default':"2m"})
|
optional.append({'name':'--test_duration','help':'--test_duration sets the duration of the test', 'default':"2m"})
|
||||||
optional.append({'name':'--col_names','help':'Columns wished to be monitor', 'default':['name','tx bytes','rx bytes']})
|
optional.append({'name':'--layer3_cols','help':'Columns wished to be monitored from layer 3 endpoint tab', 'default':['name','tx bytes','rx bytes']})
|
||||||
|
optional.append({'name':'--port_mgr_cols','help':'Columns wished to be monitored from port manager tab', 'default':['ap','ip','rx bytes']})
|
||||||
optional.append({'name':'--compared_report','help':'report path and file which is wished to be compared with new report', 'default':None})
|
optional.append({'name':'--compared_report','help':'report path and file which is wished to be compared with new report', 'default':None})
|
||||||
parser = LFCliBase.create_basic_argparse(
|
parser = LFCliBase.create_basic_argparse(
|
||||||
prog='test_ipv4_variable_time.py',
|
prog='test_ipv4_variable_time.py',
|
||||||
@@ -179,13 +180,14 @@ python3 ./test_ipv4_variable_time.py
|
|||||||
--output_format csv
|
--output_format csv
|
||||||
--report_file ~/Documents/results.csv (Example of csv file output - please use another extension for other file formats)
|
--report_file ~/Documents/results.csv (Example of csv file output - please use another extension for other file formats)
|
||||||
--compared_report ~/Documents/results_prev.csv (Example of csv file retrieval - please use another extension for other file formats) - UNDER CONSTRUCTION
|
--compared_report ~/Documents/results_prev.csv (Example of csv file retrieval - please use another extension for other file formats) - UNDER CONSTRUCTION
|
||||||
--col_names 'name','tx bytes','rx bytes','dropped' (column names from the GUI to print on report - please read below to know what to put here according to preferences)
|
--layer3_cols'name','tx bytes','rx bytes','dropped' (column names from the GUI to print on report - please read below to know what to put here according to preferences)
|
||||||
|
--port_mgr_cols 'ap','ip' (column names from the GUI to print on report - please read below to know what to put here according to preferences)
|
||||||
--debug
|
--debug
|
||||||
===============================================================================
|
===============================================================================
|
||||||
** FURTHER INFORMATION **
|
** FURTHER INFORMATION **
|
||||||
Using the col_names flag:
|
Using the col_names flag:
|
||||||
|
|
||||||
Currently the output function does not support inputting the columns in col_names the way they are displayed in the GUI. This quirk is under construction. To output
|
Currently the output function does not support inputting the columns in layer3_cols the way they are displayed in the GUI. This quirk is under construction. To output
|
||||||
certain columns in the GUI in your final report, please match the according GUI column display to it's counterpart to have the columns correctly displayed in
|
certain columns in the GUI in your final report, please match the according GUI column display to it's counterpart to have the columns correctly displayed in
|
||||||
your report.
|
your report.
|
||||||
|
|
||||||
@@ -277,7 +279,7 @@ python3 ./test_ipv4_variable_time.py
|
|||||||
print('Defaulting to csv data file output type, naming it data.csv.')
|
print('Defaulting to csv data file output type, naming it data.csv.')
|
||||||
report_f= str(path)+'/data.csv'
|
report_f= str(path)+'/data.csv'
|
||||||
output='csv'
|
output='csv'
|
||||||
if self.debug:
|
if args.debug:
|
||||||
print("Saving report data in ... " + report_f)
|
print("Saving report data in ... " + report_f)
|
||||||
else:
|
else:
|
||||||
report_f=args.report_file
|
report_f=args.report_file
|
||||||
@@ -328,17 +330,25 @@ python3 ./test_ipv4_variable_time.py
|
|||||||
except:
|
except:
|
||||||
raise ValueError('Try setting the upstream port flag if your device does not have an eth1 port')
|
raise ValueError('Try setting the upstream port flag if your device does not have an eth1 port')
|
||||||
|
|
||||||
if type(args.col_names) is not list:
|
if type(args.layer3_cols) is not list:
|
||||||
col_names=list(args.col_names.split(","))
|
layer3_cols=list(args.layer3_cols.split(","))
|
||||||
#send col names here to file to reformat
|
#send col names here to file to reformat
|
||||||
else:
|
else:
|
||||||
col_names = args.col_names
|
layer3_cols = args.layer3_cols
|
||||||
#send col names here to file to reformat
|
#send col names here to file to reformat
|
||||||
|
if type(args.port_mgr_cols) is not list:
|
||||||
|
port_mgr_cols=list(args.port_mgr_cols.split(","))
|
||||||
|
#send col names here to file to reformat
|
||||||
|
else:
|
||||||
|
port_mgr_cols=args.port_mgr_cols
|
||||||
if args.debug:
|
if args.debug:
|
||||||
print("Column names are...")
|
print("Layer 3 Endp column names are...")
|
||||||
print(col_names)
|
print(layer3_cols)
|
||||||
|
print("Port Manager column names are...")
|
||||||
|
print(port_mgr_cols)
|
||||||
|
|
||||||
ip_var_test.l3cxprofile.monitor(col_names=col_names,
|
ip_var_test.l3cxprofile.monitor(layer3_cols=layer3_cols,
|
||||||
|
port_mgr_cols=port_mgr_cols,
|
||||||
report_file=report_f,
|
report_file=report_f,
|
||||||
duration_sec=ip_var_test.parse_time(args.test_duration).total_seconds(),
|
duration_sec=ip_var_test.parse_time(args.test_duration).total_seconds(),
|
||||||
created_cx= layer3connections,
|
created_cx= layer3connections,
|
||||||
|
|||||||
Reference in New Issue
Block a user