#set hostname=$getVar('hostname',None) #set partition = $getVar('partition', None) #set partition_size = $getVar('partition_size', None) #set partition_maxsize = $getVar('partition_maxsize', None) #set disk_reserve_size = $getVar('disk_reserve_size', None) #if $hostname == None #set $vgname = "VolGroup00" #else #set $vgname = $hostname.split('.')[0] #end if declare -A disk_mapping set \$(ls -s -l /dev/disk/by-path | awk '{print \$10, \$12}') let disk_mapping_nums=\$#/2 let disk_mapping_offset=0 echo "disk_mapping_nums: \$disk_mapping_nums" > /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 "disk mapping \$key => \${disk_mapping[\$key]}" >> /tmp/log done declare -A disks set \$(list-harddrives) let disk_nums=\$#/2 let disk_offset=0 let found_disk_offset=0 while [ \$disk_offset -lt \$disk_nums ]; do let found_disk=0 disk_name=\$(basename \$1) #if $getVar('keep_old_partitions', '0') == "0" dd if=/dev/zero of=/dev/\${disk_name} bs=512 count=1 #end if if [[ x"\${disk_mapping[\${disk_name}]}" == x"" ]]; then echo "ignore disk \$1 since it is not in disk_mapping" >> /tmp/log let disk_offset=\$disk_offset+1 shift 2 continue fi #if $getVar('partitions_only', '') != "" #for $partition_only in $partitions_only.split(',') #if not $partition_only #continue #end if if expr match "\${disk_name}" "$partition_only"; then let found_disk=1 else echo "disk \${disk_name} does not match $partition_only" >> /tmp/log fi #end for #else let found_disk=1 #end if if [ \$found_disk -gt 0 ]; then echo "add disk \${disk_name} in partitioning list" >> /tmp/log #if $getVar('partition_by_path', '0') != "0" disks[\$found_disk_offset]=/dev/disk/by-path/\${disk_mapping[\${disk_name}]} #else disks[\$found_disk_offset]=/dev/\${disk_name} #end if let found_disk_offset=\$found_disk_offset+1 fi let disk_offset=\$disk_offset+1 shift 2 done echo "disks \${disks[@]}" >> /tmp/log #if $getVar('sort_disks', '0') != "0" 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[@]} sorted_disks_str="" for disk in \${sorted_disks[@]}; do sorted_disks_str="\${sorted_disks_str},\${disk}" done echo "clearpart --all --initlabel" > /tmp/part-include #if $getVar('keep_old_partitions', '0') != "0" for disk in \${sorted_disks[@]}; do dd if=/dev/zero of=\${disk} bs=512 count=1 done echo "only partition \$sorted_disks_str" >> /tmp/log echo "ignoredisk --only-use=\$sorted_disks_str" >> /tmp/part-include #end if declare -A reserve_disks_size #if $disk_reserve_size != None #set disk_sizes = [disk_size.strip() for disk_size in $disk_reserve_size.split(';') if disk_size.strip()] #for disk_and_size in $disk_sizes #set disk_name, size = $disk_and_size.split(' ', 1) #set disk_name = $disk_name.strip() #if $size.endswith('K') #set disk_size = $int($size[:-1]) #elif $size.endswith('G') #set disk_size = $int($size[:-1]) * 1000 #elif $size.endswith('T') #set disk_size = $int($size[:-1]) * 1000000 #else #set disk_size = $int($size) #end if #if $getVar('partition_by_path', '0') != "0" disk=/dev/disk/by-path/\${disk_mapping[\${disk_name}]} #else disk=/dev/${disk_name} #end if reserve_disks_size[\$disk]=${disk_size} #end for #end if declare -A partitions_percentage declare -A partitions_name declare -A partitions_size declare -A partitions_maxsize #if $partition != None #set vol_sizes = [part.strip() for part in $partition.split(';') if part.strip()] #for vol_and_size in $vol_sizes #set vol, vol_size = $vol_and_size.split(' ', 1) #set vol = $vol.strip() #if $vol == '/' #set volname = 'root' #elif $vol == 'swap' #set volname = 'swap' #elif $vol.startswith('/') #set volname = $vol[1:].replace('/', '_') #else #set volname = '' # $vol is not starts with / #end if partitions_name[$vol]=$volname #set vol_size = $vol_size.strip() #if $vol_size.endswith('%'): #set vol_percent = $vol_size[:-1] partitions_percentage[$vol]=${vol_percent} #else #if $vol_size.endswith('K') #set vol_min_size = $int($vol_size[:-1]) / 1000 #elif $vol_size.endswith('M') #set vol_min_size = $int($vol_size[:-1]) #elif $vol_size.endswith('G') #set vol_min_size = $int($vol_size[:-1]) * 1000 #elif $vol_size.endswith('T') #set vol_min_size = $int($vol_size[:-1]) * 1000000 #else #set vol_min_size = $int($vol_size) #end if partitions_size[$vol]=${vol_min_size} #end if #end for #end if #if $partition_size != None #set vol_sizes = [part.strip() for part in $partition_size.split(';') if part.strip()] #for vol_and_size in $vol_sizes #set vol, vol_size = $vol_and_size.split(' ', 1) #set vol = $vol.strip() #if $vol_size.endswith('K') #set vol_min_size = $int($vol_size[:-1]) / 1000 #elif $vol_size.endswith('M') #set vol_min_size = $int($vol_size[:-1]) #elif $vol_size.endswith('G') #set vol_min_size = $int($vol_size[:-1]) * 1000 #elif $vol_size.endswith('T') #set vol_min_size = $int($vol_size[:-1]) * 1000000 #else #set vol_min_size = $int($vol_size) #end if partitions_size[$vol]=${vol_min_size} #end for #end if #if $partition_maxsize != None #set vol_sizes = [part.strip() for part in $partition_maxsize.split(';') if part.strip()] #for vol_and_size in $vol_sizes #set vol, vol_size = $vol_and_size.split(' ', 1) #set vol = $vol.strip() #if $vol_size.endswith('K') #set vol_max_size = $int($vol_size[:-1]) / 1000 #elif $vol_size.endswith('M') #set vol_max_size = $int($vol_size[:-1]) #elif $vol_size.endswith('G') #set vol_max_size = $int($vol_size[:-1]) * 1000 #elif $vol_size.endswith('T') #set vol_max_size = $int($vol_size[:-1]) * 1000000 #else #set vol_max_size = $int($vol_size) #end if partitions_maxsize[$vol]=${vol_max_size} #end for #end if default_partition=$getVar('default_partition', '/') partition_fstype=$getVar('partition_fstype', 'ext3') for key in \${!partitions_name[@]}; do echo "partition names \$key => \${partitions_name[\$key]}" >> /tmp/log done for key in \${!partitions_percentage[@]}; do echo "partition percentage \$key => \${partitions_percentage[\$key]}" >> /tmp/log done for key in \${!partitions_size[@]}; do echo "partition min size \$key => \${partitions_size[\$key]}" >> /tmp/log done echo "default partition \${default_partition}" >> /tmp/log echo "partition fstype \${partition_fstype}" >> /tmp/log for key in \${!partitions_maxsize[@]}; do echo "partition max size \$key => \${partitions_maxsize[\$key]}" >> /tmp/log done partition_size=\${partitions_size[/boot]:-500} unset \${partitions_name[/boot]} echo "bootloader --location=mbr --driveorder=\${sorted_disks[0]}" >> /tmp/part-include echo "zerombr" >> /tmp/part-include echo "part biosboot --fstype=biosboot --size=1 --ondisk=\${sorted_disks[0]}" >> /tmp/part-include echo "part /boot --fstype=\${partition_fstype} --size=\${partition_size} --ondisk=\${sorted_disks[0]} --asprimary" >> /tmp/part-include partition_size=\${partitions_size[swap]:-0} if [[ "\$partition_size" == "0" ]]; then partition_maxsize=\${partitions_maxsize[swap]:-128000} echo "part swap --recommended --maxsize=\${partition_maxsize} --ondisk=\${sorted_disks[0]}" >> /tmp/part-include else echo "part swap --size=\${partition_size} --ondisk=\${sorted_disks[0]}" >> /tmp/part-include fi unset \${partitions_name[swap]} if [[ x"\${partitions_name[/]}" == x"" ]]; then partitions_name[/]="root" fi vggroup='' let disk_offset=0 while [ \$disk_offset -lt \$disk_nums ]; do let pv_id=\$disk_offset+1 disk=\${sorted_disks[\$disk_offset]} if [ ! -z \${reserve_disks_size[\${disk}]} ]; then reserve_partname="reverse.0\$pv_id" reserve_disk_size=\${reserve_disks_size[\${disk}]} echo "part \${reserve_partname} --size=\${reserve_disk_size} --ondisk=\${disk}" >> /tmp/part-include fi partname="pv.0\$pv_id" echo "part \$partname --size=1 --grow --ondisk=\${disk}" >> /tmp/part-include vggroup="\$vggroup \$partname" let disk_offset=\$disk_offset+1; done echo "volgroup $vgname \$vggroup" >> /tmp/part-include declare -A sorted_partitions sorted_partitions[0]=\${default_partition} partition_offset=1 for key in \${!partitions_name[@]}; do if [[ "\$key" != "\${default_partition}" ]]; then sorted_partitions[\${partition_offset}]=\$key let partition_offset=\${partition_offset}+1 fi done for key in \${sorted_partitions[@]}; do partition_name=\${partitions_name[\$key]} if [[ "\$key" == "\${default_partition}" ]]; then grow_param="--grow" else grow_param="" fi partition_percentage=\${partitions_percentage[\$key]} if [[ x"\${partition_percentage}" != x"" ]]; then percentage_param="--percent=\${partition_percentage}" grow_param="--grow" else percentage_param="" fi partition_size=\${partitions_size[\$key]} if [[ x"\${partition_size}" != x"" ]]; then size_param="--size=\${partition_size}" else size_param="--size=1" fi partition_maxsize=\${partitions_maxsize[\$key]} if [[ x"\${partition_maxsize}" != x"" ]]; then maxsize_param="--maxsize=\${partition_maxsize}" else maxsize_param="" fi echo "logvol \$key --fstype=\${partition_fstype} --vgname=$vgname \${percentage_param} \${size_param} \${maxsize_param} \${grow_param} --name=\${partition_name}vol" >> /tmp/part-include done