[live-media] Use install tree from another variant
Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
0c4bd42f80
commit
6ec151cde2
@ -674,6 +674,7 @@ Live Media Settings
|
|||||||
* ``repo`` (*[str]*) -- external repo
|
* ``repo`` (*[str]*) -- external repo
|
||||||
* ``repo_from`` (*[str]*) -- list of variants to take extra repos from
|
* ``repo_from`` (*[str]*) -- list of variants to take extra repos from
|
||||||
* ``title`` (*str*)
|
* ``title`` (*str*)
|
||||||
|
* ``install_tree_from`` (*str*) -- variant to take install tree from
|
||||||
|
|
||||||
|
|
||||||
Image Build Settings
|
Image Build Settings
|
||||||
|
@ -65,6 +65,20 @@ class LiveMediaPhase(PhaseBase):
|
|||||||
return '%s.%s' % (self.compose.compose_date, self.compose.compose_respin)
|
return '%s.%s' % (self.compose.compose_date, self.compose.compose_respin)
|
||||||
return image_conf.get('release', None)
|
return image_conf.get('release', None)
|
||||||
|
|
||||||
|
def _get_install_tree(self, image_conf, variant):
|
||||||
|
if 'install_tree_from' in image_conf:
|
||||||
|
variant_uid = image_conf['install_tree_from']
|
||||||
|
try:
|
||||||
|
variant = self.compose.variants[variant_uid]
|
||||||
|
except KeyError:
|
||||||
|
raise RuntimeError(
|
||||||
|
'There is no variant %s to get repo from when building live media for %s.'
|
||||||
|
% (variant_uid, variant.uid))
|
||||||
|
return translate_path(
|
||||||
|
self.compose,
|
||||||
|
self.compose.paths.compose.os_tree('$arch', variant)
|
||||||
|
)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
for variant in self.compose.get_variants():
|
for variant in self.compose.get_variants():
|
||||||
arches = set([x for x in variant.arches if x != 'src'])
|
arches = set([x for x in variant.arches if x != 'src'])
|
||||||
@ -82,10 +96,7 @@ class LiveMediaPhase(PhaseBase):
|
|||||||
'name': image_conf['name'],
|
'name': image_conf['name'],
|
||||||
'title': image_conf.get('title'),
|
'title': image_conf.get('title'),
|
||||||
'repo': self._get_repos(image_conf, variant),
|
'repo': self._get_repos(image_conf, variant),
|
||||||
'install_tree': translate_path(
|
'install_tree': self._get_install_tree(image_conf, variant),
|
||||||
self.compose,
|
|
||||||
self.compose.paths.compose.os_tree('$arch', variant, create_dir=False)
|
|
||||||
),
|
|
||||||
'version': image_conf['version'],
|
'version': image_conf['version'],
|
||||||
}
|
}
|
||||||
self.pool.add(LiveMediaThread(self.pool))
|
self.pool.add(LiveMediaThread(self.pool))
|
||||||
|
@ -103,6 +103,52 @@ class TestLiveMediaPhase(unittest.TestCase):
|
|||||||
'version': 'Rawhide',
|
'version': 'Rawhide',
|
||||||
}))])
|
}))])
|
||||||
|
|
||||||
|
@mock.patch('pungi.phases.livemedia_phase.ThreadPool')
|
||||||
|
def test_live_media_non_existing_install_tree(self, ThreadPool):
|
||||||
|
compose = _DummyCompose({
|
||||||
|
'live_media': {
|
||||||
|
'^Server$': [
|
||||||
|
{
|
||||||
|
'target': 'f24',
|
||||||
|
'kickstart': 'file.ks',
|
||||||
|
'ksurl': 'git://example.com/repo.git',
|
||||||
|
'name': 'Fedora Server Live',
|
||||||
|
'version': 'Rawhide',
|
||||||
|
'install_tree_from': 'Missing',
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
'koji_profile': 'koji',
|
||||||
|
})
|
||||||
|
|
||||||
|
phase = LiveMediaPhase(compose)
|
||||||
|
|
||||||
|
with self.assertRaisesRegexp(RuntimeError, r'no.+Missing.+when building.+Server'):
|
||||||
|
phase.run()
|
||||||
|
|
||||||
|
@mock.patch('pungi.phases.livemedia_phase.ThreadPool')
|
||||||
|
def test_live_media_non_existing_repo(self, ThreadPool):
|
||||||
|
compose = _DummyCompose({
|
||||||
|
'live_media': {
|
||||||
|
'^Server$': [
|
||||||
|
{
|
||||||
|
'target': 'f24',
|
||||||
|
'kickstart': 'file.ks',
|
||||||
|
'ksurl': 'git://example.com/repo.git',
|
||||||
|
'name': 'Fedora Server Live',
|
||||||
|
'version': 'Rawhide',
|
||||||
|
'repo_from': 'Missing',
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
'koji_profile': 'koji',
|
||||||
|
})
|
||||||
|
|
||||||
|
phase = LiveMediaPhase(compose)
|
||||||
|
|
||||||
|
with self.assertRaisesRegexp(RuntimeError, r'no.+Missing.+when building.+Server'):
|
||||||
|
phase.run()
|
||||||
|
|
||||||
@mock.patch('pungi.phases.livemedia_phase.resolve_git_url')
|
@mock.patch('pungi.phases.livemedia_phase.resolve_git_url')
|
||||||
@mock.patch('pungi.phases.livemedia_phase.ThreadPool')
|
@mock.patch('pungi.phases.livemedia_phase.ThreadPool')
|
||||||
def test_live_media_full(self, ThreadPool, resolve_git_url):
|
def test_live_media_full(self, ThreadPool, resolve_git_url):
|
||||||
@ -123,6 +169,7 @@ class TestLiveMediaPhase(unittest.TestCase):
|
|||||||
'ksversion': '24',
|
'ksversion': '24',
|
||||||
'release': None,
|
'release': None,
|
||||||
'version': 'Rawhide',
|
'version': 'Rawhide',
|
||||||
|
'install_tree_from': 'Everything',
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -151,7 +198,7 @@ class TestLiveMediaPhase(unittest.TestCase):
|
|||||||
'skip_tag': True,
|
'skip_tag': True,
|
||||||
'target': 'f24',
|
'target': 'f24',
|
||||||
'title': 'Custom Title',
|
'title': 'Custom Title',
|
||||||
'install_tree': '/ostree/$arch/Server',
|
'install_tree': '/ostree/$arch/Everything',
|
||||||
'version': 'Rawhide',
|
'version': 'Rawhide',
|
||||||
}))])
|
}))])
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user