diff options
Diffstat (limited to 'azurelinuxagent/common/event.py')
-rw-r--r-- | azurelinuxagent/common/event.py | 74 |
1 files changed, 16 insertions, 58 deletions
diff --git a/azurelinuxagent/common/event.py b/azurelinuxagent/common/event.py index 84a439f..108cf00 100644 --- a/azurelinuxagent/common/event.py +++ b/azurelinuxagent/common/event.py @@ -15,29 +15,33 @@ # Requires Python 2.4+ and Openssl 1.0+ # -import atexit -import datetime -import json import os import sys -import time import traceback +import atexit +import json +import time +import datetime +import threading +import platform -from datetime import datetime +from datetime import datetime, timedelta import azurelinuxagent.common.conf as conf import azurelinuxagent.common.logger as logger -from azurelinuxagent.common.exception import EventError +from azurelinuxagent.common.exception import EventError, ProtocolError from azurelinuxagent.common.future import ustr from azurelinuxagent.common.protocol.restapi import TelemetryEventParam, \ + TelemetryEventList, \ TelemetryEvent, \ - get_properties -from azurelinuxagent.common.version import CURRENT_VERSION + set_properties, get_properties +from azurelinuxagent.common.version import DISTRO_NAME, DISTRO_VERSION, \ + DISTRO_CODE_NAME, AGENT_VERSION, \ + CURRENT_AGENT, CURRENT_VERSION _EVENT_MSG = "Event: name={0}, op={1}, message={2}, duration={3}" - class WALAEventOperation: ActivateResourceDisk = "ActivateResourceDisk" AgentBlacklisted = "AgentBlacklisted" @@ -56,14 +60,11 @@ class WALAEventOperation: HttpErrors = "HttpErrors" Install = "Install" InitializeHostPlugin = "InitializeHostPlugin" - Log = "Log" Partition = "Partition" ProcessGoalState = "ProcessGoalState" Provision = "Provision" - GuestState = "GuestState" ReportStatus = "ReportStatus" Restart = "Restart" - SkipUpdate = "SkipUpdate" UnhandledError = "UnhandledError" UnInstall = "UnInstall" Unknown = "Unknown" @@ -74,7 +75,7 @@ class WALAEventOperation: class EventStatus(object): EVENT_STATUS_FILE = "event_status.json" - def __init__(self): + def __init__(self, status_dir=conf.get_lib_dir()): self._path = None self._status = {} @@ -89,7 +90,7 @@ class EventStatus(object): event = self._event_name(name, version, op) if event not in self._status: return True - return self._status[event] is True + return self._status[event] == True def initialize(self, status_dir=conf.get_lib_dir()): self._path = os.path.join(status_dir, EventStatus.EVENT_STATUS_FILE) @@ -97,7 +98,7 @@ class EventStatus(object): def mark_event_status(self, name, version, op, status): event = self._event_name(name, version, op) - self._status[event] = (status is True) + self._status[event] = (status == True) self._save() def _event_name(self, name, version, op): @@ -120,7 +121,6 @@ class EventStatus(object): except Exception as e: logger.warn("Exception occurred saving event status: {0}".format(e)) - __event_status__ = EventStatus() __event_status_operations__ = [ WALAEventOperation.AutoUpdate, @@ -223,32 +223,6 @@ class EventLogger(object): except EventError as e: logger.error("{0}", e) - def add_log_event(self, level, message): - # By the time the message has gotten to this point it is formatted as - # - # YYYY/MM/DD HH:mm:ss.fffffff LEVEL <text>. - # - # The timestamp and the level are redundant, and should be stripped. - # The logging library does not schematize this data, so I am forced - # to parse the message. The format is regular, so the burden is low. - - parts = message.split(' ', 3) - msg = parts[3] if len(parts) == 4 \ - else message - - event = TelemetryEvent(7, "FFF0196F-EE4C-4EAF-9AA5-776F622DEB4F") - event.parameters.append(TelemetryEventParam('EventName', WALAEventOperation.Log)) - event.parameters.append(TelemetryEventParam('CapabilityUsed', logger.LogLevel.STRINGS[level])) - event.parameters.append(TelemetryEventParam('Context1', msg)) - event.parameters.append(TelemetryEventParam('Context2', '')) - event.parameters.append(TelemetryEventParam('Context3', '')) - - data = get_properties(event) - try: - self.save_event(json.dumps(data)) - except EventError: - pass - __event_logger__ = EventLogger() @@ -258,7 +232,6 @@ def elapsed_milliseconds(utc_start): return int(((d.days * 24 * 60 * 60 + d.seconds) * 1000) + \ (d.microseconds / 1000.0)) - def report_event(op, is_success=True, message=''): from azurelinuxagent.common.version import AGENT_NAME, CURRENT_VERSION add_event(AGENT_NAME, @@ -267,7 +240,6 @@ def report_event(op, is_success=True, message=''): message=message, op=op) - def report_periodic(delta, op, is_success=True, message=''): from azurelinuxagent.common.version import AGENT_NAME, CURRENT_VERSION add_periodic(delta, AGENT_NAME, @@ -276,7 +248,6 @@ def report_periodic(delta, op, is_success=True, message=''): message=message, op=op) - def add_event(name, op=WALAEventOperation.Unknown, is_success=True, duration=0, version=CURRENT_VERSION, message="", evt_type="", is_internal=False, log_event=True, @@ -293,14 +264,6 @@ def add_event(name, op=WALAEventOperation.Unknown, is_success=True, duration=0, version=str(version), message=message, evt_type=evt_type, is_internal=is_internal, log_event=log_event) - -def add_log_event(level, message, reporter=__event_logger__): - if reporter.event_dir is None: - return - - reporter.add_log_event(level, message) - - def add_periodic( delta, name, op=WALAEventOperation.Unknown, is_success=True, duration=0, version=CURRENT_VERSION, @@ -316,12 +279,10 @@ def add_periodic( version=str(version), message=message, evt_type=evt_type, is_internal=is_internal, log_event=log_event, force=force) - def mark_event_status(name, version, op, status): if op in __event_status_operations__: __event_status__.mark_event_status(name, version, op, status) - def should_emit_event(name, version, op, status): return \ op not in __event_status_operations__ or \ @@ -329,15 +290,12 @@ def should_emit_event(name, version, op, status): not __event_status__.event_marked(name, version, op) or \ __event_status__.event_succeeded(name, version, op) != status - def init_event_logger(event_dir): __event_logger__.event_dir = event_dir - def init_event_status(status_dir): __event_status__.initialize(status_dir) - def dump_unhandled_err(name): if hasattr(sys, 'last_type') and hasattr(sys, 'last_value') and \ hasattr(sys, 'last_traceback'): |