Update $IMAGE_ELEMENT after excluding elements

The $IMAGE_ELEMENT environment variable should be updated after
processing excluded elements so that it's value is the accurate list of
elements included in the instack run. Some elements rely on this
environment variable (such as package-installs).

blueprint undercloud-elements
Closes-Bug: 1578357

Change-Id: I96afd9476eda05638ef631f225b216374586a386
This commit is contained in:
James Slagle 2016-05-04 15:18:33 -04:00
parent e81520b4d3
commit 66612df5d5
2 changed files with 11 additions and 1 deletions

View File

@ -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.

View File

@ -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__)