From 623eacc41abbfaf09d66ef4cb3440ab4f95fc255 Mon Sep 17 00:00:00 2001 From: Yue Zhang Date: Fri, 8 Jan 2016 19:42:43 +0800 Subject: [PATCH] Add more fields to event --- azurelinuxagent/distro/default/extension.py | 10 +++++++++- azurelinuxagent/distro/default/monitor.py | 14 ++++++++++---- azurelinuxagent/event.py | 4 ++++ azurelinuxagent/protocol/restapi.py | 7 ++++++- azurelinuxagent/protocol/wire.py | 6 ++++++ 5 files changed, 35 insertions(+), 6 deletions(-) diff --git a/azurelinuxagent/distro/default/extension.py b/azurelinuxagent/distro/default/extension.py index 6dc007a..f03b601 100644 --- a/azurelinuxagent/distro/default/extension.py +++ b/azurelinuxagent/distro/default/extension.py @@ -110,6 +110,7 @@ class ExtHandlersHandler(object): self.distro = distro self.ext_handlers = None self.last_etag = None + self.log_report = False def run(self): ext_handlers, etag = None, None @@ -122,8 +123,10 @@ class ExtHandlersHandler(object): if self.last_etag is not None and self.last_etag == etag: logger.verb("No change to ext handler config:{0}, skip", etag) + self.log_report = False else: logger.info("Handle new ext handler config") + self.log_report = True #Log status report success on new config self.handle_ext_handlers(ext_handlers) self.last_etag = etag @@ -227,12 +230,17 @@ class ExtHandlersHandler(object): add_event(name="WALA", is_success=False, message=ustr(e)) logger.verb("Report vm agent status") + try: self.protocol.report_vm_status(vm_status) except ProtocolError as e: - message = "Failed to report ext handler status: {0}".format(e) + message = "Failed to report vm agent status: {0}".format(e) add_event(name="WALA", is_success=False, message=message) + if self.log_report: + logger.info("Successfully reported vm agent status") + + def report_ext_handler_status(self, vm_status, ext_handler): ext_handler_i = ExtHandlerInstance(ext_handler, self.protocol) diff --git a/azurelinuxagent/distro/default/monitor.py b/azurelinuxagent/distro/default/monitor.py index e5312ad..9f7a12d 100644 --- a/azurelinuxagent/distro/default/monitor.py +++ b/azurelinuxagent/distro/default/monitor.py @@ -35,7 +35,7 @@ from azurelinuxagent.protocol.restapi import TelemetryEventParam, \ TelemetryEvent, \ set_properties, get_properties from azurelinuxagent.metadata import DISTRO_NAME, DISTRO_VERSION, \ - DISTRO_CODE_NAME, AGENT_VERSION + DISTRO_CODE_NAME, AGENT_LONG_VERSION def parse_event(data_str): @@ -95,7 +95,7 @@ class MonitorHandler(object): self.sysinfo.append(TelemetryEventParam("OSVersion", osversion)) - self.sysinfo.append(TelemetryEventParam("GAVersion", AGENT_VERSION)) + self.sysinfo.append(TelemetryEventParam("GAVersion", AGENT_LONG_VERSION)) try: ram = self.distro.osutil.get_total_mem() @@ -108,8 +108,14 @@ class MonitorHandler(object): try: protocol = self.distro.protocol_util.get_protocol() vminfo = protocol.get_vminfo() - #TODO add more system info - self.sysinfo.append(TelemetryEventParam("VMName", vminfo.vmName )) + self.sysinfo.append(TelemetryEventParam("TenantName", + vminfo.tenantName)) + self.sysinfo.append(TelemetryEventParam("RoleName", + vminfo.roleName)) + self.sysinfo.append(TelemetryEventParam("RoleInstanceName", + vminfo.roleInstanceName)) + self.sysinfo.append(TelemetryEventParam("ContainerId", + vminfo.containerId)) except ProtocolError as e: logger.warn("Failed to get system info: {0}", e) diff --git a/azurelinuxagent/event.py b/azurelinuxagent/event.py index 068d591..f38b242 100644 --- a/azurelinuxagent/event.py +++ b/azurelinuxagent/event.py @@ -53,6 +53,10 @@ class EventLogger(object): self.event_dir = None def save_event(self, data): + if self.event_dir is None: + logger.warn("Event reporter is not initialized.") + return + if not os.path.exists(self.event_dir): os.mkdir(self.event_dir) os.chmod(self.event_dir, 0o700) diff --git a/azurelinuxagent/protocol/restapi.py b/azurelinuxagent/protocol/restapi.py index e87e2b8..fbd29ed 100644 --- a/azurelinuxagent/protocol/restapi.py +++ b/azurelinuxagent/protocol/restapi.py @@ -83,9 +83,14 @@ class DataContractList(list): Data contract between guest and host """ class VMInfo(DataContract): - def __init__(self, subscriptionId=None, vmName=None): + def __init__(self, subscriptionId=None, vmName=None, containerId=None, + roleName=None, roleInstanceName=None, tenantName=None): self.subscriptionId = subscriptionId self.vmName = vmName + self.containerId = containerId + self.roleName = roleName + self.roleInstanceName = roleInstanceName + self.tenantName = tenantName class Cert(DataContract): def __init__(self, name=None, thumbprint=None, certificateDataUri=None): diff --git a/azurelinuxagent/protocol/wire.py b/azurelinuxagent/protocol/wire.py index d230387..7b5ffe8 100644 --- a/azurelinuxagent/protocol/wire.py +++ b/azurelinuxagent/protocol/wire.py @@ -86,10 +86,16 @@ class WireProtocol(Protocol): self.client.update_goal_state(forced=True) def get_vminfo(self): + goal_state = self.client.get_goal_state() hosting_env = self.client.get_hosting_env() + vminfo = VMInfo() vminfo.subscriptionId = None vminfo.vmName = hosting_env.vm_name + vminfo.tenantName = hosting_env.deployment_name + vminfo.roleName = hosting_env.role_name + vminfo.roleInstanceName = goal_state.role_instance_id + vminfo.containerId = goal_state.container_id return vminfo def get_certs(self):