- If connection is Xen, default to PV instead of HVM.
virtman-default-to-xen-pv.patch - Update to virt-manager 1.0.0 * virt-manager: Snapshot support * New tool virt-xml: Edit libvirt XML in one shot from the command line. Check out some examples: http://www.redhat.com/archives/libvir-list/2014-January/msg01226.html * Improved defaults: qcow2, USB2, host CPU model, guest agent channel, … * Introspect command line options like –disk=? or –network=help * The virt-image tool will be removed before the next release, speak up if you have a good reason not to remove it. * virt-manager: Support arm vexpress VM creation * virt-manager: Add guest memory usage graphs (Thorsten Behrens) * virt-manager: UI for editing devices (Cédric Bosdonnat) * Spice USB redirection support (Guannan Ren) * UI and command line support (Stefan Berger) * UI and command line support (Giuseppe Scrivano) * UI and command line support (Chen Hanxiao) * command line support (Chen Hanxiao) * virt-manager: support for glusterfs storage pools (Giuseppe Scrivano) * cli: New options –memory, –features, –clock, –metadata, –pm * Greatly improve app responsiveness when connecting to remote hosts * Lots of UI cleanup and improvements virt-manager-1.0.0.tar.bz2 - Dropped the following patches by taking a newer upstream tarball virt-manager-0.10.0.tar.bz2 Add-memory-stats-widget-also-to-manager-tree-view.patch Attempt-empty-path-on-virDomainBlockStats.patch Base-mem-statistics-on-virDomainMemoryStats-if-avail.patch virtinst-add-cache-modes.patch virtinst-allow-ide-hdb.patch virtinst-clone-disks.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=143
This commit is contained in:
parent
66d8d8fc92
commit
0ab97a4010
@ -1,235 +0,0 @@
|
||||
From 43f0549e2f4e1479cf3e9fe9201a8224eb5b56a1 Mon Sep 17 00:00:00 2001
|
||||
From: Thorsten Behrens <tbehrens@suse.com>
|
||||
Date: Wed, 18 Dec 2013 14:42:42 +0100
|
||||
Subject: [PATCH 1/3] Add memory stats widget also to manager tree view.
|
||||
|
||||
(crobinso: Fix an initialization issue)
|
||||
|
||||
Conflicts:
|
||||
virtManager/manager.py
|
||||
---
|
||||
data/org.virt-manager.virt-manager.gschema.xml | 6 ++++
|
||||
ui/vmm-manager.ui | 9 ++++++
|
||||
virtManager/config.py | 6 ++++
|
||||
virtManager/domain.py | 3 ++
|
||||
virtManager/manager.py | 41 ++++++++++++++++++++++++--
|
||||
5 files changed, 62 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: virt-manager-0.10.0/data/org.virt-manager.virt-manager.gschema.xml
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/data/org.virt-manager.virt-manager.gschema.xml
|
||||
+++ virt-manager-0.10.0/data/org.virt-manager.virt-manager.gschema.xml
|
||||
@@ -94,6 +94,12 @@
|
||||
<description>Show the host cpu usage field in the domain list summary view</description>
|
||||
</key>
|
||||
|
||||
+ <key name="memory-usage" type="b">
|
||||
+ <default>false</default>
|
||||
+ <summary>Show memory usage in summary</summary>
|
||||
+ <description>Show memory usage field in the domain list summary view</description>
|
||||
+ </key>
|
||||
+
|
||||
</schema>
|
||||
|
||||
<schema id="org.virt-manager.virt-manager.stats" path="/org/virt-manager/virt-manager/stats/">
|
||||
Index: virt-manager-0.10.0/ui/vmm-manager.ui
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/ui/vmm-manager.ui
|
||||
+++ virt-manager-0.10.0/ui/vmm-manager.ui
|
||||
@@ -190,6 +190,15 @@
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
+ <object class="GtkCheckMenuItem" id="menu_view_stats_memory">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label" translatable="yes">_Memory Usage</property>
|
||||
+ <property name="use_underline">True</property>
|
||||
+ <signal name="activate" handler="on_menu_view_memory_usage_activate" swapped="no"/>
|
||||
+ </object>
|
||||
+ </child>
|
||||
+ <child>
|
||||
<object class="GtkCheckMenuItem" id="menu_view_stats_disk">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
Index: virt-manager-0.10.0/virtManager/config.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/config.py
|
||||
+++ virt-manager-0.10.0/virtManager/config.py
|
||||
@@ -251,6 +251,8 @@ class vmmConfig(object):
|
||||
return self.conf.get("/vmlist-fields/cpu-usage")
|
||||
def is_vmlist_host_cpu_usage_visible(self):
|
||||
return self.conf.get("/vmlist-fields/host-cpu-usage")
|
||||
+ def is_vmlist_memory_usage_visible(self):
|
||||
+ return self.conf.get("/vmlist-fields/memory-usage")
|
||||
def is_vmlist_disk_io_visible(self):
|
||||
return self.conf.get("/vmlist-fields/disk-usage")
|
||||
def is_vmlist_network_traffic_visible(self):
|
||||
@@ -260,6 +262,8 @@ class vmmConfig(object):
|
||||
self.conf.set("/vmlist-fields/cpu-usage", state)
|
||||
def set_vmlist_host_cpu_usage_visible(self, state):
|
||||
self.conf.set("/vmlist-fields/host-cpu-usage", state)
|
||||
+ def set_vmlist_memory_usage_visible(self, state):
|
||||
+ self.conf.set("/vmlist-fields/memory-usage", state)
|
||||
def set_vmlist_disk_io_visible(self, state):
|
||||
self.conf.set("/vmlist-fields/disk-usage", state)
|
||||
def set_vmlist_network_traffic_visible(self, state):
|
||||
@@ -269,6 +273,8 @@ class vmmConfig(object):
|
||||
return self.conf.notify_add("/vmlist-fields/cpu-usage", cb)
|
||||
def on_vmlist_host_cpu_usage_visible_changed(self, cb):
|
||||
return self.conf.notify_add("/vmlist-fields/host-cpu-usage", cb)
|
||||
+ def on_vmlist_memory_usage_visible_changed(self, cb):
|
||||
+ return self.conf.notify_add("/vmlist-fields/memory-usage", cb)
|
||||
def on_vmlist_disk_io_visible_changed(self, cb):
|
||||
return self.conf.notify_add("/vmlist-fields/disk-usage", cb)
|
||||
def on_vmlist_network_traffic_visible_changed(self, cb):
|
||||
Index: virt-manager-0.10.0/virtManager/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/domain.py
|
||||
+++ virt-manager-0.10.0/virtManager/domain.py
|
||||
@@ -1475,6 +1475,9 @@ class vmmDomain(vmmLibvirtObject):
|
||||
if len(cpudata) > limit:
|
||||
cpudata = cpudata[0:limit]
|
||||
return cpudata
|
||||
+ def memory_usage_vector_limit(self, limit):
|
||||
+ return self.in_out_vector_limit(self.stats_memory_vector(),
|
||||
+ limit)
|
||||
def network_traffic_vector_limit(self, limit, ceil=None):
|
||||
return self.in_out_vector_limit(self.network_traffic_vector(ceil),
|
||||
limit)
|
||||
Index: virt-manager-0.10.0/virtManager/manager.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/manager.py
|
||||
+++ virt-manager-0.10.0/virtManager/manager.py
|
||||
@@ -58,8 +58,9 @@ ROW_INSPECTION_OS_ICON) = range(13)
|
||||
COL_NAME = 0
|
||||
COL_GUEST_CPU = 1
|
||||
COL_HOST_CPU = 2
|
||||
-COL_DISK = 3
|
||||
-COL_NETWORK = 4
|
||||
+COL_MEM = 3
|
||||
+COL_DISK = 4
|
||||
+COL_NETWORK = 5
|
||||
|
||||
|
||||
try:
|
||||
@@ -128,6 +129,7 @@ class vmmManager(vmmGObjectUI):
|
||||
# list.get_column, so avoid it
|
||||
self.diskcol = None
|
||||
self.netcol = None
|
||||
+ self.memcol = None
|
||||
self.guestcpucol = None
|
||||
self.hostcpucol = None
|
||||
|
||||
@@ -136,6 +138,8 @@ class vmmManager(vmmGObjectUI):
|
||||
self.toggle_stats_visible_guest_cpu,
|
||||
"on_menu_view_host_cpu_usage_activate":
|
||||
self.toggle_stats_visible_host_cpu,
|
||||
+ "on_menu_view_memory_usage_activate":
|
||||
+ self.toggle_stats_visible_memory_usage,
|
||||
"on_menu_view_disk_io_activate" :
|
||||
self.toggle_stats_visible_disk,
|
||||
"on_menu_view_network_traffic_activate":
|
||||
@@ -224,6 +228,7 @@ class vmmManager(vmmGObjectUI):
|
||||
|
||||
self.diskcol = None
|
||||
self.guestcpucol = None
|
||||
+ self.memcol = None
|
||||
self.hostcpucol = None
|
||||
self.netcol = None
|
||||
|
||||
@@ -256,6 +261,9 @@ class vmmManager(vmmGObjectUI):
|
||||
self.config.on_vmlist_host_cpu_usage_visible_changed(
|
||||
self.toggle_host_cpu_usage_visible_widget))
|
||||
self.add_gconf_handle(
|
||||
+ self.config.on_vmlist_memory_usage_visible_changed(
|
||||
+ self.toggle_memory_usage_visible_widget))
|
||||
+ self.add_gconf_handle(
|
||||
self.config.on_vmlist_disk_io_visible_changed(
|
||||
self.toggle_disk_io_visible_widget))
|
||||
self.add_gconf_handle(
|
||||
@@ -271,7 +279,6 @@ class vmmManager(vmmGObjectUI):
|
||||
self.config.on_stats_enable_net_poll_changed(self.enable_polling,
|
||||
COL_NETWORK))
|
||||
|
||||
-
|
||||
self.widget("menu_view_stats_guest_cpu").set_active(
|
||||
self.config.is_vmlist_guest_cpu_usage_visible())
|
||||
self.widget("menu_view_stats_host_cpu").set_active(
|
||||
@@ -460,6 +467,10 @@ class vmmManager(vmmGObjectUI):
|
||||
self.host_cpu_usage_img,
|
||||
self.config.is_vmlist_host_cpu_usage_visible(),
|
||||
COL_HOST_CPU)
|
||||
+ self.memcol = make_stats_column(_("Memory usage"),
|
||||
+ self.memory_usage_img,
|
||||
+ self.config.is_vmlist_memory_usage_visible(),
|
||||
+ COL_MEM)
|
||||
self.diskcol = make_stats_column(_("Disk I/O"),
|
||||
self.disk_io_img,
|
||||
self.config.is_vmlist_disk_io_visible(),
|
||||
@@ -472,6 +483,7 @@ class vmmManager(vmmGObjectUI):
|
||||
model.set_sort_func(COL_NAME, self.vmlist_name_sorter)
|
||||
model.set_sort_func(COL_GUEST_CPU, self.vmlist_guest_cpu_usage_sorter)
|
||||
model.set_sort_func(COL_HOST_CPU, self.vmlist_host_cpu_usage_sorter)
|
||||
+ model.set_sort_func(COL_MEM, self.vmlist_memory_usage_sorter)
|
||||
model.set_sort_func(COL_DISK, self.vmlist_disk_io_sorter)
|
||||
model.set_sort_func(COL_NETWORK, self.vmlist_network_usage_sorter)
|
||||
model.set_sort_column_id(COL_NAME, Gtk.SortType.ASCENDING)
|
||||
@@ -1162,6 +1174,13 @@ class vmmManager(vmmGObjectUI):
|
||||
return cmp(obj1.host_cpu_time_percentage(),
|
||||
obj2.host_cpu_time_percentage())
|
||||
|
||||
+ def vmlist_memory_usage_sorter(self, model, iter1, iter2, ignore):
|
||||
+ obj1 = model.get_value(iter1, ROW_HANDLE)
|
||||
+ obj2 = model.get_value(iter2, ROW_HANDLE)
|
||||
+
|
||||
+ return cmp(obj1.stats_memory(),
|
||||
+ obj2.stats_memory())
|
||||
+
|
||||
def vmlist_disk_io_sorter(self, model, iter1, iter2, ignore):
|
||||
obj1 = model.get_value(iter1, ROW_HANDLE)
|
||||
obj2 = model.get_value(iter2, ROW_HANDLE)
|
||||
@@ -1211,6 +1230,11 @@ class vmmManager(vmmGObjectUI):
|
||||
self.diskcol.set_visible(val)
|
||||
self.widget("menu_view_stats_disk").set_active(val)
|
||||
|
||||
+ def toggle_memory_usage_visible_widget(self):
|
||||
+ val = self.config.is_vmlist_memory_usage_visible()
|
||||
+ self.memcol.set_visible(val)
|
||||
+ self.widget("menu_view_stats_memory").set_active(val)
|
||||
+
|
||||
def toggle_guest_cpu_usage_visible_widget(self):
|
||||
val = self.config.is_vmlist_guest_cpu_usage_visible()
|
||||
self.guestcpucol.set_visible(val)
|
||||
@@ -1226,6 +1250,7 @@ class vmmManager(vmmGObjectUI):
|
||||
set_stats = {
|
||||
COL_GUEST_CPU: self.config.set_vmlist_guest_cpu_usage_visible,
|
||||
COL_HOST_CPU: self.config.set_vmlist_host_cpu_usage_visible,
|
||||
+ COL_MEM: self.config.set_vmlist_memory_usage_visible,
|
||||
COL_DISK: self.config.set_vmlist_disk_io_visible,
|
||||
COL_NETWORK: self.config.set_vmlist_network_traffic_visible,
|
||||
}
|
||||
@@ -1235,6 +1260,8 @@ class vmmManager(vmmGObjectUI):
|
||||
self.toggle_stats_visible(src, COL_GUEST_CPU)
|
||||
def toggle_stats_visible_host_cpu(self, src):
|
||||
self.toggle_stats_visible(src, COL_HOST_CPU)
|
||||
+ def toggle_stats_visible_memory_usage(self, src):
|
||||
+ self.toggle_stats_visible(src, COL_MEM)
|
||||
def toggle_stats_visible_disk(self, src):
|
||||
self.toggle_stats_visible(src, COL_DISK)
|
||||
def toggle_stats_visible_network(self, src):
|
||||
@@ -1256,6 +1283,14 @@ class vmmManager(vmmGObjectUI):
|
||||
data = obj.host_cpu_time_vector_limit(GRAPH_LEN)
|
||||
cell.set_property('data_array', data)
|
||||
|
||||
+ def memory_usage_img(self, column_ignore, cell, model, _iter, data):
|
||||
+ obj = model[_iter][ROW_HANDLE]
|
||||
+ if obj is None or not hasattr(obj, "conn"):
|
||||
+ return
|
||||
+
|
||||
+ data = obj.memory_usage_vector_limit(GRAPH_LEN)
|
||||
+ cell.set_property('data_array', data)
|
||||
+
|
||||
def disk_io_img(self, column_ignore, cell, model, _iter, data):
|
||||
obj = model.get_value(_iter, ROW_HANDLE)
|
||||
if obj is None or not hasattr(obj, "conn"):
|
@ -1,45 +0,0 @@
|
||||
From 561e7318d19adaba9ea79f6f3010bc1fe9d37d10 Mon Sep 17 00:00:00 2001
|
||||
From: Thorsten Behrens <tbehrens@suse.com>
|
||||
Date: Sun, 12 Jan 2014 03:13:54 +0100
|
||||
Subject: [PATCH 3/3] Attempt empty path on virDomainBlockStats
|
||||
|
||||
libvirt for some backends yields summary domain stats for empty
|
||||
disk path.
|
||||
|
||||
Conflicts:
|
||||
virtManager/domain.py
|
||||
---
|
||||
virtManager/domain.py | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
Index: virt-manager-0.10.0/virtManager/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/domain.py
|
||||
+++ virt-manager-0.10.0/virtManager/domain.py
|
||||
@@ -196,6 +196,7 @@ class vmmDomain(vmmLibvirtObject):
|
||||
self._enable_disk_poll = False
|
||||
self._stats_disk_supported = True
|
||||
self._stats_disk_skip = []
|
||||
+ self._summary_disk_stats_skip = False
|
||||
|
||||
self.inspection = vmmInspectionData()
|
||||
|
||||
@@ -1705,6 +1706,18 @@ class vmmDomain(vmmLibvirtObject):
|
||||
not self.is_active()):
|
||||
return rd, wr
|
||||
|
||||
+ # attempt to retrieve summary stats for domain
|
||||
+ if not self._summary_disk_stats_skip:
|
||||
+ try:
|
||||
+ io = self._backend.blockStats('')
|
||||
+ if io:
|
||||
+ rd = io[1]
|
||||
+ wr = io[3]
|
||||
+ return rd, wr
|
||||
+ except libvirt.libvirtError:
|
||||
+ self._summary_disk_stats_skip = True
|
||||
+
|
||||
+ # did not work, iterate over all disks
|
||||
for disk in self.get_disk_devices(refresh_if_necc=False):
|
||||
dev = disk.target
|
||||
if not dev:
|
@ -1,66 +0,0 @@
|
||||
From 229c3b692e6b340951af371e0f68484bc6a8868a Mon Sep 17 00:00:00 2001
|
||||
From: Thorsten Behrens <tbehrens@suse.com>
|
||||
Date: Wed, 18 Dec 2013 14:42:43 +0100
|
||||
Subject: [PATCH 2/3] Base mem statistics on virDomainMemoryStats if available.
|
||||
|
||||
Attempt to query domain memory stats via virDomainMemoryStats.
|
||||
|
||||
(crobinso: remove the broken fallback, since it's confusing)
|
||||
---
|
||||
virtManager/domain.py | 28 ++++++++++++++++++++++------
|
||||
1 file changed, 22 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: virt-manager-0.10.0/virtManager/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/domain.py
|
||||
+++ virt-manager-0.10.0/virtManager/domain.py
|
||||
@@ -187,6 +187,8 @@ class vmmDomain(vmmLibvirtObject):
|
||||
self._guest = None
|
||||
self._guest_to_define = None
|
||||
|
||||
+ self._mem_stats_supported = True
|
||||
+
|
||||
self._enable_net_poll = False
|
||||
self._stats_net_supported = True
|
||||
self._stats_net_skip = []
|
||||
@@ -1303,12 +1305,26 @@ class vmmDomain(vmmLibvirtObject):
|
||||
# Stats helpers ###
|
||||
###################
|
||||
|
||||
- def _sample_mem_stats(self, info):
|
||||
- curmem = info[2]
|
||||
- if not self.is_active():
|
||||
- curmem = 0
|
||||
+ def _sample_mem_stats(self):
|
||||
+ curmem = 0
|
||||
+ totalmem = 1
|
||||
+
|
||||
+ if self._mem_stats_supported and self.is_active():
|
||||
+ try:
|
||||
+ stats = self._backend.memoryStats()
|
||||
+ # did we get both required stat items back?
|
||||
+ if set(['actual', 'rss']).issubset(
|
||||
+ set(stats.keys())):
|
||||
+ curmem = stats['rss']
|
||||
+ totalmem = stats['actual']
|
||||
+ except libvirt.libvirtError, err:
|
||||
+ if support.is_error_nosupport(err):
|
||||
+ logging.debug("Mem stats not supported: %s", err)
|
||||
+ self._mem_stats_supported = False
|
||||
+ else:
|
||||
+ logging.error("Error reading mem stats: %s", err)
|
||||
|
||||
- pcentCurrMem = curmem * 100.0 / self.maximum_memory()
|
||||
+ pcentCurrMem = curmem * 100.0 / totalmem
|
||||
pcentCurrMem = max(0.0, min(pcentCurrMem, 100.0))
|
||||
|
||||
return pcentCurrMem, curmem
|
||||
@@ -1751,7 +1767,7 @@ class vmmDomain(vmmLibvirtObject):
|
||||
|
||||
(cpuTime, cpuTimeAbs,
|
||||
pcentHostCpu, pcentGuestCpu) = self._sample_cpu_stats(info, now)
|
||||
- pcentCurrMem, curmem = self._sample_mem_stats(info)
|
||||
+ pcentCurrMem, curmem = self._sample_mem_stats()
|
||||
rdBytes, wrBytes = self._sample_disk_io()
|
||||
rxBytes, txBytes = self._sample_network_traffic()
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c01731f3ada1a9196966c891b6eca207d9295e00dcdbaaf40375eee1780ecf00
|
||||
size 1404339
|
3
virt-manager-1.0.0.tar.bz2
Normal file
3
virt-manager-1.0.0.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4327f3de1848356ed4a066f6e2183775f0bb587efaef97fb89d5c1dd4d028156
|
||||
size 1308101
|
@ -1,3 +1,42 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Feb 14 15:45:58 MST 2014 - carnold@suse.com
|
||||
|
||||
- If connection is Xen, default to PV instead of HVM.
|
||||
virtman-default-to-xen-pv.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Feb 13 16:23:58 MST 2014 - carnold@suse.com
|
||||
|
||||
- Update to virt-manager 1.0.0
|
||||
* virt-manager: Snapshot support
|
||||
* New tool virt-xml: Edit libvirt XML in one shot from the command line. Check out some examples: http://www.redhat.com/archives/libvir-list/2014-January/msg01226.html
|
||||
* Improved defaults: qcow2, USB2, host CPU model, guest agent channel, …
|
||||
* Introspect command line options like –disk=? or –network=help
|
||||
* The virt-image tool will be removed before the next release, speak up if you have a good reason not to remove it.
|
||||
* virt-manager: Support arm vexpress VM creation
|
||||
* virt-manager: Add guest memory usage graphs (Thorsten Behrens)
|
||||
* virt-manager: UI for editing devices (Cédric Bosdonnat)
|
||||
* Spice USB redirection support (Guannan Ren)
|
||||
* UI and command line support (Stefan Berger)
|
||||
* UI and command line support (Giuseppe Scrivano)
|
||||
* UI and command line support (Chen Hanxiao)
|
||||
* command line support (Chen Hanxiao)
|
||||
* virt-manager: support for glusterfs storage pools (Giuseppe Scrivano)
|
||||
* cli: New options –memory, –features, –clock, –metadata, –pm
|
||||
* Greatly improve app responsiveness when connecting to remote hosts
|
||||
* Lots of UI cleanup and improvements
|
||||
virt-manager-1.0.0.tar.bz2
|
||||
- Dropped the following patches by taking a newer upstream tarball
|
||||
virt-manager-0.10.0.tar.bz2
|
||||
Add-memory-stats-widget-also-to-manager-tree-view.patch
|
||||
Attempt-empty-path-on-virDomainBlockStats.patch
|
||||
Base-mem-statistics-on-virDomainMemoryStats-if-avail.patch
|
||||
virtinst-add-cache-modes.patch
|
||||
virtinst-allow-ide-hdb.patch
|
||||
virtinst-clone-disks.patch
|
||||
virtinst-none-arch-fix.patch
|
||||
virtman-support-unsafe-migration.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 3 13:36:52 MST 2014 - carnold@suse.com
|
||||
|
||||
@ -29,7 +68,7 @@ Thu Jan 07 14:25:13 MDT 2014 - carnold@suse.com
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 24 13:49:29 MST 2013 - carnold@suse.com
|
||||
|
||||
- Drop virtman-autoconnect.patch
|
||||
- Drop virtman-autoconnect.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Dec 14 16:49:34 CET 2013 - ohering@suse.de
|
||||
|
@ -22,7 +22,7 @@
|
||||
%define libvirt_packages "libvirt-daemon-qemu,libvirt-daemon-driver-network"
|
||||
%define preferred_distros "opensuse,sles"
|
||||
%define kvm_packages "qemu"
|
||||
%define _version 0.10.0
|
||||
%define _version 1.0.0
|
||||
%define _release 1
|
||||
|
||||
Name: virt-manager
|
||||
@ -47,30 +47,23 @@ Patch64: virtman-update-backend.patch
|
||||
Patch65: virtman-slow-mouse.patch
|
||||
Patch66: virtman-reverse-serialcon.patch
|
||||
Patch67: virtman-default-guest-from-host-os.patch
|
||||
Patch68: virtman-allow-pv-iso-install.patch
|
||||
Patch69: virtman-autoyast-support.patch
|
||||
Patch70: virtman-vminstall.patch
|
||||
Patch71: virtman-support-unsafe-migration.patch
|
||||
Patch68: virtman-default-to-xen-pv.patch
|
||||
Patch69: virtman-allow-pv-iso-install.patch
|
||||
Patch70: virtman-autoyast-support.patch
|
||||
Patch71: virtman-vminstall.patch
|
||||
Patch150: virtinst-cdrom.patch
|
||||
Patch151: virtinst-storage-ocfs2.patch
|
||||
Patch152: virtinst-qed.patch
|
||||
Patch153: virtinst-add-cache-modes.patch
|
||||
Patch154: virtinst-none-arch-fix.patch
|
||||
Patch155: virtinst-allow-pv-iso-install.patch
|
||||
Patch156: virtinst-support-suse-distros.patch
|
||||
Patch157: virtinst-detect-suse-distros.patch
|
||||
Patch158: virtinst-allow-ide-hdb.patch
|
||||
Patch159: virtinst-xen-drive-type.patch
|
||||
Patch160: virtinst-clone-disks.patch
|
||||
# Pending upstream
|
||||
Patch200: Add-memory-stats-widget-also-to-manager-tree-view.patch
|
||||
Patch201: Base-mem-statistics-on-virDomainMemoryStats-if-avail.patch
|
||||
Patch202: Attempt-empty-path-on-virDomainBlockStats.patch
|
||||
|
||||
Patch153: virtinst-support-suse-distros.patch
|
||||
Patch154: virtinst-detect-suse-distros.patch
|
||||
Patch155: virtinst-xen-drive-type.patch
|
||||
Patch156: virtinst-allow-pv-iso-install.patch
|
||||
BuildArch: noarch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
|
||||
%define verrel %{version}-%{release}
|
||||
Requires: dbus-1-x11
|
||||
Requires: dconf
|
||||
Requires: gtk3
|
||||
Requires: python-gconf
|
||||
Requires: virt-manager-common = %{verrel}
|
||||
@ -88,6 +81,7 @@ Requires: typelib-1_0-Vte-2_90
|
||||
Requires: gtk-vnc2
|
||||
Requires: libspice-client-glib-2_0-8
|
||||
Requires: libspice-client-gtk-3_0-4
|
||||
Requires: python-gobject-cairo
|
||||
Requires: typelib-1_0-GVnc-1_0
|
||||
Requires: typelib-1_0-Gtk-3_0
|
||||
Requires: typelib-1_0-GtkVnc-2_0
|
||||
@ -140,6 +134,7 @@ Provides: virt-clone
|
||||
Provides: virt-convert
|
||||
Provides: virt-image
|
||||
Obsoletes: python-virtinst <= 0.600.4
|
||||
Supplements: virt-manager
|
||||
|
||||
%description -n virt-install
|
||||
Package includes several command line utilities, including virt-install
|
||||
@ -163,22 +158,16 @@ machine).
|
||||
%patch67 -p1
|
||||
%patch68 -p1
|
||||
%patch69 -p1
|
||||
#%patch69 -p1 pv iso install
|
||||
%patch70 -p1
|
||||
%patch71 -p1
|
||||
%patch150 -p1
|
||||
#%patch150 -p1 use 'c' for cdrom
|
||||
%patch151 -p1
|
||||
%patch152 -p1
|
||||
%patch153 -p1
|
||||
%patch154 -p1
|
||||
%patch155 -p1
|
||||
%patch156 -p1
|
||||
%patch157 -p1
|
||||
%patch158 -p1
|
||||
%patch159 -p1
|
||||
%patch160 -p1
|
||||
%patch200 -p1
|
||||
%patch201 -p1
|
||||
%patch202 -p1
|
||||
#%patch156 -p1 pv iso install
|
||||
|
||||
%build
|
||||
%if %{qemu_user}
|
||||
@ -257,6 +246,7 @@ fi
|
||||
%{_datadir}/%{name}/icons
|
||||
%{_datadir}/icons/hicolor/*/apps/*
|
||||
|
||||
%{_datadir}/appdata/%{name}.appdata.xml
|
||||
%{_datadir}/applications/%{name}.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.virt-manager.virt-manager.gschema.xml
|
||||
|
||||
@ -274,12 +264,14 @@ fi
|
||||
%{_mandir}/man1/virt-clone.1*
|
||||
%{_mandir}/man1/virt-convert.1*
|
||||
%{_mandir}/man1/virt-image.1*
|
||||
%{_mandir}/man1/virt-xml.1*
|
||||
%{_mandir}/man5/virt-image.5*
|
||||
|
||||
%{_datadir}/%{name}/virt-install
|
||||
%{_datadir}/%{name}/virt-clone
|
||||
%{_datadir}/%{name}/virt-image
|
||||
%{_datadir}/%{name}/virt-convert
|
||||
%{_datadir}/%{name}/virt-xml
|
||||
%dir %{_datadir}/*
|
||||
%dir %{_datadir}/*/*
|
||||
%{_datadir}/YaST2/clients/virt-install.rb
|
||||
@ -289,5 +281,6 @@ fi
|
||||
%{_bindir}/virt-clone
|
||||
%{_bindir}/virt-image
|
||||
%{_bindir}/virt-convert
|
||||
%{_bindir}/virt-xml
|
||||
|
||||
%changelog
|
||||
|
@ -1,28 +0,0 @@
|
||||
Index: virt-manager-0.10.0/virtinst/VirtualDisk.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtinst/VirtualDisk.py
|
||||
+++ virt-manager-0.10.0/virtinst/VirtualDisk.py
|
||||
@@ -312,10 +312,13 @@ class VirtualDisk(VirtualDevice):
|
||||
driver_types = [DRIVER_TAP_RAW, DRIVER_TAP_QCOW,
|
||||
DRIVER_TAP_QED, DRIVER_TAP_VMDK, DRIVER_TAP_VDISK]
|
||||
|
||||
+ CACHE_MODE_DIRECTSYNC = "directsync"
|
||||
CACHE_MODE_NONE = "none"
|
||||
+ CACHE_MODE_UNSAFE = "unsafe"
|
||||
CACHE_MODE_WRITETHROUGH = "writethrough"
|
||||
CACHE_MODE_WRITEBACK = "writeback"
|
||||
- cache_types = [CACHE_MODE_NONE, CACHE_MODE_WRITETHROUGH,
|
||||
+ cache_types = [CACHE_MODE_DIRECTSYNC, CACHE_MODE_NONE,
|
||||
+ CACHE_MODE_UNSAFE, CACHE_MODE_WRITETHROUGH,
|
||||
CACHE_MODE_WRITEBACK]
|
||||
|
||||
DEVICE_DISK = "disk"
|
||||
@@ -599,7 +602,7 @@ class VirtualDisk(VirtualDevice):
|
||||
@type bus: C{str}
|
||||
@param shareable: If disk can be shared among VMs
|
||||
@type shareable: C{bool}
|
||||
- @param driverCache: Disk cache mode (none, writethrough, writeback)
|
||||
+ @param driverCache: Disk cache mode (none, directsync, unsafe, writethrough, writeback)
|
||||
@type driverCache: member of cache_types
|
||||
@param format: Storage volume format to use when creating storage
|
||||
@type format: C{str}
|
@ -1,21 +0,0 @@
|
||||
Index: virt-manager-0.10.0/virtinst/VirtualDisk.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtinst/VirtualDisk.py
|
||||
+++ virt-manager-0.10.0/virtinst/VirtualDisk.py
|
||||
@@ -1742,14 +1742,8 @@ class VirtualDisk(VirtualDevice):
|
||||
if gen_t in except_targets:
|
||||
continue
|
||||
if gen_t not in skip_targets:
|
||||
- if self.device != self.DEVICE_CDROM:
|
||||
- if i != ord('c') - ord('a'):
|
||||
- self.target = gen_t
|
||||
- return self.target
|
||||
- else:
|
||||
- if i >= ord('c') - ord('a'):
|
||||
- self.target = gen_t
|
||||
- return self.target
|
||||
+ self.target = gen_t
|
||||
+ return self.target
|
||||
|
||||
# Check except_targets for any options
|
||||
for t in except_targets:
|
@ -1,32 +1,66 @@
|
||||
Index: virt-manager-0.10.0/virtinst/DistroInstaller.py
|
||||
Index: virt-manager-1.0.0/virtinst/distroinstaller.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtinst/DistroInstaller.py
|
||||
+++ virt-manager-0.10.0/virtinst/DistroInstaller.py
|
||||
@@ -442,7 +442,7 @@ class DistroInstaller(Installer.Installe
|
||||
return False
|
||||
|
||||
is_url = not self._location_is_path
|
||||
- mount_dvd = self._location_is_path and not self.cdrom
|
||||
+ mount_dvd = self._location_is_path and self.cdrom
|
||||
|
||||
return bool(is_url or mount_dvd)
|
||||
|
||||
@@ -451,11 +451,14 @@ class DistroInstaller(Installer.Installe
|
||||
--- virt-manager-1.0.0.orig/virtinst/distroinstaller.py
|
||||
+++ virt-manager-1.0.0/virtinst/distroinstaller.py
|
||||
@@ -421,8 +421,14 @@ class DistroInstaller(Installer):
|
||||
|
||||
dev = None
|
||||
if self.cdrom:
|
||||
- if self.location:
|
||||
- dev = self._prepare_cdrom(guest, meter)
|
||||
+ if self.is_xenpv() and guest._lookup_osdict_key('pv_cdrom_install'):
|
||||
+ dev = self._prepare_kernel_and_initrd(guest, meter)
|
||||
else:
|
||||
- # Booting from a cdrom directly allocated to the guest
|
||||
- pass
|
||||
+ if self.location:
|
||||
+ dev = self._prepare_cdrom(guest, meter)
|
||||
+ else:
|
||||
+ # Booting from a cdrom directly allocated to the guest
|
||||
+ pass
|
||||
else:
|
||||
dev = self._prepare_kernel_and_initrd(guest, meter)
|
||||
if mediatype == MEDIA_CDROM_PATH:
|
||||
- dev = self._prepare_local()
|
||||
- else:
|
||||
+ if guest.os.is_xenpv() and guest._lookup_osdict_key('pv_cdrom_install', False):
|
||||
+ fetcher = urlfetcher.fetcherForURI(self.location,
|
||||
+ scratchdir, meter)
|
||||
+ dev = self._prepare_kernel_url(guest, fetcher)
|
||||
+ else:
|
||||
+ dev = self._prepare_local()
|
||||
+
|
||||
+ if dev is None:
|
||||
fetcher = urlfetcher.fetcherForURI(self.location,
|
||||
scratchdir, meter)
|
||||
try:
|
||||
Index: virt-manager-1.0.0/virtinst/osdict.py
|
||||
===================================================================
|
||||
--- virt-manager-1.0.0.orig/virtinst/osdict.py
|
||||
+++ virt-manager-1.0.0/virtinst/osdict.py
|
||||
@@ -143,6 +143,8 @@ class _OSVariant(object):
|
||||
@xen_disable_acpi: If True, disable acpi/apic for this OS if on old xen.
|
||||
This corresponds with the SUPPORT_CONN_CAN_DEFAULT_ACPI check
|
||||
@qemu_ga: If True, this distro has qemu_ga available by default
|
||||
+ @pv_cdrom_install: If True, this distro can be installed from an ISO or
|
||||
+ cdrom as a para-virtualized guest.
|
||||
|
||||
The rest of the parameters are about setting device/guest defaults
|
||||
based on the OS. They should be self explanatory. See guest.py for
|
||||
@@ -158,7 +160,7 @@ class _OSVariant(object):
|
||||
videomodel=_SENTINEL, virtionet=_SENTINEL,
|
||||
virtiodisk=_SENTINEL, virtiommio=_SENTINEL,
|
||||
virtioconsole=_SENTINEL, xen_disable_acpi=_SENTINEL,
|
||||
- qemu_ga=_SENTINEL):
|
||||
+ qemu_ga=_SENTINEL, pv_cdrom_install=_SENTINEL):
|
||||
if is_type:
|
||||
if parent != _SENTINEL:
|
||||
raise RuntimeError("OS types must not specify parent")
|
||||
@@ -218,6 +220,7 @@ class _OSVariant(object):
|
||||
self.virtiommio = _get_default("virtiommio", virtiommio)
|
||||
self.virtioconsole = _get_default("virtioconsole", virtioconsole)
|
||||
self.qemu_ga = _get_default("qemu_ga", qemu_ga)
|
||||
+ self.pv_cdrom_install = _get_default("pv_cdrom_install", pv_cdrom_install)
|
||||
|
||||
|
||||
def _add_type(*args, **kwargs):
|
||||
@@ -259,12 +262,12 @@ _add_var("fedora18", "Fedora 18", suppor
|
||||
_add_var("fedora19", "Fedora 19", virtiommio=True, parent="fedora18")
|
||||
_add_var("fedora20", "Fedora 20 (or later)", parent="fedora19")
|
||||
|
||||
-_add_var("opensuse11", "openSUSE 11", urldistro="opensuse", supported=True, virtiodisk=True, virtionet=True, parent="linux")
|
||||
+_add_var("opensuse11", "openSUSE 11", urldistro="opensuse", supported=True, pv_cdrom_install=True, virtiodisk=True, virtionet=True, parent="linux")
|
||||
_add_var("opensuse12", "openSUSE 12", parent="opensuse11")
|
||||
_add_var("opensuse13", "openSUSE 13 (or later)", parent="opensuse12")
|
||||
|
||||
_add_var("sles", "Suse Linux Enterprise Server", urldistro="suse", supported=True, parent="linux")
|
||||
-_add_var("sles10", "Suse Linux Enterprise Server 10", supported=True, virtiodisk=True, virtionet=True, parent="sles")
|
||||
+_add_var("sles10", "Suse Linux Enterprise Server 10", supported=True, pv_cdrom_install=True, virtiodisk=True, virtionet=True, parent="sles")
|
||||
_add_var("sles11", "Suse Linux Enterprise Server 11", supported=True, virtiodisk=True, virtionet=True, parent="sles10")
|
||||
_add_var("sles12", "Suse Linux Enterprise Server 12 (or later)", supported=True, virtiodisk=True, virtionet=True, parent="sles11")
|
||||
|
||||
|
@ -1,30 +1,20 @@
|
||||
Index: virt-manager-0.10.0/virtinst/VirtualDisk.py
|
||||
Index: virt-manager-0.10.1/virtinst/devicedisk.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtinst/VirtualDisk.py
|
||||
+++ virt-manager-0.10.0/virtinst/VirtualDisk.py
|
||||
@@ -1712,7 +1712,7 @@ class VirtualDisk(VirtualDevice):
|
||||
if maxnode > (26 * 26 * 26):
|
||||
raise RuntimeError("maxnode value is too high")
|
||||
|
||||
- # Regular scanning
|
||||
+ # Start cdrom at 'c' and skip 'c' for non-cdrom
|
||||
for i in range(1, maxnode + 1):
|
||||
gen_t = prefix
|
||||
|
||||
@@ -1738,8 +1738,14 @@ class VirtualDisk(VirtualDevice):
|
||||
if gen_t in except_targets:
|
||||
continue
|
||||
if gen_t not in skip_targets:
|
||||
- self.target = gen_t
|
||||
- return self.target
|
||||
+ if self.device != self.DEVICE_CDROM:
|
||||
+ if i != ord('c') - ord('a'):
|
||||
+ self.target = gen_t
|
||||
+ return self.target
|
||||
--- virt-manager-0.10.1.orig/virtinst/devicedisk.py
|
||||
+++ virt-manager-0.10.1/virtinst/devicedisk.py
|
||||
@@ -848,6 +848,15 @@ class VirtualDisk(VirtualDevice):
|
||||
if gen_t in skip_targets:
|
||||
skip_targets.remove(gen_t)
|
||||
continue
|
||||
+ else:
|
||||
+ if i >= ord('c') - ord('a'):
|
||||
+ self.target = gen_t
|
||||
+ return self.target
|
||||
|
||||
# Check except_targets for any options
|
||||
for t in except_targets:
|
||||
+ if self.device != self.DEVICE_CDROM:
|
||||
+ if i != ord('c') - ord('a'):
|
||||
+ self.target = gen_t
|
||||
+ return gen_t
|
||||
+ else:
|
||||
+ if i >= ord('c') - ord('a'):
|
||||
+ self.target = gen_t
|
||||
+ return gen_t
|
||||
if not skip_targets:
|
||||
return gen_t
|
||||
elif not first_found:
|
||||
|
@ -1,36 +0,0 @@
|
||||
Index: virt-manager-0.10.0/virtinst/CloneManager.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtinst/CloneManager.py
|
||||
+++ virt-manager-0.10.0/virtinst/CloneManager.py
|
||||
@@ -530,6 +530,7 @@ class CloneDesign(object):
|
||||
xmldisk.type = clone_disk.type
|
||||
xmldisk.path = clone_disk.path
|
||||
xmldisk.driver_type = orig_disk.driver_type
|
||||
+ xmldisk.driver_name = orig_disk.driver_name
|
||||
|
||||
# Save altered clone xml
|
||||
self._clone_xml = self._guest.get_xml_config()
|
||||
Index: virt-manager-0.10.0/virtinst/VirtualDisk.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtinst/VirtualDisk.py
|
||||
+++ virt-manager-0.10.0/virtinst/VirtualDisk.py
|
||||
@@ -1203,6 +1203,10 @@ class VirtualDisk(VirtualDevice):
|
||||
if util.is_vdisk(self.path):
|
||||
drvname = self.DRIVER_TAP
|
||||
drvtype = self.DRIVER_TAP_VDISK
|
||||
+ elif drvname is None and drvtype:
|
||||
+ drvtypes = ['qcow2', 'vmdk']
|
||||
+ if drvtype in drvtypes:
|
||||
+ drvname = 'tap'
|
||||
|
||||
return drvname or None, drvtype or None
|
||||
|
||||
@@ -1543,6 +1547,8 @@ class VirtualDisk(VirtualDevice):
|
||||
if drvxml and self.driver_name is None:
|
||||
if self.is_qemu():
|
||||
self.driver_name = "qemu"
|
||||
+ else:
|
||||
+ self.driver_name = self.get_driver_name()
|
||||
|
||||
if not self.driver_name is None:
|
||||
drvxml = (" name='%s'" % self.driver_name) + drvxml
|
@ -1,28 +1,12 @@
|
||||
Index: virt-manager-0.10.0/virtinst/OSDistro.py
|
||||
Index: virt-manager-1.0.0/virtinst/urlfetcher.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtinst/OSDistro.py
|
||||
+++ virt-manager-0.10.0/virtinst/OSDistro.py
|
||||
@@ -70,8 +70,14 @@ def _storeForDistro(fetcher, baseuri, ty
|
||||
arch, typ, scratchdir)
|
||||
if dist:
|
||||
return dist
|
||||
+
|
||||
skip_treeinfo = True
|
||||
|
||||
+ dist = virtinst.OSDistro.distroFromContent(fetcher, progresscb, baseuri,
|
||||
+ arch, typ, scratchdir)
|
||||
+ if dist:
|
||||
+ return dist
|
||||
+
|
||||
# FIXME: This 'distro ==' doesn't cut it. 'distro' is from our os
|
||||
# dictionary, so would look like 'fedora9' or 'rhel5', so this needs
|
||||
# to be a bit more intelligent
|
||||
@@ -236,6 +242,57 @@ def distroFromTreeinfo(fetcher, progress
|
||||
--- virt-manager-1.0.0.orig/virtinst/urlfetcher.py
|
||||
+++ virt-manager-1.0.0/virtinst/urlfetcher.py
|
||||
@@ -287,6 +287,60 @@ def _distroFromTreeinfo(fetcher, arch, v
|
||||
|
||||
return ob
|
||||
|
||||
+def distroFromContent(fetcher, progresscb, uri, arch, vmtype=None,
|
||||
+ scratchdir=None):
|
||||
+def _distroFromContent(fetcher, arch, vmtype=None):
|
||||
+ # Parse content file for the 'LABEL' field containing the distribution name
|
||||
+ # None if no content, GenericDistro if unknown label type.
|
||||
+ if not fetcher.hasFile("content"):
|
||||
@ -30,7 +14,7 @@ Index: virt-manager-0.10.0/virtinst/OSDistro.py
|
||||
+
|
||||
+ distribution = None
|
||||
+ distro_version = None
|
||||
+ filename = fetcher.acquireFile("content", progresscb)
|
||||
+ filename = fetcher.acquireFile("content")
|
||||
+ cbuf = f = None
|
||||
+ try:
|
||||
+ f = open(filename, "r")
|
||||
@ -53,37 +37,58 @@ Index: virt-manager-0.10.0/virtinst/OSDistro.py
|
||||
+ distro_version = line.split(' ', 1)
|
||||
+ if distribution:
|
||||
+ break
|
||||
+
|
||||
+ if re.match(".*SUSE Linux Enterprise Server*", distribution[1]) or \
|
||||
+ re.match(".*SUSE SLES*", distribution[1]):
|
||||
+ dclass = SLESDistro
|
||||
+ if distro_version is None:
|
||||
+ distro_version = ['VERSION', distribution[1].strip().rsplit(' ')[4]]
|
||||
+ elif re.match(".*SUSE Linux Enterprise Desktop*", distribution[1]):
|
||||
+ dclass = SLEDDistro
|
||||
+ if distro_version is None:
|
||||
+ distro_version = ['VERSION', distribution[1].strip().rsplit(' ')[4]]
|
||||
+ elif re.match(".*openSUSE.*", distribution[1]):
|
||||
+ dclass = OpensuseDistro
|
||||
+ else:
|
||||
+ dclass = GenericDistro
|
||||
+
|
||||
+ ob = dclass(uri, arch, vmtype, scratchdir)
|
||||
+ ob = dclass(fetcher, arch, vmtype)
|
||||
+ if dclass != GenericDistro:
|
||||
+ ob.content = distro_version
|
||||
+
|
||||
+ # Explictly call this, so we populate os_type/variant info
|
||||
+ ob.isValidStore(fetcher, progresscb)
|
||||
+ ob.isValidStore()
|
||||
+
|
||||
+ return ob
|
||||
+
|
||||
|
||||
# An image store is a base class for retrieving either a bootable
|
||||
# ISO image, or a kernel+initrd pair for a particular OS distribution
|
||||
@@ -689,6 +746,7 @@ class SuseDistro(Distro):
|
||||
def getDistroStore(guest, fetcher):
|
||||
stores = []
|
||||
@@ -303,6 +357,10 @@ def getDistroStore(guest, fetcher):
|
||||
if dist:
|
||||
return dist
|
||||
|
||||
+ dist = _distroFromContent(fetcher, arch, _type)
|
||||
+ if dist:
|
||||
+ return dist
|
||||
+
|
||||
# FIXME: This 'distro ==' doesn't cut it. 'distro' is from our os
|
||||
# dictionary, so would look like 'fedora9' or 'rhel5', so this needs
|
||||
# to be a bit more intelligent
|
||||
@@ -799,12 +857,11 @@ class SLDistro(RHELDistro):
|
||||
|
||||
class SuseDistro(Distro):
|
||||
name = "SUSE"
|
||||
- urldistro = "suse"
|
||||
- os_variant = "linux"
|
||||
|
||||
_boot_iso_paths = ["boot/boot.iso"]
|
||||
|
||||
def __init__(self, uri, arch, vmtype=None, scratchdir=None):
|
||||
def __init__(self, *args, **kwargs):
|
||||
+ self.content = None
|
||||
Distro.__init__(self, uri, arch, vmtype, scratchdir)
|
||||
if re.match(r'i[4-9]86', arch):
|
||||
Distro.__init__(self, *args, **kwargs)
|
||||
if re.match(r'i[4-9]86', self.arch):
|
||||
self.arch = 'i386'
|
||||
@@ -699,18 +757,32 @@ class SuseDistro(Distro):
|
||||
@@ -815,18 +872,32 @@ class SuseDistro(Distro):
|
||||
oldkern += "64"
|
||||
oldinit += "64"
|
||||
|
||||
@ -114,7 +119,7 @@ Index: virt-manager-0.10.0/virtinst/OSDistro.py
|
||||
+ self._xen_kernel_paths = [ ("boot/%s/vmlinuz-xen" % self.arch,
|
||||
+ "boot/%s/initrd-xen" % self.arch) ]
|
||||
|
||||
def isValidStore(self, fetcher, progresscb):
|
||||
def isValidStore(self):
|
||||
+ # self.content is the VERSION line from the contents file
|
||||
+ distro_version = self.content[1]
|
||||
+ version = distro_version.split('.', 1)[0].strip()
|
||||
@ -123,26 +128,34 @@ Index: virt-manager-0.10.0/virtinst/OSDistro.py
|
||||
+ else:
|
||||
+ self.os_variant += "9"
|
||||
+
|
||||
# Suse distros always have a 'directory.yast' file in the top
|
||||
# level of install tree, which we use as the magic check
|
||||
if fetcher.hasFile("directory.yast"):
|
||||
@@ -915,6 +987,19 @@ class SuseDistro(Distro):
|
||||
# pass
|
||||
os.system("rm -rf " + cpiodir)
|
||||
if not self.fetcher.hasFile("directory.yast"):
|
||||
return False
|
||||
|
||||
@@ -851,6 +922,27 @@ class SuseDistro(Distro):
|
||||
return name
|
||||
return self.os_variant
|
||||
|
||||
+class SLESDistro(SuseDistro):
|
||||
+
|
||||
+ urldistro = "sles"
|
||||
+ os_variant = "sles"
|
||||
+
|
||||
+class SLEDDistro(SuseDistro):
|
||||
+
|
||||
+ urldistro = "sled"
|
||||
+ os_variant = "sled"
|
||||
+
|
||||
+# Suse image store is harder - we fetch the kernel RPM and a helper
|
||||
+# RPM and then munge bits together to generate a initrd
|
||||
+class OpensuseDistro(SuseDistro):
|
||||
+
|
||||
+ urldistro = "opensuse"
|
||||
+ os_variant = "opensuse"
|
||||
+
|
||||
+class OESDistro(SuseDistro):
|
||||
+
|
||||
+ urldistro = "oes"
|
||||
+ os_variant = "oes"
|
||||
|
||||
class DebianDistro(Distro):
|
||||
# ex. http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/
|
||||
|
@ -1,15 +0,0 @@
|
||||
Index: virt-manager-0.10.0/virtinst/CapabilitiesParser.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtinst/CapabilitiesParser.py
|
||||
+++ virt-manager-0.10.0/virtinst/CapabilitiesParser.py
|
||||
@@ -130,7 +130,9 @@ class CPUValues(object):
|
||||
child = child.next
|
||||
|
||||
def get_arch(self, arch):
|
||||
- if re.match(r'i[4-9]86', arch):
|
||||
+ if arch is None:
|
||||
+ arch = "x86"
|
||||
+ elif re.match(r'i[4-9]86', arch):
|
||||
arch = "x86"
|
||||
elif arch == "x86_64":
|
||||
arch = "x86"
|
@ -1,8 +1,8 @@
|
||||
Index: virt-manager-0.10.0/virtinst/VirtualDisk.py
|
||||
Index: virt-manager-0.10.1/virtinst/devicedisk.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtinst/VirtualDisk.py
|
||||
+++ virt-manager-0.10.0/virtinst/VirtualDisk.py
|
||||
@@ -306,10 +306,11 @@ class VirtualDisk(VirtualDevice):
|
||||
--- virt-manager-0.10.1.orig/virtinst/devicedisk.py
|
||||
+++ virt-manager-0.10.1/virtinst/devicedisk.py
|
||||
@@ -156,10 +156,11 @@ class VirtualDisk(VirtualDevice):
|
||||
|
||||
DRIVER_TAP_RAW = "aio"
|
||||
DRIVER_TAP_QCOW = "qcow"
|
||||
@ -15,81 +15,25 @@ Index: virt-manager-0.10.0/virtinst/VirtualDisk.py
|
||||
|
||||
CACHE_MODE_NONE = "none"
|
||||
CACHE_MODE_WRITETHROUGH = "writethrough"
|
||||
Index: virt-manager-0.10.0/virtinst/ImageParser.py
|
||||
Index: virt-manager-0.10.1/virtinst/virtimage.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtinst/ImageParser.py
|
||||
+++ virt-manager-0.10.0/virtinst/ImageParser.py
|
||||
@@ -208,6 +208,7 @@ class Disk:
|
||||
FORMAT_ISO = "iso"
|
||||
FORMAT_QCOW = "qcow"
|
||||
--- virt-manager-0.10.1.orig/virtinst/virtimage.py
|
||||
+++ virt-manager-0.10.1/virtinst/virtimage.py
|
||||
@@ -209,6 +209,7 @@ class Disk(object):
|
||||
FORMAT_QCOW2 = "qcow2"
|
||||
+ FORMAT_QED = "qed"
|
||||
FORMAT_VMDK = "vmdk"
|
||||
FORMAT_VDI = "vdi"
|
||||
+ FORMAT_QED = "qed"
|
||||
|
||||
@@ -239,6 +240,7 @@ class Disk:
|
||||
formats = [Disk.FORMAT_RAW,
|
||||
Disk.FORMAT_QCOW,
|
||||
USE_SYSTEM = "system"
|
||||
USE_USER = "user"
|
||||
@@ -240,7 +241,8 @@ class Disk(object):
|
||||
Disk.FORMAT_QCOW2,
|
||||
+ Disk.FORMAT_QED,
|
||||
Disk.FORMAT_VMDK,
|
||||
Disk.FORMAT_ISO,
|
||||
Disk.FORMAT_VDI]
|
||||
Index: virt-manager-0.10.0/virtconv/diskcfg.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtconv/diskcfg.py
|
||||
+++ virt-manager-0.10.0/virtconv/diskcfg.py
|
||||
@@ -36,6 +36,7 @@ DISK_FORMAT_QCOW = 4
|
||||
DISK_FORMAT_QCOW2 = 5
|
||||
DISK_FORMAT_COW = 6
|
||||
DISK_FORMAT_VDI = 7
|
||||
+DISK_FORMAT_QED = 8
|
||||
|
||||
DISK_TYPE_DISK = 0
|
||||
DISK_TYPE_CDROM = 1
|
||||
@@ -52,6 +53,7 @@ disk_suffixes = {
|
||||
DISK_FORMAT_QCOW2: ".qcow2",
|
||||
DISK_FORMAT_COW: ".cow",
|
||||
DISK_FORMAT_VDI: ".vdi",
|
||||
+ DISK_FORMAT_QED: ".qed",
|
||||
}
|
||||
|
||||
qemu_formats = {
|
||||
@@ -62,6 +64,7 @@ qemu_formats = {
|
||||
DISK_FORMAT_QCOW2: "qcow2",
|
||||
DISK_FORMAT_COW: "cow",
|
||||
DISK_FORMAT_VDI: "vdi",
|
||||
+ DISK_FORMAT_QED: "qed",
|
||||
}
|
||||
|
||||
disk_format_names = {
|
||||
@@ -73,6 +76,7 @@ disk_format_names = {
|
||||
"qcow2": DISK_FORMAT_QCOW2,
|
||||
"cow": DISK_FORMAT_COW,
|
||||
"vdi": DISK_FORMAT_VDI,
|
||||
+ "qed": DISK_FORMAT_QED,
|
||||
}
|
||||
|
||||
checksum_types = {
|
||||
@@ -268,7 +272,8 @@ class disk(object):
|
||||
out_format == DISK_FORMAT_VMDK or
|
||||
out_format == DISK_FORMAT_QCOW or
|
||||
out_format == DISK_FORMAT_QCOW2 or
|
||||
- out_format == DISK_FORMAT_COW):
|
||||
+ out_format == DISK_FORMAT_COW or
|
||||
+ out_format == DISK_FORMAT_QED):
|
||||
raise NotImplementedError(_("Cannot convert to disk format %s") %
|
||||
output_format)
|
||||
|
||||
Index: virt-manager-0.10.0/virtconv/parsers/virtimage.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtconv/parsers/virtimage.py
|
||||
+++ virt-manager-0.10.0/virtconv/parsers/virtimage.py
|
||||
@@ -250,6 +250,7 @@ class virtimage_parser(formats.parser):
|
||||
ImageParser.Disk.FORMAT_QCOW: diskcfg.DISK_FORMAT_QCOW,
|
||||
ImageParser.Disk.FORMAT_QCOW2: diskcfg.DISK_FORMAT_QCOW2,
|
||||
ImageParser.Disk.FORMAT_VDI: diskcfg.DISK_FORMAT_VDI,
|
||||
+ ImageParser.Disk.FORMAT_QED: diskcfg.DISK_FORMAT_QED,
|
||||
}
|
||||
|
||||
fmt = None
|
||||
- Disk.FORMAT_VDI]
|
||||
+ Disk.FORMAT_VDI,
|
||||
+ Disk.FORMAT_QED]
|
||||
validate(formats.count(self.format) > 0,
|
||||
_("The format for disk %s must be one of %s") %
|
||||
(self.file, ",".join(formats)))
|
||||
|
@ -1,13 +1,13 @@
|
||||
Index: virt-manager-0.10.0/virtinst/Storage.py
|
||||
Index: virt-manager-1.0.0/virtinst/storage.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtinst/Storage.py
|
||||
+++ virt-manager-0.10.0/virtinst/Storage.py
|
||||
@@ -539,7 +539,7 @@ class FilesystemPool(StoragePool):
|
||||
get_volume_class = staticmethod(get_volume_class)
|
||||
|
||||
formats = ["auto", "ext2", "ext3", "ext4", "ufs", "iso9660", "udf",
|
||||
- "gfs", "gfs2", "vfat", "hfs+", "xfs"]
|
||||
+ "gfs", "gfs2", "vfat", "hfs+", "xfs", "ocfs2"]
|
||||
|
||||
# Register applicable property methods from parent class
|
||||
perms = property(StorageObject.get_perms, StorageObject.set_perms)
|
||||
--- virt-manager-1.0.0.orig/virtinst/storage.py
|
||||
+++ virt-manager-1.0.0/virtinst/storage.py
|
||||
@@ -403,7 +403,7 @@ class StoragePool(_StorageObject):
|
||||
def list_formats(self):
|
||||
if self.type == self.TYPE_FS:
|
||||
return ["auto", "ext2", "ext3", "ext4", "ufs", "iso9660", "udf",
|
||||
- "gfs", "gfs2", "vfat", "hfs+", "xfs"]
|
||||
+ "gfs", "gfs2", "vfat", "hfs+", "xfs", "ocfs2"]
|
||||
if self.type == self.TYPE_NETFS:
|
||||
return ["auto", "nfs", "glusterfs"]
|
||||
if self.type == self.TYPE_DISK:
|
||||
|
@ -1,182 +1,53 @@
|
||||
Index: virt-manager-0.10.0/virtinst/osdict.py
|
||||
Index: virt-manager-0.10.1/virtinst/osdict.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtinst/osdict.py
|
||||
+++ virt-manager-0.10.0/virtinst/osdict.py
|
||||
@@ -408,33 +408,113 @@ OS_TYPES = {
|
||||
},
|
||||
--- virt-manager-0.10.1.orig/virtinst/osdict.py
|
||||
+++ virt-manager-0.10.1/virtinst/osdict.py
|
||||
@@ -259,11 +259,23 @@ _add_var("fedora18", "Fedora 18", suppor
|
||||
_add_var("fedora19", "Fedora 19", virtiommio=True, parent="fedora18")
|
||||
_add_var("fedora20", "Fedora 20 (or later)", parent="fedora19")
|
||||
|
||||
"opensuse11": {
|
||||
- "label": "openSuse 11",
|
||||
+ "label": "openSUSE 11",
|
||||
"distro": "suse",
|
||||
"supported": True,
|
||||
+ "pv_cdrom_install": True,
|
||||
"devices" : {
|
||||
DISK : VIRTIO_DISK,
|
||||
NET : VIRTIO_NET,
|
||||
},
|
||||
},
|
||||
"opensuse12": {
|
||||
- "label": "openSuse 12",
|
||||
+ "label": "openSUSE 12",
|
||||
+ "distro": "suse",
|
||||
+ "supported": True,
|
||||
+ "pv_cdrom_install": True,
|
||||
+ "devices" : {
|
||||
+ DISK : VIRTIO_DISK,
|
||||
+ NET : VIRTIO_NET,
|
||||
+ },
|
||||
+ },
|
||||
+ "opensuse13": {
|
||||
+ "label": "openSUSE 13",
|
||||
"distro": "suse",
|
||||
"supported": True,
|
||||
+ "pv_cdrom_install": True,
|
||||
"devices" : {
|
||||
DISK : VIRTIO_DISK,
|
||||
NET : VIRTIO_NET,
|
||||
},
|
||||
},
|
||||
|
||||
+ "oes2l": {
|
||||
+ "label": "Novell Open Enterprise Server 2",
|
||||
+ "distro": "suse",
|
||||
+ "supported": True,
|
||||
+ "pv_cdrom_install": True,
|
||||
+ },
|
||||
+ "oes11": {
|
||||
+ "label": "Novell Open Enterprise Server 11",
|
||||
+ "distro": "suse",
|
||||
+ "supported": True,
|
||||
+ "pv_cdrom_install": True,
|
||||
+ "devices" : {
|
||||
+ DISK : VIRTIO_DISK,
|
||||
+ NET : VIRTIO_NET,
|
||||
+ },
|
||||
+ },
|
||||
-_add_var("opensuse11", "openSuse 11", urldistro="suse", supported=True, virtiodisk=True, virtionet=True, parent="linux")
|
||||
-_add_var("opensuse12", "openSuse 12 (or later)", parent="opensuse11")
|
||||
+_add_var("opensuse11", "openSUSE 11", urldistro="opensuse", supported=True, virtiodisk=True, virtionet=True, parent="linux")
|
||||
+_add_var("opensuse12", "openSUSE 12", parent="opensuse11")
|
||||
+_add_var("opensuse13", "openSUSE 13 (or later)", parent="opensuse12")
|
||||
+
|
||||
+ "sles9": {
|
||||
+ "label": "Suse Linux Enterprise Server 9",
|
||||
+ "distro": "suse",
|
||||
+ "supported": True,
|
||||
+ "pv_cdrom_install": False,
|
||||
+ },
|
||||
"sles10": {
|
||||
- "label": "Suse Linux Enterprise Server",
|
||||
+ "label": "Suse Linux Enterprise Server 10",
|
||||
"distro": "suse",
|
||||
"supported": True,
|
||||
+ "pv_cdrom_install": True,
|
||||
+ "devices" : {
|
||||
+ DISK : VIRTIO_DISK,
|
||||
+ },
|
||||
},
|
||||
"sles11": {
|
||||
"label": "Suse Linux Enterprise Server 11",
|
||||
"distro": "suse",
|
||||
"supported": True,
|
||||
+ "pv_cdrom_install": True,
|
||||
+ "devices" : {
|
||||
+ DISK : VIRTIO_DISK,
|
||||
+ NET : VIRTIO_NET,
|
||||
+ },
|
||||
+ },
|
||||
+ "sles12": {
|
||||
+ "label": "Suse Linux Enterprise Server 12",
|
||||
+ "distro": "suse",
|
||||
+ "supported": True,
|
||||
+ "pv_cdrom_install": True,
|
||||
+ "devices" : {
|
||||
+ DISK : VIRTIO_DISK,
|
||||
+ NET : VIRTIO_NET,
|
||||
+ },
|
||||
+ },
|
||||
+_add_var("sles", "Suse Linux Enterprise Server", urldistro="suse", supported=True, parent="linux")
|
||||
+_add_var("sles10", "Suse Linux Enterprise Server 10", supported=True, virtiodisk=True, virtionet=True, parent="sles")
|
||||
+_add_var("sles11", "Suse Linux Enterprise Server 11", supported=True, virtiodisk=True, virtionet=True, parent="sles10")
|
||||
+_add_var("sles12", "Suse Linux Enterprise Server 12 (or later)", supported=True, virtiodisk=True, virtionet=True, parent="sles11")
|
||||
+
|
||||
+ "sled10": {
|
||||
+ "label": "Suse Linux Enterprise Desktop 10",
|
||||
+ "distro": "suse",
|
||||
+ "supported": True,
|
||||
+ "pv_cdrom_install": True,
|
||||
+ "devices" : {
|
||||
+ DISK : VIRTIO_DISK,
|
||||
+ },
|
||||
+ },
|
||||
+ "sled11": {
|
||||
+ "label": "Suse Linux Enterprise Desktop 11",
|
||||
+ "distro": "suse",
|
||||
+ "supported": True,
|
||||
+ "pv_cdrom_install": True,
|
||||
+ "devices" : {
|
||||
+ DISK : VIRTIO_DISK,
|
||||
+ NET : VIRTIO_NET,
|
||||
+ },
|
||||
+ },
|
||||
+ "sled12": {
|
||||
+ "label": "Suse Linux Enterprise Desktop 12",
|
||||
+ "distro": "suse",
|
||||
+ "supported": True,
|
||||
+ "pv_cdrom_install": True,
|
||||
"devices" : {
|
||||
DISK : VIRTIO_DISK,
|
||||
NET : VIRTIO_NET,
|
||||
@@ -619,6 +699,12 @@ OS_TYPES = {
|
||||
VIDEO : VMVGA_VIDEO,
|
||||
},
|
||||
},
|
||||
+ "win8": {
|
||||
+ "label": "Microsoft Windows 8",
|
||||
+ "supported": True,
|
||||
+ "sortby": "mswin8",
|
||||
+ "distro": "win",
|
||||
+ },
|
||||
+_add_var("sled10", "Suse Linux Enterprise Desktop 10", supported=True, virtiodisk=True, virtionet=True, parent="sles10")
|
||||
+_add_var("sled11", "Suse Linux Enterprise Desktop 11", supported=True, virtiodisk=True, virtionet=True, parent="sles11")
|
||||
+_add_var("sled12", "Suse Linux Enterprise Desktop 12 (or later)", supported=True, virtiodisk=True, virtionet=True, parent="sles12")
|
||||
|
||||
"generic24": {
|
||||
"label": "Generic 2.4.x kernel"
|
||||
@@ -682,6 +768,12 @@ OS_TYPES = {
|
||||
"sortby": "mswinserv2008",
|
||||
"distro": "winserv",
|
||||
},
|
||||
+ "win2k12": {
|
||||
+ "label": "Microsoft Windows Server 2012",
|
||||
+ "supported": True,
|
||||
+ "sortby": "mswinserv2012",
|
||||
+ "distro": "winserv",
|
||||
+ },
|
||||
"vista": {
|
||||
"label": "Microsoft Windows Vista",
|
||||
"supported": True,
|
||||
@@ -694,6 +786,12 @@ OS_TYPES = {
|
||||
"sortby": "mswin7",
|
||||
"distro": "win",
|
||||
},
|
||||
+ "win8": {
|
||||
+ "label": "Microsoft Windows 8",
|
||||
+ "supported": True,
|
||||
+ "sortby": "mswin8",
|
||||
+ "distro": "win",
|
||||
+ },
|
||||
|
||||
},
|
||||
},
|
||||
@@ -770,6 +868,13 @@ OS_TYPES = {
|
||||
"apic": False,
|
||||
},
|
||||
|
||||
+ "rear": {
|
||||
+ "label": "Relax and Recover",
|
||||
+ "distro": "suse",
|
||||
+ "supported": True,
|
||||
+ "pv_cdrom_install": True,
|
||||
+ },
|
||||
-_add_var("sles10", "Suse Linux Enterprise Server", urldistro="suse", supported=True, parent="linux")
|
||||
-_add_var("sles11", "Suse Linux Enterprise Server 11 (or later)", supported=True, virtiodisk=True, virtionet=True, parent="sles10")
|
||||
+_add_var("oes2l", "Novell Open Enterprise Server 2", supported=True, virtiodisk=True, virtionet=True, parent="sles10")
|
||||
+_add_var("oes11", "Novell Open Enterprise Server 11 (or later)", supported=True, virtiodisk=True, virtionet=True, parent="sles11")
|
||||
+
|
||||
"netware4": {
|
||||
"label": "Novell Netware 4",
|
||||
},
|
||||
@@ -778,6 +883,7 @@ OS_TYPES = {
|
||||
},
|
||||
"netware6": {
|
||||
"label": "Novell Netware 6",
|
||||
+ "supported": True,
|
||||
"pv_cdrom_install": True,
|
||||
},
|
||||
+_add_var("rear", "Relax and Recover", supported=True, virtiodisk=True, virtionet=True, parent="sles11")
|
||||
|
||||
_add_var("mandriva2009", "Mandriva Linux 2009 and earlier", urldistro="mandriva", parent="linux")
|
||||
_add_var("mandriva2010", "Mandriva Linux 2010 (or later)", virtiodisk=True, virtionet=True, parent="mandriva2009")
|
||||
@@ -304,9 +316,11 @@ _add_var("win2k", "Microsoft Windows 200
|
||||
_add_var("winxp", "Microsoft Windows XP", sortby="mswin5", supported=True, xen_disable_acpi=True, parent="windows")
|
||||
_add_var("winxp64", "Microsoft Windows XP (x86_64)", supported=True, sortby="mswin564", parent="windows")
|
||||
_add_var("win2k3", "Microsoft Windows Server 2003", supported=True, sortby="mswinserv2003", parent="windows")
|
||||
-_add_var("win2k8", "Microsoft Windows Server 2008 (or later)", supported=True, sortby="mswinserv2008", parent="windows")
|
||||
+_add_var("win2k8", "Microsoft Windows Server 2008", supported=True, sortby="mswinserv2008", parent="windows")
|
||||
+_add_var("win2k12", "Microsoft Windows Server 2012 (or later)", supported=True, sortby="mswinserv2012", parent="windows")
|
||||
_add_var("vista", "Microsoft Windows Vista", supported=True, sortby="mswin6", parent="windows")
|
||||
-_add_var("win7", "Microsoft Windows 7 (or later)", supported=True, sortby="mswin7", parent="windows")
|
||||
+_add_var("win7", "Microsoft Windows 7", supported=True, sortby="mswin7", parent="windows")
|
||||
+_add_var("win8", "Microsoft Windows 8 (or later)", supported=True, sortby="mswin8", parent="windows")
|
||||
|
||||
|
||||
_add_type("solaris", "Solaris", clock="localtime")
|
||||
@@ -333,5 +347,5 @@ _add_type("other", "Other")
|
||||
_add_var("msdos", "MS-DOS", acpi=False, apic=False, parent="other")
|
||||
_add_var("netware4", "Novell Netware 4", parent="other")
|
||||
_add_var("netware5", "Novell Netware 5", parent="other")
|
||||
-_add_var("netware6", "Novell Netware 6 (or later)", parent="other")
|
||||
+_add_var("netware6", "Novell Netware 6 (or later)", supported=True, parent="other")
|
||||
_add_var("generic", "Generic", supported=True, parent="other")
|
||||
|
@ -1,18 +1,28 @@
|
||||
Reference: bnc#813082
|
||||
|
||||
Index: virt-manager-0.10.0/virtinst/VirtualDisk.py
|
||||
Index: virt-manager-0.10.1/virtinst/devicedisk.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtinst/VirtualDisk.py
|
||||
+++ virt-manager-0.10.0/virtinst/VirtualDisk.py
|
||||
@@ -1177,6 +1177,11 @@ class VirtualDisk(VirtualDevice):
|
||||
if drvname == self.DRIVER_QEMU:
|
||||
drvtype = _qemu_sanitize_drvtype(self.type, self.format,
|
||||
manual_format=True)
|
||||
--- virt-manager-0.10.1.orig/virtinst/devicedisk.py
|
||||
+++ virt-manager-0.10.1/virtinst/devicedisk.py
|
||||
@@ -555,6 +555,12 @@ class VirtualDisk(VirtualDevice):
|
||||
return None
|
||||
if self.conn.is_qemu():
|
||||
return self.DRIVER_QEMU
|
||||
+ else:
|
||||
+ drvtypes = ['qcow2', 'vmdk']
|
||||
+ if self.type in drvtypes:
|
||||
+ return 'tap'
|
||||
+ else:
|
||||
+ drvtype = self.format
|
||||
+ drvtypes = ['qcow2', 'vmdk']
|
||||
+ if drvtype in drvtypes and drvname is None:
|
||||
+ drvname = 'tap'
|
||||
+ return self.DRIVER_QEMU
|
||||
return None
|
||||
|
||||
elif self.vol_object:
|
||||
fmt = util.get_xml_path(self.vol_object.XMLDesc(0),
|
||||
def _get_default_driver_type(self):
|
||||
@@ -568,6 +574,8 @@ class VirtualDisk(VirtualDevice):
|
||||
http://lists.gnu.org/archive/html/qemu-devel/2008-04/msg00675.html
|
||||
"""
|
||||
if self.driver_name != self.DRIVER_QEMU:
|
||||
+ if self.type != 'file':
|
||||
+ return self.type
|
||||
return None
|
||||
|
||||
if self._storage_creator:
|
||||
|
@ -1,24 +1,37 @@
|
||||
Index: virt-manager-0.10.0/virtManager/create.py
|
||||
Index: virt-manager-1.0.0/virtManager/create.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/create.py
|
||||
+++ virt-manager-0.10.0/virtManager/create.py
|
||||
@@ -666,11 +666,18 @@ class vmmCreate(vmmGObjectUI):
|
||||
default = len(model)
|
||||
--- virt-manager-1.0.0.orig/virtManager/create.py
|
||||
+++ virt-manager-1.0.0/virtManager/create.py
|
||||
@@ -419,8 +419,8 @@ class vmmCreate(vmmGObjectUI):
|
||||
|
||||
if gtype == "xen":
|
||||
+ pv_cdrom = False
|
||||
+ if self.guest and self.guest._lookup_osdict_key('pv_cdrom_install'):
|
||||
+ pv_cdrom = True
|
||||
method_tree.set_sensitive((is_local or can_remote_url) and
|
||||
installable_arch)
|
||||
- method_local.set_sensitive(not is_pv and can_storage and
|
||||
- installable_arch)
|
||||
+ # Allow PV ISO/CDROM install for SLES
|
||||
+ method_local.set_sensitive(can_storage and installable_arch)
|
||||
method_pxe.set_sensitive(not is_pv and installable_arch)
|
||||
method_import.set_sensitive(can_storage)
|
||||
virt_methods = [method_local, method_tree, method_pxe, method_import]
|
||||
@@ -637,6 +637,21 @@ class vmmCreate(vmmGObjectUI):
|
||||
self.capsdomain.hypervisor_type == domtype):
|
||||
default = len(model)
|
||||
|
||||
+ if gtype == "xen":
|
||||
+ pv_cdrom = False
|
||||
+ if self.guest and self.guest._lookup_osdict_key('pv_cdrom_install', False):
|
||||
+ pv_cdrom = True
|
||||
+
|
||||
if (instmethod == INSTALL_PAGE_PXE or
|
||||
- instmethod == INSTALL_PAGE_ISO):
|
||||
+ instmethod == INSTALL_PAGE_ISO and
|
||||
+ pv_cdrom == False):
|
||||
sensitive = False
|
||||
tooltip = _("Only URL or import installs are supported "
|
||||
"for paravirt.")
|
||||
+ else:
|
||||
+ default = 0
|
||||
|
||||
model.append([label, gtype, domtype, sensitive])
|
||||
+ instmethod = self.get_config_install_page()
|
||||
+ if (instmethod == INSTALL_PAGE_PXE or
|
||||
+ instmethod == INSTALL_PAGE_ISO and
|
||||
+ pv_cdrom == False):
|
||||
+ sensitive = False
|
||||
+ tooltip = _("Only URL or import installs are supported "
|
||||
+ "for paravirt.")
|
||||
+ else:
|
||||
+ default = 0
|
||||
+
|
||||
model.append([label, gtype])
|
||||
|
||||
show = bool(guests)
|
||||
|
@ -1,8 +1,8 @@
|
||||
Index: virt-manager-0.10.0/virtManager/details.py
|
||||
Index: virt-manager-0.10.1/virtManager/details.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/details.py
|
||||
+++ virt-manager-0.10.0/virtManager/details.py
|
||||
@@ -2215,12 +2215,10 @@ class vmmDetails(vmmGObjectUI):
|
||||
--- virt-manager-0.10.1.orig/virtManager/details.py
|
||||
+++ virt-manager-0.10.1/virtManager/details.py
|
||||
@@ -2009,12 +2009,10 @@ class vmmDetails(vmmGObjectUI):
|
||||
|
||||
return self._change_config_helper(df, da, hf, ha)
|
||||
|
||||
@ -11,15 +11,15 @@ Index: virt-manager-0.10.0/virtManager/details.py
|
||||
- df, da, add_define, hf, ha, add_hotplug = self.make_apply_data()
|
||||
- ignore = add_hotplug
|
||||
-
|
||||
- if self.editted(EDIT_AUTOSTART):
|
||||
- if self.edited(EDIT_AUTOSTART):
|
||||
+ # Autostart - See bnc#624250 - L3: virt-manager doesn't update
|
||||
+ # "Autostart" setting in vm configuration correctly
|
||||
+ def update_on_xend_start(self):
|
||||
+ if self.editted(EDIT_AUTOSTART) or self.vm.conn.is_xen():
|
||||
+ if self.edited(EDIT_AUTOSTART) or self.vm.conn.is_xen():
|
||||
auto = self.widget("config-autostart")
|
||||
try:
|
||||
self.vm.set_autostart(auto.get_active())
|
||||
@@ -2229,6 +2227,11 @@ class vmmDetails(vmmGObjectUI):
|
||||
@@ -2023,6 +2021,11 @@ class vmmDetails(vmmGObjectUI):
|
||||
(_("Error changing autostart value: %s") % str(e)))
|
||||
return False
|
||||
|
||||
@ -28,10 +28,10 @@ Index: virt-manager-0.10.0/virtManager/details.py
|
||||
+ df, da, add_define, hf, ha, add_hotplug = self.make_apply_data()
|
||||
+ ignore = add_hotplug
|
||||
+
|
||||
if self.editted(EDIT_BOOTORDER):
|
||||
bootdevs = self.get_config_boot_devs()
|
||||
add_define(self.vm.set_boot_device, bootdevs)
|
||||
@@ -2597,6 +2600,8 @@ class vmmDetails(vmmGObjectUI):
|
||||
if self.edited(EDIT_BOOTORDER):
|
||||
bootdevs = self.get_config_boot_order()
|
||||
add_define(self.vm.set_boot_order, bootdevs)
|
||||
@@ -2377,6 +2380,8 @@ class vmmDetails(vmmGObjectUI):
|
||||
buttons=Gtk.ButtonsType.OK,
|
||||
dialog_type=dtype)
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
Index: virt-manager-0.10.0/virtManager/create.py
|
||||
Index: virt-manager-1.0.0/virtManager/create.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/create.py
|
||||
+++ virt-manager-0.10.0/virtManager/create.py
|
||||
@@ -1237,12 +1237,35 @@ class vmmCreate(vmmGObjectUI):
|
||||
--- virt-manager-1.0.0.orig/virtManager/create.py
|
||||
+++ virt-manager-1.0.0/virtManager/create.py
|
||||
@@ -1228,11 +1228,34 @@ class vmmCreate(vmmGObjectUI):
|
||||
variant = self.widget("install-os-version")
|
||||
variant.set_active(0)
|
||||
|
||||
@ -28,17 +28,16 @@ Index: virt-manager-0.10.0/virtManager/create.py
|
||||
+ label.show()
|
||||
+
|
||||
def change_os_version(self, box):
|
||||
model = box.get_model()
|
||||
idx = box.get_active()
|
||||
if idx == -1:
|
||||
show_all = uiutil.get_list_selection(box, 3)
|
||||
if not show_all:
|
||||
return
|
||||
|
||||
+ self._update_kickstart_label()
|
||||
+
|
||||
# Get previous
|
||||
os_type_list = self.widget("install-os-type")
|
||||
os_type_model = os_type_list.get_model()
|
||||
@@ -1633,7 +1656,10 @@ class vmmCreate(vmmGObjectUI):
|
||||
type_row = self._selected_os_row()
|
||||
if not type_row:
|
||||
@@ -1586,7 +1609,10 @@ class vmmCreate(vmmGObjectUI):
|
||||
if extra:
|
||||
extraargs += extra
|
||||
if ks:
|
||||
@ -50,19 +49,19 @@ Index: virt-manager-0.10.0/virtManager/create.py
|
||||
|
||||
if extraargs:
|
||||
self.guest.installer.extraargs = extraargs
|
||||
@@ -2091,6 +2117,7 @@ class vmmCreate(vmmGObjectUI):
|
||||
dl = self.set_os_val(self.widget("install-os-type"), distro)
|
||||
vl = self.set_os_val(self.widget("install-os-version"), ver)
|
||||
@@ -1979,6 +2005,7 @@ class vmmCreate(vmmGObjectUI):
|
||||
dl = self.set_os_val(self.widget("install-os-type"), distro_type)
|
||||
vl = self.set_os_val(self.widget("install-os-version"), distro_var)
|
||||
self.set_distro_labels(dl, vl)
|
||||
+ self._update_kickstart_label()
|
||||
|
||||
def check_detection(self, idx, forward):
|
||||
results = None
|
||||
Index: virt-manager-0.10.0/ui/vmm-create.ui
|
||||
Index: virt-manager-1.0.0/ui/create.ui
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/ui/vmm-create.ui
|
||||
+++ virt-manager-0.10.0/ui/vmm-create.ui
|
||||
@@ -825,7 +825,7 @@
|
||||
--- virt-manager-1.0.0.orig/ui/create.ui
|
||||
+++ virt-manager-1.0.0/ui/create.ui
|
||||
@@ -869,7 +869,7 @@ bar</property>
|
||||
<property name="column_spacing">6</property>
|
||||
<property name="row_spacing">4</property>
|
||||
<child>
|
||||
|
@ -1,13 +1,13 @@
|
||||
Index: virt-manager-0.10.0/virtManager/addhardware.py
|
||||
Index: virt-manager-0.10.1/virtManager/addhardware.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/addhardware.py
|
||||
+++ virt-manager-0.10.0/virtManager/addhardware.py
|
||||
@@ -546,6 +546,8 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
add_dev("virtio-scsi", virtinst.VirtualDisk.DEVICE_LUN,
|
||||
_("Virtio SCSI lun"))
|
||||
if self.conn.is_xen() or self.conn.is_test_conn():
|
||||
+ add_dev("xen", virtinst.VirtualDisk.DEVICE_CDROM,
|
||||
+ _("Xen Virtual disk (read only)"))
|
||||
add_dev("xen", virtinst.VirtualDisk.DEVICE_DISK,
|
||||
_("Xen virtual disk"))
|
||||
--- virt-manager-0.10.1.orig/virtManager/addhardware.py
|
||||
+++ virt-manager-0.10.1/virtManager/addhardware.py
|
||||
@@ -778,7 +778,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
disk_buses = ["ide", "sata", "scsi", "sd",
|
||||
"usb", "virtio", "virtio-scsi", "xen"]
|
||||
floppy_buses = ["fdc"]
|
||||
- cdrom_buses = ["ide", "scsi"]
|
||||
+ cdrom_buses = ["ide", "scsi", "xen"]
|
||||
lun_buses = ["virtio-scsi"]
|
||||
|
||||
if bus in disk_buses:
|
||||
|
@ -1,17 +1,17 @@
|
||||
Index: virt-manager-0.10.0/virtManager/create.py
|
||||
Index: virt-manager-0.10.1/virtManager/create.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/create.py
|
||||
+++ virt-manager-0.10.0/virtManager/create.py
|
||||
@@ -20,6 +20,8 @@
|
||||
|
||||
import threading
|
||||
--- virt-manager-0.10.1.orig/virtManager/create.py
|
||||
+++ virt-manager-0.10.1/virtManager/create.py
|
||||
@@ -21,6 +21,8 @@
|
||||
import logging
|
||||
import threading
|
||||
import time
|
||||
+import sys
|
||||
+import os
|
||||
|
||||
# pylint: disable=E0611
|
||||
from gi.repository import GObject
|
||||
@@ -1143,6 +1145,51 @@ class vmmCreate(vmmGObjectUI):
|
||||
@@ -1130,6 +1132,51 @@ class vmmCreate(vmmGObjectUI):
|
||||
return
|
||||
self.start_detection(forward=forward)
|
||||
|
||||
@ -63,11 +63,12 @@ Index: virt-manager-0.10.0/virtManager/create.py
|
||||
def toggle_detect_os(self, src):
|
||||
dodetect = src.get_active()
|
||||
|
||||
@@ -1158,6 +1205,7 @@ class vmmCreate(vmmGObjectUI):
|
||||
self.widget("install-os-version-label").hide()
|
||||
self.widget("install-os-type").show()
|
||||
self.widget("install-os-version").show()
|
||||
@@ -1141,6 +1188,8 @@ class vmmCreate(vmmGObjectUI):
|
||||
if dodetect:
|
||||
self.mediaDetected = False
|
||||
self.detect_media_os()
|
||||
+ else:
|
||||
+ self.detect_host_os()
|
||||
|
||||
def _selected_os_row(self):
|
||||
box = self.widget("install-os-type")
|
||||
return uiutil.get_list_selection(self.widget("install-os-type"))
|
||||
|
17
virtman-default-to-xen-pv.patch
Normal file
17
virtman-default-to-xen-pv.patch
Normal file
@ -0,0 +1,17 @@
|
||||
Index: virt-manager-1.0.0/virtManager/create.py
|
||||
===================================================================
|
||||
--- virt-manager-1.0.0.orig/virtManager/create.py
|
||||
+++ virt-manager-1.0.0/virtManager/create.py
|
||||
@@ -855,7 +855,12 @@ class vmmCreate(vmmGObjectUI):
|
||||
# If none specified, prefer HVM. This way, the default install
|
||||
# options won't be limited because we default to PV. If hvm not
|
||||
# supported, differ to guest_lookup
|
||||
+ # If xen connection, favor PV installation
|
||||
+ conn_is_xen = self.conn.is_xen()
|
||||
for g in self.caps.guests:
|
||||
+ if conn_is_xen and g.os_type == "xen":
|
||||
+ gtype = "xen"
|
||||
+ break
|
||||
if g.os_type == "hvm":
|
||||
gtype = "hvm"
|
||||
break
|
@ -16,7 +16,7 @@ Index: virt-manager-0.10.0/data/virt-manager.desktop.in
|
||||
Terminal=false
|
||||
-Categories=System;
|
||||
+Encoding=UTF-8
|
||||
+Categories=Qt;X-SuSE-YaST;
|
||||
+Categories=Qt;X-SuSE-YaST;X-SuSE-YaST-Virtualization;
|
||||
+X-KDE-ModuleType=Library
|
||||
+X-KDE-RootOnly=true
|
||||
+X-KDE-HasReadOnlyMode=false
|
||||
|
@ -1,11 +1,11 @@
|
||||
Index: virt-manager-0.10.0/virtManager/addhardware.py
|
||||
Index: virt-manager-0.10.1/virtManager/addhardware.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/addhardware.py
|
||||
+++ virt-manager-0.10.0/virtManager/addhardware.py
|
||||
@@ -1162,6 +1162,19 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
--- virt-manager-0.10.1.orig/virtManager/addhardware.py
|
||||
+++ virt-manager-0.10.1/virtManager/addhardware.py
|
||||
@@ -1287,6 +1287,18 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
if controller is not None:
|
||||
logging.debug("Adding controller:\n%s",
|
||||
self._dev.vmm_controller.get_xml_config())
|
||||
controller.get_xml_config())
|
||||
+
|
||||
+ # If vm is active, Try to hotplug the device and modify persistent
|
||||
+ # config in one go
|
||||
@ -18,15 +18,14 @@ Index: virt-manager-0.10.0/virtManager/addhardware.py
|
||||
+ "config at the same time: %s" % str(e))
|
||||
+ logging.debug("Trying the operations seperately ...")
|
||||
+
|
||||
+ # Try hotplug then modify persistent config
|
||||
# Hotplug device
|
||||
attach_err = False
|
||||
try:
|
||||
Index: virt-manager-0.10.0/virtManager/details.py
|
||||
Index: virt-manager-0.10.1/virtManager/details.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/details.py
|
||||
+++ virt-manager-0.10.0/virtManager/details.py
|
||||
@@ -2483,6 +2483,17 @@ class vmmDetails(vmmGObjectUI):
|
||||
--- virt-manager-0.10.1.orig/virtManager/details.py
|
||||
+++ virt-manager-0.10.1/virtManager/details.py
|
||||
@@ -2270,6 +2270,17 @@ class vmmDetails(vmmGObjectUI):
|
||||
text1=(_("Are you sure you want to remove this device?"))):
|
||||
return
|
||||
|
||||
@ -44,11 +43,11 @@ Index: virt-manager-0.10.0/virtManager/details.py
|
||||
# Define the change
|
||||
try:
|
||||
self.vm.remove_device(dev_id_info)
|
||||
Index: virt-manager-0.10.0/virtManager/domain.py
|
||||
Index: virt-manager-0.10.1/virtManager/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/domain.py
|
||||
+++ virt-manager-0.10.0/virtManager/domain.py
|
||||
@@ -840,6 +840,10 @@ class vmmDomain(vmmLibvirtObject):
|
||||
--- virt-manager-0.10.1.orig/virtManager/domain.py
|
||||
+++ virt-manager-0.10.1/virtManager/domain.py
|
||||
@@ -897,6 +897,10 @@ class vmmDomain(vmmLibvirtObject):
|
||||
devxml = devobj.get_xml_config()
|
||||
self._backend.attachDevice(devxml)
|
||||
|
||||
@ -59,7 +58,7 @@ Index: virt-manager-0.10.0/virtManager/domain.py
|
||||
def detach_device(self, devobj):
|
||||
"""
|
||||
Hotunplug device from running guest
|
||||
@@ -858,6 +862,10 @@ class vmmDomain(vmmLibvirtObject):
|
||||
@@ -915,6 +919,10 @@ class vmmDomain(vmmLibvirtObject):
|
||||
xml = devobj.get_xml_config()
|
||||
self._backend.updateDeviceFlags(xml, flags)
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
Index: virt-manager-0.10.0/virtManager/uihelpers.py
|
||||
Index: virt-manager-0.10.1/virtManager/addhardware.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/uihelpers.py
|
||||
+++ virt-manager-0.10.0/virtManager/uihelpers.py
|
||||
@@ -332,6 +332,7 @@ def populate_netmodel_combo(vm, combo):
|
||||
if vm.is_hvm():
|
||||
mod_list = ["rtl8139", "ne2k_pci", "pcnet", "e1000"]
|
||||
if vm.get_hv_type() in ["kvm", "qemu", "test"]:
|
||||
+ mod_list.append("eepro100")
|
||||
mod_list.append("virtio")
|
||||
if (vm.get_hv_type() == "kvm" and
|
||||
vm.get_machtype() == "pseries"):
|
||||
--- virt-manager-0.10.1.orig/virtManager/addhardware.py
|
||||
+++ virt-manager-0.10.1/virtManager/addhardware.py
|
||||
@@ -553,6 +553,7 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
if vm.is_hvm():
|
||||
mod_list = ["rtl8139", "ne2k_pci", "pcnet", "e1000"]
|
||||
if vm.get_hv_type() in ["kvm", "qemu", "test"]:
|
||||
+ mod_list.append("eepro100")
|
||||
mod_list.append("virtio")
|
||||
if (vm.get_hv_type() == "kvm" and
|
||||
vm.get_machtype() == "pseries"):
|
||||
|
@ -1,21 +1,21 @@
|
||||
Index: virt-manager-0.10.0/virtManager/uihelpers.py
|
||||
Index: virt-manager-0.10.1/virtManager/console.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/uihelpers.py
|
||||
+++ virt-manager-0.10.0/virtManager/uihelpers.py
|
||||
@@ -1018,6 +1018,16 @@ def build_keycombo_menu(cb):
|
||||
make_item("Ctrl+Alt+_Backspace", ["Control_L", "Alt_L", "BackSpace"])
|
||||
make_item("Ctrl+Alt+_Delete", ["Control_L", "Alt_L", "Delete"])
|
||||
menu.add(Gtk.SeparatorMenuItem())
|
||||
+ make_item("Ctrl+Scroll+Scroll", ["Control_L", "Scroll" + "Scroll"])
|
||||
+ make_item("Alt+F_10", ["Alt_L", "F10"])
|
||||
+ make_item("Alt+Tab", ["Alt_L", "Tab"])
|
||||
+ make_item("Alt+Escape", ["Alt_L", "Escape"])
|
||||
+ make_item("Ctrl+Escape", ["Control_L", "Escape"])
|
||||
+ make_item("Ctrl+Alt+Escape", ["Control_L", "Alt_L", "Escape"])
|
||||
+ make_item("Alt+Shift+Shift+Escape", ["Alt_R", "Shift_R", "Shift_L", "Escape"])
|
||||
+ make_item("F_8", ["F8"])
|
||||
+ make_item("F_10", ["F10"])
|
||||
+ menu.add(Gtk.SeparatorMenuItem())
|
||||
--- virt-manager-0.10.1.orig/virtManager/console.py
|
||||
+++ virt-manager-0.10.1/virtManager/console.py
|
||||
@@ -922,6 +922,16 @@ class vmmConsolePages(vmmGObjectUI):
|
||||
make_item("Ctrl+Alt+_Backspace", ["Control_L", "Alt_L", "BackSpace"])
|
||||
make_item("Ctrl+Alt+_Delete", ["Control_L", "Alt_L", "Delete"])
|
||||
menu.add(Gtk.SeparatorMenuItem())
|
||||
+ make_item("Ctrl+Scroll+Scroll", ["Control_L", "Scroll" + "Scroll"])
|
||||
+ make_item("Alt+F_10", ["Alt_L", "F10"])
|
||||
+ make_item("Alt+Tab", ["Alt_L", "Tab"])
|
||||
+ make_item("Alt+Escape", ["Alt_L", "Escape"])
|
||||
+ make_item("Ctrl+Escape", ["Control_L", "Escape"])
|
||||
+ make_item("Ctrl+Alt+Escape", ["Control_L", "Alt_L", "Escape"])
|
||||
+ make_item("Alt+Shift+Shift+Escape", ["Alt_R", "Shift_R", "Shift_L", "Escape"])
|
||||
+ make_item("F_8", ["F8"])
|
||||
+ make_item("F_10", ["F10"])
|
||||
+ menu.add(Gtk.SeparatorMenuItem())
|
||||
|
||||
for i in range(1, 13):
|
||||
make_item("Ctrl+Alt+F_%d" % i, ["Control_L", "Alt_L", "F%d" % i])
|
||||
for i in range(1, 13):
|
||||
make_item("Ctrl+Alt+F_%d" % i, ["Control_L", "Alt_L", "F%d" % i])
|
||||
|
@ -1,12 +1,12 @@
|
||||
Index: virt-manager-0.10.0/virtManager/engine.py
|
||||
Index: virt-manager-0.10.1/virtManager/connect.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/engine.py
|
||||
+++ virt-manager-0.10.0/virtManager/engine.py
|
||||
@@ -63,6 +63,7 @@ def default_uri():
|
||||
os.path.exists("/usr/bin/qemu") or
|
||||
os.path.exists("/usr/bin/qemu-kvm") or
|
||||
os.path.exists("/usr/bin/kvm") or
|
||||
+ os.path.exists("/dev/kvm") or
|
||||
os.path.exists("/usr/libexec/qemu-kvm")):
|
||||
tryuri = "qemu:///system"
|
||||
|
||||
--- virt-manager-0.10.1.orig/virtManager/connect.py
|
||||
+++ virt-manager-0.10.1/virtManager/connect.py
|
||||
@@ -111,6 +111,7 @@ class vmmConnect(vmmGObjectUI):
|
||||
if (os.path.exists("/usr/bin/qemu") or
|
||||
os.path.exists("/usr/bin/qemu-kvm") or
|
||||
os.path.exists("/usr/bin/kvm") or
|
||||
+ os.path.exists("/dev/kvm") or
|
||||
os.path.exists("/usr/libexec/qemu-kvm")):
|
||||
if always_system or os.geteuid() == 0:
|
||||
return "qemu:///system"
|
||||
|
@ -1,24 +1,23 @@
|
||||
Index: virt-manager-0.10.0/virtManager/uihelpers.py
|
||||
Index: virt-manager-0.10.1/virtManager/addhardware.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/uihelpers.py
|
||||
+++ virt-manager-0.10.0/virtManager/uihelpers.py
|
||||
@@ -426,13 +426,12 @@ def build_storage_format_combo(vm, combo
|
||||
combo.set_model(dev_model)
|
||||
combo.set_entry_text_column(0)
|
||||
--- virt-manager-0.10.1.orig/virtManager/addhardware.py
|
||||
+++ virt-manager-0.10.1/virtManager/addhardware.py
|
||||
@@ -717,11 +717,14 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
combo.set_model(model)
|
||||
uiutil.set_combo_text_column(combo, 0)
|
||||
|
||||
- formats = ["raw", "qcow2", "qed"]
|
||||
- if vm.rhel6_defaults():
|
||||
- formats.append("vmdk")
|
||||
- formats.append("vdi")
|
||||
-
|
||||
- for m in formats:
|
||||
- dev_model.append([m])
|
||||
+ if vm.conn.is_xen():
|
||||
+ for m in ["raw", "qcow2", "vmdk"]:
|
||||
+ dev_model.append([m])
|
||||
+ else:
|
||||
+ for m in ["raw", "qcow2", "qed", "vmdk", "vdi"]:
|
||||
+ dev_model.append([m])
|
||||
|
||||
combo.set_active(0)
|
||||
- formats = ["raw", "qcow2", "qed"]
|
||||
no_create_formats = []
|
||||
- if not vm.stable_defaults():
|
||||
- formats.append("vmdk")
|
||||
- no_create_formats.append("vdi")
|
||||
+ if vm.conn.is_xen():
|
||||
+ formats = ["raw", "qcow2", "qed", "vmdk", "vdi"]
|
||||
+ else:
|
||||
+ formats = ["raw", "qcow2", "qed"]
|
||||
+ if not vm.stable_defaults():
|
||||
+ formats.append("vmdk")
|
||||
+ no_create_formats.append("vdi")
|
||||
|
||||
for m in formats:
|
||||
model.append([m])
|
||||
|
@ -2,11 +2,11 @@ Reverses upstream patch: serialcon: Don't open a console with name=None
|
||||
Git: ce94126b707f157d88de113a8c591e628d55db63
|
||||
bnc#780859
|
||||
|
||||
Index: virt-manager-0.10.0/virtManager/serialcon.py
|
||||
Index: virt-manager-0.10.1/virtManager/serialcon.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/serialcon.py
|
||||
+++ virt-manager-0.10.0/virtManager/serialcon.py
|
||||
@@ -199,8 +199,9 @@ class LibvirtConsoleConnection(ConsoleCo
|
||||
--- virt-manager-0.10.1.orig/virtManager/serialcon.py
|
||||
+++ virt-manager-0.10.1/virtManager/serialcon.py
|
||||
@@ -207,8 +207,9 @@ class LibvirtConsoleConnection(ConsoleCo
|
||||
name = dev and dev.alias.name or None
|
||||
logging.debug("Opening console stream for dev=%s alias=%s",
|
||||
dev, name)
|
||||
@ -16,5 +16,5 @@ Index: virt-manager-0.10.0/virtManager/serialcon.py
|
||||
+ #if not name:
|
||||
+ # raise RuntimeError(_("Cannot open a device with no alias name"))
|
||||
|
||||
self.stream = self.conn.vmm.newStream(libvirt.VIR_STREAM_NONBLOCK)
|
||||
|
||||
stream = self.conn.get_backend().newStream(libvirt.VIR_STREAM_NONBLOCK)
|
||||
self.vm.open_console(name, stream)
|
||||
|
@ -6,25 +6,25 @@ From: Cole Robinson crobinso@redhat.com Mon Sep 26 11:05:55 2011 -0400
|
||||
Date: Mon Sep 26 11:07:52 2011 -0400:
|
||||
Git: 0a7640c593a54a6a3f558583d82f8b27c7a7d1d1
|
||||
|
||||
Index: virt-manager-0.10.0/virtManager/manager.py
|
||||
Index: virt-manager-0.10.1/virtManager/manager.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/manager.py
|
||||
+++ virt-manager-0.10.0/virtManager/manager.py
|
||||
@@ -813,7 +813,7 @@ class vmmManager(vmmGObjectUI):
|
||||
row.insert(ROW_STATUS, vm.run_status())
|
||||
row.insert(ROW_STATUS_ICON, vm.run_status_icon_name())
|
||||
row.insert(ROW_KEY, vm.get_uuid())
|
||||
- row.insert(ROW_HINT, util.xml_escape(vm.get_description()))
|
||||
+ row.insert(ROW_HINT, vm.get_description())
|
||||
row.insert(ROW_IS_CONN, False)
|
||||
row.insert(ROW_IS_CONN_CONNECTED, True)
|
||||
row.insert(ROW_IS_VM, True)
|
||||
@@ -965,7 +965,7 @@ class vmmManager(vmmGObjectUI):
|
||||
--- virt-manager-0.10.1.orig/virtManager/manager.py
|
||||
+++ virt-manager-0.10.1/virtManager/manager.py
|
||||
@@ -676,7 +676,7 @@ class vmmManager(vmmGObjectUI):
|
||||
row.insert(ROW_SORT_KEY, name)
|
||||
row.insert(ROW_MARKUP, markup)
|
||||
row.insert(ROW_STATUS_ICON, status_icon)
|
||||
- row.insert(ROW_HINT, util.xml_escape(hint))
|
||||
+ row.insert(ROW_HINT, hint)
|
||||
row.insert(ROW_IS_CONN, bool(conn))
|
||||
row.insert(ROW_IS_CONN_CONNECTED,
|
||||
bool(conn) and conn.state != conn.STATE_DISCONNECTED)
|
||||
@@ -789,7 +789,7 @@ class vmmManager(vmmGObjectUI):
|
||||
desc = vm.get_description()
|
||||
if not can_set_row_none:
|
||||
if not uiutil.can_set_row_none:
|
||||
desc = desc or ""
|
||||
- row[ROW_HINT] = util.xml_escape(desc)
|
||||
+ row[ROW_HINT] = desc
|
||||
|
||||
model.row_changed(row.path, row.iter)
|
||||
|
||||
except libvirt.libvirtError, e:
|
||||
if util.exception_is_libvirt_error(e, "VIR_ERR_NO_DOMAIN"):
|
||||
return
|
||||
|
@ -1,174 +0,0 @@
|
||||
bnc#847641
|
||||
|
||||
Index: virt-manager-0.10.0/ui/vmm-migrate.ui
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/ui/vmm-migrate.ui
|
||||
+++ virt-manager-0.10.0/ui/vmm-migrate.ui
|
||||
@@ -296,6 +296,53 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
+ <object class="GtkAlignment" id="alignment7">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="left_padding">6</property>
|
||||
+ <child>
|
||||
+ <object class="GtkHBox" id="migrate-unsafe-box">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="spacing">6</property>
|
||||
+ <child>
|
||||
+ <object class="GtkLabel" id="label17">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="label" translatable="yes">_Allow unsafe migration:</property>
|
||||
+ <property name="use_underline">True</property>
|
||||
+ <property name="mnemonic_widget">migrate-unsafe</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
+ <property name="position">0</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
+ <object class="GtkCheckButton" id="migrate-unsafe">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">True</property>
|
||||
+ <property name="receives_default">False</property>
|
||||
+ <property name="use_action_appearance">False</property>
|
||||
+ <property name="draw_indicator">True</property>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="expand">False</property>
|
||||
+ <property name="fill">True</property>
|
||||
+ <property name="position">1</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ </object>
|
||||
+ </child>
|
||||
+ </object>
|
||||
+ <packing>
|
||||
+ <property name="expand">True</property>
|
||||
+ <property name="fill">True</property>
|
||||
+ <property name="position">1</property>
|
||||
+ </packing>
|
||||
+ </child>
|
||||
+ <child>
|
||||
<object class="GtkHBox" id="migrate-maxdowntime-box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
@@ -408,7 +455,7 @@
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
- <property name="position">1</property>
|
||||
+ <property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -659,7 +706,7 @@
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
- <property name="position">2</property>
|
||||
+ <property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
Index: virt-manager-0.10.0/virtManager/migrate.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/migrate.py
|
||||
+++ virt-manager-0.10.0/virtManager/migrate.py
|
||||
@@ -147,6 +147,7 @@ class vmmMigrateDialog(vmmGObjectUI):
|
||||
|
||||
self.widget("migrate-rate").set_value(0)
|
||||
self.widget("migrate-secure").set_active(False)
|
||||
+ self.widget("migrate-unsafe").set_active(False)
|
||||
|
||||
downtime_box = self.widget("migrate-maxdowntime-box")
|
||||
support_downtime = self.vm.support_downtime()
|
||||
@@ -174,6 +175,16 @@ class vmmMigrateDialog(vmmGObjectUI):
|
||||
secure_box.set_sensitive(support_secure)
|
||||
secure_box.set_tooltip_text(secure_tooltip)
|
||||
|
||||
+ unsafe_box = self.widget("migrate-unsafe-box")
|
||||
+ support_unsafe = hasattr(libvirt, "VIR_MIGRATE_UNSAFE")
|
||||
+ unsafe_tooltip = ""
|
||||
+ if not support_unsafe:
|
||||
+ unsafe_tooltip = _("Libvirt version does not support unsafe "
|
||||
+ "migration.")
|
||||
+
|
||||
+ unsafe_box.set_sensitive(support_unsafe)
|
||||
+ unsafe_box.set_tooltip_text(unsafe_tooltip)
|
||||
+
|
||||
self.rebuild_dest_rows()
|
||||
|
||||
def set_state(self, vm):
|
||||
@@ -234,6 +245,9 @@ class vmmMigrateDialog(vmmGObjectUI):
|
||||
def get_config_secure(self):
|
||||
return self.widget("migrate-secure").get_active()
|
||||
|
||||
+ def get_config_unsafe(self):
|
||||
+ return self.widget("migrate-unsafe").get_active()
|
||||
+
|
||||
def get_config_max_downtime_enabled(self):
|
||||
return self.widget("migrate-max-downtime").get_sensitive()
|
||||
|
||||
@@ -456,6 +470,7 @@ class vmmMigrateDialog(vmmGObjectUI):
|
||||
max_downtime = self.get_config_max_downtime()
|
||||
live = not self.get_config_offline()
|
||||
secure = self.get_config_secure()
|
||||
+ unsafe = self.get_config_unsafe()
|
||||
uri = self.build_migrate_uri(destconn, srcuri)
|
||||
rate = self.get_config_rate()
|
||||
if rate:
|
||||
@@ -476,7 +491,7 @@ class vmmMigrateDialog(vmmGObjectUI):
|
||||
|
||||
progWin = vmmAsyncJob(self._async_migrate,
|
||||
[self.vm, destconn, uri, rate, live, secure,
|
||||
- max_downtime],
|
||||
+ unsafe, max_downtime],
|
||||
_("Migrating VM '%s'" % self.vm.get_name()),
|
||||
(_("Migrating VM '%s' from %s to %s. "
|
||||
"This may take a while.") %
|
||||
@@ -528,7 +543,7 @@ class vmmMigrateDialog(vmmGObjectUI):
|
||||
|
||||
def _async_migrate(self, asyncjob,
|
||||
origvm, origdconn, migrate_uri, rate, live,
|
||||
- secure, max_downtime):
|
||||
+ secure, unsafe, max_downtime):
|
||||
meter = asyncjob.get_meter()
|
||||
|
||||
srcconn = util.dup_conn(origvm.conn)
|
||||
@@ -548,6 +563,6 @@ class vmmMigrateDialog(vmmGObjectUI):
|
||||
timer = self.timeout_add(100, self._async_set_max_downtime,
|
||||
vm, max_downtime, current_thread)
|
||||
|
||||
- vm.migrate(dstconn, migrate_uri, rate, live, secure, meter=meter)
|
||||
+ vm.migrate(dstconn, migrate_uri, rate, live, secure, unsafe, meter=meter)
|
||||
if timer:
|
||||
self.idle_add(GLib.source_remove, timer)
|
||||
Index: virt-manager-0.10.0/virtManager/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/domain.py
|
||||
+++ virt-manager-0.10.0/virtManager/domain.py
|
||||
@@ -1269,7 +1269,7 @@ class vmmDomain(vmmLibvirtObject):
|
||||
self._backend.migrateSetMaxDowntime(max_downtime, flag)
|
||||
|
||||
def migrate(self, destconn, interface=None, rate=0,
|
||||
- live=False, secure=False, meter=None):
|
||||
+ live=False, secure=False, unsafe=False, meter=None):
|
||||
self._install_abort = True
|
||||
|
||||
newname = None
|
||||
@@ -1282,6 +1282,9 @@ class vmmDomain(vmmLibvirtObject):
|
||||
flags |= libvirt.VIR_MIGRATE_PEER2PEER
|
||||
flags |= libvirt.VIR_MIGRATE_TUNNELLED
|
||||
|
||||
+ if unsafe:
|
||||
+ flags |= libvirt.VIR_MIGRATE_UNSAFE
|
||||
+
|
||||
logging.debug("Migrating: conn=%s flags=%s dname=%s uri=%s rate=%s",
|
||||
destconn.vmm, flags, newname, interface, rate)
|
||||
|
@ -1,20 +1,20 @@
|
||||
Index: virt-manager-0.10.0/virtManager/domain.py
|
||||
Index: virt-manager-1.0.0/virtManager/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/domain.py
|
||||
+++ virt-manager-0.10.0/virtManager/domain.py
|
||||
@@ -1722,7 +1722,14 @@ class vmmDomain(vmmLibvirtObject):
|
||||
# Invalidate cached values
|
||||
self._invalidate_xml()
|
||||
--- virt-manager-1.0.0.orig/virtManager/domain.py
|
||||
+++ virt-manager-1.0.0/virtManager/domain.py
|
||||
@@ -1836,7 +1836,14 @@ class vmmDomain(vmmLibvirtObject):
|
||||
|
||||
- info = self._backend.info()
|
||||
+ try:
|
||||
+ info = self._backend.info()
|
||||
+ except:
|
||||
+ self._backend = self.conn.vmm.lookupByName(self.get_name())
|
||||
+ info = self._backend.info()
|
||||
+ if info[0] == libvirt.VIR_DOMAIN_NOSTATE:
|
||||
+ self._backend = self.conn.vmm.lookupByName(self.get_name())
|
||||
+ info = self._backend.info()
|
||||
expected = self.config.get_stats_history_length()
|
||||
current = len(self.record)
|
||||
if current > expected:
|
||||
info = []
|
||||
if not self._using_events() or self._enable_cpu_stats:
|
||||
- info = self._backend.info()
|
||||
+ try:
|
||||
+ info = self._backend.info()
|
||||
+ except:
|
||||
+ self._backend = self.conn.vmm.lookupByName(self.get_name())
|
||||
+ info = self._backend.info()
|
||||
+ if info[0] == libvirt.VIR_DOMAIN_NOSTATE:
|
||||
+ self._backend = self.conn.vmm.lookupByName(self.get_name())
|
||||
+ info = self._backend.info()
|
||||
|
||||
if stats_update:
|
||||
self._tick_stats(info)
|
||||
|
@ -1,8 +1,8 @@
|
||||
Index: virt-manager-0.10.0/ui/vmm-manager.ui
|
||||
Index: virt-manager-0.10.1/ui/manager.ui
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/ui/vmm-manager.ui
|
||||
+++ virt-manager-0.10.0/ui/vmm-manager.ui
|
||||
@@ -258,7 +258,7 @@
|
||||
--- virt-manager-0.10.1.orig/ui/manager.ui
|
||||
+++ virt-manager-0.10.1/ui/manager.ui
|
||||
@@ -277,7 +277,7 @@
|
||||
<property name="can_focus">False</property>
|
||||
<property name="show_arrow">False</property>
|
||||
<child>
|
||||
@ -11,7 +11,7 @@ Index: virt-manager-0.10.0/ui/vmm-manager.ui
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="has_tooltip">True</property>
|
||||
@@ -270,7 +270,6 @@
|
||||
@@ -289,7 +289,6 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
@ -19,11 +19,11 @@ Index: virt-manager-0.10.0/ui/vmm-manager.ui
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
Index: virt-manager-0.10.0/virtManager/manager.py
|
||||
Index: virt-manager-0.10.1/virtManager/manager.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/manager.py
|
||||
+++ virt-manager-0.10.0/virtManager/manager.py
|
||||
@@ -85,6 +85,7 @@ class vmmManager(vmmGObjectUI):
|
||||
--- virt-manager-0.10.1.orig/virtManager/manager.py
|
||||
+++ virt-manager-0.10.1/virtManager/manager.py
|
||||
@@ -95,6 +95,7 @@ class vmmManager(vmmGObjectUI):
|
||||
"action-show-host": (GObject.SignalFlags.RUN_FIRST, None, [str]),
|
||||
"action-show-preferences": (GObject.SignalFlags.RUN_FIRST, None, []),
|
||||
"action-show-create": (GObject.SignalFlags.RUN_FIRST, None, [str]),
|
||||
@ -31,17 +31,17 @@ Index: virt-manager-0.10.0/virtManager/manager.py
|
||||
"action-suspend-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
|
||||
"action-resume-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
|
||||
"action-run-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
|
||||
@@ -281,7 +282,8 @@ class vmmManager(vmmGObjectUI):
|
||||
self.config.is_vmlist_network_traffic_visible())
|
||||
@@ -298,7 +299,8 @@ class vmmManager(vmmGObjectUI):
|
||||
|
||||
|
||||
def init_toolbar(self):
|
||||
- self.widget("vm-new").set_icon_name("vm_new")
|
||||
+ uihelpers.build_new_button_menu(self.widget("vm-new"),
|
||||
+ vmmenu.build_new_button_menu(self.widget("vm-new"),
|
||||
+ self.vminstall_new_vm)
|
||||
self.widget("vm-open").set_icon_name("icon_console")
|
||||
uihelpers.build_shutdown_button_menu(self.widget("vm-shutdown"),
|
||||
self.poweroff_vm,
|
||||
@@ -548,6 +550,9 @@ class vmmManager(vmmGObjectUI):
|
||||
|
||||
menu = vmmenu.VMShutdownMenu(self, self.current_vm)
|
||||
@@ -489,6 +491,9 @@ class vmmManager(vmmGObjectUI):
|
||||
def new_vm(self, src_ignore=None):
|
||||
self.emit("action-show-create", self.current_conn_uri())
|
||||
|
||||
@ -51,11 +51,15 @@ Index: virt-manager-0.10.0/virtManager/manager.py
|
||||
def show_about(self, src_ignore):
|
||||
self.emit("action-show-about")
|
||||
|
||||
Index: virt-manager-0.10.0/virtManager/uihelpers.py
|
||||
Index: virt-manager-0.10.1/virtManager/vmmenu.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/uihelpers.py
|
||||
+++ virt-manager-0.10.0/virtManager/uihelpers.py
|
||||
@@ -877,6 +877,24 @@ def mediadev_set_default_selection(widge
|
||||
--- virt-manager-0.10.1.orig/virtManager/vmmenu.py
|
||||
+++ virt-manager-0.10.1/virtManager/vmmenu.py
|
||||
@@ -21,9 +21,28 @@
|
||||
# pylint: disable=E0611
|
||||
from gi.repository import Gtk
|
||||
# pylint: enable=E0611
|
||||
+from virtManager import config
|
||||
|
||||
|
||||
####################################################################
|
||||
@ -63,7 +67,7 @@ Index: virt-manager-0.10.0/virtManager/uihelpers.py
|
||||
+####################################################################
|
||||
+
|
||||
+def build_new_button_menu(widget, vminstall_cb):
|
||||
+ icon_name = util.running_config.get_new_icon_name()
|
||||
+ icon_name = config.running_config.get_new_icon_name()
|
||||
+ widget.set_icon_name(icon_name)
|
||||
+ menu = Gtk.Menu()
|
||||
+ widget.set_menu(menu)
|
||||
@ -80,11 +84,11 @@ Index: virt-manager-0.10.0/virtManager/uihelpers.py
|
||||
# Build toolbar shutdown button menu (manager and details toolbar) #
|
||||
####################################################################
|
||||
|
||||
Index: virt-manager-0.10.0/virtManager/config.py
|
||||
Index: virt-manager-0.10.1/virtManager/config.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/config.py
|
||||
+++ virt-manager-0.10.0/virtManager/config.py
|
||||
@@ -192,6 +192,13 @@ class vmmConfig(object):
|
||||
--- virt-manager-0.10.1.orig/virtManager/config.py
|
||||
+++ virt-manager-0.10.1/virtManager/config.py
|
||||
@@ -191,6 +191,13 @@ class vmmConfig(object):
|
||||
|
||||
# General app wide helpers (gconf agnostic)
|
||||
|
||||
@ -98,20 +102,20 @@ Index: virt-manager-0.10.0/virtManager/config.py
|
||||
def get_appname(self):
|
||||
return self.appname
|
||||
def get_appversion(self):
|
||||
Index: virt-manager-0.10.0/virtManager/engine.py
|
||||
Index: virt-manager-0.10.1/virtManager/engine.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.0.orig/virtManager/engine.py
|
||||
+++ virt-manager-0.10.0/virtManager/engine.py
|
||||
@@ -27,6 +27,8 @@ from gi.repository import Gtk
|
||||
import logging
|
||||
--- virt-manager-0.10.1.orig/virtManager/engine.py
|
||||
+++ virt-manager-0.10.1/virtManager/engine.py
|
||||
@@ -28,6 +28,8 @@ import logging
|
||||
import re
|
||||
import Queue
|
||||
import threading
|
||||
import os
|
||||
+import traceback
|
||||
+from subprocess import *
|
||||
|
||||
import libvirt
|
||||
import virtinst
|
||||
@@ -89,6 +91,7 @@ class vmmEngine(vmmGObject):
|
||||
from virtinst import util
|
||||
@@ -76,6 +78,7 @@ class vmmEngine(vmmGObject):
|
||||
self.windowCreate = None
|
||||
self.windowManager = None
|
||||
self.windowMigrate = None
|
||||
@ -119,15 +123,15 @@ Index: virt-manager-0.10.0/virtManager/engine.py
|
||||
|
||||
self.conns = {}
|
||||
self.err = vmmErrorDialog()
|
||||
@@ -663,6 +666,7 @@ class vmmEngine(vmmGObject):
|
||||
obj.connect("action-show-vm", self._do_show_vm)
|
||||
@@ -832,6 +835,7 @@ class vmmEngine(vmmGObject):
|
||||
obj.connect("action-show-domain", self._do_show_vm)
|
||||
obj.connect("action-show-preferences", self._do_show_preferences)
|
||||
obj.connect("action-show-create", self._do_show_create)
|
||||
+ obj.connect("action-show-create-vminstall", self._do_show_create_vminstall)
|
||||
obj.connect("action-show-about", self._do_show_about)
|
||||
obj.connect("action-show-host", self._do_show_host)
|
||||
obj.connect("action-show-connect", self._do_show_connect)
|
||||
@@ -703,11 +707,41 @@ class vmmEngine(vmmGObject):
|
||||
@@ -872,11 +876,42 @@ class vmmEngine(vmmGObject):
|
||||
self.windowCreate = obj
|
||||
return self.windowCreate
|
||||
|
||||
@ -151,6 +155,7 @@ Index: virt-manager-0.10.0/virtManager/engine.py
|
||||
+ try:
|
||||
+ if do_remote or not use_vminstall:
|
||||
+ self._get_create_dialog().show(src.topwin, uri)
|
||||
+ self.remote_install = True
|
||||
+ else:
|
||||
+ args = ['/usr/bin/vm-install']
|
||||
+ logging.debug("Launching: %s" % str(args))
|
||||
|
Loading…
Reference in New Issue
Block a user