Darryl L. Pierce
2010-Feb-10 22:09 UTC
[Ovirt-devel] RFC: First pass at making the node generic...
I'm looking for feedback on this first patch. The node has been pushed towards a more generic boot process. With this patch the node can now boot up and execute a few specifically-named scripts that reside in /etc/node.d/ at key points during the startup. After this goes upstream, the next step will be to define in more detail the remote interfaces for the "managed" runtime operation.
Darryl L. Pierce
2010-Feb-10 22:09 UTC
[Ovirt-devel] [PATCH] Makes the managed node boot up process more generic.
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
Apparently Analagous Threads
- More complete patch...
- [PATCH: node 0/3] replace ovirt-identify-node with matahari
- [PATCH: ovirt-identify-node replacement 0/4] ovirt node patch to replace ovirt-identify-node with matahari qmf agent
- Bugs with ovirt-awake
- Refactor ovirt-node code base for inclusion in Fedora