diff --git a/instack/runner.py b/instack/runner.py index 75555d7..6c6122e 100644 --- a/instack/runner.py +++ b/instack/runner.py @@ -132,7 +132,8 @@ class ElementRunner(object): all_elements = element_dependencies.expand_dependencies( self.elements, ':'.join(self.element_paths)) self.elements = all_elements - os.environ['IMAGE_ELEMENT'] = ' '.join([x for x in self.elements]) + os.environ['IMAGE_ELEMENT'] = ' '.join( + [x for x in sorted(self.elements)]) LOG.info("List of all elements and dependencies: %s" % ' '.join(list(self.elements))) @@ -142,6 +143,11 @@ class ElementRunner(object): if elem in self.elements: LOG.info("Excluding element %s" % elem) self.elements.remove(elem) + # Need to redefine OS.environ['IMAGE_ELEMENT'] after removing excludes + os.environ['IMAGE_ELEMENT'] = ' '.join( + [x for x in sorted(self.elements)]) + LOG.info("List of all elements and dependencies after excludes: %s" % + ' '.join(list(self.elements))) def run_hook(self, hook): """Run a hook on the current system. diff --git a/instack/tests/test_runner.py b/instack/tests/test_runner.py index dcf71e4..e87d9d3 100644 --- a/instack/tests/test_runner.py +++ b/instack/tests/test_runner.py @@ -74,10 +74,14 @@ class TestRunner(testtools.TestCase): self.runner.copy_elements() self.runner.load_dependencies() + self.assertEqual(os.environ['IMAGE_ELEMENT'], + 'dep1 dep2 echo os') self.runner.process_exclude_elements() self.assertEqual(len(self.runner.elements), 3) self.assertFalse('dep1' in self.runner.elements) + self.assertEqual(os.environ['IMAGE_ELEMENT'], + 'dep2 echo os') def test_process_path(self): cwd = os.path.dirname(__file__)