[Ovirt-devel] [PATCH node-image] Added script for creating fake oVirt Nodes for testing

Perry Myers pmyers at redhat.com
Sat Nov 8 22:49:20 UTC 2008


Nodes are created via virt-install and are booted off of node ISO image
present in the RPM

Signed-off-by: Perry Myers <pmyers at redhat.com>
---
 Makefile.am              |    3 +-
 create-ovirt-iso-nodes   |   90 ++++++++++++++++++++++++++++++++++++++++++++++
 ovirt-node-image.spec.in |    2 +
 3 files changed, 94 insertions(+), 1 deletions(-)
 create mode 100755 create-ovirt-iso-nodes

diff --git a/Makefile.am b/Makefile.am
index a3d4828..8f7d7b9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -31,7 +31,8 @@ EXTRA_DIST =				\
   ovirt-flash				\
   ovirt-flash-static		\
   ovirt-node-image.ks		\
-  ovirt-pxe
+  ovirt-pxe					\
+  create-ovirt-iso-nodes
 
 DISTCLEANFILES = $(PACKAGE)-$(VERSION).tar.gz
 
diff --git a/create-ovirt-iso-nodes b/create-ovirt-iso-nodes
new file mode 100755
index 0000000..6cb76f6
--- /dev/null
+++ b/create-ovirt-iso-nodes
@@ -0,0 +1,90 @@
+#!/bin/bash
+#
+# Create fake oVirt Nodes for testing CDROM boot
+# Copyright 2008 Red Hat, Inc.
+# Written by Perry Myers <pmyers at redhat.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Library General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+PATH=$PATH:/sbin:/usr/sbin
+
+ME=$(basename "$0")
+warn() { printf '%s: %s\n' "$ME" "$*" >&2; }
+try_h() { printf "Try \`$ME -h' for more information.\n" >&2; }
+die() { warn "$@"; try_h; exit 1; }
+
+BRIDGENAME=ovirtbr0
+IMGDIR_DEFAULT=/var/lib/libvirt/images
+imgdir=$IMGDIR_DEFAULT
+
+gen_fake_managed_node() {
+    local num=$1
+    local nodeimg=$2
+    local last_mac=$(( 54 + $num ))
+
+    echo "Creating fake node$num using $nodeimg..."
+    virsh destroy node$num > /dev/null 2>&1
+    virsh undefine node$num > /dev/null 2>&1
+    # FIXME: virt-install should be changed to have a --nostart parameter
+    # that just defines the VM w/o starting it.
+    virt-install --name=node$num --ram=512 --vcpus=1 \
+        --disk path=$imgdir/node${i}-sda.raw,size=.15 \
+        --cdrom=$nodeimg --livecd \
+        --network=bridge:$BRIDGENAME --mac=00:16:3e:12:34:$last_mac \
+        --vnc --accelerate --hvm --noautoconsole \
+        --os-type=linux --os-variant=fedora9 \
+        --force --noreboot
+    virsh destroy node$num > /dev/null 2>&1
+    echo "node$num created"
+}
+
+usage() {
+    case $# in 1) warn "$1"; try_h; exit 1;; esac
+    cat <<EOF
+Usage: $ME [-d image_dir] -n node.iso
+  -n: node.iso to boot
+  -d: directory to place virtual disk (default: $IMGDIR_DEFAULT)
+  -h: display this help and exit
+EOF
+}
+
+err=0 help=0
+while getopts :d:n:h c; do
+    case $c in
+        n) nodeimg=$OPTARG;;
+        d) imgdir=$OPTARG;;
+        h) help=1;;
+        '?') err=1; warn "invalid option: \`-$OPTARG'";;
+        :) err=1; warn "missing argument to \`-$OPTARG' option";;
+        *) err=1; warn "internal error: \`-$OPTARG' not handled";;
+    esac
+done
+test $err = 1 && { try_h; exit 1; }
+test $help = 1 && { usage; exit 0; }
+test -z "$nodeimg" && { usage ; exit 1; }
+
+# first, check to see we are root
+if [ $( id -u ) -ne 0 ]; then
+    die "Must run as root"
+fi
+
+mkdir -p $imgdir
+
+test -f $nodeimg || die "could not find $nodeimg"
+cp $nodeimg $imgdir
+
+# define the fake managed nodes we will use.
+for i in `seq 3 5` ; do
+    gen_fake_managed_node $i $imgdir/$(basename $nodeimg)
+done
diff --git a/ovirt-node-image.spec.in b/ovirt-node-image.spec.in
index 086dff6..138f4a4 100644
--- a/ovirt-node-image.spec.in
+++ b/ovirt-node-image.spec.in
@@ -67,6 +67,7 @@ mkdir %{buildroot}
 %{__install} -p -m0755 ovirt-pxe %{buildroot}%{_sbindir}
 %{__install} -p -m0755 ovirt-flash %{buildroot}%{_sbindir}
 %{__install} -p -m0755 ovirt-flash-static %{buildroot}%{_sbindir}
+%{__install} -p -m0755 create-ovirt-iso-nodes %{buildroot}%{_sbindir}
 
 %clean
 %{__rm} -rf %{buildroot}
@@ -81,6 +82,7 @@ cobbler sync > /dev/null 2>&1 || :
 %{_sbindir}/ovirt-pxe
 %{_sbindir}/ovirt-flash
 %{_sbindir}/ovirt-flash-static
+%{_sbindir}/create-ovirt-iso-nodes
 
 %files pxe
 %defattr(-,root,root,0644)
-- 
1.6.0.3




More information about the ovirt-devel mailing list