def reviewStorage(values): allReqs = partition.PartitionRequestSet() values['esxDriveName'] = "" newVmfs = False devices = userchoices.getPhysicalPartitionRequestsDevices() for dev in devices: reqs = userchoices.getPhysicalPartitionRequests(dev) reqs.fitRequestsOnDevice() bootPart = reqs.findRequestByMountPoint('/boot') if bootPart: values['esxDriveName'] = htmlEscape(dev) for req in reqs: if isinstance(req.fsType, fsset.vmfs3FileSystem): newVmfs = True allReqs += reqs if newVmfs: values['datastoreType'] = 'New' else: values['datastoreType'] = 'Existing' vdevices = userchoices.getVirtualDevices() for vdevChoice in vdevices: vdev = vdevChoice['device'] values['datastoreName'] = htmlEscape(vdev.vmfsVolume) if vdev.physicalDeviceName: values['datastoreDev'] = htmlEscape(vdev.physicalDeviceName) else: datastoreSet = datastore.DatastoreSet() cosVolume = datastoreSet.getEntryByName(vdev.vmfsVolume) values['datastoreDev'] = htmlEscape(cosVolume.driveName) vdeviceNames = userchoices.getVirtualPartitionRequestsDevices() for vdevName in vdeviceNames: reqs = userchoices.getVirtualPartitionRequests(vdevName) reqs.fitRequestsOnDevice() allReqs += reqs values['datastoreParts'] = "" allReqs.sort(sortByMountPoint=True) for req in allReqs: size = util.formatValue(req.apparentSize * util.SIZE_MB) if req.mountPoint: mountPoint = htmlEscape(req.mountPoint) else: mountPoint = "" values['datastoreParts'] += ( '<tabs count="1" />%s' '<tabs count="1" /><verbatim value="%10s" />' '<tabs count="1" />%s<br/>' % (req.fsType.name, size, mountPoint))
def _genVirtualPartitions(): retval = "" for vdev in userchoices.getVirtualPartitionRequestsDevices(): reqs = userchoices.getVirtualPartitionRequests(vdev) for req in reqs: partStr = _genPartitionRequest(vdev, req) retval += "%s --onvirtualdisk='%s'\n" % (partStr, shquote(vdev)) return retval
def setupVirtualDevice(self): # If the virtual device has already been set up before, use the # the requests in it, otherwise start with a fresh set virtualDevs = userchoices.getVirtualDevices() assert len(virtualDevs) == 1 virtualDev = virtualDevs[0]['device'] # Update these since they might have been changed by the prev screen. virtualDev.physicalDeviceName = userchoices.getEsxDatastoreDevice() virtualDev.vmfsVolume = userchoices.getVmdkDatastore() self.requests = userchoices.getVirtualPartitionRequests(virtualDev.name)
def setupVirtualDevice(self): # If the virtual device has already been set up before, use the # the requests in it, otherwise start with a fresh set virtualDevs = userchoices.getVirtualDevices() assert len(virtualDevs) == 1 virtualDev = virtualDevs[0]['device'] # Update these since they might have been changed by the prev screen. virtualDev.physicalDeviceName = userchoices.getEsxDatastoreDevice() virtualDev.vmfsVolume = userchoices.getVmdkDatastore() self.requests = userchoices.getVirtualPartitionRequests( virtualDev.name)
def setupVirtualDevice(self): # If the virtual device has already been set up before, use the # the requests in it, otherwise start with a fresh set virtualDevs = userchoices.getVirtualDevices() assert len(virtualDevs) == 1 virtualDev = virtualDevs[0]['device'] # Update these since they might have been changed by the prev screen. virtualDev.physicalDeviceName = userchoices.getEsxDatastoreDevice() virtualDev.vmfsVolume = userchoices.getVmdkDatastore() self.requests = userchoices.getVirtualPartitionRequests(virtualDev.name) self.setConsoleVMSize() # TODO: If the datastore was changed and it is too small to fit the # current vmdk partitioning scheme we need to do a reset. storage_widgets.setupPartitioningView(self.view) storage_widgets.populatePartitioningModel(self.view, self.scrolled, self.requests)
def hostActionPartitionVirtualDevices(context): virtualDevs = userchoices.getVirtualDevices() assert len(virtualDevs) == 1 or len(virtualDevs) == 0 if not virtualDevs: return # There's two steps for each dev, partitioning it and formatting the parts. context.cb.pushStatusGroup(len(virtualDevs) * 2) # XXX - we only care about one virtual device for now virtualDevs[0]['device'].create() virtualDevs[0]['device'].mount() deviceName = virtualDevs[0]['device'].name context.cb.pushStatus("Partitioning %s" % deviceName) if userchoices.checkVirtualPartitionRequestsHasDevice(deviceName): requests = userchoices.getVirtualPartitionRequests(deviceName) requests.device = virtualDevs[0]['device'] requests.sort() requests.fitPartitionsOnDevice() requests.savePartitions() else: # The virtualdisk does not have any partitions (can happen in scripted # install...) requests = [] context.cb.popStatus() createDeviceNodes() context.cb.pushStatus("Formatting Virtual Devices") context.cb.pushStatusGroup(len(requests)) for request in requests: if request.fsType.formattable: context.cb.pushStatus("Formatting %s" % request.consoleDevicePath) request.fsType.formatDevice(request.consoleDevicePath) context.cb.popStatus() context.cb.popStatusGroup() context.cb.popStatus() context.cb.popStatusGroup()
def _allUserPartitionRequestSets(): '''Return all the PartitionRequestSets in userchoices in a list.''' retval = [] for physDevice in userchoices.getPhysicalPartitionRequestsDevices(): retval.append(userchoices.getPhysicalPartitionRequests(physDevice)) for virtDevice in userchoices.getVirtualPartitionRequestsDevices(): if not userchoices.checkVirtualPartitionRequestsHasDevice(virtDevice): # no partitions on the vmdk continue retval.append(userchoices.getVirtualPartitionRequests(virtDevice)) # Only add the partition mount requests if there are any, otherwise there # appears to be user partition requests when there really aren't. if userchoices.getPartitionMountRequests(): mountSet = PartitionRequestSet() mountSet.requests = userchoices.getPartitionMountRequests() retval.append(mountSet) return retval
def _genPartitionRequest(dev, req): flags = "" flags += " --fstype=%s" % req.fsType.name if isinstance(req.fsType, fsset.vmfs3FileSystem): virtDev = userchoices.getVirtualDevicesByPhysicalDeviceName(dev) if len(virtDev): assert len(virtDev) == 1 virtDevName = virtDev[0]['device'].name if userchoices.checkVirtualPartitionRequestsHasDevice(virtDevName): virtualRequests = userchoices.getVirtualPartitionRequests( virtDevName) virtSize = virtualRequests.getMinimumSize() + \ devices.VMDK_OVERHEAD_SIZE if req.minimumSize < virtSize: req.minimumSize = virtSize flags += " --size=%d" % req.minimumSize if req.maximumSize: flags += " --maxsize=%d" % req.maximumSize if req.grow: flags += " --grow" if req.primaryPartition: flags += " --asprimary" if req.badBlocks: flags += " --badblocks" partName = req.mountPoint if not partName: if isinstance(req.fsType, fsset.vmfs3FileSystem): partName = req.fsType.volumeName elif isinstance(req.fsType, fsset.swapFileSystem): partName = "swap" return "part '%s' %s" % (shquote(partName or "none"), flags)