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
232 lines
8.8 KiB
7 years ago
|
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)
|
||
|
|