mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
Merge heads
This commit is contained in:
@@ -210,10 +210,11 @@ class vmmAddHardware(gobject.GObject):
|
||||
model = self.window.get_widget("hardware-type").get_model()
|
||||
model.clear()
|
||||
model.append(["Storage device", gtk.STOCK_HARDDISK, PAGE_DISK])
|
||||
# User mode networking only allows a single card for now
|
||||
if (self.vm.get_connection().get_type().lower() == "qemu" and \
|
||||
os.getuid() == 0) or \
|
||||
self.vm.get_connection().get_type().lower() == "xen":
|
||||
# Can't use shared or virtual networking as regular user
|
||||
# Can only have one usermode network device
|
||||
if (os.getuid() == 0 or
|
||||
(self.vm.get_connection().get_type().lower() == "qemu" and
|
||||
len(self.vm.get_network_devices()) == 0)):
|
||||
model.append(["Network card", gtk.STOCK_NETWORK, PAGE_NETWORK])
|
||||
|
||||
# Can only customize HVM guests, no Xen PV
|
||||
@@ -222,14 +223,15 @@ class vmmAddHardware(gobject.GObject):
|
||||
model.append(["Graphics device", gtk.STOCK_SELECT_COLOR, PAGE_GRAPHICS])
|
||||
|
||||
|
||||
|
||||
def forward(self, ignore=None):
|
||||
notebook = self.window.get_widget("create-pages")
|
||||
if(self.validate(notebook.get_current_page()) != True):
|
||||
return
|
||||
|
||||
if notebook.get_current_page() == PAGE_INTRO:
|
||||
notebook.set_current_page(self.get_config_hardware_type())
|
||||
hwtype = self.get_config_hardware_type()
|
||||
if notebook.get_current_page() == PAGE_INTRO and \
|
||||
(hwtype != PAGE_NETWORK or os.getuid() == 0):
|
||||
notebook.set_current_page(hwtype)
|
||||
else:
|
||||
notebook.set_current_page(PAGE_SUMMARY)
|
||||
self.window.get_widget("create-finish").show()
|
||||
@@ -240,7 +242,11 @@ class vmmAddHardware(gobject.GObject):
|
||||
notebook = self.window.get_widget("create-pages")
|
||||
|
||||
if notebook.get_current_page() == PAGE_SUMMARY:
|
||||
notebook.set_current_page(self.get_config_hardware_type())
|
||||
hwtype = self.get_config_hardware_type()
|
||||
if hwtype == PAGE_NETWORK and os.getuid() != 0:
|
||||
notebook.set_current_page(PAGE_INTRO)
|
||||
else:
|
||||
notebook.set_current_page(hwtype)
|
||||
self.window.get_widget("create-finish").hide()
|
||||
else:
|
||||
notebook.set_current_page(PAGE_INTRO)
|
||||
@@ -436,6 +442,8 @@ class vmmAddHardware(gobject.GObject):
|
||||
self.close()
|
||||
|
||||
def add_network(self):
|
||||
if self._net is None and os.getuid() != 0:
|
||||
self._net = virtinst.VirtualNetworkInterface(type="user")
|
||||
self._net.setup(self.vm.get_connection().vmm)
|
||||
self.add_device(self._net.get_xml_config())
|
||||
|
||||
|
||||
@@ -521,11 +521,22 @@ class vmmCreate(gobject.GObject):
|
||||
except ValueError, E:
|
||||
self._validation_error_box(_("UUID Error"), str(e))
|
||||
|
||||
# HACK: If usermode, and no nic is setup, use usermode networking
|
||||
if os.getuid() != 0:
|
||||
try:
|
||||
self._net = virtinst.VirtualNetworkInterface(type="user")
|
||||
except ValueError, e:
|
||||
self._validation_error_box(_("Failed to set up usermode networking"), str(e))
|
||||
|
||||
if self._disk is not None:
|
||||
guest.disks = [self._disk]
|
||||
else:
|
||||
logging.debug('No guest disks found in install phase.')
|
||||
if self._net is not None:
|
||||
guest.nics = [self._net]
|
||||
|
||||
else:
|
||||
logging.debug('No guest nics found in install phase.')
|
||||
|
||||
# set up the graphics to use SDL
|
||||
import keytable
|
||||
keymap = None
|
||||
|
||||
@@ -220,7 +220,7 @@ class vmmEngine(gobject.GObject):
|
||||
|
||||
if self.connections[uri]["windowHost"] == None:
|
||||
manager = vmmHost(self.get_config(), con)
|
||||
manager.connect("action-show-help", self._do_show_help)
|
||||
manager.connect("action-show-about", self._do_show_about)
|
||||
self.connections[uri]["windowHost"] = manager
|
||||
self.connections[uri]["windowHost"].show()
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@ from virtManager.createnet import vmmCreateNetwork
|
||||
|
||||
class vmmHost(gobject.GObject):
|
||||
__gsignals__ = {
|
||||
"action-show-help": (gobject.SIGNAL_RUN_FIRST,
|
||||
gobject.TYPE_NONE, [str]),
|
||||
"action-show-about": (gobject.SIGNAL_RUN_FIRST,
|
||||
gobject.TYPE_NONE, []),
|
||||
}
|
||||
def __init__(self, config, conn):
|
||||
self.__gobject_init__()
|
||||
@@ -88,7 +88,7 @@ class vmmHost(gobject.GObject):
|
||||
self.window.signal_autoconnect({
|
||||
"on_menu_file_close_activate": self.close,
|
||||
"on_vmm_host_delete_event": self.close,
|
||||
"on_menu_help_about_activate": self.show_help,
|
||||
"on_menu_help_about_activate": self.show_about,
|
||||
"on_net_add_clicked": self.add_network,
|
||||
"on_net_delete_clicked": self.delete_network,
|
||||
"on_net_stop_clicked": self.stop_network,
|
||||
@@ -143,6 +143,9 @@ class vmmHost(gobject.GObject):
|
||||
# From the Details window, show the help document from the Details page
|
||||
self.emit("action-show-help", "virt-manager-host-window")
|
||||
|
||||
def show_about(self, src):
|
||||
self.emit("action-show-about")
|
||||
|
||||
def close(self,ignore1=None,ignore2=None):
|
||||
self.window.get_widget("vmm-host").hide()
|
||||
return 1
|
||||
|
||||
@@ -24,6 +24,7 @@ import os
|
||||
import gobject
|
||||
import termios
|
||||
import tty
|
||||
import pty
|
||||
|
||||
class vmmSerialConsole:
|
||||
def __init__(self, config, vm):
|
||||
@@ -83,11 +84,11 @@ class vmmSerialConsole:
|
||||
def opentty(self):
|
||||
if self.ptyio != None:
|
||||
self.closetty()
|
||||
pty = self.vm.get_serial_console_tty()
|
||||
ipty = self.vm.get_serial_console_tty()
|
||||
|
||||
if pty == None:
|
||||
if ipty == None:
|
||||
return
|
||||
self.ptyio = os.open(pty, os.O_RDWR | os.O_NONBLOCK | os.O_NOCTTY)
|
||||
self.ptyio = pty.slave_open(ipty)
|
||||
self.ptysrc = gobject.io_add_watch(self.ptyio, gobject.IO_IN | gobject.IO_ERR | gobject.IO_HUP, self.display_data)
|
||||
|
||||
# Save term settings & set to raw mode
|
||||
|
||||
Reference in New Issue
Block a user