Remove Octoprint log spam when printer endpoint status code is 409 (#42985)
This commit is contained in:
parent
54f3d9078a
commit
b790c2e79d
1 changed files with 34 additions and 7 deletions
|
@ -193,8 +193,9 @@ class OctoPrintAPI:
|
||||||
self.job_last_reading = [{}, None]
|
self.job_last_reading = [{}, None]
|
||||||
self.job_available = False
|
self.job_available = False
|
||||||
self.printer_available = False
|
self.printer_available = False
|
||||||
self.available = False
|
|
||||||
self.printer_error_logged = False
|
self.printer_error_logged = False
|
||||||
|
self.available = False
|
||||||
|
self.available_error_logged = False
|
||||||
self.job_error_logged = False
|
self.job_error_logged = False
|
||||||
self.bed = bed
|
self.bed = bed
|
||||||
self.number_of_tools = number_of_tools
|
self.number_of_tools = number_of_tools
|
||||||
|
@ -240,13 +241,30 @@ class OctoPrintAPI:
|
||||||
self.printer_last_reading[0] = response.json()
|
self.printer_last_reading[0] = response.json()
|
||||||
self.printer_last_reading[1] = time.time()
|
self.printer_last_reading[1] = time.time()
|
||||||
self.printer_available = True
|
self.printer_available = True
|
||||||
|
|
||||||
self.available = self.printer_available and self.job_available
|
self.available = self.printer_available and self.job_available
|
||||||
if self.available:
|
if self.available:
|
||||||
self.job_error_logged = False
|
self.job_error_logged = False
|
||||||
self.printer_error_logged = False
|
self.printer_error_logged = False
|
||||||
|
self.available_error_logged = False
|
||||||
|
|
||||||
return response.json()
|
return response.json()
|
||||||
except Exception as conn_exc: # pylint: disable=broad-except
|
|
||||||
log_string = "Failed to update OctoPrint status. Error: %s" % conn_exc
|
except requests.ConnectionError as exc_con:
|
||||||
|
log_string = "Failed to connect to Octoprint server. Error: %s" % exc_con
|
||||||
|
|
||||||
|
if not self.available_error_logged:
|
||||||
|
_LOGGER.error(log_string)
|
||||||
|
self.job_available = False
|
||||||
|
self.printer_available = False
|
||||||
|
self.available_error_logged = True
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
except requests.HTTPError as ex_http:
|
||||||
|
status_code = ex_http.response.status_code
|
||||||
|
|
||||||
|
log_string = "Failed to update OctoPrint status. Error: %s" % ex_http
|
||||||
# Only log the first failure
|
# Only log the first failure
|
||||||
if endpoint == "job":
|
if endpoint == "job":
|
||||||
log_string = f"Endpoint: job {log_string}"
|
log_string = f"Endpoint: job {log_string}"
|
||||||
|
@ -255,12 +273,19 @@ class OctoPrintAPI:
|
||||||
self.job_error_logged = True
|
self.job_error_logged = True
|
||||||
self.job_available = False
|
self.job_available = False
|
||||||
elif endpoint == "printer":
|
elif endpoint == "printer":
|
||||||
|
if (
|
||||||
|
status_code == 409
|
||||||
|
): # octoprint returns HTTP 409 when printer is not connected (and many other states)
|
||||||
|
self.printer_available = False
|
||||||
|
else:
|
||||||
log_string = f"Endpoint: printer {log_string}"
|
log_string = f"Endpoint: printer {log_string}"
|
||||||
if not self.printer_error_logged:
|
if not self.printer_error_logged:
|
||||||
_LOGGER.error(log_string)
|
_LOGGER.error(log_string)
|
||||||
self.printer_error_logged = True
|
self.printer_error_logged = True
|
||||||
self.printer_available = False
|
self.printer_available = False
|
||||||
|
|
||||||
self.available = False
|
self.available = False
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def update(self, sensor_type, end_point, group, tool=None):
|
def update(self, sensor_type, end_point, group, tool=None):
|
||||||
|
@ -268,6 +293,7 @@ class OctoPrintAPI:
|
||||||
response = self.get(end_point)
|
response = self.get(end_point)
|
||||||
if response is not None:
|
if response is not None:
|
||||||
return get_value_from_json(response, sensor_type, group, tool)
|
return get_value_from_json(response, sensor_type, group, tool)
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
@ -279,6 +305,7 @@ def get_value_from_json(json_dict, sensor_type, group, tool):
|
||||||
if sensor_type in json_dict[group]:
|
if sensor_type in json_dict[group]:
|
||||||
if sensor_type == "target" and json_dict[sensor_type] is None:
|
if sensor_type == "target" and json_dict[sensor_type] is None:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
return json_dict[group][sensor_type]
|
return json_dict[group][sensor_type]
|
||||||
|
|
||||||
if tool is not None:
|
if tool is not None:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue