mirror of
https://github.com/espressif/esp-rainmaker.git
synced 2026-01-19 20:09:06 +00:00
ota: Fix OTA Upgrade error messages and ota service checks handling
Fixed message handling for OTA failure if no internet connectivity Fixed config check for ota service support before uploading image
This commit is contained in:
@@ -312,22 +312,39 @@ def ota_upgrade(vars=None):
|
||||
status = None
|
||||
response = None
|
||||
service_name = None
|
||||
service_read_params = None
|
||||
ota_status = None
|
||||
status_params = None
|
||||
service_obj = None
|
||||
service_config = None
|
||||
node_params = None
|
||||
param_url_to_set = None
|
||||
curr_session = None
|
||||
while retries > 0:
|
||||
try:
|
||||
# If session is expired then to initialise the new session
|
||||
# internet connection is required.
|
||||
node_object = node.Node(node_id, session.Session())
|
||||
# Upload OTA Firwmare Image
|
||||
log.info("Creating service object...")
|
||||
service_obj = service.Service()
|
||||
status, response = service_obj.upload_ota_image(node_object, img_name, base64_fw_img)
|
||||
if status:
|
||||
break
|
||||
if not curr_session:
|
||||
curr_session = session.Session()
|
||||
if not node_object:
|
||||
node_object = node.Node(node_id, curr_session)
|
||||
log.info("Creating service object...")
|
||||
if not service_obj:
|
||||
service_obj = service.Service()
|
||||
log.info("Checking service " + service.OTA_SERVICE_TYPE + " in node config...")
|
||||
print("Checking " + service.OTA_SERVICE_TYPE + " in node config...")
|
||||
if not service_config and not service_name:
|
||||
service_config, service_name = service_obj.verify_service_exists(node_object, service.OTA_SERVICE_TYPE)
|
||||
if not service_config:
|
||||
log.error(service.OTA_SERVICE_TYPE + " not found.")
|
||||
break
|
||||
log.info("Checking service " + service.OTA_SERVICE_TYPE + " in config...Success")
|
||||
log.debug("Service config received: " + str(service_config) +
|
||||
" Service name received: " + str(service_name))
|
||||
print("Uploading OTA Firmware Image...This may take time...")
|
||||
log.info("Uploading OTA Firmware Image...This may take time...")
|
||||
if not status and not response:
|
||||
# Upload OTA Firwmare Image
|
||||
status, response = service_obj.upload_ota_image(node_object, img_name, base64_fw_img)
|
||||
if status:
|
||||
break
|
||||
except SSLError:
|
||||
log.error(SSLError())
|
||||
break
|
||||
@@ -347,47 +364,71 @@ def ota_upgrade(vars=None):
|
||||
log.error('Initialising new session...Failed\n')
|
||||
return
|
||||
|
||||
if status and 'success' in status:
|
||||
log.info('Upload OTA Firmware Image Request...Success')
|
||||
log.debug("Upload OTA Firmware Image Request - Status: " + json.dumps(status) +
|
||||
" Response: " + json.dumps(response))
|
||||
if 'image_url' in response:
|
||||
param_url_to_set = response["image_url"]
|
||||
|
||||
log.info("Checking service " + service.OTA_SERVICE_TYPE + " in node config...")
|
||||
service_config, service_name = service_obj.verify_service_exists(node_object, service.OTA_SERVICE_TYPE)
|
||||
if not service_config:
|
||||
log.error(service.OTA_SERVICE_TYPE + " not found.")
|
||||
log.info("Checking service " + service.OTA_SERVICE_TYPE + " in config...Success")
|
||||
log.debug("Service config received: " + str(service_config) +
|
||||
" Service name received: " + service_name)
|
||||
|
||||
log.info("Getting service params from node config")
|
||||
service_read_params, service_write_params = service_obj.get_service_params(service_config)
|
||||
log.debug("Service params received with read properties: " + str(service_read_params) +
|
||||
" Service params received with write properties: " + str(service_write_params))
|
||||
log.info("Getting node params...")
|
||||
node_params = node_object.get_node_params()
|
||||
log.debug("Node params received: " + json.dumps(node_params))
|
||||
|
||||
ota_start_status = service_obj.start_ota(node_object, node_params, service_name,
|
||||
service_write_params, param_url_to_set)
|
||||
log.debug("OTA status received: " + str(ota_start_status))
|
||||
if not ota_start_status:
|
||||
log.error("Failed to start OTA service...Exiting...")
|
||||
return
|
||||
|
||||
ota_status = service_obj.check_ota_status(node_object, service_name, service_read_params)
|
||||
if ota_status in [None, False]:
|
||||
print("\n")
|
||||
log.error(" Download OTA Firmware Image...Failed.")
|
||||
elif ota_status is True:
|
||||
log.info('Download OTA Firmware Image...Success.')
|
||||
else:
|
||||
if not status or not 'success' in status:
|
||||
print("\n")
|
||||
log.error("Download OTA Firmware Image...Failed.")
|
||||
log.debug('Download OTA Firmware Image...Failed'
|
||||
'status: ' + status + ' response: ' + response)
|
||||
log.error("OTA Upgrade...Failed")
|
||||
log.debug('OTA Upgrade...Failed '
|
||||
'status: ' + str(status) + ' response: ' + str(response))
|
||||
return
|
||||
|
||||
log.info('Upload OTA Firmware Image Request...Success')
|
||||
log.debug("Upload OTA Firmware Image Request - Status: " + json.dumps(status) +
|
||||
" Response: " + json.dumps(response))
|
||||
|
||||
|
||||
retries = MAX_HTTP_CONNECTION_RETRIES
|
||||
ota_start_status = None
|
||||
node_params = None
|
||||
service_read_params = None
|
||||
service_write_params = None
|
||||
ota_status = None
|
||||
|
||||
while retries > 0:
|
||||
try:
|
||||
if 'image_url' in response:
|
||||
param_url_to_set = response["image_url"]
|
||||
|
||||
if not service_read_params and not service_write_params:
|
||||
log.info("Getting service params from node config")
|
||||
service_read_params, service_write_params = service_obj.get_service_params(service_config)
|
||||
log.debug("Service params received with read properties: " + str(service_read_params) +
|
||||
" Service params received with write properties: " + str(service_write_params))
|
||||
log.info("Getting node params...")
|
||||
if not node_params:
|
||||
node_params = node_object.get_node_params()
|
||||
log.debug("Node params received: " + json.dumps(node_params))
|
||||
print("Setting the OTA URL parameter...")
|
||||
|
||||
if not ota_start_status:
|
||||
ota_start_status = service_obj.start_ota(node_object, node_params, service_name,
|
||||
service_write_params, param_url_to_set)
|
||||
log.debug("OTA status received: " + str(ota_start_status))
|
||||
if not ota_start_status:
|
||||
log.error("Failed to start OTA service...Exiting...")
|
||||
break
|
||||
print("Getting OTA Status...")
|
||||
if not ota_status:
|
||||
ota_status = service_obj.check_ota_status(node_object, service_name, service_read_params)
|
||||
break
|
||||
except SSLError:
|
||||
log.error(SSLError())
|
||||
break
|
||||
except (NetworkError, RequestTimeoutError) as conn_err:
|
||||
print(conn_err)
|
||||
log.warn(conn_err)
|
||||
except Exception as node_init_err:
|
||||
log.error(node_init_err)
|
||||
break
|
||||
time.sleep(5)
|
||||
retries -= 1
|
||||
if retries:
|
||||
print("Retries left:", retries)
|
||||
log.info("Retries left: " + str(retries))
|
||||
|
||||
if ota_status in [None, False]:
|
||||
log.error("OTA Upgrade...Failed")
|
||||
log.debug('OTA Upgrade...Failed '
|
||||
'ota_status: ' + str(ota_status))
|
||||
except KeyError as key_err:
|
||||
log.error("Key Error: " + str(key_err))
|
||||
except Exception as ota_err:
|
||||
|
||||
Reference in New Issue
Block a user