+def single_partition_device_2_x ( device, vars, log):
+ try:
+ log.write("Using pyparted 2.x\n")
+ # wipe the old partition table
+ utils.sysexec( "dd if=/dev/zero of=%s bs=512 count=1" % device, log )
+ # get the device
+ dev= parted.Device(device)
+ # create a new partition table
+ # xxx -- Thierry june 2012
+ # original code was going for the msdos version only
+ # Marco Bicudo reported an error with a disk larger than 2TB
+ # and confirmed he node would take off by just changing 'msdos' into 'gpt'
+ # this version below has been tried but does not work
+ # as a matter of fact on the big node an exception gets thrown later
+ # at the maximizePartition stage only, which of course makes sense
+ # so bottom line is, we need to find something smarter...
+ # xxx
+ try:
+ disk= parted.freshDisk(dev,'msdos')
+ # use gpt as a fallback for disks larger than 2TB
+ except:
+ disk= parted.freshDisk(dev,'gpt')
+ # create one big partition on each block device
+ constraint= parted.constraint.Constraint (device=dev)
+ geometry = parted.geometry.Geometry (device=dev, start=0, end=1)
+ fs = parted.filesystem.FileSystem (type="ext2",geometry=geometry)
+ new_part= parted.partition.Partition (disk, type=parted.PARTITION_NORMAL,
+ fs=fs, geometry=geometry)
+ # make it an lvm partition
+ new_part.setFlag(parted.PARTITION_LVM)
+ # actually add the partition to the disk
+ disk.addPartition(new_part, constraint)
+ disk.maximizePartition(new_part,constraint)
+ disk.commit()
+ print >>log, 'Current disk for %s'%device,disk
+ print >>log, 'Current dev for %s'%device,dev
+ del disk
+ except Exception, e:
+ log.write( "Exception inside single_partition_device_2_x : %s\n" % str(e) )
+ import traceback
+ traceback.print_exc(file=log)
+ return 0
+
+ return 1
+
+
+