Merge remote-tracking branch 'qubesos/pr/180'

* qubesos/pr/180:
  vm/qubesvm: default to PVH unless PCI devices are assigned
  vm/qubesvm: expose 'start_time' property over Admin API
  vm/qubesvm: revert backup_timestamp to '%s' format
  doc: link qvm-device man page for qvm-block, qvm-pci, qvm-usb
This commit is contained in:
Marek Marczykowski-Górecki 2018-01-15 04:22:28 +01:00
commit f1a5ca64fd
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724
5 changed files with 23 additions and 16 deletions

View File

@ -152,6 +152,10 @@ endif
ln -s qvm-device $(DESTDIR)/usr/bin/qvm-block
ln -s qvm-device $(DESTDIR)/usr/bin/qvm-pci
ln -s qvm-device $(DESTDIR)/usr/bin/qvm-usb
install -d $(DESTDIR)/usr/share/man/man1
ln -s qvm-device.1.gz $(DESTDIR)/usr/share/man/man1/qvm-block.1.gz
ln -s qvm-device.1.gz $(DESTDIR)/usr/share/man/man1/qvm-pci.1.gz
ln -s qvm-device.1.gz $(DESTDIR)/usr/share/man/man1/qvm-usb.1.gz
# $(MAKE) install -C tests
$(MAKE) install -C relaxng
mkdir -p $(DESTDIR)/etc/qubes

View File

@ -819,7 +819,8 @@ class Backup(object):
# Save date of last backup, only when backup succeeded
for qid, vm_info in files_to_backup.items():
if vm_info.vm:
vm_info.vm.backup_timestamp = datetime.datetime.now()
vm_info.vm.backup_timestamp = \
int(datetime.datetime.now().strftime('%s'))
self.app.save()

View File

@ -513,12 +513,12 @@ class TC_90_QubesVM(QubesVMTestsMixin, qubes.tests.QubesTestCase):
timestamp = datetime.datetime(2016, 1, 1, 12, 14, 2)
timestamp_str = timestamp.strftime('%s')
self.assertPropertyDefaultValue(vm, 'backup_timestamp', None)
self.assertPropertyValue(vm, 'backup_timestamp', timestamp,
timestamp, timestamp_str)
self.assertPropertyValue(vm, 'backup_timestamp', int(timestamp_str),
int(timestamp_str), timestamp_str)
del vm.backup_timestamp
self.assertPropertyDefaultValue(vm, 'backup_timestamp', None)
self.assertPropertyValue(vm, 'backup_timestamp', timestamp_str,
timestamp)
int(timestamp_str))
def test_401_backup_timestamp_invalid(self):
vm = self.get_vm()

View File

@ -24,7 +24,6 @@ from __future__ import absolute_import
import asyncio
import base64
import datetime
import errno
import grp
import os
@ -100,6 +99,11 @@ def _setter_virt_mode(self, prop, value):
"pvh mode can't be set if pci devices are attached")
return value
def _default_virt_mode(self):
if self.devices['pci'].persistent():
return 'hvm'
return 'pvh'
class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
'''Base functionality of Qubes VM shared between all VMs.
@ -386,9 +390,9 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
virt_mode = qubes.property('virt_mode',
type=str, setter=_setter_virt_mode,
default='hvm',
default=_default_virt_mode,
doc='''Virtualisation mode: full virtualisation ("hvm"),
or paravirtualisation ("pv")''')
or paravirtualisation ("pv"), or hybrid ("pvh")''')
installed_by_rpm = qubes.property('installed_by_rpm',
type=bool, setter=qubes.property.bool,
@ -476,13 +480,9 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
type=bool, setter=qubes.property.bool,
doc='If this domain is to be included in default backup.')
# format got changed from %s to str(datetime.datetime)
backup_timestamp = qubes.property('backup_timestamp', default=None,
setter=(lambda self, prop, value:
value if isinstance(value, datetime.datetime) else
datetime.datetime.fromtimestamp(int(value))),
saver=(lambda self, prop, value: value.strftime('%s')),
doc='FIXME')
type=int,
doc='Time of last backup of the qube, in seconds since unix epoch')
default_dispvm = qubes.VMProperty('default_dispvm',
load_stage=4,
@ -1766,10 +1766,11 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
# miscellanous
def get_start_time(self):
@qubes.stateless_property
def start_time(self):
'''Tell when machine was started.
:rtype: datetime.datetime
:rtype: float or None
'''
if not self.is_running():
return None
@ -1778,7 +1779,7 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
start_time = self.app.vmm.xs.read('',
'/vm/{}/start_time'.format(self.uuid))
if start_time != '':
return datetime.datetime.fromtimestamp(float(start_time))
return float(start_time)
return None

View File

@ -216,6 +216,7 @@ fi
%{_mandir}/man1/qrexec-policy-graph.1*
%{_mandir}/man1/qubes*.1*
%{_mandir}/man1/qvm-*.1*
%dir %{python3_sitelib}/qubes-*.egg-info
%{python3_sitelib}/qubes-*.egg-info/*