コード例 #1
0
    def power(self, vm):
        '''Current power state.

        r   running
        t   transient
        p   paused
        s   suspended
        h   halting
        d   dying
        c   crashed
        ?   unknown
        '''

        state = vm.get_power_state().lower()
        if state == 'unknown':
            return '?'
        elif state in ('running', 'transient', 'paused', 'suspended',
                       'halting', 'dying', 'crashed'):
            return state[0]
コード例 #2
0
    def on_connection_established(self, _subject, _event, **_kwargs):
        """Handler of 'connection-established' event, used to launch GUI/AUDIO
        daemon for domains started before this tool. """

        monitor_layout = get_monitor_layout()
        self.app.domains.clear_cache()
        for vm in self.app.domains:
            if vm.klass == 'AdminVM':
                continue

            power_state = vm.get_power_state()
            if power_state == 'Running':
                asyncio.ensure_future(
                    self.start_gui(vm, monitor_layout=monitor_layout))
                asyncio.ensure_future(self.start_audio(vm))
            elif power_state == 'Transient':
                # it is still starting, we'll get 'domain-start'
                # event when fully started
                if vm.virt_mode == 'hvm':
                    asyncio.ensure_future(self.start_gui_for_stubdomain(vm))
コード例 #3
0
    def on_connection_established(self, _subject, _event, **_kwargs):
        '''Handler of 'connection-established' event, used to launch GUI
        daemon for domains started before this tool. '''

        monitor_layout = get_monitor_layout()
        self.app.domains.clear_cache()
        for vm in self.app.domains:
            if vm.klass == 'AdminVM':
                continue
            if not vm.features.check_with_template('gui', True):
                continue
            power_state = vm.get_power_state()
            if power_state == 'Running':
                asyncio.ensure_future(
                    self.start_gui(vm, monitor_layout=monitor_layout))
            elif power_state == 'Transient':
                # it is still starting, we'll get 'domain-start' event when
                # fully started
                if vm.virt_mode == 'hvm':
                    asyncio.ensure_future(self.start_gui_for_stubdomain(vm))
コード例 #4
0
def domain_data(vm: QubesVM) -> Dict[dbus.String, Any]:
    ''' Serializes a `qubes.vm.qubesvm.QubesVM` to a dictionary '''
    result = dbus.Dictionary({}, signature='sv')
    for prop in vm.property_list():
        name = str(prop)
        try:
            value = serialize_val(getattr(vm, name))
        except AttributeError:
            value = dbus.String('')
        result[name] = value

    # Additional data
    result['state'] = serialize_state(vm.get_power_state())
    if vm.name == 'dom0':
        result['networked'] = False
    else:
        result['networked'] = serialize_val(vm.is_networked())

    result['memory_usage'] = 0
    result['cpu_time'] = 0
    result['cpu_usage'] = 0
    return result
コード例 #5
0
        return 0


def calc_used(vm, volume_name):
    ''' Calculates the volume usage in percent '''
    size = calc_size(vm, volume_name)
    if size == 0:
        return 0
    usage = calc_usage(vm, volume_name)
    return usage * 100 // size


# todo maxmem

Column('STATE',
       attr=(lambda vm: vm.get_power_state()),
       doc='Current power state.')

Column('CLASS', attr=(lambda vm: type(vm).__name__), doc='Class of the qube.')

Column('GATEWAY', attr='netvm.gateway', doc='Network gateway.')

Column('MEMORY',
       attr=(lambda vm: vm.get_mem() / 1024 if vm.is_running() else None),
       doc='Memory currently used by VM')

Column('DISK',
       attr=(lambda vm: vm.get_disk_utilization() // 1024 // 1024),
       doc='Total disk utilisation.')

Column('PRIV-CURR',