You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

232 lines
8.8 KiB

commit 1fb713cdabf46694e76df4092615607fa09016fe
Author: Zdenek Pavlas <zpavlas@redhat.com>
Date: Thu Dec 19 10:43:07 2013 +0100
yum-cron: initialize both debuglevel and errorlevel
When warnings or errors are disabled in verbose
logger, disable them in error logger too.
diff --git a/yum-cron/yum-cron.py b/yum-cron/yum-cron.py
index a1fd10b..19436e5 100755
--- a/yum-cron/yum-cron.py
+++ b/yum-cron/yum-cron.py
@@ -380,16 +380,16 @@ class YumCronBase(yum.YumBase, YumOutput):
self.preconf.fn = self.opts.yum_config_file
# This needs to be set early, errors are handled later.
- try: self.preconf.debuglevel = int(self._confparser.get('base', 'debuglevel'))
- except: pass
+ try: level = int(self._confparser.get('base', 'debuglevel'))
+ except: level = -2
+ self.preconf.debuglevel = level
+ if -4 <= level <= -2:
+ self.preconf.errorlevel = level + 4
# if we are not root do the special subdir thing
if os.geteuid() != 0:
self.setCacheDir()
- # Create the configuration
- self.conf
-
# override base yum options
self.conf.populate(self._confparser, 'base')
del self._confparser
commit d0441397dc5a5e4f4d3ccc3a99c4cda57b228009
Author: Valentina Mukhamedzhanova <vmukhame@redhat.com>
Date: Mon Jan 6 14:12:46 2014 +0100
Remove emitCheckFailed(), change it to logger.warn(). BZ 1048391
Make acquireLock() respect debuglevel.
diff --git a/yum-cron/yum-cron.py b/yum-cron/yum-cron.py
index b96dd13..386a7a0 100755
--- a/yum-cron/yum-cron.py
+++ b/yum-cron/yum-cron.py
@@ -86,17 +86,6 @@ class UpdateEmitter(object):
% errmsg)
self.sendMessages()
- def lockFailed(self, errmsg):
- """Append a message to the output list stating that the
- program failed to acquire the yum lock, then call sendMessages
- to emit the output.
-
- :param errmsg: a string that contains the error message
- """
- self.output.append("Failed to acquire the yum lock with the following error message: \n%s"
- % errmsg)
- self.sendMessages()
-
def checkFailed(self, errmsg):
"""Append a message to the output stating that checking for
updates failed, then call sendMessages to emit the output.
@@ -196,16 +185,6 @@ class EmailEmitter(UpdateEmitter):
self.subject = "Yum: Failed to perform setup on %s" % self.opts.system_name
super(EmailEmitter, self).setupFailed(errmsg)
- def lockFailed(self, errmsg):
- """Append a message to the output list stating that the
- program failed to acquire the yum lock, then call sendMessages
- to emit the output, and set an appropriate subject line.
-
- :param errmsg: a string that contains the error message
- """
- self.subject = "Yum: Failed to acquire the yum lock on %s" % self.opts.system_name
- super(EmailEmitter, self).lockFailed(errmsg)
-
def checkFailed(self, errmsg):
"""Append a message to the output stating that checking for
updates failed, then call sendMessages to emit the output, and
@@ -406,7 +385,7 @@ class YumCronBase(yum.YumBase, YumOutput):
try:
self.doLock()
except yum.Errors.LockError, e:
- self.emitLockFailed("%s" % e)
+ self.logger.warn("Failed to acquire the yum lock: %s", e)
sys.exit(1)
def populateUpdateMetadata(self):
@@ -675,10 +654,6 @@ class YumCronBase(yum.YumBase, YumOutput):
"""Emit a notice stating that checking for updates failed."""
map(lambda x: x.setupFailed(error), self.emitters)
- def emitLockFailed(self, errmsg):
- """Emit a notice that we failed to acquire the yum lock."""
- map(lambda x: x.lockFailed(errmsg), self.emitters)
-
def emitCheckFailed(self, error):
"""Emit a notice stating that checking for updates failed."""
map(lambda x: x.checkFailed(error), self.emitters)
commit 13f69f68876fade7611bcbab6f612937e1c02bff
Author: Zdenek Pavlas <zpavlas@redhat.com>
Date: Wed Jan 15 09:11:30 2014 +0100
yum-cron: emitUpdateFailed() expects str, not an array.
Avoid Python noise in the report. Also, use implicit conversion
instead of str() for unicode interoperability.
diff --git a/yum-cron/yum-cron.py b/yum-cron/yum-cron.py
index 87b3e69..6cbed94 100755
--- a/yum-cron/yum-cron.py
+++ b/yum-cron/yum-cron.py
@@ -545,7 +545,7 @@ class YumCronBase(yum.YumBase, YumOutput):
try:
self.getKeyForPackage(po)
except yum.Errors.YumBaseError, errmsg:
- self.emitUpdateFailed([str(errmsg)])
+ self.emitUpdateFailed(errmsg)
return False
else:
self.emitUpdateFailed(err)
@@ -563,8 +563,7 @@ class YumCronBase(yum.YumBase, YumOutput):
try:
self.runTransaction(cb=cb)
except yum.Errors.YumBaseError, err:
-
- self.emitUpdateFailed([str(err)])
+ self.emitUpdateFailed(err)
sys.exit(1)
if emit :
@@ -675,9 +674,9 @@ class YumCronBase(yum.YumBase, YumOutput):
"""Emit a notice stating that downloading the updates failed."""
map(lambda x: x.downloadFailed(error), self.emitters)
- def emitUpdateFailed(self, errmsgs):
+ def emitUpdateFailed(self, errmsg):
"""Emit a notice stating that automatic updates failed."""
- map(lambda x: x.updatesFailed(errmsgs), self.emitters)
+ map(lambda x: x.updatesFailed(errmsg), self.emitters)
def emitMessages(self):
"""Emit the messages from the emitters."""
commit 048af21d6704d40e93e09c65f5c1b547a68e431e
Author: Zdenek Pavlas <zpavlas@redhat.com>
Date: Mon Jan 20 10:59:58 2014 +0100
yum-cron: EmailEmitter failure should not be fatal. BZ 1055042
diff --git a/yum-cron/yum-cron.py b/yum-cron/yum-cron.py
index 6cbed94..bfa580e 100755
--- a/yum-cron/yum-cron.py
+++ b/yum-cron/yum-cron.py
@@ -146,8 +146,9 @@ class UpdateEmitter(object):
class EmailEmitter(UpdateEmitter):
"""Emitter class to send messages via email."""
- def __init__(self, opts):
+ def __init__(self, opts, logger):
super(EmailEmitter, self).__init__(opts)
+ self.logger = logger
self.subject = ""
def updatesAvailable(self, summary):
@@ -229,10 +230,13 @@ class EmailEmitter(UpdateEmitter):
msg['To'] = ",".join(self.opts.email_to)
# Send the email
- s = smtplib.SMTP()
- s.connect(self.opts.email_host)
- s.sendmail(self.opts.email_from, self.opts.email_to, msg.as_string())
- s.close()
+ try:
+ s = smtplib.SMTP()
+ s.connect(self.opts.email_host)
+ s.sendmail(self.opts.email_from, self.opts.email_to, msg.as_string())
+ s.close()
+ except Exception, e:
+ self.logger.error("Failed to send an email to %s: %s" % (self.opts.email_host, e))
class StdIOEmitter(UpdateEmitter):
@@ -293,7 +297,7 @@ class YumCronBase(yum.YumBase, YumOutput):
# Create the emitters, and add them to the list
self.emitters = []
if 'email' in self.opts.emit_via:
- self.emitters.append(EmailEmitter(self.opts))
+ self.emitters.append(EmailEmitter(self.opts, self.logger))
if 'stdio' in self.opts.emit_via:
self.emitters.append(StdIOEmitter(self.opts))
commit 8d21de54f5b267af8710c1358fd3a0475aed6bbb
Author: Zdenek Pavlas <zpavlas@redhat.com>
Date: Mon Jan 20 11:41:15 2014 +0100
yum-cron: Add a retry loop around doLock().
diff --git a/yum-cron/yum-cron.py b/yum-cron/yum-cron.py
index bfa580e..e1028be 100755
--- a/yum-cron/yum-cron.py
+++ b/yum-cron/yum-cron.py
@@ -262,6 +262,8 @@ class YumCronConfig(BaseConfig):
system_name = Option(gethostname())
output_width = IntOption(80)
random_sleep = IntOption(0)
+ lock_retries = IntOption(5)
+ lock_sleep = IntOption(60)
emit_via = ListOption(['email','stdio'])
email_to = ListOption(["root"])
email_from = Option("root")
@@ -386,9 +388,14 @@ class YumCronBase(yum.YumBase, YumOutput):
def acquireLock(self):
""" Wrapper method around doLock to emit errors correctly."""
- try:
- self.doLock()
- except yum.Errors.LockError, e:
+ i = 0
+ while True:
+ try: self.doLock(); break
+ except yum.Errors.LockError, e:
+ i += 1
+ if i < self.opts.lock_retries:
+ sleep(self.opts.lock_sleep)
+ continue
self.logger.warn("Failed to acquire the yum lock: %s", e)
sys.exit(1)