diff -r a2342f26c9de -r b0b56e0f8c7f dev/provisioning/modules/puppi/files/scripts/yum.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dev/provisioning/modules/puppi/files/scripts/yum.sh Fri Jan 15 15:35:00 2016 +0100 @@ -0,0 +1,93 @@ +#!/bin/bash +# yum.sh - Made for Puppi + +# Sources common header for Puppi scripts +. $(dirname $0)/header || exit 10 + +# Show help +showhelp () { + echo "This script performs the yum operations required by puppi::project::yum" + echo "It integrates and uses variables provided by other core Puppi scripts" + echo "It has the following options:" + echo "-a (Optional) What action to perform. Available options: deploy (default), rollback, remove" + echo "-n (Required) Name of the package to handle" + echo "-v (Optional) The version of the rpm to manage. Default: latest" + echo "-r (Optional) The Instll root path. Default: /" + echo + echo "Examples:" + echo "yum.sh -a deploy -n ${rpm} -r ${install_root} -v ${rpm_version}" +} + +rpm_version="latest" +install_root="/" + +# Check Arguments +while [ $# -gt 0 ]; do + case "$1" in + -a) + case $2 in + rollback) + action="rollback" + ;; + remove) + action="remove" + ;; + *) + action="install" + ;; + esac + shift 2 ;; + -n) + rpm_name=$2 + shift 2 ;; + -v) + rpm_version=$2 + shift 2 ;; + -r) + install_root=$2 + shift 2 ;; + *) + showhelp + exit ;; + esac +done + + +do_install () { + if [ x$rpm_version == "xlatest" ] ; then + full_rpm_name=$rpm_name + else + full_rpm_name=$rpm_name-$rpm_version + fi + + # Archives version of the rpm to update + oldversion=$(rpm -q $rpm_name --qf "%{VERSION}-%{RELEASE}\n") + if [ "$?" = "0" ]; then + mkdir -p $archivedir/$project/$oldversion + if [ $archivedir/$project/latest ] ; then + rm -f $archivedir/$project/latest + fi + ln -sf $archivedir/$project/$oldversion $archivedir/$project/latest + fi + + if [ x$install_root != "x/" ] ; then + yum install -y -q --installroot=$install_root $full_rpm_name + else + yum install -y -q $full_rpm_name + fi +} + +do_rollback () { + yum downgrade -y -q $rpm_name-$rollbackversion +} + +do_remove () { + yum remove -y -q $rpm_name +} + +# Action! +case "$action" in + install) do_install ;; + rollback) do_rollback ;; + remove) do_remove ;; +esac