diff --git a/qubesmanager/settings.py b/qubesmanager/settings.py index 255f528..c7c69a3 100755 --- a/qubesmanager/settings.py +++ b/qubesmanager/settings.py @@ -644,22 +644,22 @@ class VMSettingsWindow(ui_settingsdlg.Ui_SettingsDialog, QtGui.QDialog): def __init_advanced_tab__(self): - # mem/cpu -# qubes_memory = QubesHost().memory_total/1024 - self.init_mem.setValue(int(self.vm.memory)) -# self.init_mem.setMaximum(qubes_memory) - self.max_mem_size.setValue(int(self.vm.maxmem)) -# self.max_mem_size.setMaximum(qubes_memory) + if self.vm.maxmem > 0: + self.max_mem_size.setValue(int(self.vm.maxmem)) + else: + maxmem = self.vm.property_get_default('maxmem') + if maxmem == 0: + maxmem = self.vm.memory + self.max_mem_size.setValue(int( + self.vm.features.get('qubesmanager.maxmem_value', maxmem))) self.vcpus.setMinimum(1) -# self.vcpus.setMaximum(QubesHost().no_cpus) self.vcpus.setValue(int(self.vm.vcpus)) self.include_in_balancing.setEnabled(True) - self.include_in_balancing.setChecked( - bool(self.vm.features.get('service.meminfo-writer', True))) + self.include_in_balancing.setChecked(int(self.vm.maxmem) > 0) self.max_mem_size.setEnabled(self.include_in_balancing.isChecked()) # in case VM is HVM @@ -713,16 +713,24 @@ class VMSettingsWindow(ui_settingsdlg.Ui_SettingsDialog, QtGui.QDialog): if self.init_mem.value() != int(self.vm.memory): self.vm.memory = self.init_mem.value() - if self.max_mem_size.value() != int(self.vm.maxmem): - self.vm.maxmem = self.max_mem_size.value() + curr_maxmem = int(self.vm.maxmem) + + if not self.include_in_balancing.isChecked(): + maxmem = 0 + else: + maxmem = self.max_mem_size.value() + + if maxmem != curr_maxmem: + if curr_maxmem > 0: + self.vm.features['qubesmanager.maxmem_value'] = curr_maxmem + self.vm.maxmem = maxmem if self.vcpus.value() != int(self.vm.vcpus): self.vm.vcpus = self.vcpus.value() + except qubesadmin.exc.QubesException as ex: msg.append(str(ex)) - # include_in_memory_balancing applied in services tab - # in case VM is not Linux if hasattr(self.vm, "kernel") and self.kernel_groupbox.isVisible(): try: @@ -748,6 +756,16 @@ class VMSettingsWindow(ui_settingsdlg.Ui_SettingsDialog, QtGui.QDialog): return msg + def include_in_balancing_changed(self, state): + if self.dev_list.selected_list.count() > 0: + if state == ui_settingsdlg.QtCore.Qt.Checked: + self.dmm_warning_adv.show() + self.dmm_warning_dev.show() + else: + self.dmm_warning_adv.hide() + self.dmm_warning_dev.hide() + self.max_mem_size.setEnabled(self.include_in_balancing.isChecked()) + def boot_from_cdrom_button_pressed(self): self.save_and_apply() subprocess.check_call(['qubes-vm-boot-from-device', self.vm.name]) @@ -932,22 +950,6 @@ class VMSettingsWindow(ui_settingsdlg.Ui_SettingsDialog, QtGui.QDialog): return msg - def include_in_balancing_changed(self, state): - for i in range(self.services_list.count()): - item = self.services_list.item(i) - if str(item.text()) == 'meminfo-writer': - item.setCheckState(state) - break - - if self.dev_list.selected_list.count() > 0: - if state == ui_settingsdlg.QtCore.Qt.Checked: - self.dmm_warning_adv.show() - self.dmm_warning_dev.show() - else: - self.dmm_warning_adv.hide() - self.dmm_warning_dev.hide() - self.max_mem_size.setEnabled(self.include_in_balancing.isChecked()) - def devices_selection_changed(self): if self.include_in_balancing.isChecked(): if self.dev_list.selected_list.count() > 0: @@ -1012,18 +1014,12 @@ class VMSettingsWindow(ui_settingsdlg.Ui_SettingsDialog, QtGui.QDialog): self.services_list.addItem(item) self.new_srv_dict[service] = self.vm.features[feature] - self.connect( - self.services_list, - QtCore.SIGNAL("itemClicked(QListWidgetItem *)"), - self.services_item_clicked) - # add suggested services self.service_line_edit.addItem('clocksync') self.service_line_edit.addItem('crond') self.service_line_edit.addItem('cups') self.service_line_edit.addItem('disable-default-route') self.service_line_edit.addItem('disable-dns-server') - self.service_line_edit.addItem('meminfo-writer') self.service_line_edit.addItem('network-manager') self.service_line_edit.addItem('qubes-firewall') self.service_line_edit.addItem('qubes-network') @@ -1053,27 +1049,11 @@ class VMSettingsWindow(ui_settingsdlg.Ui_SettingsDialog, QtGui.QDialog): if not item: return - if str(item.text()) == 'meminfo-writer': - QtGui.QMessageBox.information( - self, - self.tr('Service can not be removed'), - self.tr('Service meminfo-writer can not ' - 'be removed from the list.')) - return row = self.services_list.currentRow() item = self.services_list.takeItem(row) del self.new_srv_dict[str(item.text())] - def services_item_clicked(self, item): - if str(item.text()) == 'meminfo-writer': - if item.checkState() == ui_settingsdlg.QtCore.Qt.Checked: - if not self.include_in_balancing.isChecked(): - self.include_in_balancing.setChecked(True) - elif item.checkState() == ui_settingsdlg.QtCore.Qt.Unchecked: - if self.include_in_balancing.isChecked(): - self.include_in_balancing.setChecked(False) - def __apply_services_tab__(self): msg = [] @@ -1083,16 +1063,6 @@ class VMSettingsWindow(ui_settingsdlg.Ui_SettingsDialog, QtGui.QDialog): self.new_srv_dict[str(item.text())] = \ (item.checkState() == ui_settingsdlg.QtCore.Qt.Checked) - balancing_was_checked = self.vm.features.get( - 'service.meminfo-writer', True) - balancing_is_checked = self.include_in_balancing.isChecked() - meminfo_writer_checked = self.new_srv_dict.get( - 'meminfo-writer', True) - - if balancing_is_checked != meminfo_writer_checked: - if balancing_is_checked != balancing_was_checked: - self.new_srv_dict['meminfo-writer'] = balancing_is_checked - for service, v in self.new_srv_dict.items(): feature = 'service.' + service if v != self.vm.features.get(feature, object()):