summaryrefslogtreecommitdiff
path: root/azurelinuxagent/common/event.py
diff options
context:
space:
mode:
Diffstat (limited to 'azurelinuxagent/common/event.py')
-rw-r--r--azurelinuxagent/common/event.py74
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'):