summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2008-10-13 12:02:35 +1100
committerMartin Schwenke <martin@meltin.net>2008-10-13 12:02:35 +1100
commit86f11ca93bbc4a96f651ddff142a0e06ec7ce514 (patch)
tree35a70238201625a53341060bf050c4c03f222be5
parent9723980b73eec164f84750bbce5d6629819b66ff (diff)
Factor common code from create_node and create_tsm into
create_node_common. Replace get_macaddr with new function set_macaddrs, which sets multiple MAC address variables. Signed-off-by: Martin Schwenke <martin@meltin.net>
-rwxr-xr-xautocluster136
1 files changed, 60 insertions, 76 deletions
diff --git a/autocluster b/autocluster
index a355de7..04070d2 100755
--- a/autocluster
+++ b/autocluster
@@ -71,48 +71,43 @@ EOF
}
###############################
-# create a single node
-create_node() {
- CLUSTER="$1"
- NODENUMBER="$2"
- NAME="$CLUSTER""n$NODENUMBER"
- BASE="$VIRTBASE/$BASENAME.img"
- DISK="$VIRTBASE/$CLUSTER/$NAME.qcow2"
- NUMSHARED=3
-
- # first node might need more memory for SoFS GUI
- if [ "$WITH_SOFS_GUI" = 1 -a $NODENUMBER = 1 -a $GUIMEM -gt $MEM ]; then
- NODEMEM=$GUIMEM
+# common node creation stuff
+create_node_common() {
+ local node="$1"
+
+ local nodenumber
+ local template_file
+ if [ "$node" = "tsm" ] ; then
+ nodenumber=0
+ NAME="${CLUSTER}tsm"
+ template_file=$TSM_TEMPLATE
+ echo "Creating TSM cluster node $NAME"
else
- NODEMEM=$MEM
+ nodenumber=$node
+ NAME="${CLUSTER}n${nodenumber}"
+ template_file=$NODE_TEMPLATE
+ echo "Creating cluster node $NAME"
fi
- echo "Creating cluster node $NAME"
- mkdir -p $VIRTBASE/$CLUSTER
+ IPNUM=$(($FIRSTIP + $nodenumber))
+ DISK="${VIRTBASE}/${CLUSTER}/${NAME}.qcow2"
+
+ mkdir -p $VIRTBASE/$CLUSTER tmp
echo "Creating the disk"
rm -f "$DISK"
- qemu-img create -b "$BASE" -f qcow2 "$DISK"
-
- IPNUM=`expr $FIRSTIP + $NODENUMBER`
+ qemu-img create -b "$VIRTBASE/$BASENAME.img" -f qcow2 "$DISK"
mount_disk $DISK
setup_base
setup_network
unmount_disk
- mkdir -p tmp
-
- MAC1=`get_macaddr $CLUSTER $NODENUMBER 1`
- MAC2=`get_macaddr $CLUSTER $NODENUMBER 2`
- MAC3=`get_macaddr $CLUSTER $NODENUMBER 3`
- MAC4=`get_macaddr $CLUSTER $NODENUMBER 4`
- MAC5=`get_macaddr $CLUSTER $NODENUMBER 5`
- MAC6=`get_macaddr $CLUSTER $NODENUMBER 6`
+ set_macaddrs $CLUSTER $nodenumber
UUID=`uuidgen`
echo "Creating $NAME.xml"
- substitute_vars $NODE_TEMPLATE tmp/$NAME.xml
+ substitute_vars $template_file tmp/$NAME.xml
# install the XML file
$VIRSH undefine $NAME > /dev/null 2>&1 || true
@@ -120,47 +115,33 @@ create_node() {
}
###############################
+# create a single node
+create_node() {
+ CLUSTER="$1"
+ local nodenumber="$2"
+
+ # first node might need more memory for SoFS GUI
+ if [ "$WITH_SOFS_GUI" = 1 -a $nodenumber = 1 -a $GUIMEM -gt $MEM ]; then
+ NODEMEM=$GUIMEM
+ else
+ NODEMEM=$MEM
+ fi
+
+ create_node_common "$nodenumber"
+}
+
+###############################
# create a TSM node
create_tsm() {
CLUSTER="$1"
- NAME="$CLUSTER""tsm"
- BASE="$VIRTBASE/$BASENAME.img"
- DISK="$VIRTBASE/$CLUSTER/$NAME.qcow2"
- TSMDISK="$VIRTBASE/$CLUSTER/tsmstorage.qcow2"
-
- echo "Creating TSM cluster node $NAME"
-
- mkdir -p $VIRTBASE/$CLUSTER tmp
-
- echo "Creating the disk"
- rm -f "$DISK"
- qemu-img create -b "$BASE" -f qcow2 "$DISK"
-
+
+ # This must be before create_node_common.
+ TSMDISK="${VIRTBASE}/${CLUSTER}/tsmstorage.qcow2"
+
+ create_node_common "tsm"
+
echo "Creating tsm disk"
qemu-img create -f qcow2 "$TSMDISK" $TSMDISKSIZE
-
- # TSM server is first IP in the cluster
- IPNUM=$FIRSTIP
-
- mount_disk $DISK
- setup_base
- setup_network
- unmount_disk
-
- UUID=`uuidgen`
- MAC1=`get_macaddr $CLUSTER 0 0`
- MAC2=`get_macaddr $CLUSTER 0 1`
- MAC3=`get_macaddr $CLUSTER 0 2`
- MAC4=`get_macaddr $CLUSTER 0 3`
- MAC5=`get_macaddr $CLUSTER 0 4`
- MAC6=`get_macaddr $CLUSTER 0 5`
-
- echo "Creating $NAME.xml"
- substitute_vars $TSM_TEMPLATE tmp/$NAME.xml
-
- # install the XML file
- $VIRSH undefine $NAME > /dev/null 2>&1 || true
- $VIRSH define tmp/$NAME.xml
}
###############################
@@ -335,19 +316,22 @@ boot_base() {
# various functions...
-# create a MAC address based on a hash of the cluster name
-# plus the adapter and node number
-get_macaddr() {
- cname=$1
- node=$2
- adapter=$3
- oct1="02"
- oct2="`echo $cname | md5sum | cut -c1-2`"
- oct3="`echo $cname | md5sum | cut -c3-4`"
- oct4="00"
- oct5="0$node"
- oct6="0$adapter"
- echo "${oct1}:${oct2}:${oct3}:${oct4}:${oct5}:${oct6}"
+# Set some MAC address variables based on a hash of the cluster name
+# plus the node number and each adapter number.
+set_macaddrs () {
+ local cname="$1"
+ local nodenumber="$2"
+
+ local md5=$(echo $cname | md5sum)
+ local nh=$(printf "%02x" $nodenumber)
+ local mac_prefix="02:${md5:0:2}:${md5:2:2}:00:${nh}:"
+
+ MAC1="${mac_prefix}01"
+ MAC2="${mac_prefix}02"
+ MAC3="${mac_prefix}03"
+ MAC4="${mac_prefix}04"
+ MAC5="${mac_prefix}05"
+ MAC6="${mac_prefix}06"
}
# mount a qemu image via nbd