qubes/ext/gui: remove is-fully-usable and is_guid_running
This commit is contained in:
parent
0fdcbfc237
commit
a9755ed76a
@ -27,36 +27,11 @@ import qubes.config
|
|||||||
import qubes.ext
|
import qubes.ext
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class GUI(qubes.ext.Extension):
|
class GUI(qubes.ext.Extension):
|
||||||
|
# TODO put this somewhere...
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def send_gui_mode(vm):
|
def send_gui_mode(vm):
|
||||||
vm.run_service('qubes.SetGuiMode',
|
vm.run_service('qubes.SetGuiMode',
|
||||||
input=('SEAMLESS'
|
input=('SEAMLESS'
|
||||||
if vm.features.get('gui-seamless', False)
|
if vm.features.get('gui-seamless', False)
|
||||||
else 'FULLSCREEN'))
|
else 'FULLSCREEN'))
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def is_guid_running(vm):
|
|
||||||
'''Check whether gui daemon for this domain is available.
|
|
||||||
|
|
||||||
Notice: this will be irrelevant here, after real splitting GUI/Admin.
|
|
||||||
|
|
||||||
:returns: :py:obj:`True` if guid is running, \
|
|
||||||
:py:obj:`False` otherwise.
|
|
||||||
:rtype: bool
|
|
||||||
'''
|
|
||||||
xid = vm.xid
|
|
||||||
if xid < 0:
|
|
||||||
return False
|
|
||||||
if not os.path.exists('/var/run/qubes/guid-running.{}'.format(xid)):
|
|
||||||
return False
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
@qubes.ext.handler('domain-is-fully-usable')
|
|
||||||
def on_domain_is_fully_usable(self, vm, event):
|
|
||||||
# pylint: disable=unused-argument
|
|
||||||
if not self.is_guid_running(vm):
|
|
||||||
yield False
|
|
||||||
|
@ -683,9 +683,6 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
|
|||||||
self._libvirt_domain = None
|
self._libvirt_domain = None
|
||||||
self._qdb_connection = None
|
self._qdb_connection = None
|
||||||
|
|
||||||
#: this :py:class:`asyncio.Event` will fire when session is obtained
|
|
||||||
self.have_session = asyncio.Event()
|
|
||||||
|
|
||||||
if xml is None:
|
if xml is None:
|
||||||
# we are creating new VM and attributes came through kwargs
|
# we are creating new VM and attributes came through kwargs
|
||||||
assert hasattr(self, 'qid')
|
assert hasattr(self, 'qid')
|
||||||
@ -923,8 +920,6 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
|
|||||||
if qmemman_client:
|
if qmemman_client:
|
||||||
qmemman_client.close()
|
qmemman_client.close()
|
||||||
|
|
||||||
asyncio.ensure_future(self._wait_for_session())
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@qubes.events.handler('domain-shutdown')
|
@qubes.events.handler('domain-shutdown')
|
||||||
@ -1081,9 +1076,6 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
|
|||||||
raise qubes.exc.QubesVMError(
|
raise qubes.exc.QubesVMError(
|
||||||
self, 'Domain {!r}: qrexec not connected'.format(self.name))
|
self, 'Domain {!r}: qrexec not connected'.format(self.name))
|
||||||
|
|
||||||
if gui and not self.have_session.is_set():
|
|
||||||
raise qubes.exc.QubesVMError(self, 'don\'t have session yet')
|
|
||||||
|
|
||||||
self.fire_event_pre('domain-cmd-pre-run', start_guid=gui)
|
self.fire_event_pre('domain-cmd-pre-run', start_guid=gui)
|
||||||
|
|
||||||
return (yield from asyncio.create_subprocess_exec(
|
return (yield from asyncio.create_subprocess_exec(
|
||||||
@ -1264,23 +1256,6 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
|
|||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
raise qubes.exc.QubesException('Cannot execute qubesdb-daemon')
|
raise qubes.exc.QubesException('Cannot execute qubesdb-daemon')
|
||||||
|
|
||||||
@asyncio.coroutine
|
|
||||||
def _wait_for_session(self):
|
|
||||||
'''Wait until machine finished boot sequence.
|
|
||||||
|
|
||||||
This is done by executing qubes RPC call that checks if dummy system
|
|
||||||
service (which is started late in standard runlevel) is active.
|
|
||||||
'''
|
|
||||||
|
|
||||||
self.log.info('Waiting for qubes-session')
|
|
||||||
|
|
||||||
yield from self.run_service_for_stdio('qubes.WaitForSession',
|
|
||||||
user='root', gui=False, input=self.default_user.encode())
|
|
||||||
|
|
||||||
self.log.info('qubes-session acquired')
|
|
||||||
self.have_session.set()
|
|
||||||
self.fire_event('domain-has-session')
|
|
||||||
|
|
||||||
@asyncio.coroutine
|
@asyncio.coroutine
|
||||||
def create_on_disk(self, pool=None, pools=None):
|
def create_on_disk(self, pool=None, pools=None):
|
||||||
'''Create files needed for VM.
|
'''Create files needed for VM.
|
||||||
|
Loading…
Reference in New Issue
Block a user