diff options
| author | Martin Schwenke <martin@meltin.net> | 2008-10-13 12:02:35 +1100 |
|---|---|---|
| committer | Martin Schwenke <martin@meltin.net> | 2008-10-13 12:02:35 +1100 |
| commit | 86f11ca93bbc4a96f651ddff142a0e06ec7ce514 (patch) | |
| tree | 35a70238201625a53341060bf050c4c03f222be5 | |
| parent | 9723980b73eec164f84750bbce5d6629819b66ff (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-x | autocluster | 136 |
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 |
