correct env for the various stages

Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
Nico Schottelius 2011-09-10 00:40:45 +02:00
parent 13e3e27679
commit 7eb418c3ab
1 changed files with 28 additions and 5 deletions

View File

@ -246,6 +246,10 @@ class Cdist:
"""Returns the first part (i.e. type) of an object"""
return cdist_object.split(os.sep)[0]
def get_object_id_from_object(self, cdist_object):
"""Returns everything but the first part (i.e. object_id) of an object"""
return os.sep.join(cdist_object.split(os.sep)[1:])
def object_dir(self, cdist_object):
"""Returns the full path to the object (including .cdist)"""
return os.path.join(self.object_base_dir, cdist_object, DOT_CDIST)
@ -281,6 +285,10 @@ class Cdist:
"""Return directory that holds the explorers of a type"""
return os.path.join(TYPE_DIR, type, "explorer")
def type_manifest_path(self, type):
"""Return path to manifest of type"""
return os.path.join(TYPE_DIR, type, "manifest")
def remote_type_explorer_dir(self, type):
"""Return remote directory that holds the explorers of a type"""
return os.path.join(REMOTE_TYPE_DIR, type, "explorer")
@ -352,6 +360,7 @@ class Cdist:
self.transfer_type_explorers(type)
cmd = []
# FIXME: __global::__object_id::__self::
cmd.append("__explorer=" + REMOTE_GLOBAL_EXPLORER_DIR)
cmd.append("__type_explorer=" + self.remote_type_explorer_dir(type))
@ -381,15 +390,27 @@ class Cdist:
def run_initial_manifest(self):
"""Run the initial manifest"""
self.run_manifest(self.initial_manifest)
# FIXME: add support for __manifest::
env = { "__manifest" : MANIFEST_DIR }
self.run_manifest(self.initial_manifest, extra_env=env)
def run_type_manifest(self, cdist_object):
"""Run manifest for a specific object"""
self.run_manifest(self.initial_manifest)
type = self.get_type_from_object(cdist_object)
manifest = self.type_manifest_path(type)
# FIXME: add more sensible checks for manifest
if os.path.exists(manifest):
env = { "__object" : self.object_dir(cdist_object),
"__object_id": self.get_object_id_from_object(cdist_object),
"__object_fq": cdist_object,
"__type": type
}
self.run_manifest(self.initial_manifest, extra_env=env)
def run_manifest(self, manifest, extra_env=None):
"""Run a manifest"""
log.info("Running the initial manifest")
log.info("Running manifest %s", manifest)
env = os.environ.copy()
env['PATH'] = self.bin_dir + ":" + env['PATH']
@ -420,8 +441,10 @@ class Cdist:
objects = self.list_objects()
# Continue process until no new objects are created anymore
while not old_objects == objects:
old_objects = objects.copy()
while old_objects != objects:
log.debug("Prepare stage")
old_objects = list(objects)
# FIXME: do not rerun existing objects!
for cdist_object in objects:
self.run_type_explorer(cdist_object)
self.run_type_manifest(cdist_object)