pass install source as an argument to curtin install, not via config
This commit is contained in:
parent
072d2b233a
commit
996a2125f2
|
@ -87,7 +87,7 @@ class SourceModel:
|
||||||
if self.current is None:
|
if self.current is None:
|
||||||
self.current = self.sources[0]
|
self.current = self.sources[0]
|
||||||
|
|
||||||
def render(self):
|
def get_source(self):
|
||||||
path = os.path.join(self._dir, self.current.path)
|
path = os.path.join(self._dir, self.current.path)
|
||||||
if self.current.preinstalled_langs:
|
if self.current.preinstalled_langs:
|
||||||
base, ext = os.path.splitext(path)
|
base, ext = os.path.splitext(path)
|
||||||
|
@ -97,8 +97,7 @@ class SourceModel:
|
||||||
suffix = 'no-languages'
|
suffix = 'no-languages'
|
||||||
path = base + '.' + suffix + ext
|
path = base + '.' + suffix + ext
|
||||||
scheme = self.current.type
|
scheme = self.current.type
|
||||||
return {
|
return f'{scheme}://{path}'
|
||||||
'sources': {
|
|
||||||
'ubuntu00': f'{scheme}://{path}'
|
def render(self):
|
||||||
},
|
return {}
|
||||||
}
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ def make_entry(**fields):
|
||||||
return raw
|
return raw
|
||||||
|
|
||||||
|
|
||||||
class TestMirrorModel(unittest.TestCase):
|
class TestSourceModel(unittest.TestCase):
|
||||||
|
|
||||||
def tdir(self):
|
def tdir(self):
|
||||||
tdir = tempfile.mkdtemp()
|
tdir = tempfile.mkdtemp()
|
||||||
|
@ -88,7 +88,7 @@ class TestMirrorModel(unittest.TestCase):
|
||||||
self.write_and_load_entries(model, entries)
|
self.write_and_load_entries(model, entries)
|
||||||
self.assertEqual(model.current.id, 'id2')
|
self.assertEqual(model.current.id, 'id2')
|
||||||
|
|
||||||
def test_render_absolute(self):
|
def test_get_source_absolute(self):
|
||||||
entry = make_entry(
|
entry = make_entry(
|
||||||
type='scheme',
|
type='scheme',
|
||||||
path='/foo/bar/baz',
|
path='/foo/bar/baz',
|
||||||
|
@ -96,9 +96,9 @@ class TestMirrorModel(unittest.TestCase):
|
||||||
model = SourceModel()
|
model = SourceModel()
|
||||||
self.write_and_load_entries(model, [entry])
|
self.write_and_load_entries(model, [entry])
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
model.render(), {'sources': {'ubuntu00': 'scheme:///foo/bar/baz'}})
|
model.get_source(), 'scheme:///foo/bar/baz')
|
||||||
|
|
||||||
def test_render_relative(self):
|
def test_get_source_relative(self):
|
||||||
dir = self.tdir()
|
dir = self.tdir()
|
||||||
entry = make_entry(
|
entry = make_entry(
|
||||||
type='scheme',
|
type='scheme',
|
||||||
|
@ -107,11 +107,15 @@ class TestMirrorModel(unittest.TestCase):
|
||||||
model = SourceModel()
|
model = SourceModel()
|
||||||
self.write_and_load_entries(model, [entry], dir)
|
self.write_and_load_entries(model, [entry], dir)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
model.render(),
|
model.get_source(),
|
||||||
{'sources': {'ubuntu00': f'scheme://{dir}/foo/bar/baz'}})
|
f'scheme://{dir}/foo/bar/baz')
|
||||||
|
|
||||||
def test_render_initial(self):
|
def test_get_source_initial(self):
|
||||||
model = SourceModel()
|
model = SourceModel()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
model.render(),
|
model.get_source(),
|
||||||
{'sources': {'ubuntu00': 'cp:///media/filesystem'}})
|
'cp:///media/filesystem')
|
||||||
|
|
||||||
|
def test_render(self):
|
||||||
|
model = SourceModel()
|
||||||
|
self.assertEqual(model.render(), {})
|
||||||
|
|
|
@ -172,10 +172,10 @@ class TestSubiquityModel(unittest.TestCase):
|
||||||
netplan = yaml.safe_load(netplan_content)
|
netplan = yaml.safe_load(netplan_content)
|
||||||
self.assertConfigHasVal(netplan, 'network.version', 2)
|
self.assertConfigHasVal(netplan, 'network.version', 2)
|
||||||
|
|
||||||
def test_has_sources(self):
|
def test_sources(self):
|
||||||
model = self.make_model()
|
model = self.make_model()
|
||||||
config = model.render()
|
config = model.render()
|
||||||
self.assertIn('sources', config)
|
self.assertNotIn('sources', config)
|
||||||
|
|
||||||
def test_mirror(self):
|
def test_mirror(self):
|
||||||
model = self.make_model()
|
model = self.make_model()
|
||||||
|
|
|
@ -19,11 +19,12 @@ import os
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
|
from curtin.commands.extract import get_handler_for_source
|
||||||
from curtin.commands.install import (
|
from curtin.commands.install import (
|
||||||
ERROR_TARFILE,
|
ERROR_TARFILE,
|
||||||
INSTALL_LOG,
|
INSTALL_LOG,
|
||||||
)
|
)
|
||||||
from curtin.util import write_file
|
from curtin.util import sanitize_source, write_file
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
|
@ -130,9 +131,9 @@ class InstallController(SubiquityController):
|
||||||
|
|
||||||
@with_context(
|
@with_context(
|
||||||
description="installing system", level="INFO", childlevel="DEBUG")
|
description="installing system", level="INFO", childlevel="DEBUG")
|
||||||
async def curtin_install(self, *, context):
|
async def curtin_install(self, *, context, source):
|
||||||
await run_curtin_command(
|
await run_curtin_command(
|
||||||
self.app, context, 'install', config=self.write_config())
|
self.app, context, 'install', source, config=self.write_config())
|
||||||
|
|
||||||
@with_context()
|
@with_context()
|
||||||
async def install(self, *, context):
|
async def install(self, *, context):
|
||||||
|
@ -154,11 +155,19 @@ class InstallController(SubiquityController):
|
||||||
|
|
||||||
self.app.update_state(ApplicationState.RUNNING)
|
self.app.update_state(ApplicationState.RUNNING)
|
||||||
|
|
||||||
|
handler = get_handler_for_source(
|
||||||
|
sanitize_source(self.model.source.get_source()))
|
||||||
|
if self.app.opts.dry_run:
|
||||||
|
path = '/'
|
||||||
|
else:
|
||||||
|
path = handler.setup()
|
||||||
|
|
||||||
if os.path.exists(self.model.target):
|
if os.path.exists(self.model.target):
|
||||||
await self.unmount_target(
|
await self.unmount_target(
|
||||||
context=context, target=self.model.target)
|
context=context, target=self.model.target)
|
||||||
|
|
||||||
await self.curtin_install(context=context)
|
await self.curtin_install(
|
||||||
|
context=context, source='cp://' + path)
|
||||||
|
|
||||||
self.app.update_state(ApplicationState.POST_WAIT)
|
self.app.update_state(ApplicationState.POST_WAIT)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue