[Ovirt-devel] [PATCH] Makes the managed node boot up process more generic.
Darryl L. Pierce
dpierce at redhat.com
Wed Feb 10 22:09:40 UTC 2010
Refactored the sysvinit scripts so that developers can insert their own
startup code into the boot process.
Added a new system configuration file, /etc/sysconfig/node-config.
Added /etc/node.d/ to allow developers to add scripts to be executed
during the startup process.
Signed-off-by: Darryl L. Pierce <dpierce at redhat.com>
---
Makefile.am | 1 +
ovirt-node.spec.in | 12 +++-
scripts/node-config | 15 ++++
scripts/ovirt | 49 ++++++++---
scripts/ovirt-awake | 152 +++++++++++++++++++++++------------
scripts/ovirt-config-boot-wrapper | 4 +-
scripts/ovirt-early | 159 ++++++++++++++++++-------------------
scripts/ovirt-functions | 2 +
scripts/ovirt-post | 83 +++++++++++--------
9 files changed, 294 insertions(+), 183 deletions(-)
create mode 100644 scripts/node-config
mode change 100644 => 100755 scripts/ovirt-awake
diff --git a/Makefile.am b/Makefile.am
index 2f8865d..7798d09 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -69,6 +69,7 @@ EXTRA_DIST = \
nodeadmin/utils.py \
nodeadmin/volumeconfig.py \
scripts/collectd.conf.in \
+ scripts/node-config \
scripts/ovirt \
scripts/ovirt-awake \
scripts/ovirt-config-boot \
diff --git a/ovirt-node.spec.in b/ovirt-node.spec.in
index c3da1a0..3d8d100 100644
--- a/ovirt-node.spec.in
+++ b/ovirt-node.spec.in
@@ -1,5 +1,6 @@
%define product_family oVirt Node
%define beta Beta
+%define mgmt_scripts_dir %{_sysconfdir}/node.d
%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
@@ -87,6 +88,8 @@ make install DESTDIR=%{buildroot}
%{__install} -d -m0755 %{buildroot}%{_sbindir}
%{__install} -d -m0755 %{buildroot}%{_sysconfdir}
%{__install} -d -m0755 %{buildroot}%{_sysconfdir}/chkconfig.d
+%{__install} -d -m0755 %{buildroot}%{_sysconfdir}/sysconfig
+%{__install} -d -m0755 %{buildroot}%{mgmt_scripts_dir}
%{__install} -d -m0755 %{buildroot}%{_initrddir}
%{__install} -d -m0755 %{buildroot}%{app_root}
%{__install} -d -m0755 %{buildroot}%{_sysconfdir}/cron.d
@@ -94,7 +97,7 @@ make install DESTDIR=%{buildroot}
%{__install} -d -m0755 %{buildroot}%{_sysconfdir}/logrotate.d
%{__install} -d -m0755 %{buildroot}%{python_sitelib}/nodeadmin
-%{__install} -p -m0755 scripts/ovirt-awake %{buildroot}%{_sbindir}
+%{__install} -p -m0644 scripts/node-config %{buildroot}%{_sysconfdir}/sysconfig
%{__install} -p -m0755 scripts/ovirt-config-boot %{buildroot}%{_sbindir}
%{__install} -p -m0755 scripts/ovirt-config-boot-wrapper %{buildroot}%{_sbindir}
%{__install} -p -m0755 scripts/ovirt-config-collectd %{buildroot}%{_sbindir}
@@ -153,6 +156,7 @@ make install DESTDIR=%{buildroot}
# in Makefile now
%{__install} -p -m0755 scripts/ovirt-functions %{buildroot}%{_initrddir}
+%{__install} -p -m0755 scripts/ovirt-awake %{buildroot}%{_initrddir}
%{__install} -p -m0755 scripts/ovirt-early %{buildroot}%{_initrddir}
%{__install} -p -m0755 scripts/ovirt-firstboot %{buildroot}%{_initrddir}
%{__install} -p -m0755 scripts/ovirt %{buildroot}%{_initrddir}
@@ -227,6 +231,7 @@ ln -s ovirt-release %{buildroot}/etc/system-release
%post
# Setup basic collectd configuration
sed '/<Plugin network>/,/<\/Plugin>/d' /etc/collectd.conf.in > /etc/collectd.conf
+/sbin/chkconfig --add ovirt-awake
/sbin/chkconfig --add ovirt-early
/sbin/chkconfig --add ovirt-firstboot
/sbin/chkconfig --add ovirt
@@ -238,6 +243,7 @@ if [ $1 = 0 ] ; then
/sbin/service ovirt-firstboor stop >/dev/null 2>&1
/sbin/service ovirt stop >/dev/null 2>&1
/sbin/service ovirt-post stop >/dev/null 2>&1
+ /sbin/chkconfig --del ovirt-awake
/sbin/chkconfig --del ovirt-early
/sbin/chkconfig --del ovirt-firstboot
/sbin/chkconfig --del ovirt
@@ -270,9 +276,11 @@ fi
%config(noreplace) %{_sysconfdir}/logrotate.d/ovirt-node
%config(noreplace) %{_sysconfdir}/cron.d/ovirt-logrotate
+%{mgmt_scripts_dir}
%{_sysconfdir}/ovirt-config-boot.d
%{_sysconfdir}/ovirt-config-setup.d
%config(noreplace) %{_sysconfdir}/collectd.conf.in
+%config(noreplace) %{_sysconfdir}/sysconfig/node-config
%doc COPYING
# should be ifarch i386
@@ -280,7 +288,6 @@ fi
# end i386 bits
%{app_root}/syslinux-vesa-splash.jpg
-%{_sbindir}/ovirt-awake
%{_sbindir}/ovirt-config-boot
%{_sbindir}/ovirt-config-boot-wrapper
%{_sbindir}/ovirt-config-collectd
@@ -300,6 +307,7 @@ fi
%{_sbindir}/persist
%{_sbindir}/unpersist
+%{_initrddir}/ovirt-awake
%{_initrddir}/ovirt-early
%{_initrddir}/ovirt-firstboot
%{_initrddir}/ovirt
diff --git a/scripts/node-config b/scripts/node-config
new file mode 100644
index 0000000..47d42a1
--- /dev/null
+++ b/scripts/node-config
@@ -0,0 +1,15 @@
+# node configuration
+
+# defines the node's runtime mode, unless overridden
+# on the kernel command line
+# allowed values are:
+# ovirt - managed by an oVirt management server
+# none - standalone, unmamanged mode
+# managed - managed by another server type
+OVIRT_RUNTIME_MODE="none"
+
+# the management server hostname or address
+OVIRT_MANAGEMENT_SERVER=""
+
+# the maangement server port
+OVIRT_MANAGEMENT_PORT=""
\ No newline at end of file
diff --git a/scripts/ovirt b/scripts/ovirt
index 3a03460..d8d52cc 100755
--- a/scripts/ovirt
+++ b/scripts/ovirt
@@ -2,21 +2,24 @@
#
# ovirt Start ovirt services
#
-# chkconfig: - 11 99
-# description: ovirt services
-#
+### BEGIN INIT INFO
+# Provides: ovirt
+# Required-Start: ovirt-early
+# Default-Start: 2 3 4 5
+# Description: Performs managed node configuration functions.
+### END INIT INFO
# Source functions library
. /etc/init.d/functions
. /etc/init.d/ovirt-functions
prog=ovirt
-lockfile=/var/lock/subsys/$prog
-
-start() {
+VAR_SUBSYS_OVIRT=/var/lock/subsys/$prog
- touch $lockfile
+# load the configuration file
+[ -f "$NODE_CONFIG" ] && . "$NODE_CONFIG"
+ovirt_start() {
if is_standalone; then
return 0
fi
@@ -72,7 +75,7 @@ start() {
echo "LIBVIRT_QPID_ARGS=\"--broker $SRV_HOST --port $SRV_PORT\"" >> $libvirt_qpid_conf
echo "/usr/kerberos/bin/kinit -k -t /etc/libvirt/krb5.tab qpidd/`hostname`" >> $libvirt_qpid_conf
fi
- matahari_conf=/etc/sysconfig/matahari
+ matahari_conf=/etc/sysconfig/matahari
if [ -f $matahari_conf ]; then
echo "MATAHARI_ARGS=\"--broker $SRV_HOST --port $SRV_PORT\"" >> $matahari_conf
echo "/usr/kerberos/bin/kinit -k -t /etc/libvirt/krb5.tab qpidd/`hostname`" >> $matahari_conf
@@ -80,22 +83,42 @@ start() {
else
log "skipping libvirt-qpid and matahari configuration, could not find $libvirt_qpid_conf"
fi
+}
+
+start() {
+ touch $VAR_SUBSYS_OVIRT
+ case $OVIRT_RUNTIME_MODE in
+ "ovirt")
+ ovirt_start
+ ;;
+ "managed")
+ if [ -x $MANAGEMENT_SCRIPTS_DIR/ready ]; then
+ log "Executing $MANAGEMENT_SCRIPTS_DIR/ready."
+ $MANAGEMENT_SCRIPTS_DIR/ready
+ RC=$?
+ else
+ log "No script to perform node activation."
+ fi
+ esac
+ rm -f $VAR_SUBSYS_OVIRT
+ return $RC
+}
- rm -f $lockfile
+stop() {
+ echo -n "Stopping ovirt: "
+ success
}
case "$1" in
start)
- printf "Starting ovirt: "
-
+ [ -f "$VAR_SUBSYS_OVIRT" ] && exit 0
+ echo -n "Starting ovirt: "
{
log "Starting ovirt"
start
log "Completed ovirt"
} >> $OVIRT_LOGFILE 2>&1
-
test $? == 0 && success || failure
- echo
;;
status)
status $prog
diff --git a/scripts/ovirt-awake b/scripts/ovirt-awake
old mode 100644
new mode 100755
index 336c2b1..55db140
--- a/scripts/ovirt-awake
+++ b/scripts/ovirt-awake
@@ -1,9 +1,8 @@
#!/bin/bash
#
-# ovirt-awake Notifies the oVirt server that an oVirt Node is
-# starting up.
+# ovirt-awake - Notifies any management server that the node is starting.
#
-# Copyright (C) 2008 Red Hat, Inc.
+# Copyright (C) 2008-2010 Red Hat, Inc.
# Written by Darryl L. Pierce <dpierce at redhat.com>
#
# This program is free software; you can redistribute it and/or modify
@@ -20,86 +19,135 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA. A copy of the GNU General Public License is
# also available at http://www.gnu.org/copyleft/gpl.html.
+#
+### BEGIN INIT INFO
+# Provides: ovirt-awake
+# Default-Start: 2 3 4 5
+# Description: Managed node service to alert management servers.
+### END INIT INFO
+
+# Source functions library
+# config: /etc/sysconfig/node-config
-# Source function library
. /etc/init.d/functions
. /etc/init.d/ovirt-functions
-function connect-to-server () {
- echo "Connecting to $SRV_HOST:$SRV_PORT"
- exec 3<> /dev/tcp/$SRV_HOST/$SRV_PORT
-}
+prog=ovirt-early
+NODE_CONFIG=/etc/sysconfig/node-config
+VAR_SUBSYS_NODECONFIG=/var/lock/subsys/node-config
-function disconnect-from-server () {
- <&3-
-}
+# load the configuration file
+[ -f "$NODE_CONFIG" ] && . "$NODE_CONFIG"
-function send-text () {
- echo "$1" 1>&3
-}
+send_text () {
+ local text=${1}
-function receive-text () {
- read 0<&3
+ echo "$text" 1>&3
}
-function error () {
- errmsg="ERR: (ovirt-awake) $1"
- send-text "$errmsg"
- log "$errmsg"
+receive_text () {
+ read 0<&3
}
-start () {
- connect-to-server
-
- receive-text
-
- if [ $REPLY == "HELLO?" ]; then
- echo "Starting wakeup conversation."
+error () {
+ local text=${1-}
- send-text "HELLO!"
-
- read 0<&3
-
- if [ $REPLY == "MODE?" ]; then
- send-text "AWAKEN"
-
- receive-text
+ send_text "ERR: (ovirt-awake) ${text}"
+ # log "${text}"
+}
- KEYTAB=`echo $REPLY | awk '{ print $2 }'`
+ovirt_startup () {
+ local mgmthost=${OVIRT_MANAGEMENT_SERVER}
+ local mgmtport=${OVIRT_MANAGEMENT_PORT}
- if [ -n "$KEYTAB" -a -n "$KEYTAB_FILE" ]; then
- echo "Retrieving keytab: '$KEYTAB'"
+ if [[ -z "${mgmthost}" ]] || [[ -z "${mgmtport}" ]]; then
+ find_srv identify tcp
+ mgmthost=$SRV_HOST
+ mgmtport=$SRV_PORT
+ fi
- wget -q "$KEYTAB" --no-check-certificate --output-document="$KEYTAB_FILE"
+ if [[ -n "${mgmthost}" ]] && [[ -n "${mgmtport}" ]]; then
+ # log "Notifying oVirt management server: ${mgmthost}:${mgmtport}"
+ exec 3<> /dev/tcp/$mgmthost:$mgmtport
+
+ connect-to-server
+ receive_text
+ if [ $REPLY == "HELLO?" ]; then
+ logo "Starting wakeup conversation."
+ send_text "HELLO!"
+ receive_text
+ if [ $REPLY == "MODE?" ]; then
+ send_text "AWAKEN"
+ receive_text
+ KEYTAB=$(echo $REPLY | awk '{ print $2 }')
+ if [ -n "$KEYTAB" -a -n "$KEYTAB_FILE" ]; then
+ # log "Retrieving keytab: '$KEYTAB'"
+ wget -q "$KEYTAB" --no-check-certificate --output-document="$KEYTAB_FILE"
+ else
+ log "No keytab to retrieve"
+ fi
+ send_text ACK
else
- echo "No keytab to retrieve"
+ error "Did not get a mode request."
fi
- send-text ACK
else
- error "Did not get a mode request."
+ error "Did not get a proper startup marker."
fi
+ # log "Disconnecting."
+ <&3-
else
- error "Did not get a proper startup marker."
+ # log "Missing server information. Failing..."
+ return 1
fi
+}
- echo "Disconnecting."
+# Override this method to provide support for notifying a management
+# system that the node has started and will be available after
+# system initialization
+start () {
+ local RC=0
+
+ touch $VAR_SUBSYS_NODECONFIG
+ # log "Starting ovirt-awake."
+ case "$OVIRT_RUNTIME_MODE" in
+ "none")
+ log "Node is operating in unmanaged mode."
+ ;;
+ "ovirt")
+ ovirt_startup
+ RC=$?
+ ;;
+ "managed")
+ if [ -x /config/$MANAGEMENT_SCRIPTS_DIR/awake ]; then
+ log "Executing /config/$MANAGEMENT_SCRIPTS_DIR/awake"
+ /config/$MANAGEMENT_SCRIPTS_DIR/awake
+ else
+ echo "No script found to notify management server during awake state."
+ fi
+ ;;
+ esac
- disconnect-from-server
+ # log "Completed ovirt-awake: RC=${RC}"
+ rm -f $VAR_SUBSYS_NODECONFIG
+ return $RC
}
case "$1" in
start)
- SRV_HOST=$2
- SRV_PORT=$3
- KEYTAB_FILE=$4
- start
- RETVAL=$?
- ;;
+ echo -n "Starting ovirt-awake: "
+ [ -f "$VAR_SUBSYS_NODECONFIG" ] && exit 0
+ {
+ start
+ RETVAL=$?
+ log "Completed ovirt-awake: RETVAL=$?"
+ } >> $OVIRT_LOGFILE 2>&1
+ test $RETVAL == 0 && success || failure
+ ;;
*)
echo "Usage: $0 start"
RETVAL=2
- ;;
+ ;;
esac
exit $RETVAL
diff --git a/scripts/ovirt-config-boot-wrapper b/scripts/ovirt-config-boot-wrapper
index 06f1088..89f0fc0 100755
--- a/scripts/ovirt-config-boot-wrapper
+++ b/scripts/ovirt-config-boot-wrapper
@@ -20,9 +20,9 @@ continuing."
printf "\n"
read -p "Please enter kernel boot arguments (hit return to use the above): "
if [[ -n "$REPLY" ]]; then
- bootparams="${REPLY}"
+ bootparams="${REPLY}"
else
- bootparams="${OVIRT_BOOTPARAMS}"
+ bootparams="${OVIRT_BOOTPARAMS}"
fi
if ask_yes_or_no "Do you wish to continue ([Y]es/[N]o)?"; then
mount_live \
diff --git a/scripts/ovirt-early b/scripts/ovirt-early
index 0689bdb..23c4f6e 100755
--- a/scripts/ovirt-early
+++ b/scripts/ovirt-early
@@ -2,16 +2,22 @@
#
# ovirt-early Start early ovirt services
#
-# chkconfig: - 01 99
-# description: ovirt-early services
-#
+### BEGIN INIT INFO
+# Provides: ovirt-early
+# Required-Start: ovirt-awake
+# Default-Start: 2 3 4 5
+# Dewscription: Managed node early configuration service
+### END INIT INFO
# Source functions library
. /etc/init.d/functions
. /etc/init.d/ovirt-functions
prog=ovirt-early
-lockfile=/var/lock/subsys/$prog
+VAR_SUBSYS_OVIRT_EARLY=/var/lock/subsys/$prog
+
+# load the configuration file
+[ -f "$NODE_CONFIG" ] && . "$NODE_CONFIG"
BONDING_MODCONF_FILE=/etc/modprobe.d/bonding
AUGTOOL_CONFIG=/var/tmp/augtool-config
@@ -23,16 +29,16 @@ get_mac_addresses() {
macs=""
devices=$(ls -b /sys/class/net/)
for device in $devices; do
- if [ "$device" != "$DEVICE" ]; then
- mac=$(cat /sys/class/net/$device/address 2>/dev/null)
- if [ -n "$mac" -a "$mac" != "00:00:00:00:00:00" ]; then
- macs="${macs}${mac}=${device},"
- fi
- fi
+ if [ "$device" != "$DEVICE" ]; then
+ mac=$(cat /sys/class/net/$device/address 2>/dev/null)
+ if [ -n "$mac" -a "$mac" != "00:00:00:00:00:00" ]; then
+ macs="${macs}${mac}=${device},"
+ fi
+ fi
done
}
-configure_from_network() {
+configure_ovirt_management_nic() {
DEVICE=$1
if [ -n "$DEVICE" ]; then
@@ -62,12 +68,12 @@ configure_from_network() {
if [ $? -eq 0 ]; then
log "Remote configuration bundle retrieved to $cfgdb"
ovirt-process-config $cfgdb $BONDING_MODCONF_FILE $AUGTOOL_CONFIG
- if [ $? -eq 0 ]; then
- log "Remote configuration retrieved and applied"
+ if [ $? -eq 0 ]; then
+ log "Remote configuration retrieved and applied"
rm $cfgdb
- else
- log "Failure to retrieve or apply remote configuration"
- fi
+ else
+ log "Failure to retrieve or apply remote configuration"
+ fi
else
log "Failed to retrieve configuration bundle"
fi
@@ -88,11 +94,11 @@ configure_from_network() {
if [ ! -f $ifcfg ]; then
log "Applying default configuration to $DEVICE and $BRIDGE"
printf '%s\n' "DEVICE=$DEVICE" ONBOOT=yes "BRIDGE=$BRIDGE" \
- > /etc/sysconfig/network-scripts/ifcfg-$DEVICE
+ > /etc/sysconfig/network-scripts/ifcfg-$DEVICE
printf '%s\n' "DEVICE=$BRIDGE" "BOOTPROTO=dhcp" \
- ONBOOT=yes TYPE=Bridge PEERNTP=yes DELAY=0 \
- > /etc/sysconfig/network-scripts/ifcfg-$BRIDGE
- log "Default config applied"
+ ONBOOT=yes TYPE=Bridge PEERNTP=yes DELAY=0 \
+ > /etc/sysconfig/network-scripts/ifcfg-$BRIDGE
+ log "Default config applied"
fi
}
@@ -135,9 +141,39 @@ find_disk() {
return 1
}
+configure_management_interface() {
+ log "Configuring the manangement interface."
+ case $OVIRT_RUNTIME_MODE in
+ "ovirt")
+ configure_ovirt_management_nic $bootif
+ if [ -n "$init" ]; then
+ ovirt-config-storage AUTO
+ # initial configuration storage, after /config creation
+ ovirt_store_config \
+ /etc/sysconfig/network-scripts/ifcfg-* \
+ $BONDING_MODCONF_FILE
+ if [ $upgrade = 1 ]; then
+ # local disk installation for managed mode
+ mount_live
+ ovirt-config-boot /live "$bootparams"
+ fi
+ fi
+ ;;
+ "managed")
+ if [ -x $MANAGEMENT_SCRIPTS_DIR/configure-management-interface ]; then
+ log "Executing $MANAGEMENT_SCRIPTS_DIR/configure-management-interface"
+ $MANAGEMENT_SCRIPTS_DIR/configure-management-interface
+ else
+ echo "No script to configure management interface found."
+ fi
+ ;;
+ "none")
+ log "Unmanaged node: no management interface to configure."
+ esac
+}
start() {
- touch $lockfile
+ touch $VAR_SUBSYS_OVIRT_EARLY
# oVirt boot parameters
# BOOTIF=link|eth*|<MAC> (appended by pxelinux)
# ovirt_init=[usb|scsi[:serial#]|/dev/...]
@@ -351,21 +387,21 @@ start() {
dns=*)
dns=${i#dns=}
;;
- ntp=*)
- ntp=${i#ntp=}
- ;;
+ ntp=*)
+ ntp=${i#ntp=}
+ ;;
hostname=*)
hostname=${i#hostname=}
;;
vlan=*)
vlan=${i#vlan=}
;;
- ssh_pwauth=1 | ssh_pwauth=true)
- ssh_pwauth=true
- ;;
- ssh_pwauth=0 | ssh_pwauth=false)
- ssh_pwauth=false
- ;;
+ ssh_pwauth=1 | ssh_pwauth=true)
+ ssh_pwauth=true
+ ;;
+ ssh_pwauth=0 | ssh_pwauth=false)
+ ssh_pwauth=false
+ ;;
syslog=*)
i=${i#syslog=}
eval $(printf $i|awk -F: '{print "syslog_server="$1; print "syslog_port="$2;}')
@@ -438,22 +474,10 @@ start() {
-e "s/^mech_list: .*gssapi.*/mech_list: digest-md5/" \
/etc/sasl2/libvirt.conf
else
- configure_from_network $bootif
- if [ -n "$init" ]; then
- ovirt-config-storage AUTO
- # initial configuration storage, after /config creation
- ovirt_store_config \
- /etc/sysconfig/network-scripts/ifcfg-* \
- $BONDING_MODCONF_FILE
- if [ $upgrade = 1 ]; then
- # local disk installation for managed mode
- mount_live
- ovirt-config-boot /live "$bootparams"
- fi
- fi
+ configure_manament_interface
fi
- rm -f $lockfile
+ rm -f $VAR_SUBSYS_OVIRT_EARLY
for hook in $ovirt_early; do
post="$EARLY_DIR/post-$hook"
@@ -465,49 +489,22 @@ start() {
return 0
}
-scan_for_swap() {
- # swap partition activation
- # find all of the partitions on the system
-
- # get the system pagesize
- PAGESIZE=`getconf PAGESIZE`
-
- # look first at raw partitions XXX disk/by-id or HAL? (for cciss)
- BLOCKDEVS=`ls /dev/sd? /dev/hd? 2>/dev/null`
-
- # now LVM partitions
- LVMDEVS="$DEVICES `lvscan | awk '{print $2}' | tr -d \"'\"`"
-
- SWAPDEVS="$LVMDEVS"
- for dev in $BLOCKDEVS; do
- SWAPDEVS="$SWAPDEVS `fdisk -l $dev 2>/dev/null | tr '*' ' ' \
- | awk '$5 ~ /82/ {print $1}'`"
- done
-
- # now check if any of these partitions are swap, and activate if so
- for device in $SWAPDEVS; do
- sig=`dd if=$device bs=1 count=10 skip=$(( $PAGESIZE - 10 )) \
- 2>/dev/null`
- if [ "$sig" = "SWAPSPACE2" ]; then
- swapon $device
- fi
- done
+stop() {
+ echo -n "Stopping ovirt-early: "
+ success
}
case "$1" in
start)
- printf "Starting ovirt-early: "
-
+ [ -f "$VAR_SUBSYS_NODE_CONFIG" ] && exit 0
+ echo -n "Starting ovirt-early: "
{
- start_log
log "Starting ovirt-early"
start
log "Completed ovirt-early"
- stop_log
- }
-
- test $? == 0 && success || failure
- echo
+ RETVAL=$?
+ } >> $OVIRT_LOGFILE 2>&1
+ test $RETVAL == 0 && success || failure
;;
status)
status $prog
@@ -521,5 +518,7 @@ case "$1" in
;;
*)
echo "Usage: ovirt-early {start}"
- exit 2
+ RETVAL=2
esac
+
+exit $RETVAL
diff --git a/scripts/ovirt-functions b/scripts/ovirt-functions
index bab194b..ff2b016 100644
--- a/scripts/ovirt-functions
+++ b/scripts/ovirt-functions
@@ -16,6 +16,8 @@ OVIRT_STANDALONE=${OVIRT_STANDALONE:-0}
OVIRT_BACKUP_DIR=/var/lib/ovirt-backup
+MANAGEMENT_SCRIPTS_DIR=/etc/node.d
+
OVIRT_CONFIG_FILES="\
/etc/sysconfig/network-scripts/ifcfg-* \
/etc/rsyslog.conf \
diff --git a/scripts/ovirt-post b/scripts/ovirt-post
index 03363cc..951d108 100755
--- a/scripts/ovirt-post
+++ b/scripts/ovirt-post
@@ -2,34 +2,40 @@
#
# ovirt Start ovirt services
#
-# chkconfig: - 98 02
-# description: ovirt-post services
-#
+### BEGIN INIT INFO
+# Provides: ovirt-post
+# Required-Start: ovirt
+# Default-Start: 2 3 4 5
+# Description: Performs managed node post configuration setup.
+### END INIT INFO
# Source functions library
. /etc/init.d/functions
. /etc/init.d/ovirt-functions
prog=ovirt-post
-lockfile=/var/lock/subsys/$prog
+VAR_SUBSYS_OVIRT_POST=/var/lock/subsys/$prog
+
+# load the configuration file
+[ -f "$NODE_CONFIG" ] && . "$NODE_CONFIG"
start() {
# wait for libvirt to finish initializing
local count=0
while true; do
- if [ -r /var/run/libvirt/libvirt-sock ]; then
- break
- elif [ "$count" == "100" ]; then
- log "Libvirt did not initialize in time..."
- return 1
- else
- log "Waiting for libvirt to finish initializing..."
- count=$(expr $count + 1)
- sleep 1
- fi
-
- touch $lockfile
-
+ if [ -r /var/run/libvirt/libvirt-sock ]; then
+ break
+ elif [ "$count" == "100" ]; then
+ log "Libvirt did not initialize in time..."
+ return 1
+ else
+ log "Waiting for libvirt to finish initializing..."
+ count=$(expr $count + 1)
+ sleep 1
+ fi
+
+ touch $VAR_SUBSYS_OVIRT_POST
+
done
BACKUP=$(mktemp)
ISSUE=/etc/issue
@@ -38,20 +44,20 @@ start() {
cp -f $BACKUP $ISSUE
hwvirt=$(virsh capabilities)
if [[ $hwvirt =~ kvm ]]; then
- log "Hardware virtualization detected"
+ log "Hardware virtualization detected"
else
- log "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
- log "!!! Hardware Virtualization Is Unavailable !!!"
- log "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
-
- echo "Virtualization hardware is unavailable." >> $ISSUE
-
- flags=$(cat /proc/cpuinfo | grep "^flags")
- if [[ $flags =~ vmx ]] || [[ $flags =~ svm ]]; then
- echo "(Virtualization hardware was detected but is disabled)" >> $ISSUE
- else
- echo "(No virtualization hardware was detected on this system)" >> $ISSUE
- fi
+ log "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+ log "!!! Hardware Virtualization Is Unavailable !!!"
+ log "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+
+ echo "Virtualization hardware is unavailable." >> $ISSUE
+
+ flags=$(cat /proc/cpuinfo | grep "^flags")
+ if [[ $flags =~ vmx ]] || [[ $flags =~ svm ]]; then
+ echo "(Virtualization hardware was detected but is disabled)" >> $ISSUE
+ else
+ echo "(No virtualization hardware was detected on this system)" >> $ISSUE
+ fi
fi
cp -f $ISSUE $ISSUE_NET
@@ -62,18 +68,27 @@ start() {
# persist selected configuration files
ovirt_store_config \
/etc/krb5.conf \
+ /etc/node.d \
+ /etc/sysconfig/node-config
/etc/libvirt/krb5.tab \
/etc/ssh/ssh_host*_key*
- # Removed ovirt-identify-node since it has now
- # been replaced with the matahari qmf agent.
+ # perform any post startup operations
+ case $OVIRT_RUNTIME_MODE in
+ esac
+
+ rm -f $VAR_SUBSYS_OVIRT_POST
+}
- rm -f $lockfile
+stop() {
+ echo -n "Stopping ovirt-post: "
+ success
}
case "$1" in
start)
- printf "Starting ovirt-post: "
+ [ -f "$VAR_SUBSYS_OVIRT_POST" ] && exit 0
+ echo -n "Starting ovirt-post: "
{
log "Starting ovirt-post"
--
1.6.6
More information about the ovirt-devel
mailing list