From a31d00dd550522b829e263477cb2b5d2a481be44 Mon Sep 17 00:00:00 2001 From: Lucas Affonso Xavier de Morais Date: Thu, 28 Aug 2014 12:28:51 -0300 Subject: [partitioner] progress bar added on creation of new partitions. --- .../partitioner/opt/openslx/scripts/partitioner | 83 +++++++++++----------- 1 file changed, 43 insertions(+), 40 deletions(-) diff --git a/server/modules/partitioner/opt/openslx/scripts/partitioner b/server/modules/partitioner/opt/openslx/scripts/partitioner index 8eaf48a7..14f47389 100755 --- a/server/modules/partitioner/opt/openslx/scripts/partitioner +++ b/server/modules/partitioner/opt/openslx/scripts/partitioner @@ -93,7 +93,7 @@ for PARTITION in $SLX_PARTITION_TABLE; do if [ -n $3 ]; then PARTTBL["$SLX_CHOOSEN_DISK$COUNTER/mountpoint"]=$3 fi - if [ -n $4 ]; then + if [ -n "$4" ]; then PARTTBL["$SLX_CHOOSEN_DISK$COUNTER/bootable"]=1 else PARTTBL["$SLX_CHOOSEN_DISK$COUNTER/bootable"]=0 @@ -194,28 +194,24 @@ if [ $SLX_DELETE_PARTITION_TABLE = "yes" ]; then START=$(($START+1*1024*1024/$SECTORSIZE)) fi done - sfdisk -q -f /dev/$SLX_CHOOSEN_DISK < /tmp/partitiontable.tmp > /dev/null + sfdisk -q -f /dev/$SLX_CHOOSEN_DISK < /tmp/partitiontable.tmp > /dev/null 2> /dev/null # rm -f /tmp/partitiontable.tmp #------ - DIALOGSTR="New partitions created:\n\n" if [ $SLX_PARTITION_TYPE = 'GPT' ]; then # create the command (CMD) that will convert the MSDOS type to GPT, change the unique GUIDs and set the bootable flags. - CMD="sgdisk -g /dev/$SLX_CHOOSEN_DISK" + DIALOGSTR="Creating Partitions...\n\n" + echo "0" | dialog --gauge "$DIALOGSTR" 0 0 0 + sgdisk /dev/$SLX_CHOOSEN_DISK -g >/dev/null 2>/dev/null for (( i = 1; i < $COUNTER; i++ )); do if [ $i -ne 4 ]; then + # dialog --msgbox "$DIALOGSTR" 0 0 if [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" != "82" ] && [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" != "83" ]; then - CMD=$CMD" -t "$i":"${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}"000000-0000-0000-0000-000000000000" - CMD=$CMD" -c "$i":\""${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]}"\"" + sgdisk /dev/$SLX_CHOOSEN_DISK -t $i:${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}000000-0000-0000-0000-000000000000\ + sgdisk /dev/$SLX_CHOOSEN_DISK -c $i:\"${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]}\" >/dev/null 2>/dev/null fi if [ ${PARTTBL["$SLX_CHOOSEN_DISK$i/bootable"]} -eq 1 ]; then - CMD=$CMD" -A "$i":set:2" + sgdisk /dev/$SLX_CHOOSEN_DISK -A $i:set:2 >/dev/null 2>/dev/null fi - fi - done - CMD=$CMD" > /dev/null 2> /dev/null" - $CMD - for (( i = 1; i < $COUNTER; i++ )); do - if [ $i -ne 4 ]; then SIZE=$((${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}*1024*1024*1024)) ID=${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]} MOUNTPOINT=${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]} @@ -228,6 +224,7 @@ if [ $SLX_DELETE_PARTITION_TABLE = "yes" ]; then DIALOGSTR=$DIALOGSTR" GUID: "$ID"000000-0000-0000-0000-000000000000\n" fi DIALOGSTR=$DIALOGSTR" Size: "$SIZE" Bytes ("${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}" GB)\n" + echo $(( $i*100/($COUNTER-1) )) | dialog --gauge "$DIALOGSTR" 0 0 0 fi done else @@ -254,7 +251,7 @@ if [ $SLX_DELETE_PARTITION_TABLE = "yes" ]; then elif [ $(sfdisk -d /dev/$SLX_CHOOSEN_DISK 2> /dev/null | grep $SLX_CHOOSEN_DISK'1' | tr -s ' ' | cut -d ' ' -f7 | cut -d '=' -f2) = 'ee' ]; then # finding existent partitions in GPT echo 'GPT' - NONEXISTENT_PARTITIONS="false" + NONEXISTENT_PARTITIONS=0 for (( i = 1; i < $COUNTER; i++ )); do if [ $i -ne 4 ]; then for PART in $PARTS; do @@ -272,7 +269,7 @@ elif [ $(sfdisk -d /dev/$SLX_CHOOSEN_DISK 2> /dev/null | grep $SLX_CHOOSEN_DISK' fi done if [[ ${PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]} = "0" ]]; then - NONEXISTENT_PARTITIONS="true" + NONEXISTENT_PARTITIONS=$(($NONEXISTENT_PARTITIONS+1)) fi fi done @@ -281,7 +278,7 @@ elif [ $(sfdisk -d /dev/$SLX_CHOOSEN_DISK 2> /dev/null | grep $SLX_CHOOSEN_DISK' dialog --msgbox "ERROR: Insufficient free space in disk /dev/$SLX_CHOOSEN_DISK." 6 40 exit 1 fi - if [[ $NONEXISTENT_PARTITIONS = "false" ]]; then + if [[ $NONEXISTENT_PARTITIONS -eq 0 ]]; then DIALOGSTR="All your requested partitions already exists.\n\n" DIALOGSTR=$DIALOGSTR"Partition ID\n" for (( i = 1; i < $COUNTER; i++ )); do @@ -290,33 +287,39 @@ elif [ $(sfdisk -d /dev/$SLX_CHOOSEN_DISK 2> /dev/null | grep $SLX_CHOOSEN_DISK' fi done else - DIALOGSTR="New partitions created:\n\n" + DIALOGSTR="Creating partitions...\n\n" + echo "0" | dialog --gauge "$DIALOGSTR" 0 0 0 + CREATED=0 for (( i = 1; i < $COUNTER; i++ )); do j=1 - if [[ "${PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]}" = "0" ]]; then - sgdisk /dev/$SLX_CHOOSEN_DISK -n $j:0:+${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}G 2> /dev/null > /dev/null - while [[ $? -eq 4 ]]; do - j=$(($j+1)) - sgdisk /dev/$SLX_CHOOSEN_DISK -n $j:0:+${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}G 2> /dev/null > /dev/null - done - PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]=$SLX_CHOOSEN_DISK$j - SIZE=$((${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}*1024*1024*1024)) - ID=${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]} - MOUNTPOINT=${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]} - DIALOGSTR=$DIALOGSTR$MOUNTPOINT" (/dev/"${PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]}")\n" - if [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" = "82" ]; then - DIALOGSTR=$DIALOGSTR" GUID: 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F\n" - elif [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" = "83" ]; then - DIALOGSTR=$DIALOGSTR" GUID: 0FC63DAF-8483-4772-8E79-3D69D8477DE4\n" - else - sgdisk /dev/$SLX_CHOOSEN_DISK -t $j:$ID"000000-0000-0000-0000-000000000000" -c $j:$MOUNTPOINT - DIALOGSTR=$DIALOGSTR" GUID: "$ID"000000-0000-0000-0000-000000000000\n" + if [[ $i -ne 4 ]]; then + if [[ "${PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]}" = "0" ]]; then + sgdisk /dev/$SLX_CHOOSEN_DISK -n $j:0:+${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}G 2> /dev/null > /dev/null + while [[ $? -eq 4 ]]; do + j=$(($j+1)) + sgdisk /dev/$SLX_CHOOSEN_DISK -n $j:0:+${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}G 2> /dev/null > /dev/null + done + PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]=$SLX_CHOOSEN_DISK$j + SIZE=$((${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}*1024*1024*1024)) + ID=${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]} + MOUNTPOINT=${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]} + DIALOGSTR=$DIALOGSTR$MOUNTPOINT" (/dev/"${PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]}")\n" + if [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" = "82" ]; then + DIALOGSTR=$DIALOGSTR" GUID: 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F\n" + elif [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" = "83" ]; then + DIALOGSTR=$DIALOGSTR" GUID: 0FC63DAF-8483-4772-8E79-3D69D8477DE4\n" + else + sgdisk /dev/$SLX_CHOOSEN_DISK -t $j:$ID"000000-0000-0000-0000-000000000000" -c $j:$MOUNTPOINT >/dev/null 2>/dev/null + DIALOGSTR=$DIALOGSTR" GUID: "$ID"000000-0000-0000-0000-000000000000\n" + fi + DIALOGSTR=$DIALOGSTR" Size: "$SIZE" Bytes ("${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}" GB)\n" + CREATED=$(($CREATED+1)) + echo $(( $CREATED*100/($NONEXISTENT_PARTITIONS) )) | dialog --gauge "$DIALOGSTR" 0 0 0 + fi + if [ ${PARTTBL["$SLX_CHOOSEN_DISK$i/bootable"]} -eq 1 ]; then + sgdisk /dev/$SLX_CHOOSEN_DISK -A $j:set:2 >/dev/null 2>/deb/null fi - DIALOGSTR=$DIALOGSTR" Size: "$SIZE" Bytes ("${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}" GB)\n" fi - if [ ${PARTTBL["$SLX_CHOOSEN_DISK$i/bootable"]} -eq 1 ]; then - sgdisk /dev/$SLX_CHOOSEN_DISK -A $j:set:2 - fi done fi else @@ -344,5 +347,5 @@ else exit 1 fi fi - +DIALOGSTR=${DIALOGSTR/Creating Partitions.../New partitions created:} dialog --msgbox "$DIALOGSTR" 0 0 \ No newline at end of file -- cgit v1.2.3-55-g7522