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 qubes.exc | ||||
| from qubes.storage import Pool, StoragePoolException, Volume | ||||
| 
 | ||||
| 
 | ||||
| class LinuxModules(Volume): | ||||
|     ''' A volume representing a ro linux kernel ''' | ||||
|     rw = False | ||||
| 
 | ||||
|     def __init__(self, target_dir, kernel_version, **kwargs): | ||||
|         kwargs['vid'] = '' | ||||
|         super(LinuxModules, self).__init__(**kwargs) | ||||
|         self._kernel_version = kernel_version | ||||
|         self.target_dir = target_dir | ||||
|         assert self.revisions_to_keep == 0 | ||||
|         assert self.rw is False | ||||
| 
 | ||||
|     @property | ||||
|     def vid(self): | ||||
| @ -104,6 +106,28 @@ class LinuxModules(Volume): | ||||
|     def is_outdated(self): | ||||
|         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): | ||||
|         return self | ||||
| 
 | ||||
| @ -131,7 +155,7 @@ class LinuxKernel(Pool): | ||||
| 
 | ||||
|     def __init__(self, name=None, dir_path=None): | ||||
|         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 | ||||
| 
 | ||||
|     def init_volume(self, vm, volume_config): | ||||
| @ -167,6 +191,17 @@ class LinuxKernel(Pool): | ||||
|     def setup(self): | ||||
|         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 | ||||
|     def volumes(self): | ||||
|         ''' Return all known kernel volumes ''' | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Marek Marczykowski-Górecki
						Marek Marczykowski-Górecki