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:
commit
f1a5ca64fd
4
Makefile
4
Makefile
@ -152,6 +152,10 @@ endif
|
|||||||
ln -s qvm-device $(DESTDIR)/usr/bin/qvm-block
|
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-pci
|
||||||
ln -s qvm-device $(DESTDIR)/usr/bin/qvm-usb
|
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 tests
|
||||||
$(MAKE) install -C relaxng
|
$(MAKE) install -C relaxng
|
||||||
mkdir -p $(DESTDIR)/etc/qubes
|
mkdir -p $(DESTDIR)/etc/qubes
|
||||||
|
@ -819,7 +819,8 @@ class Backup(object):
|
|||||||
# Save date of last backup, only when backup succeeded
|
# Save date of last backup, only when backup succeeded
|
||||||
for qid, vm_info in files_to_backup.items():
|
for qid, vm_info in files_to_backup.items():
|
||||||
if vm_info.vm:
|
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()
|
self.app.save()
|
||||||
|
|
||||||
|
@ -513,12 +513,12 @@ class TC_90_QubesVM(QubesVMTestsMixin, qubes.tests.QubesTestCase):
|
|||||||
timestamp = datetime.datetime(2016, 1, 1, 12, 14, 2)
|
timestamp = datetime.datetime(2016, 1, 1, 12, 14, 2)
|
||||||
timestamp_str = timestamp.strftime('%s')
|
timestamp_str = timestamp.strftime('%s')
|
||||||
self.assertPropertyDefaultValue(vm, 'backup_timestamp', None)
|
self.assertPropertyDefaultValue(vm, 'backup_timestamp', None)
|
||||||
self.assertPropertyValue(vm, 'backup_timestamp', timestamp,
|
self.assertPropertyValue(vm, 'backup_timestamp', int(timestamp_str),
|
||||||
timestamp, timestamp_str)
|
int(timestamp_str), timestamp_str)
|
||||||
del vm.backup_timestamp
|
del vm.backup_timestamp
|
||||||
self.assertPropertyDefaultValue(vm, 'backup_timestamp', None)
|
self.assertPropertyDefaultValue(vm, 'backup_timestamp', None)
|
||||||
self.assertPropertyValue(vm, 'backup_timestamp', timestamp_str,
|
self.assertPropertyValue(vm, 'backup_timestamp', timestamp_str,
|
||||||
timestamp)
|
int(timestamp_str))
|
||||||
|
|
||||||
def test_401_backup_timestamp_invalid(self):
|
def test_401_backup_timestamp_invalid(self):
|
||||||
vm = self.get_vm()
|
vm = self.get_vm()
|
||||||
|
@ -24,7 +24,6 @@ from __future__ import absolute_import
|
|||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import base64
|
import base64
|
||||||
import datetime
|
|
||||||
import errno
|
import errno
|
||||||
import grp
|
import grp
|
||||||
import os
|
import os
|
||||||
@ -100,6 +99,11 @@ def _setter_virt_mode(self, prop, value):
|
|||||||
"pvh mode can't be set if pci devices are attached")
|
"pvh mode can't be set if pci devices are attached")
|
||||||
return value
|
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):
|
class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
|
||||||
'''Base functionality of Qubes VM shared between all VMs.
|
'''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',
|
virt_mode = qubes.property('virt_mode',
|
||||||
type=str, setter=_setter_virt_mode,
|
type=str, setter=_setter_virt_mode,
|
||||||
default='hvm',
|
default=_default_virt_mode,
|
||||||
doc='''Virtualisation mode: full virtualisation ("hvm"),
|
doc='''Virtualisation mode: full virtualisation ("hvm"),
|
||||||
or paravirtualisation ("pv")''')
|
or paravirtualisation ("pv"), or hybrid ("pvh")''')
|
||||||
|
|
||||||
installed_by_rpm = qubes.property('installed_by_rpm',
|
installed_by_rpm = qubes.property('installed_by_rpm',
|
||||||
type=bool, setter=qubes.property.bool,
|
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,
|
type=bool, setter=qubes.property.bool,
|
||||||
doc='If this domain is to be included in default backup.')
|
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,
|
backup_timestamp = qubes.property('backup_timestamp', default=None,
|
||||||
setter=(lambda self, prop, value:
|
type=int,
|
||||||
value if isinstance(value, datetime.datetime) else
|
doc='Time of last backup of the qube, in seconds since unix epoch')
|
||||||
datetime.datetime.fromtimestamp(int(value))),
|
|
||||||
saver=(lambda self, prop, value: value.strftime('%s')),
|
|
||||||
doc='FIXME')
|
|
||||||
|
|
||||||
default_dispvm = qubes.VMProperty('default_dispvm',
|
default_dispvm = qubes.VMProperty('default_dispvm',
|
||||||
load_stage=4,
|
load_stage=4,
|
||||||
@ -1766,10 +1766,11 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
|
|||||||
|
|
||||||
# miscellanous
|
# miscellanous
|
||||||
|
|
||||||
def get_start_time(self):
|
@qubes.stateless_property
|
||||||
|
def start_time(self):
|
||||||
'''Tell when machine was started.
|
'''Tell when machine was started.
|
||||||
|
|
||||||
:rtype: datetime.datetime
|
:rtype: float or None
|
||||||
'''
|
'''
|
||||||
if not self.is_running():
|
if not self.is_running():
|
||||||
return None
|
return None
|
||||||
@ -1778,7 +1779,7 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
|
|||||||
start_time = self.app.vmm.xs.read('',
|
start_time = self.app.vmm.xs.read('',
|
||||||
'/vm/{}/start_time'.format(self.uuid))
|
'/vm/{}/start_time'.format(self.uuid))
|
||||||
if start_time != '':
|
if start_time != '':
|
||||||
return datetime.datetime.fromtimestamp(float(start_time))
|
return float(start_time)
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -216,6 +216,7 @@ fi
|
|||||||
|
|
||||||
%{_mandir}/man1/qrexec-policy-graph.1*
|
%{_mandir}/man1/qrexec-policy-graph.1*
|
||||||
%{_mandir}/man1/qubes*.1*
|
%{_mandir}/man1/qubes*.1*
|
||||||
|
%{_mandir}/man1/qvm-*.1*
|
||||||
|
|
||||||
%dir %{python3_sitelib}/qubes-*.egg-info
|
%dir %{python3_sitelib}/qubes-*.egg-info
|
||||||
%{python3_sitelib}/qubes-*.egg-info/*
|
%{python3_sitelib}/qubes-*.egg-info/*
|
||||||
|
Loading…
Reference in New Issue
Block a user