Merge branch 'issue_dependency-inheritance' of https://github.com/asteven/cdist

This commit is contained in:
Nico Schottelius 2012-04-27 11:16:28 +02:00
commit d3df37920d
1 changed files with 14 additions and 5 deletions

View File

@ -160,10 +160,19 @@ class Emulator(object):
def record_auto_requirements(self): def record_auto_requirements(self):
"""An object shall automatically depend on all objects that it defined in it's type manifest. """An object shall automatically depend on all objects that it defined in it's type manifest.
""" """
# __object_name is the name of the object whose type manifest is currenlty executed # __object_name is the name of the object whose type manifest is currently executed
__object_name = os.environ.get('__object_name', None) __object_name = os.environ.get('__object_name', None)
if __object_name: if __object_name:
_object = self.cdist_object.object_from_name(__object_name) # The object whose type manifest is currently run
# prevent circular dependencies parent = self.cdist_object.object_from_name(__object_name)
if not _object.name in self.cdist_object.requirements: # The object currently being defined
_object.requirements.append(self.cdist_object.name) current_object = self.cdist_object
# current_object shall have all dependencies that it's parent has
for req in parent.requirements:
if req not in current_object.requirements:
current_object.requirements.append(req)
# As parent defined current_object it shall automatically depend on it.
# But only if the user hasn't said otherwise.
# Must prevent circular dependencies.
if not parent.name in current_object.requirements:
parent.requirements.append(current_object.name)