storage/kernels: refuse changes to 'rw' and 'revisions_to_keep'
This pool driver support only rw=False and revisions_to_keep=0 volumes. Since there is API for changing those properties dynamically, block it at pool driver level, instead of silently ignoring them.
This commit is contained in:
parent
376c8ec00d
commit
a0723a9e32
@ -23,18 +23,20 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
import qubes.exc
|
||||||
from qubes.storage import Pool, StoragePoolException, Volume
|
from qubes.storage import Pool, StoragePoolException, Volume
|
||||||
|
|
||||||
|
|
||||||
class LinuxModules(Volume):
|
class LinuxModules(Volume):
|
||||||
''' A volume representing a ro linux kernel '''
|
''' A volume representing a ro linux kernel '''
|
||||||
rw = False
|
|
||||||
|
|
||||||
def __init__(self, target_dir, kernel_version, **kwargs):
|
def __init__(self, target_dir, kernel_version, **kwargs):
|
||||||
kwargs['vid'] = ''
|
kwargs['vid'] = ''
|
||||||
super(LinuxModules, self).__init__(**kwargs)
|
super(LinuxModules, self).__init__(**kwargs)
|
||||||
self._kernel_version = kernel_version
|
self._kernel_version = kernel_version
|
||||||
self.target_dir = target_dir
|
self.target_dir = target_dir
|
||||||
|
assert self.revisions_to_keep == 0
|
||||||
|
assert self.rw is False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def vid(self):
|
def vid(self):
|
||||||
@ -104,6 +106,28 @@ class LinuxModules(Volume):
|
|||||||
def is_outdated(self):
|
def is_outdated(self):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@property
|
||||||
|
def revisions_to_keep(self):
|
||||||
|
return 0
|
||||||
|
|
||||||
|
@revisions_to_keep.setter
|
||||||
|
def revisions_to_keep(self, value):
|
||||||
|
# pylint: disable=no-self-use
|
||||||
|
if value:
|
||||||
|
raise qubes.exc.QubesValueError(
|
||||||
|
'LinuxModules supports only revisions_to_keep=0')
|
||||||
|
|
||||||
|
@property
|
||||||
|
def rw(self):
|
||||||
|
return False
|
||||||
|
|
||||||
|
@rw.setter
|
||||||
|
def rw(self, value):
|
||||||
|
# pylint: disable=no-self-use
|
||||||
|
if value:
|
||||||
|
raise qubes.exc.QubesValueError(
|
||||||
|
'LinuxModules supports only read-only volumes')
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -131,7 +155,7 @@ class LinuxKernel(Pool):
|
|||||||
|
|
||||||
def __init__(self, name=None, dir_path=None):
|
def __init__(self, name=None, dir_path=None):
|
||||||
assert dir_path, 'Missing dir_path'
|
assert dir_path, 'Missing dir_path'
|
||||||
super(LinuxKernel, self).__init__(name=name)
|
super(LinuxKernel, self).__init__(name=name, revisions_to_keep=0)
|
||||||
self.dir_path = dir_path
|
self.dir_path = dir_path
|
||||||
|
|
||||||
def init_volume(self, vm, volume_config):
|
def init_volume(self, vm, volume_config):
|
||||||
@ -167,6 +191,17 @@ class LinuxKernel(Pool):
|
|||||||
def setup(self):
|
def setup(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@property
|
||||||
|
def revisions_to_keep(self):
|
||||||
|
return 0
|
||||||
|
|
||||||
|
@revisions_to_keep.setter
|
||||||
|
def revisions_to_keep(self, value):
|
||||||
|
# pylint: disable=no-self-use
|
||||||
|
if value:
|
||||||
|
raise qubes.exc.QubesValueError(
|
||||||
|
'LinuxModules supports only revisions_to_keep=0')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def volumes(self):
|
def volumes(self):
|
||||||
''' Return all known kernel volumes '''
|
''' Return all known kernel volumes '''
|
||||||
|
Loading…
Reference in New Issue
Block a user