From 416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5 Mon Sep 17 00:00:00 2001 From: Sebastian Schmelzer Date: Thu, 2 Sep 2010 17:50:49 +0200 Subject: change dir structure --- .../OpenSLX/OSPlugin/sysrqshutdown.pm | 101 +++++++++++++++++++++ .../plugins/sysrqshutdown/XX_sysrqshutdown.sh | 38 ++++++++ .../plugins/sysrqshutdown/files/shutdown | 54 +++++++++++ 3 files changed, 193 insertions(+) create mode 100644 src/os-plugins/plugins/sysrqshutdown/OpenSLX/OSPlugin/sysrqshutdown.pm create mode 100644 src/os-plugins/plugins/sysrqshutdown/XX_sysrqshutdown.sh create mode 100644 src/os-plugins/plugins/sysrqshutdown/files/shutdown (limited to 'src/os-plugins/plugins/sysrqshutdown') diff --git a/src/os-plugins/plugins/sysrqshutdown/OpenSLX/OSPlugin/sysrqshutdown.pm b/src/os-plugins/plugins/sysrqshutdown/OpenSLX/OSPlugin/sysrqshutdown.pm new file mode 100644 index 00000000..9800c203 --- /dev/null +++ b/src/os-plugins/plugins/sysrqshutdown/OpenSLX/OSPlugin/sysrqshutdown.pm @@ -0,0 +1,101 @@ +# Copyright (c) 2007 - OpenSLX GmbH +# +# This program is free software distributed under the GPL version 2. +# See http://openslx.org/COPYING +# +# If you have any feedback please consult http://openslx.org/feedback and +# send your suggestions, praise, or complaints to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org/ +# ----------------------------------------------------------------------------- +# sysrqshutdown.pm +# - implementation of the 'sysrqshutdow' plugin, which replaces the shutdown +# binary through a SYSRQ shutdown script +# ----------------------------------------------------------------------------- +package OpenSLX::OSPlugin::sysrqshutdown; + +use strict; +use warnings; + +use base qw(OpenSLX::OSPlugin::Base); + +use File::Path; + +use OpenSLX::Basics; +use OpenSLX::Utils; + +sub new +{ + my $class = shift; + + my $self = { + name => 'sysrqshutdown', + }; + + return bless $self, $class; +} + +sub getInfo +{ + my $self = shift; + + return { + description => unshiftHereDoc(<<' End-of-Here'), + Replaces the shutdown binary through a SYSRQ shutdown script + End-of-Here + precedence => 10, + }; +} + +sub getAttrInfo +{ + my $self = shift; + + return { + 'sysrqshutdown::active' => { + applies_to_systems => 1, + applies_to_clients => 1, + description => unshiftHereDoc(<<' End-of-Here'), + should the 'sysrqshutdown'-plugin be activated? + End-of-Here + content_regex => qr{^(0|1)$}, + content_descr => '1 means active - 0 means inactive', + default => '1', + }, + + }; +} + +sub installationPhase +{ + my $self = shift; + my $info = shift; + + if (! -e "/sbin/shutdown.slxorig") { + # copy files + my $openslxBasePath = $info->{'openslx-base-path'}; + my $pluginName = $self->{'name'}; + my $pluginBasePath + = "$openslxBasePath/lib/plugins/$pluginName/files"; + + system("mv /sbin/shutdown /sbin/shutdown.slxorig"); + system("cp -p $pluginBasePath/shutdown /sbin/"); + chmod 0755, "/sbin/shutdown"; + } + + return; +} + +sub removalPhase +{ + my $self = shift; + my $info = shift; + + if (-e "/sbin/shutdown.slxorig") { + system("mv /sbin/shutdown.slxorig /sbin/shutdown"); + } + + return; +} + +1; diff --git a/src/os-plugins/plugins/sysrqshutdown/XX_sysrqshutdown.sh b/src/os-plugins/plugins/sysrqshutdown/XX_sysrqshutdown.sh new file mode 100644 index 00000000..66a728da --- /dev/null +++ b/src/os-plugins/plugins/sysrqshutdown/XX_sysrqshutdown.sh @@ -0,0 +1,38 @@ +# Copyright (c) 2010 - RZ Uni Freiburg +# Copyright (c) 2010 - OpenSLX GmbH +# +# This program/file is free software distributed under the GPL version 2. +# See http://openslx.org/COPYING +# +# If you have any feedback please consult http://openslx.org/feedback and +# send your feedback to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org +# +# script is included from init via the "." load function - thus it has all +# variables and functions available + +# include default directories +. /etc/openslx.conf + +CONFFILE="/initramfs/plugin-conf/sysrqshutdown.conf" +PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/sysrqshutdown + +if [ -f $CONFFILE ]; then + + # load needed variables + . $CONFFILE + + if [ ${sysrqshutdown_active} -ne 0 ] ; then + [ ${DEBUGLEVEL} -gt 0 ] && echo "executing the 'sysrqshutdown' plugin ..." + + testmkd ${PLUGINCONFDIR} + cp $CONFFILE ${PLUGINCONFDIR}/sysrqshutdown.conf + + # finished ... + [ $DEBUGLEVEL -gt 0 ] && echo "done with 'sysrqshutdown' plugin ..." + fi +else + [ $DEBUGLEVEL -gt 0 ] && echo " * config of 'sysrqshutdown' plugin failed" +fi + diff --git a/src/os-plugins/plugins/sysrqshutdown/files/shutdown b/src/os-plugins/plugins/sysrqshutdown/files/shutdown new file mode 100644 index 00000000..7f4e9a1f --- /dev/null +++ b/src/os-plugins/plugins/sysrqshutdown/files/shutdown @@ -0,0 +1,54 @@ +#!/bin/bash +# ----------------------------------------------------------------------------- +# Copyright (c) 2010 - RZ Uni FR +# Copyright (c) 2010 - OpenSLX GmbH +# +# This program is free software distributed under the GPL version 2. +# See http://openslx.org/COPYING +# +# If you have any feedback please consult http://openslx.org/feedback and +# send your suggestions, praise, or complaints to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org/ +# ----------------------------------------------------------------------------- +# shutdown +# - Script for SYSRQ shutdown +################################################################################ + +. /etc/opt/openslx/openslx.conf + +################################################################################ +### Define default dirs / get configs +################################################################################ + +PLUGINCONFROOT=${OPENSLX_DEFAULT_CONFDIR}/plugins +PLUGINCONFVMGRID=${PLUGINCONFROOT}/sysrqshutdown +# include general configuration from vmgrid +if [ -f ${PLUGINCONFVMGRID}/sysrqshutdown.conf ]; then + . ${PLUGINCONFVMGRID}/sysrqshutdown.conf +else + sysrqshutdown_active=0 +fi + +if [ ${sysrqshutdown_active} -eq 1 ]; then + # check if reboot or halt + case "$@" in + '-r now') + for i in $(echo s u b); do + echo $i > /proc/sysrq-trigger & + done + exit 0 + ;; + '-h now') + for i in $(echo s u o); do + echo $i > /proc/sysrq-trigger & + done + exit 0 + ;; + esac +fi +# else use orig shutdown +shutdown.slxorig $@ + +exit 0 + -- cgit v1.2.3-55-g7522