api/internal: extract get_system_info() function

This will be useful in other places too.

QubesOS/qubes-issues#5099
This commit is contained in:
Marek Marczykowski-Górecki 2020-02-20 05:38:50 +01:00
parent 135eda0582
commit 879ee9e7d6
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724

View File

@ -30,6 +30,23 @@ import qubes.vm.adminvm
import qubes.vm.dispvm
def get_system_info(app):
system_info = {'domains': {
domain.name: {
'tags': list(domain.tags),
'type': domain.__class__.__name__,
'template_for_dispvms':
getattr(domain, 'template_for_dispvms', False),
'default_dispvm': (domain.default_dispvm.name if
getattr(domain, 'default_dispvm', None) else None),
'icon': str(domain.label.icon),
'guivm': (domain.guivm.name if getattr(domain, 'guivm', None)
else None),
} for domain in app.domains
}}
return system_info
class QubesInternalAPI(qubes.api.AbstractQubesAPI):
''' Communication interface for dom0 components,
by design the input here is trusted.'''
@ -42,19 +59,7 @@ class QubesInternalAPI(qubes.api.AbstractQubesAPI):
self.enforce(self.dest.name == 'dom0')
self.enforce(not self.arg)
system_info = {'domains': {
domain.name: {
'tags': list(domain.tags),
'type': domain.__class__.__name__,
'template_for_dispvms':
getattr(domain, 'template_for_dispvms', False),
'default_dispvm': (domain.default_dispvm.name if
getattr(domain, 'default_dispvm', None) else None),
'icon': str(domain.label.icon),
'guivm': (domain.guivm.name if getattr(domain, 'guivm', None)
else None),
} for domain in self.app.domains
}}
system_info = get_system_info(self.app)
return json.dumps(system_info)