Exemple #1
0
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))
Exemple #2
0
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 _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
Exemple #4
0
    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)
Exemple #5
0
    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)
Exemple #6
0
    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)
Exemple #7
0
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()
Exemple #8
0
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
Exemple #9
0
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)
Exemple #10
0
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)