summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xmorphlib/app.py4
-rw-r--r--morphlib/morphologyfactory.py3
-rw-r--r--morphlib/morphologyfactory_tests.py12
3 files changed, 16 insertions, 3 deletions
diff --git a/morphlib/app.py b/morphlib/app.py
index 96c98cf7..b478989e 100755
--- a/morphlib/app.py
+++ b/morphlib/app.py
@@ -288,9 +288,7 @@ class BuildCommand(object):
name=artifact.name)
copy(self.rac.get(artifact), self.lac.put(artifact))
- # For strata we also need the metadata in the local cache.
- # FIXME: why do we need it and can we fix things so we don't?
- if artifact.source.morphology['kind'] == 'stratum':
+ if artifact.source.morphology.needs_artifact_metadata_cached:
if not self.lac.has_artifact_metadata(artifact, 'meta'):
self.app.status(msg='Fetching to local cache: '
'artifact metadata %(name)s',
diff --git a/morphlib/morphologyfactory.py b/morphlib/morphologyfactory.py
index ac743f76..4f9f7522 100644
--- a/morphlib/morphologyfactory.py
+++ b/morphlib/morphologyfactory.py
@@ -116,6 +116,7 @@ class MorphologyFactory(object):
morphology.builds_artifacts = [name + '-rootfs']
morphology.needs_staging_area = False
+ morphology.needs_artifact_metadata_cached = False
def _check_and_tweak_stratum(self, morphology, reponame, sha1, filename):
'''Check and tweak a stratum morphology.'''
@@ -131,6 +132,7 @@ class MorphologyFactory(object):
morphology.builds_artifacts = [morphology['name']]
morphology.needs_staging_area = False
+ morphology.needs_artifact_metadata_cached = True
def _check_and_tweak_chunk(self, morphology, reponame, sha1, filename):
'''Check and tweak a chunk morphology.'''
@@ -141,4 +143,5 @@ class MorphologyFactory(object):
morphology.builds_artifacts = [morphology['name']]
morphology.needs_staging_area = True
+ morphology.needs_artifact_metadata_cached = False
diff --git a/morphlib/morphologyfactory_tests.py b/morphlib/morphologyfactory_tests.py
index 4aa3c018..91768843 100644
--- a/morphlib/morphologyfactory_tests.py
+++ b/morphlib/morphologyfactory_tests.py
@@ -209,3 +209,15 @@ class MorphologyFactoryTests(unittest.TestCase):
morph = self.mf.get_morphology('reponame', 'sha1', 'system.morph')
self.assertEqual(morph.needs_staging_area, False)
+ def test_does_not_set_needs_artifact_metadata_cached_for_chunk(self):
+ morph = self.mf.get_morphology('reponame', 'sha1', 'chunk.morph')
+ self.assertEqual(morph.needs_artifact_metadata_cached, False)
+
+ def test_sets_artifact_metadata_cached_for_stratum(self):
+ morph = self.mf.get_morphology('reponame', 'sha1', 'stratum.morph')
+ self.assertEqual(morph.needs_artifact_metadata_cached, True)
+
+ def test_does_not_set_artifact_metadata_cached_for_system(self):
+ morph = self.mf.get_morphology('reponame', 'sha1', 'system.morph')
+ self.assertEqual(morph.needs_artifact_metadata_cached, False)
+