Merge remote-tracking branch 'qubesos/pr/228'
* qubesos/pr/228: storage/lvm: filter out warning about intended over-provisioning tests: fix getting kernel package version inside VM tests/extra: add start_guid option to VMWrapper vm/qubesvm: fire 'domain-start-failed' event even if fail was early vm/qubesvm: check if all required devices are available before start storage/lvm: fix reporting lvm command error storage/lvm: save pool's revision_to_keep property
This commit is contained in:
commit
7f1e2741ec
@ -102,7 +102,8 @@ class ThinPool(qubes.storage.Pool):
|
||||
'name': self.name,
|
||||
'volume_group': self.volume_group,
|
||||
'thin_pool': self.thin_pool,
|
||||
'driver': ThinPool.driver
|
||||
'driver': ThinPool.driver,
|
||||
'revisions_to_keep': self.revisions_to_keep,
|
||||
}
|
||||
|
||||
def destroy(self):
|
||||
@ -702,6 +703,12 @@ def qubes_lvm(cmd, log=logging.getLogger('qubes.storage.lvm')):
|
||||
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
|
||||
close_fds=True, env=environ)
|
||||
out, err = p.communicate()
|
||||
err = err.decode()
|
||||
# Filter out warning about intended over-provisioning.
|
||||
# Upstream discussion about missing option to silence it:
|
||||
# https://bugzilla.redhat.com/1347008
|
||||
err = '\n'.join(line for line in err.splitlines()
|
||||
if 'exceeds the size of thin pool' not in line)
|
||||
return_code = p.returncode
|
||||
if out:
|
||||
log.debug(out)
|
||||
@ -709,6 +716,7 @@ def qubes_lvm(cmd, log=logging.getLogger('qubes.storage.lvm')):
|
||||
log.warning(err)
|
||||
elif return_code != 0:
|
||||
assert err, "Command exited unsuccessful, but printed nothing to stderr"
|
||||
err = err.replace('%', '%%')
|
||||
raise qubes.storage.StoragePoolException(err)
|
||||
return True
|
||||
|
||||
|
@ -66,8 +66,9 @@ class VMWrapper(object):
|
||||
def __hash__(self):
|
||||
return hash(self._vm)
|
||||
|
||||
def start(self):
|
||||
return self._loop.run_until_complete(self._vm.start())
|
||||
def start(self, start_guid=True):
|
||||
return self._loop.run_until_complete(
|
||||
self._vm.start(start_guid=start_guid))
|
||||
|
||||
def shutdown(self):
|
||||
return self._loop.run_until_complete(self._vm.shutdown())
|
||||
|
@ -70,7 +70,7 @@ class TC_40_PVGrub(object):
|
||||
|
||||
def get_kernel_version(self, vm):
|
||||
if self.template.startswith('fedora-'):
|
||||
cmd_get_kernel_version = 'rpm -q kernel-core|sort -n|tail -1|' \
|
||||
cmd_get_kernel_version = 'rpm -q kernel-core|sort -V|tail -1|' \
|
||||
'cut -d - -f 3-'
|
||||
elif self.template.startswith('debian-'):
|
||||
cmd_get_kernel_version = \
|
||||
|
@ -912,9 +912,20 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
|
||||
|
||||
self.log.info('Starting {}'.format(self.name))
|
||||
|
||||
yield from self.fire_event_async('domain-pre-start',
|
||||
pre_event=True,
|
||||
start_guid=start_guid, mem_required=mem_required)
|
||||
try:
|
||||
yield from self.fire_event_async('domain-pre-start',
|
||||
pre_event=True,
|
||||
start_guid=start_guid, mem_required=mem_required)
|
||||
except Exception as exc:
|
||||
yield from self.fire_event_async('domain-start-failed',
|
||||
reason=str(exc))
|
||||
raise
|
||||
|
||||
for devclass in self.devices:
|
||||
for dev in self.devices[devclass].persistent():
|
||||
if isinstance(dev, qubes.devices.UnknownDevice):
|
||||
raise qubes.exc.QubesException(
|
||||
'{} device {} not available'.format(devclass, dev))
|
||||
|
||||
qmemman_client = None
|
||||
try:
|
||||
|
Loading…
Reference in New Issue
Block a user