Alon Bar-Lev has uploaded a new change for review.
Change subject: packaging: periodically check if ovirt-engine upgrade available
......................................................................
packaging: periodically check if ovirt-engine upgrade available
Using yum API and version lock plugin disabled check if there is a newer
version of ovirt-engine package.
If there is, create a trigger file at:
/var/cache/ovirt-engine/engine-upgrade.available
It is the responsibility of the engine to monitor this trigger and clean
when act upon.
COMPONENTS
engine-upgrade-check.py
A simple utility to check if update is available.
It will echo AVAILABLE if it finds update.
engine-upgrade-check.cron
cron.d script to be executed daily. Uses
engine-upgrade-check.py to detect update and creates the
trigger.
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=836659
Signed-off-by: Alon Bar-Lev <[email protected]>
Change-Id: I76019e8ccc3e77d70b812bd9187c0cbdbb3f4f07
---
M Makefile
A packaging/fedora/setup/engine-upgrade-check.py
M packaging/fedora/spec/ovirt-engine.spec.in
A packaging/resources/engine-upgrade-check.cron
4 files changed, 120 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/76/10976/1
diff --git a/Makefile b/Makefile
index 509b354..ad21d8f 100644
--- a/Makefile
+++ b/Makefile
@@ -256,6 +256,7 @@
install -m 644 packaging/fedora/setup/setup_controller.py
$(DESTDIR)$(DATA_DIR)/scripts
install -m 644 packaging/fedora/setup/common_utils.py
$(DESTDIR)$(DATA_DIR)/scripts
install -m 644 packaging/fedora/setup/miniyum.py
$(DESTDIR)$(DATA_DIR)/scripts
+ install -m 755 packaging/fedora/setup/engine-upgrade-check.py
$(DESTDIR)$(DATA_DIR)/scripts
install -m 644 packaging/fedora/setup/output_messages.py
$(DESTDIR)$(DATA_DIR)/scripts
install -m 644 packaging/fedora/setup/post_upgrade.py
$(DESTDIR)$(DATA_DIR)/scripts
install -m 644
packaging/fedora/setup/add_fn_db_get_async_tasks_function.sql
$(DESTDIR)$(DATA_DIR)/scripts
@@ -361,6 +362,7 @@
install -m 644 backend/manager/conf/engine.conf.defaults
$(DESTDIR)$(DATA_DIR)/conf
install -m 755 packaging/resources/ovirtlogrot.sh
${DESTDIR}$(DATA_DIR)/scripts/
install -m 755 packaging/resources/ovirt-cron
${DESTDIR}$(SYSCONF_DIR)/cron.daily/
+ install -m 755 packaging/resources/engine-upgrade-check.cron
${DESTDIR}$(SYSCONF_DIR)/cron.daily/
# USB filter:
install -m 644 frontend/usbfilter.txt $(DESTDIR)$(PKG_SYSCONF_DIR)
diff --git a/packaging/fedora/setup/engine-upgrade-check.py
b/packaging/fedora/setup/engine-upgrade-check.py
new file mode 100755
index 0000000..c2fdaa3
--- /dev/null
+++ b/packaging/fedora/setup/engine-upgrade-check.py
@@ -0,0 +1,95 @@
+#!/usr/bin/python
+
+import os
+import sys
+import logging
+from optparse import OptionParser
+
+
+import miniyum
+import basedefs
+
+
+class MyMiniYumSink(miniyum.MiniYumSinkBase):
+ """Events."""
+
+ def __init__(self):
+ """dup the stdout as during yum operation so we redirect it."""
+ super(MyMiniYumSink, self).__init__()
+ self._stream = os.dup(sys.stdout.fileno())
+
+ def __del__(self):
+ os.close(self._stream)
+
+ def verbose(self, msg):
+ super(MyMiniYumSink, self).verbose(msg)
+ os.write(self._stream, ('VERB: %s\n' % msg).encode('utf-8'))
+
+ def info(self, msg):
+ super(MyMiniYumSink, self).info(msg)
+ os.write(self._stream, ('OK: %s\n' % msg).encode('utf-8'))
+
+ def error(self, msg):
+ super(MyMiniYumSink, self).error(msg)
+ os.write(self._stream, ('FAIL: %s\n' % msg).encode('utf-8'))
+
+
+def main():
+ parser = OptionParser()
+ parser.prog = sys.argv[0]
+ parser.add_option(
+ '-q', '--quiet',
+ action='store_true',
+ dest='quiet',
+ default=False,
+ help='Quiet output',
+ )
+ parser.add_option(
+ '-d', '--debug',
+ action='store_true',
+ dest='debug',
+ default=False,
+ help='Enable debugging',
+ )
+ (options, args) = parser.parse_args()
+
+ try:
+ upgradeAvailable = False
+
+ if options.quiet:
+ miniyumsink = miniyum.MiniYumSinkBase()
+ else:
+ miniyumsink = MyMiniYumSink()
+
+ miniyum.MiniYum.setup_log_hook(sink=miniyumsink)
+ _miniyum = miniyum.MiniYum(
+ sink=miniyumsink,
+ blockStdHandles=not options.debug,
+ disabledPlugins=['versionlock'],
+ )
+ _miniyum.selinux_role()
+
+ with _miniyum.transaction():
+ _miniyum.update(packages=[basedefs.ENGINE_RPM_NAME])
+ if _miniyum.buildTransaction():
+ upgradeAvailable = True
+ if not options.quiet:
+ for p in _miniyum.queryTransaction():
+ miniyumsink.info(' %s - %s' % (
+ p['operation'],
+ p['display_name']
+ ))
+
+ if upgradeAvailable:
+ print('AVAILABLE')
+ sys.exit(0)
+ except SystemExit:
+ pass
+ except:
+ if not options.quiet:
+ logging.error('Error', exc_info=True)
+ sys.exit(1)
+
+main()
+
+# vim: expandtab tabstop=4 shiftwidth=4
diff --git a/packaging/fedora/spec/ovirt-engine.spec.in
b/packaging/fedora/spec/ovirt-engine.spec.in
index 67aae80..237828e 100644
--- a/packaging/fedora/spec/ovirt-engine.spec.in
+++ b/packaging/fedora/spec/ovirt-engine.spec.in
@@ -560,6 +560,7 @@
# Log rotation script:
%{engine_data}/scripts/ovirtlogrot.sh
%{_sysconfdir}/cron.daily/ovirt-cron
+%{_sysconfdir}/cron.daily/engine-upgrade-check.cron
# Misc configuration files:
%{engine_data}/conf
@@ -700,6 +701,7 @@
%{engine_data}/scripts/setup_controller.py*
%{engine_data}/scripts/common_utils.py*
%{engine_data}/scripts/miniyum.py*
+%{engine_data}/scripts/engine-upgrade-check.py*
%{engine_data}/scripts/output_messages.py*
%{engine_data}/scripts/nfsutils.py*
%{engine_data}/scripts/engine-setup.py*
diff --git a/packaging/resources/engine-upgrade-check.cron
b/packaging/resources/engine-upgrade-check.cron
new file mode 100755
index 0000000..7577207
--- /dev/null
+++ b/packaging/resources/engine-upgrade-check.cron
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# Create TRIGGER if upgrade is available.
+#
+
+CACHEDIR="/var/cache/ovirt-engine"
+TRIGGER="${CACHEDIR}/engine-upgrade.available"
+
+umask 0022
+
+if ! [ -w "${CACHEDIR}" ]; then
+ echo "Directory '${CACHEDIR}' is not writable" >&2
+ exit 1
+fi
+
+if /usr/share/ovirt-engine/scripts/engine-upgrade-check.py --quiet 2>
/dev/null | grep AVAILABLE > /dev/null; then
+ touch "${TRIGGER}"
+ chown ovirt:ovirt "${TRIGGER}"
+fi
+
+exit 0
--
To view, visit http://gerrit.ovirt.org/10976
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I76019e8ccc3e77d70b812bd9187c0cbdbb3f4f07
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alon Bar-Lev <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches