app: uncouple pool setup from loading initial configuration
And ensure that setup is called on every type of these pools, not just lvm_thin.
This commit is contained in:
parent
8eb9c64f20
commit
53ef5ed431
23
qubes/app.py
23
qubes/app.py
@ -21,6 +21,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
import collections
|
import collections
|
||||||
|
import copy
|
||||||
import errno
|
import errno
|
||||||
import functools
|
import functools
|
||||||
import grp
|
import grp
|
||||||
@ -1064,15 +1065,20 @@ class Qubes(qubes.PropertyHolder):
|
|||||||
}
|
}
|
||||||
assert max(self.labels.keys()) == qubes.config.max_default_label
|
assert max(self.labels.keys()) == qubes.config.max_default_label
|
||||||
|
|
||||||
|
pool_configs = copy.deepcopy(qubes.config.defaults['pool_configs'])
|
||||||
|
|
||||||
root_volume_group, root_thin_pool = \
|
root_volume_group, root_thin_pool = \
|
||||||
qubes.storage.DirectoryThinPool.thin_pool('/')
|
qubes.storage.DirectoryThinPool.thin_pool('/')
|
||||||
|
|
||||||
if root_thin_pool:
|
if root_thin_pool:
|
||||||
self.add_pool(
|
lvm_config = {
|
||||||
volume_group=root_volume_group, thin_pool=root_thin_pool,
|
'name': 'lvm',
|
||||||
name='lvm', driver='lvm_thin')
|
'driver': 'lvm_thin',
|
||||||
# pool based on /var/lib/qubes will be created here:
|
'volume_group': root_volume_group,
|
||||||
for name, config in qubes.config.defaults['pool_configs'].items():
|
'thin_pool': root_thin_pool
|
||||||
|
}
|
||||||
|
pool_configs[lvm_config['name']] = lvm_config
|
||||||
|
|
||||||
|
for name, config in pool_configs.items():
|
||||||
self.pools[name] = self._get_pool(**config)
|
self.pools[name] = self._get_pool(**config)
|
||||||
|
|
||||||
self.default_pool_kernel = 'linux-kernel'
|
self.default_pool_kernel = 'linux-kernel'
|
||||||
@ -1170,6 +1176,11 @@ class Qubes(qubes.PropertyHolder):
|
|||||||
|
|
||||||
raise KeyError(label)
|
raise KeyError(label)
|
||||||
|
|
||||||
|
def setup_pools(self):
|
||||||
|
""" Run implementation specific setup for each storage pool. """
|
||||||
|
for pool in self.pools.values():
|
||||||
|
pool.setup()
|
||||||
|
|
||||||
def add_pool(self, name, **kwargs):
|
def add_pool(self, name, **kwargs):
|
||||||
""" Add a storage pool to config."""
|
""" Add a storage pool to config."""
|
||||||
|
|
||||||
|
@ -60,6 +60,7 @@ class AdminAPITestCase(qubes.tests.QubesTestCase):
|
|||||||
app = qubes.Qubes('/tmp/qubes-test.xml', load=False)
|
app = qubes.Qubes('/tmp/qubes-test.xml', load=False)
|
||||||
app.vmm = unittest.mock.Mock(spec=qubes.app.VMMConnection)
|
app.vmm = unittest.mock.Mock(spec=qubes.app.VMMConnection)
|
||||||
app.load_initial_values()
|
app.load_initial_values()
|
||||||
|
app.setup_pools()
|
||||||
app.default_kernel = '1.0'
|
app.default_kernel = '1.0'
|
||||||
app.default_netvm = None
|
app.default_netvm = None
|
||||||
self.template = app.add_new_vm('TemplateVM', label='black',
|
self.template = app.add_new_vm('TemplateVM', label='black',
|
||||||
|
@ -38,7 +38,7 @@ def main(args=None):
|
|||||||
|
|
||||||
args = parser.parse_args(args)
|
args = parser.parse_args(args)
|
||||||
qubes.Qubes.create_empty_store(args.app,
|
qubes.Qubes.create_empty_store(args.app,
|
||||||
offline_mode=args.offline_mode)
|
offline_mode=args.offline_mode).setup_pools()
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user