summaryrefslogtreecommitdiff
path: root/cloudinit/sources/helpers/azure.py
diff options
context:
space:
mode:
Diffstat (limited to 'cloudinit/sources/helpers/azure.py')
-rwxr-xr-xcloudinit/sources/helpers/azure.py99
1 files changed, 57 insertions, 42 deletions
diff --git a/cloudinit/sources/helpers/azure.py b/cloudinit/sources/helpers/azure.py
index 79445a81..560cadba 100755
--- a/cloudinit/sources/helpers/azure.py
+++ b/cloudinit/sources/helpers/azure.py
@@ -180,12 +180,15 @@ def get_system_info():
return evt
-def report_diagnostic_event(str):
+def report_diagnostic_event(
+ msg: str, *, logger_func=None) -> events.ReportingEvent:
"""Report a diagnostic event"""
+ if callable(logger_func):
+ logger_func(msg)
evt = events.ReportingEvent(
DIAGNOSTIC_EVENT_TYPE, 'diagnostic message',
- str, events.DEFAULT_EVENT_ORIGIN)
- events.report_event(evt)
+ msg, events.DEFAULT_EVENT_ORIGIN)
+ events.report_event(evt, excluded_handler_types={"log"})
# return the event for unit testing purpose
return evt
@@ -215,7 +218,8 @@ def push_log_to_kvp(file_name=CFG_BUILTIN['def_log_file']):
log_pushed_to_kvp = bool(os.path.isfile(LOG_PUSHED_TO_KVP_MARKER_FILE))
if log_pushed_to_kvp:
- report_diagnostic_event("cloud-init.log is already pushed to KVP")
+ report_diagnostic_event(
+ "cloud-init.log is already pushed to KVP", logger_func=LOG.debug)
return
LOG.debug("Dumping cloud-init.log file to KVP")
@@ -225,13 +229,15 @@ def push_log_to_kvp(file_name=CFG_BUILTIN['def_log_file']):
seek_index = max(f.tell() - MAX_LOG_TO_KVP_LENGTH, 0)
report_diagnostic_event(
"Dumping last {} bytes of cloud-init.log file to KVP".format(
- f.tell() - seek_index))
+ f.tell() - seek_index),
+ logger_func=LOG.debug)
f.seek(seek_index, os.SEEK_SET)
report_compressed_event("cloud-init.log", f.read())
util.write_file(LOG_PUSHED_TO_KVP_MARKER_FILE, '')
except Exception as ex:
- report_diagnostic_event("Exception when dumping log file: %s" %
- repr(ex))
+ report_diagnostic_event(
+ "Exception when dumping log file: %s" % repr(ex),
+ logger_func=LOG.warning)
@contextmanager
@@ -305,9 +311,9 @@ class GoalState:
try:
self.root = ElementTree.fromstring(unparsed_xml)
except ElementTree.ParseError as e:
- msg = 'Failed to parse GoalState XML: %s'
- LOG.warning(msg, e)
- report_diagnostic_event(msg % (e,))
+ report_diagnostic_event(
+ 'Failed to parse GoalState XML: %s' % e,
+ logger_func=LOG.warning)
raise
self.container_id = self._text_from_xpath('./Container/ContainerId')
@@ -317,9 +323,8 @@ class GoalState:
for attr in ("container_id", "instance_id", "incarnation"):
if getattr(self, attr) is None:
- msg = 'Missing %s in GoalState XML'
- LOG.warning(msg, attr)
- report_diagnostic_event(msg % (attr,))
+ msg = 'Missing %s in GoalState XML' % attr
+ report_diagnostic_event(msg, logger_func=LOG.warning)
raise InvalidGoalStateXMLException(msg)
self.certificates_xml = None
@@ -513,9 +518,9 @@ class GoalStateHealthReporter:
try:
self._post_health_report(document=document)
except Exception as e:
- msg = "exception while reporting ready: %s" % e
- LOG.error(msg)
- report_diagnostic_event(msg)
+ report_diagnostic_event(
+ "exception while reporting ready: %s" % e,
+ logger_func=LOG.error)
raise
LOG.info('Reported ready to Azure fabric.')
@@ -698,39 +703,48 @@ class WALinuxAgentShim:
value = dhcp245
LOG.debug("Using Azure Endpoint from dhcp options")
if value is None:
- report_diagnostic_event("No Azure endpoint from dhcp options")
- LOG.debug('Finding Azure endpoint from networkd...')
+ report_diagnostic_event(
+ 'No Azure endpoint from dhcp options. '
+ 'Finding Azure endpoint from networkd...',
+ logger_func=LOG.debug)
value = WALinuxAgentShim._networkd_get_value_from_leases()
if value is None:
# Option-245 stored in /run/cloud-init/dhclient.hooks/<ifc>.json
# a dhclient exit hook that calls cloud-init-dhclient-hook
- report_diagnostic_event("No Azure endpoint from networkd")
- LOG.debug('Finding Azure endpoint from hook json...')
+ report_diagnostic_event(
+ 'No Azure endpoint from networkd. '
+ 'Finding Azure endpoint from hook json...',
+ logger_func=LOG.debug)
dhcp_options = WALinuxAgentShim._load_dhclient_json()
value = WALinuxAgentShim._get_value_from_dhcpoptions(dhcp_options)
if value is None:
# Fallback and check the leases file if unsuccessful
- report_diagnostic_event("No Azure endpoint from dhclient logs")
- LOG.debug("Unable to find endpoint in dhclient logs. "
- " Falling back to check lease files")
+ report_diagnostic_event(
+ 'No Azure endpoint from dhclient logs. '
+ 'Unable to find endpoint in dhclient logs. '
+ 'Falling back to check lease files',
+ logger_func=LOG.debug)
if fallback_lease_file is None:
- LOG.warning("No fallback lease file was specified.")
+ report_diagnostic_event(
+ 'No fallback lease file was specified.',
+ logger_func=LOG.warning)
value = None
else:
- LOG.debug("Looking for endpoint in lease file %s",
- fallback_lease_file)
+ report_diagnostic_event(
+ 'Looking for endpoint in lease file %s'
+ % fallback_lease_file, logger_func=LOG.debug)
value = WALinuxAgentShim._get_value_from_leases_file(
fallback_lease_file)
if value is None:
- msg = "No lease found; using default endpoint"
- report_diagnostic_event(msg)
- LOG.warning(msg)
value = DEFAULT_WIRESERVER_ENDPOINT
+ report_diagnostic_event(
+ 'No lease found; using default endpoint: %s' % value,
+ logger_func=LOG.warning)
endpoint_ip_address = WALinuxAgentShim.get_ip_from_lease_value(value)
- msg = 'Azure endpoint found at %s' % endpoint_ip_address
- report_diagnostic_event(msg)
- LOG.debug(msg)
+ report_diagnostic_event(
+ 'Azure endpoint found at %s' % endpoint_ip_address,
+ logger_func=LOG.debug)
return endpoint_ip_address
@azure_ds_telemetry_reporter
@@ -795,9 +809,9 @@ class WALinuxAgentShim:
parent=azure_ds_reporter):
response = self.azure_endpoint_client.get(url)
except Exception as e:
- msg = 'failed to register with Azure: %s' % e
- LOG.warning(msg)
- report_diagnostic_event(msg)
+ report_diagnostic_event(
+ 'failed to register with Azure and fetch GoalState XML: %s'
+ % e, logger_func=LOG.warning)
raise
LOG.debug('Successfully fetched GoalState XML.')
return response.contents
@@ -819,16 +833,15 @@ class WALinuxAgentShim:
need_certificate
)
except Exception as e:
- msg = 'Error processing GoalState XML: %s' % e
- LOG.warning(msg)
- report_diagnostic_event(msg)
+ report_diagnostic_event(
+ 'Error processing GoalState XML: %s' % e,
+ logger_func=LOG.warning)
raise
msg = ', '.join([
'GoalState XML container id: %s' % goal_state.container_id,
'GoalState XML instance id: %s' % goal_state.instance_id,
'GoalState XML incarnation: %s' % goal_state.incarnation])
- LOG.debug(msg)
- report_diagnostic_event(msg)
+ report_diagnostic_event(msg, logger_func=LOG.debug)
return goal_state
@azure_ds_telemetry_reporter
@@ -910,8 +923,10 @@ def get_metadata_from_fabric(fallback_lease_file=None, dhcp_opts=None,
def dhcp_log_cb(out, err):
- report_diagnostic_event("dhclient output stream: %s" % out)
- report_diagnostic_event("dhclient error stream: %s" % err)
+ report_diagnostic_event(
+ "dhclient output stream: %s" % out, logger_func=LOG.debug)
+ report_diagnostic_event(
+ "dhclient error stream: %s" % err, logger_func=LOG.debug)
class EphemeralDHCPv4WithReporting: