[Yum-devel] [PATCH] Show scriptlet-output and errors in history info
Tim Lauridsen
tim.lauridsen at googlemail.com
Tue Oct 13 05:20:33 UTC 2009
On 10/12/2009 11:38 PM, James Antill wrote:
> This WFM(tm), but I've only tested it by adding stuff to my sqlite
> manually.
> ---
> output.py | 14 +++++++++++++-
> yum/history.py | 37 +++++++++++++++++++++++++++++++++++++
> 2 files changed, 50 insertions(+), 1 deletions(-)
>
> diff --git a/output.py b/output.py
> index da84221..e462646 100755
> --- a/output.py
> +++ b/output.py
> @@ -1389,7 +1389,7 @@ to exit.
> print _("Return-Code :"), _("Failure:"), old.return_code
> else:
> print _("Return-Code :"), _("Success")
> - print _("Transaction performed with :")
> + print _("Transaction performed with:")
> for hpkg in old.trans_with:
> prefix = " " * 4
> state = _('Installed')
> @@ -1408,6 +1408,18 @@ to exit.
> print "%s%-12s %s" % (prefix, state, hpkg)
> print _("Packages Altered:")
> self.historyInfoCmdPkgsAltered(old, pats)
> + if old.output:
> + print _("Scriptlet output:")
> + num = 0
> + for line in old.output:
> + num += 1
> + print "%4d" % num, line
> + if old.errors:
> + print _("Errors:")
> + num = 0
> + for line in old.errors:
> + num += 1
> + print "%4d" % num, line
>
> def historyInfoCmdPkgsAltered(self, old, pats=[]):
> for hpkg in old.trans_data:
> diff --git a/yum/history.py b/yum/history.py
> index 97571c5..85613e1 100644
> --- a/yum/history.py
> +++ b/yum/history.py
> @@ -152,6 +152,9 @@ class YumHistoryTransaction:
> self._loaded_TW = None
> self._loaded_TD = None
>
> + self._loaded_ER = None
> + self._loaded_OT = None
> +
> self.altered_lt_rpmdb = None
> self.altered_gt_rpmdb = None
>
> @@ -177,6 +180,18 @@ class YumHistoryTransaction:
> trans_with = property(fget=lambda self: self._getTransWith())
> trans_data = property(fget=lambda self: self._getTransData())
>
> + def _getErrors(self):
> + if self._loaded_ER is None:
> + self._loaded_ER = self._history._load_errors(self.tid)
> + return self._loaded_ER
> + def _getOutput(self):
> + if self._loaded_OT is None:
> + self._loaded_OT = self._history._load_output(self.tid)
> + return self._loaded_OT
> +
> + errors = property(fget=lambda self: self._getErrors())
> + output = property(fget=lambda self: self._getOutput())
> +
> class YumHistory:
> """ API for accessing the history sqlite data. """
>
> @@ -371,6 +386,28 @@ class YumHistory:
> (tid, line) VALUES (?, ?)""", (self._tid, error))
> self._commit()
>
> + def _load_errors(self, tid):
> + cur = self._get_cursor()
> + executeSQL(cur,
> + """SELECT msg FROM trans_error
> + WHERE tid = ?
> + ORDER BY mid ASC""", (tid,))
> + ret = []
> + for row in cur:
> + ret.append(row[0])
> + return ret
> +
> + def _load_output(self, tid):
> + cur = self._get_cursor()
> + executeSQL(cur,
> + """SELECT line FROM trans_script_stdout
> + WHERE tid = ?
> + ORDER BY lid ASC""", (tid,))
> + ret = []
> + for row in cur:
> + ret.append(row[0])
> + return ret
> +
> def end(self, rpmdb_version, return_code, errors=None):
> assert return_code or not errors
> cur = self._get_cursor()
>
The pach looks ok, but it feel kind of strange to display not there yet,
but it should not hurt anything
Tim
More information about the Yum-devel
mailing list