mirror of
				https://github.com/Telecominfraproject/wlan-testing.git
				synced 2025-10-30 18:38:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			183 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			183 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/python3 -u
 | |
| 
 | |
| # Example to upgrade firmware on NOLA-12 testbed:
 | |
| """
 | |
| ./sdk_upgrade_fw.py --testrail-user-id NONE --model wf188n --ap-jumphost-address localhost --ap-jumphost-port 8823 \
 | |
|   --ap-jumphost-password pumpkin77 --ap-jumphost-tty /dev/ttyAP1 --testbed \"NOLA-12\" \
 | |
|   --sdk-base-url https://wlan-portal-svc-ben-testbed.cicd.lab.wlan.tip.build --force-upgrade true
 | |
| 
 | |
|   # Use specified firmware image, not just the latest.
 | |
|   ./sdk_upgrade_fw.py --testrail-user-id NONE --model wf188n --ap-jumphost-address localhost --ap-jumphost-port 8823 \
 | |
|   --ap-jumphost-password pumpkin77 --ap-jumphost-tty /dev/ttyAP1 --testbed \"NOLA-12\" \
 | |
|   --sdk-base-url https://wlan-portal-svc-ben-testbed.cicd.lab.wlan.tip.build --ap-image wf188n-2021-02-01-pending-686c4df --verbose
 | |
| 
 | |
| # Example to upgrade fw on NOLA-01 testbed
 | |
| ./sdk_upgrade_fw.py --testrail-user-id NONE --model ecw5410 --ap-jumphost-address localhost --ap-jumphost-port 8803 \
 | |
|   --ap-jumphost-password pumpkin77 --ap-jumphost-tty /dev/ttyAP1 --testbed \"NOLA-01\" \
 | |
|   --sdk-base-url https://wlan-portal-svc.cicd.lab.wlan.tip.build --verbose
 | |
| 
 | |
| """
 | |
| 
 | |
| import sys
 | |
| 
 | |
| sys.path.append(f'../tests')
 | |
| 
 | |
| from UnitTestBase import *
 | |
| from JfrogHelper import *
 | |
| from cloudsdk import CreateAPProfiles
 | |
| 
 | |
| parser = argparse.ArgumentParser(description="SDK Upgrade Firmware", add_help=False)
 | |
| parser.add_argument("--ap-image", type=str,
 | |
|                     help="Specify an AP image to install.  Will use latest found on jfrog if this is not specified.",
 | |
|                     default=None)
 | |
| base = UnitTestBase("sdk-upgrade-fw", parser)
 | |
| 
 | |
| command_line_args = base.command_line_args
 | |
| 
 | |
| 
 | |
| # cmd line takes precedence over env-vars.
 | |
| cloudSDK_url = command_line_args.sdk_base_url       # was os.getenv('CLOUD_SDK_URL')
 | |
| local_dir = command_line_args.local_dir             # was os.getenv('SANITY_LOG_DIR')
 | |
| report_path = command_line_args.report_path         # was os.getenv('SANITY_REPORT_DIR')
 | |
| report_template = command_line_args.report_template  # was os.getenv('REPORT_TEMPLATE')
 | |
| 
 | |
| ## TestRail Information
 | |
| tr_user = command_line_args.testrail_user_id        # was os.getenv('TR_USER')
 | |
| tr_pw = command_line_args.testrail_user_password    # was os.getenv('TR_PWD')
 | |
| milestoneId = command_line_args.milestone           # was os.getenv('MILESTONE')
 | |
| projectId = command_line_args.testrail_project      # was os.getenv('PROJECT_ID')
 | |
| testRunPrefix = command_line_args.testrail_run_prefix # os.getenv('TEST_RUN_PREFIX')
 | |
| 
 | |
| ##Jfrog credentials
 | |
| jfrog_user = command_line_args.jfrog_user_id        # was os.getenv('JFROG_USER')
 | |
| jfrog_pwd = command_line_args.jfrog_user_password   # was os.getenv('JFROG_PWD')
 | |
| 
 | |
| ##EAP Credentials
 | |
| identity = command_line_args.eap_id                 # was os.getenv('EAP_IDENTITY')
 | |
| ttls_password = command_line_args.ttls_password     # was os.getenv('EAP_PWD')
 | |
| 
 | |
| ## AP Credentials
 | |
| ap_username = command_line_args.ap_username         # was os.getenv('AP_USER')
 | |
| 
 | |
| ##LANForge Information
 | |
| lanforge_ip = command_line_args.lanforge_ip_address
 | |
| lanforge_port = command_line_args.lanforge_port_number
 | |
| lanforge_prefix = command_line_args.lanforge_prefix
 | |
| 
 | |
| build = command_line_args.build_id
 | |
| 
 | |
| logger = base.logger
 | |
| hdlr = base.hdlr
 | |
| 
 | |
| client: TestRail_Client = TestRail_Client(command_line_args)
 | |
| rid = 0 # testrails run-id, not actually supported at the moment.
 | |
| 
 | |
| ###Get Cloud Bearer Token
 | |
| cloud: CloudSDK = CloudSDK(command_line_args)
 | |
