[Yum-devel] [PATCH 3/6] Add history to the YumBase object
James Antill
james at and.org
Wed Aug 26 00:15:18 UTC 2009
---
yum/__init__.py | 27 +++++++++++++++++++++++++--
1 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/yum/__init__.py b/yum/__init__.py
index 3f75528..0e37625 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -57,6 +57,7 @@ import plugins
import logginglevels
import yumRepo
import callbacks
+import yum.history
import warnings
warnings.simplefilter("ignore", Errors.YumFutureDeprecationWarning)
@@ -137,6 +138,7 @@ class YumBase(depsolve.Depsolve):
self._rpmdb = None
self._up = None
self._comps = None
+ self._history = None
self._pkgSack = None
self._lockfile = None
self.skipped_packages = [] # packages skip by the skip-broken code
@@ -694,6 +696,13 @@ class YumBase(depsolve.Depsolve):
self._comps.compile(self.rpmdb.simplePkgList())
self.verbose_logger.debug('group time: %0.3f' % (time.time() - group_st))
return self._comps
+
+ def _getHistory(self):
+ """auto create the history object that to acess/append the transaction
+ history information. """
+ if self._history is None:
+ self._history = yum.history.YumHistory(self.rpmdb)
+ return self._history
# properties so they auto-create themselves with defaults
repos = property(fget=lambda self: self._getRepos(),
@@ -718,6 +727,9 @@ class YumBase(depsolve.Depsolve):
comps = property(fget=lambda self: self._getGroups(),
fset=lambda self, value: self._setGroups(value),
fdel=lambda self: setattr(self, "_comps", None))
+ history = property(fget=lambda self: self._getHistory(),
+ fset=lambda self, value: setattr(self, "_history",value),
+ fdel=lambda self: setattr(self, "_history", None))
def doSackFilelistPopulate(self):
@@ -1013,6 +1025,12 @@ class YumBase(depsolve.Depsolve):
self.plugins.run('pretrans')
+ using_pkgs_pats = ['yum', 'rpm', 'python', 'yum-metadata-parser',
+ 'yum-rhn-plugin']
+ using_pkgs = self.rpmdb.returnPackages(patterns=using_pkgs_pats)
+ self.history.beg(self.rpmdb.simpleVersion()[0], using_pkgs,
+ list(self.tsInfo))
+
errors = self.ts.run(cb.callback, '')
# ts.run() exit codes are, hmm, "creative": None means all ok, empty
# list means some errors happened in the transaction and non-empty
@@ -1044,10 +1062,10 @@ class YumBase(depsolve.Depsolve):
self.rpmdb.dropCachedData() # drop out the rpm cache so we don't step on bad hdr indexes
self.plugins.run('posttrans')
# sync up what just happened versus what is in the rpmdb
- self.verifyTransaction()
+ self.verifyTransaction(resultobject)
return resultobject
- def verifyTransaction(self):
+ def verifyTransaction(self, resultobject=None):
"""checks that the transaction did what we expected it to do. Also
propagates our external yumdb info"""
@@ -1115,6 +1133,10 @@ class YumBase(depsolve.Depsolve):
else:
self.verbose_logger.log(logginglevels.DEBUG_2, 'What is this? %s' % txmbr.po)
+ ret = -1
+ if resultobject is not None:
+ ret = resultobject.return_code
+ self.history.end(self.rpmdb.simpleVersion()[0], ret)
self.rpmdb.dropCachedData()
def costExcludePackages(self):
@@ -3417,6 +3439,7 @@ class YumBase(depsolve.Depsolve):
if not apkgs:
# Do we still want to return errors here?
# We don't in the cases below, so I didn't here...
+ pkgs = []
if 'pattern' in kwargs:
pkgs = self.rpmdb.returnPackages(patterns=[kwargs['pattern']],
ignore_case=False)
--
1.6.2.5
More information about the Yum-devel
mailing list