Set the 'launch terminal' button sensitivity according ot whether we can access the /dev/pts/* device
This commit is contained in:
parent
fb7968a3bc
commit
916a8ab43b
|
@ -218,75 +218,80 @@ class vmmConsole(gobject.GObject):
|
|||
|
||||
def update_widget_states(self, vm, status):
|
||||
self.ignorePause = True
|
||||
try:
|
||||
if status in [ libvirt.VIR_DOMAIN_SHUTOFF, libvirt.VIR_DOMAIN_CRASHED ]:
|
||||
self.window.get_widget("control-run").set_sensitive(True)
|
||||
self.window.get_widget("menu-vm-run").set_sensitive(True)
|
||||
else:
|
||||
self.window.get_widget("control-run").set_sensitive(False)
|
||||
self.window.get_widget("menu-vm-run").set_sensitive(False)
|
||||
if status in [ libvirt.VIR_DOMAIN_SHUTOFF, libvirt.VIR_DOMAIN_CRASHED ]:
|
||||
self.window.get_widget("control-run").set_sensitive(True)
|
||||
self.window.get_widget("menu-vm-run").set_sensitive(True)
|
||||
else:
|
||||
self.window.get_widget("control-run").set_sensitive(False)
|
||||
self.window.get_widget("menu-vm-run").set_sensitive(False)
|
||||
|
||||
if status in [ libvirt.VIR_DOMAIN_SHUTDOWN, libvirt.VIR_DOMAIN_SHUTOFF ,libvirt.VIR_DOMAIN_CRASHED ] or vm.is_read_only():
|
||||
self.window.get_widget("control-pause").set_sensitive(False)
|
||||
self.window.get_widget("control-shutdown").set_sensitive(False)
|
||||
self.window.get_widget("control-terminal").set_sensitive(False)
|
||||
self.window.get_widget("control-save").set_sensitive(False)
|
||||
self.window.get_widget("menu-vm-pause").set_sensitive(False)
|
||||
self.window.get_widget("menu-vm-shutdown").set_sensitive(False)
|
||||
self.window.get_widget("menu-vm-terminal").set_sensitive(False)
|
||||
self.window.get_widget("menu-vm-save").set_sensitive(False)
|
||||
if vm.is_serial_console_tty_accessible():
|
||||
print "Access"
|
||||
self.window.get_widget("control-terminal").set_sensitive(True)
|
||||
self.window.get_widget("menu-vm-terminal").set_sensitive(True)
|
||||
else:
|
||||
print "Denied"
|
||||
self.window.get_widget("control-terminal").set_sensitive(False)
|
||||
self.window.get_widget("menu-vm-terminal").set_sensitive(False)
|
||||
|
||||
if status in [ libvirt.VIR_DOMAIN_SHUTDOWN, libvirt.VIR_DOMAIN_SHUTOFF ,libvirt.VIR_DOMAIN_CRASHED ] or vm.is_read_only():
|
||||
self.window.get_widget("control-pause").set_sensitive(False)
|
||||
self.window.get_widget("control-shutdown").set_sensitive(False)
|
||||
self.window.get_widget("control-save").set_sensitive(False)
|
||||
self.window.get_widget("menu-vm-pause").set_sensitive(False)
|
||||
self.window.get_widget("menu-vm-shutdown").set_sensitive(False)
|
||||
self.window.get_widget("menu-vm-save").set_sensitive(False)
|
||||
else:
|
||||
self.window.get_widget("control-pause").set_sensitive(True)
|
||||
self.window.get_widget("control-shutdown").set_sensitive(True)
|
||||
self.window.get_widget("control-save").set_sensitive(True)
|
||||
self.window.get_widget("menu-vm-pause").set_sensitive(True)
|
||||
self.window.get_widget("menu-vm-shutdown").set_sensitive(True)
|
||||
self.window.get_widget("menu-vm-save").set_sensitive(True)
|
||||
if status == libvirt.VIR_DOMAIN_PAUSED:
|
||||
self.window.get_widget("control-pause").set_active(True)
|
||||
self.window.get_widget("menu-vm-pause").set_active(True)
|
||||
else:
|
||||
self.window.get_widget("control-pause").set_sensitive(True)
|
||||
self.window.get_widget("control-shutdown").set_sensitive(True)
|
||||
self.window.get_widget("control-terminal").set_sensitive(True)
|
||||
self.window.get_widget("control-save").set_sensitive(True)
|
||||
self.window.get_widget("menu-vm-pause").set_sensitive(True)
|
||||
self.window.get_widget("menu-vm-shutdown").set_sensitive(True)
|
||||
self.window.get_widget("menu-vm-terminal").set_sensitive(True)
|
||||
self.window.get_widget("menu-vm-save").set_sensitive(True)
|
||||
if status == libvirt.VIR_DOMAIN_PAUSED:
|
||||
self.window.get_widget("control-pause").set_active(True)
|
||||
self.window.get_widget("menu-vm-pause").set_active(True)
|
||||
self.window.get_widget("control-pause").set_active(False)
|
||||
self.window.get_widget("menu-vm-pause").set_active(False)
|
||||
|
||||
if status in [ libvirt.VIR_DOMAIN_SHUTOFF ,libvirt.VIR_DOMAIN_CRASHED ] or vm.is_management_domain():
|
||||
self.window.get_widget("console-pages").set_current_page(0)
|
||||
else:
|
||||
if status == libvirt.VIR_DOMAIN_PAUSED:
|
||||
screenshot = None
|
||||
if self.vncViewer.is_authenticated():
|
||||
screenshot = self.vncViewer.take_screenshot()
|
||||
if screenshot != None:
|
||||
cr = screenshot.cairo_create()
|
||||
width, height = screenshot.get_size()
|
||||
|
||||
# Set 60% gray overlayed
|
||||
cr.set_source_rgba(0, 0, 0, 0.6)
|
||||
cr.rectangle(0, 0, width, height)
|
||||
cr.fill()
|
||||
|
||||
# Render a big text 'paused' across it
|
||||
cr.set_source_rgba(1, 1,1, 1)
|
||||
cr.set_font_size(80)
|
||||
cr.select_font_face("Sans", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
|
||||
overlay = _("paused")
|
||||
extents = cr.text_extents(overlay)
|
||||
x = width/2 - (extents[2]/2)
|
||||
y = height/2 - (extents[3]/2)
|
||||
cr.move_to(x, y)
|
||||
cr.show_text(overlay)
|
||||
|
||||
self.window.get_widget("console-screenshot").set_from_pixmap(screenshot, None)
|
||||
self.activate_screenshot_page()
|
||||
else:
|
||||
self.window.get_widget("control-pause").set_active(False)
|
||||
self.window.get_widget("menu-vm-pause").set_active(False)
|
||||
|
||||
if status in [ libvirt.VIR_DOMAIN_SHUTOFF ,libvirt.VIR_DOMAIN_CRASHED ] or vm.is_management_domain():
|
||||
self.window.get_widget("console-pages").set_current_page(0)
|
||||
self.activate_unavailable_page()
|
||||
else:
|
||||
if status == libvirt.VIR_DOMAIN_PAUSED:
|
||||
screenshot = None
|
||||
if self.vncViewer.is_authenticated():
|
||||
screenshot = self.vncViewer.take_screenshot()
|
||||
if screenshot != None:
|
||||
cr = screenshot.cairo_create()
|
||||
width, height = screenshot.get_size()
|
||||
|
||||
# Set 60% gray overlayed
|
||||
cr.set_source_rgba(0, 0, 0, 0.6)
|
||||
cr.rectangle(0, 0, width, height)
|
||||
cr.fill()
|
||||
|
||||
# Render a big text 'paused' across it
|
||||
cr.set_source_rgba(1, 1,1, 1)
|
||||
cr.set_font_size(80)
|
||||
cr.select_font_face("Sans", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
|
||||
overlay = _("paused")
|
||||
extents = cr.text_extents(overlay)
|
||||
x = width/2 - (extents[2]/2)
|
||||
y = height/2 - (extents[3]/2)
|
||||
cr.move_to(x, y)
|
||||
cr.show_text(overlay)
|
||||
|
||||
self.window.get_widget("console-screenshot").set_from_pixmap(screenshot, None)
|
||||
self.activate_screenshot_page()
|
||||
else:
|
||||
self.activate_unavailable_page()
|
||||
else:
|
||||
try:
|
||||
self.try_login()
|
||||
except:
|
||||
print _("Couldn't open console: ") + str(sys.exc_info()[0]) + " " + str(sys.exc_info()[1])
|
||||
self.ignorePause = False
|
||||
except:
|
||||
print _("Couldn't open console: ") + str(sys.exc_info()[0]) + " " + str(sys.exc_info()[1])
|
||||
self.ignorePause = False
|
||||
self.ignorePause = False
|
||||
|
||||
gobject.type_register(vmmConsole)
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
import gobject
|
||||
import libvirt
|
||||
import libxml2
|
||||
import os
|
||||
|
||||
class vmmDomain(gobject.GObject):
|
||||
__gsignals__ = {
|
||||
|
@ -288,6 +289,12 @@ class vmmDomain(gobject.GObject):
|
|||
def get_serial_console_tty(self):
|
||||
return self.get_xml_string("/domain/devices/console/@tty")
|
||||
|
||||
def is_serial_console_tty_accessible(self):
|
||||
tty = self.get_serial_console_tty()
|
||||
if tty == None:
|
||||
return False
|
||||
return os.access(tty, os.R_OK | os.W_OK)
|
||||
|
||||
def get_graphics_console(self):
|
||||
type = self.get_xml_string("/domain/devices/graphics/@type")
|
||||
port = None
|
||||
|
@ -300,7 +307,8 @@ class vmmDomain(gobject.GObject):
|
|||
return [type, "localhost", port]
|
||||
|
||||
def set_vcpu_count(self, vcpus):
|
||||
print "If this was implemented, it would set this domain to have " + `vcpus` + " virtual cpus."
|
||||
vcpus = int(vcpus)
|
||||
self.vm.setVcpus(vcpus)
|
||||
|
||||
def set_memory(self, memory):
|
||||
memory = int(memory)
|
||||
|
|
Loading…
Reference in New Issue