def okClicked(self, *args): createDatastore = False name = getSelectionFromView(self.view, column=STORAGEVIEW_DISK_ENTRY) assert not name or name in self.diskSet.keys() if not name: MessageWindow(None, "Storage Selection Error", "Select a place to create the new datastore.") else: # check and prompt if there is already a vmfs partition on the # device createDatastore = \ storage_widgets.promptDeviceHasExistingData(name, False) # update the 'Device:' textentry with the appropriate drive name if createDatastore == storage_widgets.EXISTING_DATA_CLEAR_DRIVE: self.parent.updateCreateDatastore(name) self.hide()
def okClicked(self, *args): createDatastore = False name = getSelectionFromView(self.view, column=STORAGEVIEW_DISK_ENTRY) assert not name or name in self.diskSet.keys() if not name: MessageWindow(None, "Storage Selection Error", "Select a place to create the new datastore.") else: # check and prompt if there is already a vmfs partition on the # device createDatastore = \ storage_widgets.promptDeviceHasExistingData(name, False) # update the 'Device:' textentry with the appropriate drive name if createDatastore == storage_widgets.EXISTING_DATA_CLEAR_DRIVE: self.parent.updateCreateDatastore(name) self.hide()
def getNext(self): haveMountPoint = bool(userchoices.getPartitionMountRequests()) userchoices.clearPhysicalPartitionRequests() userchoices.clearPartitionMountRequests() userchoices.clearExistingVmdkLocation() (model, diskIter) = self.view.get_selection().get_selected() if diskIter and model.get(diskIter, STORAGEVIEW_DISK_ENTRY)[0]: drive = model.get(diskIter, STORAGEVIEW_DISK_ENTRY)[0] log.debug("Selected drive %s" % (drive)) diskSet = devices.DiskSet() datastoreSet = datastore.DatastoreSet() rc = storage_widgets.promptDeviceHasExistingData(drive) if rc == storage_widgets.EXISTING_DATA_STAY_ON_SCREEN: raise exception.StayOnScreen elif rc == storage_widgets.EXISTING_DATA_PRESERVE_VMFS: vmdkPath = \ esxconf.runtimeActionExtractVmdkPathFromInitrd(drive) vmdkSize = \ devices.runtimeActionFindExistingVmdkSize(vmdkPath) log.debug("VMDK Size = %d Path = %s" % (vmdkSize, vmdkPath)) if vmdkSize > 0: vmdkCheckBox = True # only turn off the preserveVmdk check button if # we're on the install location screen since the user # can choose to put the vmdk on a different datastore # on the esxlocation screen if self.SCREEN_NAME == 'installlocation': ds = datastoreSet.getEntriesByDriveName(drive)[0] freeSize = ds.getFreeSize() / 1024 / 1024 requestSize = partition.getRequestsSize( partition.getDefaultVirtualRequests()) if freeSize + vmdkSize <= requestSize + VMFS_OVERHEAD: MessageWindow(None, "No Free Space", storage_widgets.COSVMDK_TOTALLY_FULL) raise exception.StayOnScreen elif freeSize < requestSize: vmdkCheckBox = False preserveVmdk = PreserveCosVmdkWindow(vmdkCheckBox).run() if preserveVmdk == -1: raise exception.StayOnScreen elif preserveVmdk == 1: pass else: userchoices.setExistingVmdkLocation(vmdkPath) # Set up virtual disk and settings datastore.preserveDatastoreOnDrive(drive) if self.SCREEN_NAME == 'esxlocation': userchoices.setEsxPhysicalDevice(drive) userchoices.setResetEsxLocation(True) elif rc == storage_widgets.EXISTING_DATA_CLEAR_DRIVE: if self.SCREEN_NAME == 'installlocation': partition.addDefaultPartitionRequests(diskSet[drive]) else: # clear out the datastore options if the user has changed # their mind about which drive to use -- this will get # changed back to false on the next screen if drive != userchoices.getEsxPhysicalDevice() or \ haveMountPoint: userchoices.setResetEsxLocation(True) else: userchoices.setResetEsxLocation(False) userchoices.setEsxPhysicalDevice(drive) else: raise ValueError, "Got unexpected return code" else: MessageWindow(self.controlState.gui.getWindow(), "Storage Selection Error", "You must select a place to install ESX.") raise exception.StayOnScreen
def getNext(self): haveMountPoint = bool(userchoices.getPartitionMountRequests()) userchoices.clearPhysicalPartitionRequests() userchoices.clearPartitionMountRequests() userchoices.clearExistingVmdkLocation() (model, diskIter) = self.view.get_selection().get_selected() if diskIter and model.get(diskIter, STORAGEVIEW_DISK_ENTRY)[0]: drive = model.get(diskIter, STORAGEVIEW_DISK_ENTRY)[0] log.debug("Selected drive %s" % (drive)) diskSet = devices.DiskSet() datastoreSet = datastore.DatastoreSet() rc = storage_widgets.promptDeviceHasExistingData(drive) if rc == storage_widgets.EXISTING_DATA_STAY_ON_SCREEN: raise exception.StayOnScreen elif rc == storage_widgets.EXISTING_DATA_PRESERVE_VMFS: vmdkPath = \ esxconf.runtimeActionExtractVmdkPathFromInitrd(drive) vmdkSize = \ devices.runtimeActionFindExistingVmdkSize(vmdkPath) log.debug("VMDK Size = %d Path = %s" % (vmdkSize, vmdkPath)) if vmdkSize > 0: vmdkCheckBox = True # only turn off the preserveVmdk check button if # we're on the install location screen since the user # can choose to put the vmdk on a different datastore # on the esxlocation screen if self.SCREEN_NAME == 'installlocation': ds = datastoreSet.getEntriesByDriveName(drive)[0] freeSize = ds.getFreeSize() / 1024 / 1024 requestSize = partition.getRequestsSize( partition.getDefaultVirtualRequests()) if freeSize + vmdkSize <= requestSize + VMFS_OVERHEAD: MessageWindow(None, "No Free Space", storage_widgets.COSVMDK_TOTALLY_FULL) raise exception.StayOnScreen elif freeSize < requestSize: vmdkCheckBox = False preserveVmdk = PreserveCosVmdkWindow(vmdkCheckBox).run() if preserveVmdk == -1: raise exception.StayOnScreen elif preserveVmdk == 1: pass else: userchoices.setExistingVmdkLocation(vmdkPath) # Set up virtual disk and settings datastore.preserveDatastoreOnDrive(drive) if self.SCREEN_NAME == 'esxlocation': userchoices.setEsxPhysicalDevice(drive) userchoices.setResetEsxLocation(True) elif rc == storage_widgets.EXISTING_DATA_CLEAR_DRIVE: if self.SCREEN_NAME == 'installlocation': partition.addDefaultPartitionRequests(diskSet[drive]) else: # clear out the datastore options if the user has changed # their mind about which drive to use -- this will get # changed back to false on the next screen if drive != userchoices.getEsxPhysicalDevice() or \ haveMountPoint: userchoices.setResetEsxLocation(True) else: userchoices.setResetEsxLocation(False) userchoices.setEsxPhysicalDevice(drive) else: raise ValueError, "Got unexpected return code" else: MessageWindow(self.controlState.gui.getWindow(), "Storage Selection Error", "You must select a place to install ESX.") raise exception.StayOnScreen