diff options
Diffstat (limited to 'cloudinit/sources/helpers')
| -rwxr-xr-x | cloudinit/sources/helpers/azure.py | 99 | 
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: | 
