Add more fields to event

This commit is contained in:
Yue Zhang
2016-01-12 17:10:56 +08:00
parent 2ea0acc81d
commit 623eacc41a
5 changed files with 35 additions and 6 deletions
+9 -1
View File
@@ -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)
+10 -4
View File
@@ -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)
+4
View File
@@ -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)
+6 -1
View File
@@ -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):
+6
View File
@@ -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):