apt: fix disable_components w/ autoinstall
* The mixture of storage for disable_components in and out of the config dict was confusing and caused bugs, depending on the flow * disable_components now solely lives in the dict, like other items
This commit is contained in:
parent
ce624ad543
commit
5a2a7f5ad6
|
@ -19,6 +19,9 @@ apt:
|
|||
primary:
|
||||
- arches: [default]
|
||||
uri: "http://mymirror.local/repository/Apt/ubuntu/"
|
||||
disable_components:
|
||||
- non-free
|
||||
- restricted
|
||||
packages:
|
||||
- package1
|
||||
- package2
|
||||
|
|
|
@ -155,6 +155,8 @@ timeout --foreground 60 sh -c "LANG=C.UTF-8 python3 -m subiquity.cmd.tui --autoi
|
|||
--kernel-cmdline 'autoinstall' \
|
||||
--source-catalog=examples/install-sources.yaml"
|
||||
validate
|
||||
python3 scripts/check-yaml-fields.py .subiquity/var/log/installer/subiquity-curtin-apt.conf \
|
||||
apt.disable_components='[non-free, restricted]'
|
||||
python3 scripts/check-yaml-fields.py .subiquity/var/log/installer/subiquity-curtin-install.conf \
|
||||
debconf_selections.subiquity='"eek"' \
|
||||
storage.config[-1].options='"errors=remount-ro"'
|
||||
|
|
|
@ -31,6 +31,7 @@ log = logging.getLogger('subiquitycore.models.mirror')
|
|||
|
||||
|
||||
DEFAULT = {
|
||||
"disable_components": [],
|
||||
"preserve_sources_list": False,
|
||||
"primary": [
|
||||
{
|
||||
|
@ -51,12 +52,9 @@ class MirrorModel(object):
|
|||
self.config = copy.deepcopy(DEFAULT)
|
||||
self.architecture = get_architecture()
|
||||
self.default_mirror = self.get_mirror()
|
||||
self.disable_components = set()
|
||||
|
||||
def get_apt_config(self):
|
||||
config = copy.deepcopy(self.config)
|
||||
config['disable_components'] = list(self.disable_components)
|
||||
return config
|
||||
return copy.deepcopy(self.config)
|
||||
|
||||
def mirror_is_default(self):
|
||||
return self.get_mirror() == self.default_mirror
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
|
||||
import unittest
|
||||
|
||||
from curtin.config import merge_config
|
||||
|
||||
from subiquity.models.mirror import (
|
||||
MirrorModel,
|
||||
)
|
||||
|
@ -47,8 +49,10 @@ class TestMirrorModel(unittest.TestCase):
|
|||
config = MirrorModel().get_apt_config()
|
||||
self.assertEqual([], config['disable_components'])
|
||||
|
||||
def test_set_disable_components(self):
|
||||
def test_from_autoinstall(self):
|
||||
# autoinstall loads to the config directly
|
||||
model = MirrorModel()
|
||||
model.disable_components = set(['universe'])
|
||||
data = {'disable_components': ['non-free']}
|
||||
merge_config(model.config, data)
|
||||
config = model.get_apt_config()
|
||||
self.assertEqual(['universe'], config['disable_components'])
|
||||
self.assertEqual(['non-free'], config['disable_components'])
|
||||
|
|
|
@ -129,7 +129,7 @@ class MirrorController(SubiquityController):
|
|||
await self.configured()
|
||||
|
||||
async def disable_components_GET(self) -> List[str]:
|
||||
return list(self.model.disable_components)
|
||||
return self.model.config.get('disable_components', [])
|
||||
|
||||
async def disable_components_POST(self, data: List[str]):
|
||||
self.model.disable_components = set(data)
|
||||
self.model.config['disable_components'] = data
|
||||
|
|
Loading…
Reference in New Issue