From 655e9e91e7b4d699219bebc2e9aada50eb2d726f Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Mar 06 2016 00:20:27 +0000 Subject: relvalconsumer, check-compose consumer: fix logging consumers should log with self.log, it seems, not get their own logger. For relvalconsumer, add a little convenience method to identify log messages with the class name. --- diff --git a/relvalconsumer.py b/relvalconsumer.py index 575cb20..2589f0a 100644 --- a/relvalconsumer.py +++ b/relvalconsumer.py @@ -33,8 +33,6 @@ import wikitcms.wiki from six.moves.urllib.error import (URLError, HTTPError) -logger = logging.getLogger(__name__) - class RelvalConsumer(fedmsg.consumers.FedmsgConsumer): """A fedmsg consumer that creates release validation test events @@ -42,11 +40,17 @@ class RelvalConsumer(fedmsg.consumers.FedmsgConsumer): by the two children for 'production' and 'testing' mode and should not be used on its own (it is not complete). """ + def _log(self, level, message): + """Convenience function for sticking the class name on the + front of the log message as an identifier. + """ + logfnc = getattr(self.log, level) + logfnc("%s: %s", self.__class__.__name__, message) + def consume(self, message): """Consume incoming message. 'relval_prod' indicates prod or test mode. """ - logger.info("Working on new message: %s", message['topic']) # only run on completed composes status = message['body']['msg'].get('status') location = message['body']['msg'].get('location') @@ -65,13 +69,13 @@ class RelvalConsumer(fedmsg.consumers.FedmsgConsumer): try: event = site.get_validation_event_url(location) except ValueError: - logger.info("Could not determine validation event for compose %s", - compstr) + self._log('info', "Could not determine event for compose {0}".format(compstr)) return + self._log('info', "Working on compose {0}".format(compstr)) # check if we're testable if not event.has_bootiso: - logger.debug("Compose %s is not testable!", compstr) + self._log('debug', "Compose {0} is not testable!".format(compstr)) return # at present we should only ever create events for exactly the @@ -82,14 +86,14 @@ class RelvalConsumer(fedmsg.consumers.FedmsgConsumer): # equal wiki.current_compose['release'] curr = fedfind.helpers.get_current_release() if not int(event.release) == curr+1: - logger.debug("Compose %s is not for the next release!", compstr) + self._log('debug', "Compose {0} is not for the next release!".format(compstr)) return # Make sure the potential new event is newer than the current one # (this avoids creating nightly events after TCs/RCs start) currev = site.current_event if not event.sorttuple > currev.sorttuple: - logger.debug("Compose %s is not 'newer' than current compose!", compstr) + self._log('debug', "Compose {0} is not 'newer' than current compose!".format(compstr)) return # if we're proposing a nightly event for the same release, do the @@ -100,46 +104,46 @@ class RelvalConsumer(fedmsg.consumers.FedmsgConsumer): currdate = fedfind.helpers.date_check(currev.compose, out='obj') delta = newdate - currdate except ValueError: - logger.warning("Could not determine date of current or new event!") + self._log('warning', "Could not determine date of current or new event!") return if delta.days < 3: # we never create an event if it's been < 3 days. - logger.debug("Less than three days since current nightly event.") + self._log('debug', "Less than three days since current nightly event.") return elif delta.days > 14: # we *always* create an event if it's been > 14 days. - logger.debug("More than two weeks since last nightly event!") + self._log('debug', "More than two weeks since last nightly event!") diff = '' else: # between 3 and 14 we check if important packages have changed. # we could do this a bit smarter using the metadata, but OTOH # the RPMs metadata is like 90MiB per compose...maybe look # into doing it with PDC. - logger.debug("Comparing package versions...") + self._log('debug', "Comparing package versions...") packages = ['anaconda', 'python-blivet', 'pyparted', 'lorax', 'pungi', 'parted', 'pykickstart'] try: currpacks = currev.get_package_versions(packages) newpacks = event.get_package_versions(packages) except (ValueError, URLError, HTTPError): - logger.debug("Package version check failed!") + self._log('debug', "Package version check failed!") return if not currpacks: - logger.debug("Could not do package version check on current compose!") + self._log('debug', "Could not do package version check on current compose!") return if not newpacks: - logger.debug("Could not do package version check on new compose!") + self._log('debug', "Could not do package version check on new compose!") return for key in list(currpacks.keys()): if not currpacks[key] or not newpacks[key]: - logger.debug("Could not find versions for all significant " + self._log('debug', "Could not find versions for all significant " "packages in both composes!") return if currpacks == newpacks: - logger.debug("No significant package changes since last nightly event.") + self._log('debug', "No significant package changes since last nightly event.") return else: - logger.info("Significant package changes since last nightly event!") + self._log('info', "Significant package changes since last nightly event!") # this means we're carrying on. diff = '' for key in list(currpacks.keys()): @@ -148,20 +152,20 @@ class RelvalConsumer(fedmsg.consumers.FedmsgConsumer): key, currev.compose, currpacks[key], event.compose, newpacks[key])) - logger.info("Creating validation event %s", event.version) + self._log('info', "Creating validation event {0}".format(event.version)) try: event.create(check=True) except mwclient.errors.APIError as err: - logger.warning("Mediawiki error creating event!") - logger.debug("Error: %s", err) + self._log('warning', "Mediawiki error creating event!") + self._log('debug', "Error: {0}".format(err)) return except ValueError: - logger.warning("Existing page found for event! Aborting.") + self._log('warning', "Existing page found for event! Aborting.") return # send the announcement mail. FIXME: for now the text is still # nightly-specific, change that when we use this for TCs/RCs. - logger.debug("Sending announcement email") + self._log('debug', "Sending announcement email") dest = "test-announce@lists.fedoraproject.org" urltmpl = "https://fedoraproject.org/wiki/{0}" summurl = urltmpl.format(event.summary_page.name.replace(' ', '_')) @@ -203,7 +207,7 @@ Mail generated by relval: https://www.happyassassin.net/relval/ server = smtplib.SMTP('localhost') server.sendmail('rawhide@fedoraproject.org', [dest], msg) else: - logger.info(msg) + self._log('info', msg) class RelvalProductionConsumer(RelvalConsumer):