On 04/26/2013 12:40 AM, Guannan Ren wrote: > 'git revert <commit-id>' to revert the following commit id > 'git rebase' to combine them into one patch > > This reverts commit 15f72a84abcf2f295ab0366b4637f993b567df5a. > Revert "cpu: add helper function to reset cpu related variables to none" > This reverts commit e941a9e92b9bf9565e1d7367fe7d46d0135ad52a. > Revert "add a checkbox for cpu host-model mode, remove 'copy' button" > This reverts commit 17f43e47fb4022093a047b27d2ec60458e5dfcef. Actually, I'm just going to revert the UI bit, so when in the future we use host_model some of the infrastructure bits are already in place. - Cole > --- > ui/vmm-details.ui | 121 +++++++++++++++++++++++++++++++++------------- > virtManager/connection.py | 7 --- > virtManager/details.py | 37 +++++++------- > virtManager/domain.py | 17 +++---- > virtinst/CPU.py | 9 ---- > virtinst/support.py | 5 -- > 6 files changed, 112 insertions(+), 84 deletions(-) > > diff --git a/ui/vmm-details.ui b/ui/vmm-details.ui > index 631d58f..99789c2 100644 > --- a/ui/vmm-details.ui > +++ b/ui/vmm-details.ui > @@ -2314,66 +2314,121 @@ 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> > - <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"/> > - </object> > - <packing> > - <property name="expand">False</property> > - <property name="fill">True</property> > - <property name="position">0</property> > - </packing> > - </child> > - <child> > - <object class="GtkHBox" id="hbox14"> > + <object class="GtkTable" id="table15"> > <property name="visible">True</property> > <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="expand">False</property> > - <property name="fill">False</property> > - <property name="position">0</property> > + <property name="x_options">GTK_FILL</property> > + <property name="y_options">GTK_FILL</property> > </packing> > </child> > <child> > - <object class="GtkAlignment" id="alignment12"> > + <object class="GtkHBox" id="hbox21"> > <property name="visible">True</property> > <property name="can_focus">False</property> > <child> > - <object class="GtkComboBox" id="cpu-model"> > + <object class="GtkAlignment" id="alignment33"> > <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"> > + <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> > - </object> > + <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="expand">False</property> > - <property name="fill">False</property> > - <property name="position">1</property> > + <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> > <property name="fill">True</property> > - <property name="position">1</property> > + <property name="position">0</property> > </packing> > </child> > <child> > @@ -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> > diff --git a/virtManager/connection.py b/virtManager/connection.py > index e6058e3..8fcea73 100644 > --- a/virtManager/connection.py > +++ b/virtManager/connection.py > @@ -547,13 +547,6 @@ class vmmConnection(vmmGObject): > else: > logging.debug("Domain XML secure flag not supported.") > > - if virtinst.support.check_domain_support(vm, > - virtinst.support.SUPPORT_DOMAIN_CPU_HOST_MODEL): > - inact |= libvirt.VIR_DOMAIN_XML_UPDATE_CPU > - act |= libvirt.VIR_DOMAIN_XML_UPDATE_CPU > - else: > - logging.debug("Domain XML update flag not supported.") > - > return inact, act > > return self._get_flags_helper(vm, key, check_func) > diff --git a/virtManager/details.py b/virtManager/details.py > index cd18aa8..01511d1 100644 > --- a/virtManager/details.py > +++ b/virtManager/details.py > @@ -360,6 +360,7 @@ class vmmDetails(vmmGObjectUI): > > self.ignorePause = False > self.ignoreDetails = False > + self._cpu_copy_host = False > > self.console = vmmConsolePages(self.vm, self.builder, self.topwin) > > @@ -430,7 +431,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, > @@ -917,8 +918,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) > @@ -1813,11 +1812,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() > @@ -2112,14 +2117,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() > @@ -2134,6 +2135,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): > @@ -2813,8 +2816,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 > @@ -2834,11 +2835,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) > @@ -2860,6 +2856,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() > diff --git a/virtManager/domain.py b/virtManager/domain.py > index 823e17b..f958c4b 100644 > --- a/virtManager/domain.py > +++ b/virtManager/domain.py > @@ -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 > diff --git a/virtinst/CPU.py b/virtinst/CPU.py > index 092bc65..b3d451d 100644 > --- a/virtinst/CPU.py > +++ b/virtinst/CPU.py > @@ -187,15 +187,6 @@ class CPU(XMLBuilderDomain.XMLBuilderDomain): > get_converter=lambda s, x: _int_or_none(x), > xpath="./cpu/topology/@threads") > > - def clear_attrs(self): > - self.match = None > - self.mode = None > - self.vendor = None > - self.model = None > - > - for feature in self.features: > - self.remove_feature(feature) > - > def copy_host_cpu(self): > """ > Enact the equivalent of qemu -cpu host, pulling all info > diff --git a/virtinst/support.py b/virtinst/support.py > index f998aff..614ae30 100644 > --- a/virtinst/support.py > +++ b/virtinst/support.py > @@ -45,7 +45,6 @@ SUPPORT_DOMAIN_JOB_INFO = 1005 > SUPPORT_DOMAIN_MAXVCPUS_XML = 1006 > SUPPORT_DOMAIN_CONSOLE_STREAM = 1007 > SUPPORT_DOMAIN_SET_METADATA = 1008 > -SUPPORT_DOMAIN_CPU_HOST_MODEL = 1009 > > # Flags for check_pool_support > SUPPORT_STORAGE_CREATEVOLFROM = 2000 > @@ -201,10 +200,6 @@ _support_dict = { > "version" : 9010, > }, > > - SUPPORT_DOMAIN_CPU_HOST_MODEL : { > - "version" : 9010, > - }, > - > > # Pool checks > # This can't ever require a pool object for back compat reasons > _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list