Merge "add support to sort disk by path" into dev/experimental
This commit is contained in:
commit
33c9f8451a
@ -7,31 +7,86 @@
|
|||||||
#set $vgname = $hostname.split('.')[0]
|
#set $vgname = $hostname.split('.')[0]
|
||||||
#end if
|
#end if
|
||||||
|
|
||||||
|
declare -A disk_mapping
|
||||||
|
set \$(ls -l /dev/disk/by-path | awk '{print \$9; print \$11}')
|
||||||
|
let disk_mapping_nums=\$#/2
|
||||||
|
let disk_mapping_offset=0
|
||||||
|
echo "disk_mapping_nums: \$disk_mapping_nums" > /tmp/log
|
||||||
|
echo "disk_mapping_offset: \$disk_mapping_offset" >> /tmp/log
|
||||||
|
echo "disk_mapping: $*" >> /tmp/log
|
||||||
|
while [ \$disk_mapping_offset -lt \$disk_mapping_nums ];
|
||||||
|
do
|
||||||
|
let found_disk_type=0
|
||||||
|
#if $getVar('disk_type_only','') != ""
|
||||||
|
if expr match "\$1" ".*-${disk_type_only}-.*"; then
|
||||||
|
let found_disk_type=1
|
||||||
|
fi
|
||||||
|
#else
|
||||||
|
let found_disk_type=1
|
||||||
|
#end if
|
||||||
|
if [ \$found_disk_type -gt 0 ]; then
|
||||||
|
disk_name=\$(basename \$2)
|
||||||
|
disk_mapping[\$disk_name]=\$1
|
||||||
|
fi
|
||||||
|
let disk_mapping_offset=\$disk_mapping_offset+1
|
||||||
|
shift 2
|
||||||
|
done
|
||||||
|
for key in \${!disk_mapping[@]}; do
|
||||||
|
echo "\$key => \${disk_mapping[\$key]}" >> /tmp/log
|
||||||
|
done
|
||||||
|
|
||||||
|
declare -A disks
|
||||||
set \$(list-harddrives)
|
set \$(list-harddrives)
|
||||||
let disk_nums=\$#/2
|
let disk_nums=\$#/2
|
||||||
let disk_offset=0
|
let disk_offset=0
|
||||||
let found_disk_offset=0
|
let found_disk_offset=0
|
||||||
while [ \$disk_offset -lt \$disk_nums ];
|
while [ \$disk_offset -lt \$disk_nums ];
|
||||||
do
|
do
|
||||||
#if $getVar('partitions_only','') != ""
|
|
||||||
let found_disk=0
|
let found_disk=0
|
||||||
|
if [[ x"\${disk_mapping[\$1]}" == x"" ]]; then
|
||||||
|
echo "ignore disk \$1 since it is not in disk_mapping" >> /tmp/log
|
||||||
|
else
|
||||||
|
#if $getVar('partitions_only','') != ""
|
||||||
#for $partition_only in $partitions_only.split(',')
|
#for $partition_only in $partitions_only.split(',')
|
||||||
if expr match "\$1" "$partition_only"; then
|
if expr match "\$1" "$partition_only"; then
|
||||||
disks[found_disk_offset]=\$1
|
disks[\$found_disk_offset]=\$1
|
||||||
let found_disk=1
|
let found_disk=1
|
||||||
fi
|
else
|
||||||
|
echo "disk \$1 does not match $partition_only" >> /tmp/log
|
||||||
|
fi
|
||||||
#end for
|
#end for
|
||||||
|
#else
|
||||||
|
let found_disk=1
|
||||||
|
#end if
|
||||||
|
fi
|
||||||
if [ \$found_disk -gt 0 ]; then
|
if [ \$found_disk -gt 0 ]; then
|
||||||
|
echo "add disk \$1 in partitioning list" >> /tmp/log
|
||||||
|
disks[\$found_disk_offset]=/dev/disk/by-path/\${disk_mapping[\$1]}
|
||||||
let found_disk_offset=\$found_disk_offset+1
|
let found_disk_offset=\$found_disk_offset+1
|
||||||
fi
|
fi
|
||||||
#else
|
|
||||||
disks[found_disk_offset]=\$1
|
|
||||||
let found_disk_offset=\$found_disk_offset+1
|
|
||||||
#end if
|
|
||||||
let disk_offset=\$disk_offset+1
|
let disk_offset=\$disk_offset+1
|
||||||
shift 2
|
shift 2
|
||||||
done
|
done
|
||||||
let disk_nums=\$found_disk_offset
|
echo "disks \${disks[@]}" >> /tmp/log
|
||||||
|
#if $getVar('sort_disks', '') != ""
|
||||||
|
sorted_disks=(\$(printf '%s\n' \${disks[@]} | sort))
|
||||||
|
#else
|
||||||
|
sorted_disks=(\${disks[@]})
|
||||||
|
#end if
|
||||||
|
echo "sorted disks \${sorted_disks[@]}" >> /tmp/log
|
||||||
|
|
||||||
|
#if $getVar('start_from_disk', '') != ""
|
||||||
|
set \${sorted_disks[@]}
|
||||||
|
sorted_disks=(\${@:$start_from_disk})
|
||||||
|
echo "sorted disks begin from the $start_from_disk: \${sorted_disks[@]}" >> /tmp/log
|
||||||
|
#end if
|
||||||
|
|
||||||
|
#if $getVar('disk_num', '') != ""
|
||||||
|
set \${sorted_disks[@]}
|
||||||
|
sorted_disks=(\${@:1:$disk_num})
|
||||||
|
echo "sorted disks for $disk_num disks: \${sorted_disks[@]}" >> /tmp/log
|
||||||
|
#end if
|
||||||
|
let disk_nums=\${#sorted_disks[@]}
|
||||||
|
|
||||||
echo "clearpart --all --initlabel" > /tmp/part-include
|
echo "clearpart --all --initlabel" > /tmp/part-include
|
||||||
|
|
||||||
@ -41,8 +96,8 @@ echo "ignoredisk --only-use=$partitions_only" >> /tmp/part-include
|
|||||||
#end if
|
#end if
|
||||||
#end if
|
#end if
|
||||||
|
|
||||||
echo "part /boot --fstype ext3 --size=100 --ondisk=\${disks[0]} --asprimary" >> /tmp/part-include
|
echo "part /boot --fstype ext3 --size=500 --ondisk=\${sorted_disks[0]} --asprimary" >> /tmp/part-include
|
||||||
echo "part swap --recommended --maxsize=128000 --ondisk=\${disks[0]}" >> /tmp/part-include
|
echo "part swap --recommended --maxsize=128000 --ondisk=\${sorted_disks[0]}" >> /tmp/part-include
|
||||||
|
|
||||||
vggroup=''
|
vggroup=''
|
||||||
let disk_offset=0
|
let disk_offset=0
|
||||||
@ -50,7 +105,7 @@ while [ \$disk_offset -lt \$disk_nums ];
|
|||||||
do
|
do
|
||||||
let pv_id=\$disk_offset+1
|
let pv_id=\$disk_offset+1
|
||||||
partname="pv.0\$pv_id"
|
partname="pv.0\$pv_id"
|
||||||
echo "part \$partname --size=1 --grow --ondisk=\${disks[\$disk_offset]}" >> /tmp/part-include
|
echo "part \$partname --size=1 --grow --ondisk=\${sorted_disks[\$disk_offset]}" >> /tmp/part-include
|
||||||
vggroup="\$vggroup \$partname"
|
vggroup="\$vggroup \$partname"
|
||||||
let disk_offset=\$disk_offset+1;
|
let disk_offset=\$disk_offset+1;
|
||||||
done
|
done
|
||||||
|
Loading…
x
Reference in New Issue
Block a user