| bearer = cloud.get_bearer(cloudSDK_url, cloud_type)
 | |
| 
 | |
| cloud.assert_bad_response = True
 | |
| 
 | |
| model_id = command_line_args.model
 | |
| equipment_id = command_line_args.equipment_id
 | |
| 
 | |
| print("equipment-id: %s"%(equipment_id))
 | |
| 
 | |
| if equipment_id == "-1":
 | |
|     eq_id = ap_ssh_ovsh_nodec(command_line_args, 'id')
 | |
|     print("EQ Id: %s"%(eq_id))
 | |
| 
 | |
|     # Now, query equipment to find something that matches.
 | |
|     eq = cloud.get_customer_equipment(customer_id)
 | |
|     for item in eq:
 | |
|         for e in item['items']:
 | |
|             print(e['id'], "  ", e['inventoryId'])
 | |
|             if e['inventoryId'].endswith("_%s"%(eq_id)):
 | |
|                 print("Found equipment ID: %s  inventoryId: %s"%(e['id'], e['inventoryId']))
 | |
|                 equipment_id = str(e['id'])
 | |
| 
 | |
| if equipment_id == "-1":
 | |
|     print("ERROR:  Could not find equipment-id.")
 | |
|     sys.exit(1)
 | |
| 
 | |
| ###Get Current AP Firmware and upgrade
 | |
| try:
 | |
|     ap_cli_info = ssh_cli_active_fw(command_line_args)
 | |
|     ap_cli_fw = ap_cli_info['active_fw']
 | |
| except Exception as ex:
 | |
|     print(ex)
 | |
|     logging.error(logging.traceback.format_exc())
 | |
|     ap_cli_info = "ERROR"
 | |
|     print("FAILED:  Cannot Reach AP CLI.");
 | |
|     sys.exit(1)
 | |
| 
 | |
| fw_model = ap_cli_fw.partition("-")[0]
 | |
| print('Current Active AP FW from CLI:', ap_cli_fw)
 | |
| 
 | |
| ############################################################################
 | |
| #################### Create Report #########################################
 | |
| ############################################################################
 | |
| 
 | |
| # Create Report Folder for Today
 | |
| today = str(date.today())
 | |
| try:
 | |
|     os.mkdir(report_path + today)
 | |
| except OSError:
 | |
|     print("Creation of the directory %s failed" % report_path)
 | |
| else:
 | |
|     print("Successfully created the directory %s " % report_path)
 | |
| 
 | |
| logger.info('Report data can be found here: ' + report_path + today)
 | |
| 
 | |
| ###Dictionaries
 | |
| ap_image = command_line_args.ap_image
 | |
| 
 | |
| ############################################################################
 | |
| #################### Jfrog Firmware Check ##################################
 | |
| ############################################################################
 | |
| 
 | |
| apModel = model_id
 | |
| cloudModel = cloud_sdk_models[apModel]
 | |
| build = command_line_args.build_id  # ie, pending
 | |
| 
 | |
| if not ap_image:
 | |
|     # then get latest from jfrog
 | |
|     Build: GetBuild = GetBuild(jfrog_user, jfrog_pwd, build)
 | |
|     ap_image = Build.get_latest_image(apModel)
 | |
| 
 | |
| ##Get Bearer Token to make sure its valid (long tests can require re-auth)
 | |
| bearer = cloud.get_bearer(cloudSDK_url, cloud_type)
 | |
| 
 | |
| print("AP MODEL UNDER TEST IS", model_id)
 | |
| try:
 | |
|     ap_cli_info = ssh_cli_active_fw(command_line_args)
 | |
|     ap_cli_fw = ap_cli_info['active_fw']
 | |
| except Exception as ex:
 | |
|     print(ex)
 | |
|     logging.error(logging.traceback.format_exc())
 | |
|     ap_cli_info = "ERROR"
 | |
|     print("Cannot Reach AP CLI, will not test this variant");
 | |
|     sys.exit(1)
 | |
| 
 | |
| fw_model = ap_cli_fw.partition("-")[0]
 | |
| print('Current Active AP FW from CLI:', ap_cli_fw)
 | |
| ###Find Latest FW for Current AP Model and Get FW ID
 | |
| 
 | |
| ##Compare Latest and Current AP FW and Upgrade
 | |
| report_data = None
 | |
| 
 | |
| do_upgrade = cloud.should_upgrade_ap_fw(command_line_args.force_upgrade, command_line_args.skip_upgrade,
 | |
|                                         report_data, ap_image, fw_model, ap_cli_fw, logger)
 | |
| 
 | |
| cloudModel = cloud_sdk_models[model_id]
 | |
| pf = cloud.do_upgrade_ap_fw(command_line_args, report_data, test_cases, client,
 | |
|                             ap_image, cloudModel, model_id, jfrog_user, jfrog_pwd, rid,
 | |
|                             customer_id, equipment_id, logger)
 | |
| 
 | |
| if pf:
 | |
|     sys.exit(0)
 | |
| 
 | |
| sys.exit(1)
 | |
| 
 | |
| 
 | 
