WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-users

[Xen-users] "vmid-based VMs" xendomains script addition

To: xen-users@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-users] "vmid-based VMs" xendomains script addition
From: Jeff Blaine <jblaine@xxxxxxxxx>
Date: Thu, 21 Apr 2005 12:29:03 -0400
Delivery-date: Thu, 21 Apr 2005 16:28:52 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-users-request@lists.xensource.com?subject=help>
List-id: Xen user discussion <xen-users.lists.xensource.com>
List-post: <mailto:xen-users@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-users>, <mailto:xen-users-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-users>, <mailto:xen-users-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-users-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mozilla Thunderbird 1.0 (Windows/20041206)
See attached xendomains init script and the comments and a
pseudocode representation of the logic added (below).

This is not endorsed in any way by the Xen team.  It's
something I wanted and I can see others wanting it as
well...maybe.

...
AUTODIR_VMIDBASED=/etc/xen/auto-vmid
VMIDBASED_CONFIG=/etc/xen/auto-vmid/vmid-based.cfg
...
    # If configured for it, create the "vmid-based" VMs.  This
    # logic is based on the idea that you have a single master
    # controller configuration file with code in it to make use
    # of a passed-in VM identifier (like /etc/xen/xmexample2 in
    # the Xen distribution).  It expects the configuration file
    # to be set at the top of this script as VMIDBASED_CONFIG
    # and will loop over everything in AUTODIR_VMIDBASED and try
    # to pass each filename to 'xm create...blah...vmid=THATFILENAME".
    # For example, to enable my 3 VMs, I have my config file in
    # the proper place and my 3 separate VM OS images already
    # configured -- then I run "touch 1 2 3" and from there on out
    # the code below will create the VMs every time this script
    # runs.

    if AUTODIR_VMIDBASED directory exists and has more than 1 file
        if VMIDBASED_CONFIG file exists
            for every "filename" in AUTODIR_VMIDBASED
                if filename is same as VMIDBASED_CONFIG
                    skip over it
                else
                    xm create ... VMIDBASED_CONFIG vmid=filename
                endif
            end-of-for-loop
        endif
    endif
...
#!/bin/sh
#
# /etc/init.d/xendomains
# Start / stop domains automatically when domain 0 boots / shuts down.
#
# chkconfig: 345 99 00
# description: Start / stop Xen domains.
#
# This script offers fairly basic functionality.  It should work on Redhat
# but also on LSB-compliant SuSE releases and on Debian with the LSB package
# installed.  (LSB is the Linux Standard Base)
#
# Based on the example in the "Designing High Quality Integrated Linux
# Applications HOWTO" by Avi Alkalay
# <http://www.tldp.org/HOWTO/HighQuality-Apps-HOWTO/>
#

RETVAL=0

INITD=/etc/init.d

AUTODIR=/etc/xen/auto
# Full path required
AUTODIR_VMIDBASED=/etc/xen/auto-vmid
# Full path required
VMIDBASED_CONFIG=/etc/xen/auto-vmid/vmid-based.cfg
LOCKFILE=/var/lock/subsys/xendomains

if [ -e /lib/lsb ]; then
    # assume an LSB-compliant distro (Debian with LSB package,
    # recent-enough SuSE, others...)

    . /lib/lsb/init-functions # source LSB standard functions

    on_fn_exit()
    {
        if [ $RETVAL -eq 0 ]; then
            log_success_msg
        else
            log_failure_msg
        fi
    }
elif [ -r $INITD/functions ]; then
    # assume a Redhat-like distro
    . $INITD/functions # source Redhat functions

    on_fn_exit()
    {
        if [ $RETVAL -eq 0 ]; then
            success
        else
            failure
        fi
        
        echo
    }
else
    # none of the above
    LOCKFILE=/var/lock/xendomains

    on_fn_exit()
    {
        echo
    }
fi



start() {
    if [ -f $LOCKFILE ]; then return; fi

    echo -n $"Starting auto Xen domains:"

    # We expect config scripts for auto starting domains to be in
    # AUTODIR - they could just be symlinks to files elsewhere
    if [ -d $AUTODIR ] && [ $(ls $AUTODIR | wc -l) -gt 0 ]; then
        touch $LOCKFILE
        
       # Create all domains with config files in AUTODIR.
        for dom in  $AUTODIR/*; do
            xm create --quiet --defconfig $dom
            if [ $? -ne 0 ]; then
                RETVAL=$?
            fi
        done

    fi

    # If configured for it, create the "vmid-based" VMs.  This
    # logic is based on the idea that you have a single master
    # controller configuration file with code in it to make use
    # of a passed-in VM identifier (like /etc/xen/xmexample2 in
    # the Xen distribution).  It expects the configuration file
    # to be set at the top of this script as VMIDBASED_CONFIG
    # and will loop over everything in AUTODIR_VMIDBASED and try
    # to pass each filename to 'xm create...blah...vmid=THATFILENAM".
    # For example, to enable my 3 VMs, I have my config file in
    # the proper place and my 3 separate VM OS images already
    # configured -- then I run "touch 1 2 3" and from there on out
    # the code below will create the VMs every time this script
    # runs.
    if [ -d $AUTODIR_VMIDBASED ] && [ $(ls $AUTODIR_VMIDBASED | wc -l) -gt 1 ]; 
then
        if [ -f $VMIDBASED_CONFIG ]; then
            for dom in $AUTODIR_VMIDBASED/*; do
                if [ "$dom" = "$VMIDBASED_CONFIG" ]; then
                    # Skip the config file itself
                    continue
                fi
                VMID=`basename $dom`
                xm create --quiet --defconfig $VMIDBASED_CONFIG vmid=$VMID
                if [ $? -ne 0 ]; then
                    RETVAL=$?
                fi
            done
        fi
    fi

    on_fn_exit
}

stop()
{
    # NB. this shuts down ALL Xen domains (politely), not just the ones in
    # AUTODIR/*
    # This is because it's easier to do ;-) but arguably if this script is run
    # on system shutdown then it's also the right thing to do.
    
    echo -n $"Shutting down all Xen domains:"

    xm shutdown --all --wait --halt

    RETVAL=$?

    [ $RETVAL -eq 0 ] && rm -f $LOCKFILE

    on_fn_exit
}

# This does NOT necessarily restart all running domains: instead it
# stops all running domains and then boots all the domains specified in
# AUTODIR.  If other domains have been started manually then they will
# not get restarted.
# Commented out to avoid confusion!
#
#restart()
#{
#    stop
#    start
#}

# same as restart for now - commented out to avoid confusion
#reload()
#{
#    restart
#}


case "$1" in
    start)
        start
        ;;

    stop)
        stop
        ;;

# The following are commented out to disable them by default to avoid confusion
# - see the notes above
#
#    restart)
#       restart
#       ;;
#
#    reload)
#       reload
#       ;;

    status)
        xm list
        ;;

    *)
        echo $"Usage: $0 {start|stop|status}"
        ;;
esac

exit $RETVAL
_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-users] "vmid-based VMs" xendomains script addition, Jeff Blaine <=