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 <[email protected]> --- 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 <[email protected]> # # 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 _______________________________________________ Ovirt-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/ovirt-devel
