in azurelinuxagent/ga/exthandlers.py [0:0]
def report_ext_handlers_status(self, goal_state_changed=False, vm_agent_update_status=None,
vm_agent_supports_fast_track=False):
"""
Go through handler_state dir, collect and report status.
Returns the status it reported, or None if an error occurred.
"""
try:
vm_status = VMStatus(status="Ready", message="Guest Agent is running",
gs_aggregate_status=self.__gs_aggregate_status,
vm_agent_update_status=vm_agent_update_status)
vm_status.vmAgent.set_supports_fast_track(vm_agent_supports_fast_track)
handlers_to_report = []
# In case of Unsupported error, report the status of the handlers in the VM
if self.__last_gs_unsupported():
handlers_to_report = self.__get_handlers_on_file_system(goal_state_changed)
# If GoalState supported, report the status of extension handlers that were requested by the GoalState
elif not self.__last_gs_unsupported() and self.ext_handlers is not None:
handlers_to_report = self.ext_handlers
for ext_handler in handlers_to_report:
try:
self.report_ext_handler_status(vm_status, ext_handler, goal_state_changed)
except ExtensionError as error:
add_event(op=WALAEventOperation.ExtensionProcessing, is_success=False, message=ustr(error))
logger.verbose("Report vm agent status")
try:
self.protocol.report_vm_status(vm_status)
logger.verbose("Completed vm agent status report successfully")
self.report_status_error_state.reset()
except ProtocolNotFoundError as error:
self.report_status_error_state.incr()
message = "Failed to report vm agent status: {0}".format(error)
logger.verbose(message)
except ProtocolError as error:
self.report_status_error_state.incr()
message = "Failed to report vm agent status: {0}".format(error)
add_event(AGENT_NAME,
version=CURRENT_VERSION,
op=WALAEventOperation.ExtensionProcessing,
is_success=False,
message=message)
if self.report_status_error_state.is_triggered():
message = "Failed to report vm agent status for more than {0}" \
.format(self.report_status_error_state.min_timedelta)
add_event(AGENT_NAME,
version=CURRENT_VERSION,
op=WALAEventOperation.ReportStatusExtended,
is_success=False,
message=message)
self.report_status_error_state.reset()
return vm_status
except Exception as error:
msg = u"Failed to report status: {0}".format(textutil.format_exception(error))
logger.warn(msg)
add_event(AGENT_NAME,
version=CURRENT_VERSION,
op=WALAEventOperation.ReportStatus,
is_success=False,
message=msg)
return None