Merge heads

This commit is contained in:
Daniel P. Berrange
2008-02-18 10:02:21 -05:00
6 changed files with 495 additions and 631 deletions

1071
po/fr.po

File diff suppressed because it is too large Load Diff

View File

@@ -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())

View File

@@ -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

View File

@@ -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()

View File

@@ -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

View File

@@ -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