def format_partition(mia, operid, devpath, part_start, fstype): mia.set_step(operid, 0, -1) if not CONF_FSTYPE_MAP.has_key(fstype): errmsg = _('Unrecoginzed filesystem %s.') return errmsg % fstype if CONF_FSTYPE_MAP[fstype][1] == '': errmsg = _('Format %s is not supported.') return errmsg % fstype if not CONF.RUN.g_all_harddisks.has_key(devpath): return _('No such device: ') + devpath disk = CONF.RUN.g_all_harddisks[devpath][1] if not disk: return _('Not any partition table found on: ') + devpath #part = disk.next_partition() part = disk.getFirstPartition() while part: if part.geometry.start != part_start: #part = disk.next_partition(part) part = part.nextPartition() continue if CONF_FSTYPE_MAP[fstype][1] == 'internal': parted_fstype = parted.fileSystemType[revision_fstype(fstype)] try: part.getPedPartition().set_system(parted_fstype) part.fileSystem.create() disk.commit() return 0 except NotImplementedError, errmsg: return str(errmsg) except parted.DiskException as errmsg: return str(errmsg)
#newgeom = _grow_over_small_freespace(newpart.geometry, disk) #if newgeom: # newpart.geom.set_start(newgeom.start) # newpart.geom.set_end(newgeom.end) # disk.add_partition(newpart, constraint) # if fstype: # newpart.set_system(fstype) #except parted.error: # exc_info = sys.exc_info() # return (-1, str(exc_info[1])) except _ped.PartitionException, errmsg: return(-1, str(errmsg)) CONF.RUN.g_all_harddisks[devpath] = (dev, disk, 'y') return (newpart.geometry.start, '') return (-1, _("Can't find the specified disk.")) @register.server_handler('long') def set_flags_and_label(mia, operid, devpath, part_start, true_flags, false_flags, set_label, label): if CONF.RUN.g_all_harddisks.has_key(devpath): disk = CONF.RUN.g_all_harddisks[devpath][1] if disk: part = disk.getFirstPartition() while part: if part.geometry.start == part_start: for tf in true_flags: part.setFlag(tf) for ff in false_flags: part.unsetFlag(ff) if set_label == 'true':