Revert "add a checkbox for cpu host-model mode, remove 'copy' button"
host-model is a bit more scary then previous behavior, since the
model of an existing VM can transparently change across libvirt
upgrade or HW upgrade. This will probably be improved at the libvirt
level, but for now revert.
This reverts commit 17f43e47fb
.
This commit is contained in:
parent
5a316b9a51
commit
40cbc39a98
|
@ -2314,14 +2314,116 @@ I/O:</property>
|
|||
<property name="can_focus">False</property>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="cpu-host-model-checkbutton">
|
||||
<property name="label" translatable="yes">Use host CPU model</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<object class="GtkTable" id="table15">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<signal name="toggled" handler="on_cpu_host_model_enable_toggled" swapped="no"/>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="n_rows">2</property>
|
||||
<property name="n_columns">2</property>
|
||||
<property name="column_spacing">12</property>
|
||||
<property name="row_spacing">3</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label52">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes">Model:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="hbox21">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkAlignment" id="alignment33">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="cpu-model">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="has_entry">True</property>
|
||||
<signal name="changed" handler="on_cpu_model_changed" swapped="no"/>
|
||||
<child internal-child="entry">
|
||||
<object class="GtkEntry" id="combobox-entry">
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkAlignment" id="alignment37">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="hbox25">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="cpu-copy-host">
|
||||
<property name="label" translatable="yes">Copy host CPU configuration</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<signal name="clicked" handler="on_cpu_copy_host_clicked" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkAlignment" id="alignment38">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
|
@ -2329,53 +2431,6 @@ I/O:</property>
|
|||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkHBox" id="hbox14">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label52">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Model:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkAlignment" id="alignment12">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="cpu-model">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="has_entry">True</property>
|
||||
<signal name="changed" handler="on_cpu_model_changed" swapped="no"/>
|
||||
<child internal-child="entry">
|
||||
<object class="GtkEntry" id="combobox-entry">
|
||||
<property name="can_focus">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkExpander" id="cpu-features-expander">
|
||||
<property name="visible">True</property>
|
||||
|
@ -2423,7 +2478,7 @@ I/O:</property>
|
|||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
|
@ -2444,7 +2499,7 @@ I/O:</property>
|
|||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
|
|
|
@ -366,6 +366,7 @@ class vmmDetails(vmmGObjectUI):
|
|||
|
||||
self.ignorePause = False
|
||||
self.ignoreDetails = False
|
||||
self._cpu_copy_host = False
|
||||
|
||||
self.console = vmmConsolePages(self.vm, self.builder, self.topwin)
|
||||
|
||||
|
@ -436,7 +437,7 @@ class vmmDetails(vmmGObjectUI):
|
|||
"on_cpu_cores_changed": lambda *x: self.enable_apply(x, EDIT_TOPOLOGY),
|
||||
"on_cpu_sockets_changed": lambda *x: self.enable_apply(x, EDIT_TOPOLOGY),
|
||||
"on_cpu_threads_changed": lambda *x: self.enable_apply(x, EDIT_TOPOLOGY),
|
||||
"on_cpu_host_model_enable_toggled": self.config_cpu_host_model_enable,
|
||||
"on_cpu_copy_host_clicked": self.config_cpu_copy_host,
|
||||
"on_cpu_topology_enable_toggled": self.config_cpu_topology_enable,
|
||||
|
||||
"on_config_memory_changed": self.config_memory_changed,
|
||||
|
@ -923,8 +924,6 @@ class vmmDetails(vmmGObjectUI):
|
|||
feat_model.append([name, "default"])
|
||||
|
||||
# CPU model combo
|
||||
self.widget("cpu-host-model-checkbutton").set_tooltip_text(
|
||||
_("Use CPU model which most closely matches the host. This gives maximum functionality and performance."))
|
||||
cpu_model = self.widget("cpu-model")
|
||||
|
||||
model = Gtk.ListStore(str, object)
|
||||
|
@ -1819,11 +1818,17 @@ class vmmDetails(vmmGObjectUI):
|
|||
def config_maxvcpus_changed(self, ignore):
|
||||
self.enable_apply(EDIT_VCPUS)
|
||||
|
||||
def config_cpu_host_model_enable(self, src):
|
||||
do_enable = src.get_active()
|
||||
self.widget("cpu-model").set_sensitive(not bool(do_enable))
|
||||
self.widget("cpu-features").set_sensitive(not bool(do_enable))
|
||||
self.enable_apply(EDIT_CPU)
|
||||
def config_cpu_copy_host(self, src_ignore):
|
||||
# Update UI with output copied from host
|
||||
try:
|
||||
CPU = virtinst.CPU(self.vm.conn.vmm)
|
||||
CPU.copy_host_cpu()
|
||||
|
||||
self._refresh_cpu_config(CPU)
|
||||
self._cpu_copy_host = True
|
||||
except Exception, e:
|
||||
self.err.show_err(_("Error copying host CPU: %s") % str(e))
|
||||
return
|
||||
|
||||
def config_cpu_topology_enable(self, src):
|
||||
do_enable = src.get_active()
|
||||
|
@ -2118,14 +2123,10 @@ class vmmDetails(vmmGObjectUI):
|
|||
add_hotplug(self.config_vcpu_pin_cpuset, cpuset)
|
||||
|
||||
if self.editted(EDIT_CPU):
|
||||
from_host = False
|
||||
if self.widget("cpu-host-model-checkbutton").get_active():
|
||||
from_host = True
|
||||
|
||||
model, vendor = self.get_config_cpu_model()
|
||||
features = self.get_config_cpu_features()
|
||||
add_define(self.vm.define_cpu,
|
||||
model, vendor, from_host, features)
|
||||
model, vendor, self._cpu_copy_host, features)
|
||||
|
||||
if self.editted(EDIT_TOPOLOGY):
|
||||
do_top = self.widget("cpu-topology-enable").get_active()
|
||||
|
@ -2140,6 +2141,8 @@ class vmmDetails(vmmGObjectUI):
|
|||
add_define(self.vm.define_cpu_topology, sockets, cores, threads)
|
||||
|
||||
ret = self._change_config_helper(df, da, hf, ha)
|
||||
if ret:
|
||||
self._cpu_copy_host = False
|
||||
return ret
|
||||
|
||||
def config_vcpu_pin(self, src_ignore, path, new_text):
|
||||
|
@ -2819,8 +2822,6 @@ class vmmDetails(vmmGObjectUI):
|
|||
def _refresh_cpu_config(self, cpu):
|
||||
feature_ui = self.widget("cpu-features")
|
||||
model = cpu.model or ""
|
||||
mode = cpu.mode or ""
|
||||
|
||||
caps = self.vm.conn.get_capabilities()
|
||||
|
||||
capscpu = None
|
||||
|
@ -2840,11 +2841,6 @@ class vmmDetails(vmmGObjectUI):
|
|||
cores = cpu.cores or 1
|
||||
threads = cpu.threads or 1
|
||||
|
||||
host_model = self.widget("cpu-host-model-checkbutton")
|
||||
active = host_model.get_active()
|
||||
if (not mode and active) or (mode == "host-model" and not active):
|
||||
host_model.set_active(not bool(active))
|
||||
|
||||
self.widget("cpu-topology-enable").set_active(show_top)
|
||||
self.widget("cpu-model").get_child().set_text(model)
|
||||
self.widget("cpu-sockets").set_value(sockets)
|
||||
|
@ -2866,6 +2862,7 @@ class vmmDetails(vmmGObjectUI):
|
|||
row[1] = get_feature_policy(row[0])
|
||||
|
||||
def refresh_config_cpu(self):
|
||||
self._cpu_copy_host = False
|
||||
cpu = self.vm.get_cpu_config()
|
||||
|
||||
self._refresh_cpu_count()
|
||||
|
|
|
@ -468,19 +468,16 @@ class vmmDomain(vmmLibvirtObject):
|
|||
def define_cpu(self, model, vendor, from_host, featurelist):
|
||||
def change(guest):
|
||||
if from_host:
|
||||
if virtinst.support.check_domain_support(self._backend,
|
||||
virtinst.support.SUPPORT_DOMAIN_CPU_HOST_MODEL):
|
||||
guest.cpu.clear_attrs()
|
||||
guest.cpu.mode = "host-model"
|
||||
else:
|
||||
guest.cpu.copy_host_cpu()
|
||||
return
|
||||
guest.cpu.copy_host_cpu()
|
||||
elif guest.cpu.model != model:
|
||||
# Since we don't expose this in the UI, have host value trump
|
||||
# caps value
|
||||
guest.cpu.vendor = vendor
|
||||
|
||||
guest.cpu.model = model or None
|
||||
guest.cpu.vendor = vendor or None
|
||||
|
||||
if guest.cpu.model is None:
|
||||
guest.cpu.clear_attrs()
|
||||
for f in guest.cpu.features:
|
||||
guest.cpu.remove_feature(f)
|
||||
return
|
||||
|
||||
origfeatures = guest.cpu.features
|
||||
|
|
Loading…
Reference in New Issue