diff options
-rwxr-xr-x | morphlib/app.py | 4 | ||||
-rw-r--r-- | morphlib/morphologyfactory.py | 3 | ||||
-rw-r--r-- | morphlib/morphologyfactory_tests.py | 12 |
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) + |