From 794a11d86648524c6a16131035b09e1db9a17473 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 11 Oct 2011 16:56:05 +0200 Subject: [PATCH 1/5] %s/\(self.\)\([a-z]*_path\)/\1context.\2/g Signed-off-by: Nico Schottelius --- lib/cdist/config_install.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/cdist/config_install.py b/lib/cdist/config_install.py index 2a1c828d..7864489d 100644 --- a/lib/cdist/config_install.py +++ b/lib/cdist/config_install.py @@ -47,7 +47,7 @@ class ConfigInstall(object): remote_copy=self.context.remote_copy) self.explorer = cdist.explorer.Explorer(self.context) - self.manifest = cdist.manifest.Mamifest() + #self.manifest = cdist.manifest.Mamifest() self.log = logging.getLogger(self.context.target_host) @@ -72,20 +72,20 @@ class ConfigInstall(object): os.mkdir(self.context.base_path) # FIXME: raise more beautiful exception / Steven: handle exception - os.mkdir(self.out_path) + os.mkdir(self.context.out_path) os.mkdir(self.global_explorer_out_path) - os.mkdir(self.bin_path) + os.mkdir(self.context.bin_path) # FIXME: remove this function, only expose ENV # explicitly! def __init_env(self): """Environment usable for other stuff""" os.environ['__target_host'] = self.context.target_host - if self.debug: + if self.context.debug: os.environ['__debug'] = "yes" def cleanup(self): - log.debug("Saving " + self.out_path + " to " + self.cache_path) + log.debug("Saving " + self.context.out_path + " to " + self.context.cache_path) if os.path.exists(self.context.cache_path): shutil.rmtree(self.context.cache_path) shutil.move(self.context.out_path, self.context.cache_path) @@ -116,7 +116,7 @@ class ConfigInstall(object): # env = os.environ.copy() env['__target_host'] = self.context.target_host - env['__global'] = self.out_path + env['__global'] = self.context.out_path env["__object"] = os.path.join(self.object_base_path, cdist_object.path) env["__object_id"] = cdist_object.object_id env["__object_fq"] = cdist_object.name @@ -162,16 +162,16 @@ class ConfigInstall(object): remote_remote_code = os.path.join(self.remote_object_path, cdist_object.code_remote_path) if os.path.isfile(local_remote_code): - self.transfer_path(local_remote_code, remote_remote_code) + self.context.transfer_path(local_remote_code, remote_remote_code) cdist.exec.run_or_fail([remote_remote_code], remote_prefix=True) cdist_object.ran = True def link_emulator(self): """Link emulator to types""" - src = os.path.abspath(self.exec_path) + src = os.path.abspath(self.context.exec_path) for cdist_type in cdist.core.Type.list_types(self.type_base_path): - dst = os.path.join(self.bin_path, cdist_type.name) + dst = os.path.join(self.context.bin_path, cdist_type.name) log.debug("Linking emulator: %s to %s", src, dst) # FIXME: handle exception / make it more beautiful / Steven: raise except :-) From f0852209f01642bea546aeacb9c816890597a195 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 11 Oct 2011 16:59:22 +0200 Subject: [PATCH 2/5] save debug in context Signed-off-by: Nico Schottelius --- lib/cdist/context.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/cdist/context.py b/lib/cdist/context.py index 7bb700e8..f70e9752 100644 --- a/lib/cdist/context.py +++ b/lib/cdist/context.py @@ -41,6 +41,8 @@ class Context(object): exec_path=sys.argv[0], debug=False): + self.debug = debug + self.target_host = target_host # Only required for testing From d95d195b4063b4d7b6806c66c3df5ac34db6dda1 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 11 Oct 2011 16:59:43 +0200 Subject: [PATCH 3/5] have object seave its explorer outputs Signed-off-by: Nico Schottelius --- lib/cdist/config_install.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/cdist/config_install.py b/lib/cdist/config_install.py index 7864489d..f9aeaf19 100644 --- a/lib/cdist/config_install.py +++ b/lib/cdist/config_install.py @@ -93,8 +93,9 @@ class ConfigInstall(object): def object_prepare(self, cdist_object): """Prepare object: Run type explorer + manifest""" log.debug("Preparing object: " + cdist_object.name) - self.run_type_explorer(cdist_object) - self.run_type_manifest(cdist_object) + cdist_object.explorers = + self.explorer.run_type_explorer(cdist_object) + self.manifest.run_type_manifest(cdist_object) cdist_object.prepared = True def object_run(self, cdist_object): From b7824c3ead3dfcab89ab6105aaa35b85f94c358c Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 11 Oct 2011 17:05:35 +0200 Subject: [PATCH 4/5] move explorer out dir creation into Explorer class Signed-off-by: Nico Schottelius --- lib/cdist/config_install.py | 4 +--- lib/cdist/explorer.py | 9 +++++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/cdist/config_install.py b/lib/cdist/config_install.py index f9aeaf19..3c809331 100644 --- a/lib/cdist/config_install.py +++ b/lib/cdist/config_install.py @@ -73,7 +73,6 @@ class ConfigInstall(object): # FIXME: raise more beautiful exception / Steven: handle exception os.mkdir(self.context.out_path) - os.mkdir(self.global_explorer_out_path) os.mkdir(self.context.bin_path) # FIXME: remove this function, only expose ENV @@ -93,8 +92,7 @@ class ConfigInstall(object): def object_prepare(self, cdist_object): """Prepare object: Run type explorer + manifest""" log.debug("Preparing object: " + cdist_object.name) - cdist_object.explorers = - self.explorer.run_type_explorer(cdist_object) + cdist_object.explorers = self.explorer.run_type_explorer(cdist_object) self.manifest.run_type_manifest(cdist_object) cdist_object.prepared = True diff --git a/lib/cdist/explorer.py b/lib/cdist/explorer.py index b0db60bc..9030e506 100644 --- a/lib/cdist/explorer.py +++ b/lib/cdist/explorer.py @@ -22,16 +22,17 @@ import io import logging -#import os +import os #import stat #import shutil #import sys #import tempfile #import time # -#import cdist.core #import cdist.exec +import cdist + log = logging.getLogger(__name__) class Explorer: @@ -39,6 +40,10 @@ class Explorer: def __init__(self, context): self.context = context + try: + os.mkdir(self.context.global_explorer_out_path) + except OSError as e: + raise cdist.Error("Failed to create explorer out path: %s" % e) def run_type_explorer(self, cdist_object): """Run type specific explorers for objects""" From 9f49f99294bb6f2579b4f3d4e0c6d68c6ce4358d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 11 Oct 2011 17:09:47 +0200 Subject: [PATCH 5/5] use self.log for correct logger Signed-off-by: Nico Schottelius --- lib/cdist/config_install.py | 41 +++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/lib/cdist/config_install.py b/lib/cdist/config_install.py index 3c809331..152d6c4a 100644 --- a/lib/cdist/config_install.py +++ b/lib/cdist/config_install.py @@ -40,12 +40,16 @@ class ConfigInstall(object): def __init__(self, context): self.context = context - + self.log = logging.getLogger(self.context.target_host) self.exec_wrapper = cdist.exec.Wrapper( target_host = self.context.target_host, remote_exec=self.context.remote_exec, remote_copy=self.context.remote_copy) + # Create directories other may depend on + self.__init_local_paths() + self.__init_remote_paths() + self.explorer = cdist.explorer.Explorer(self.context) #self.manifest = cdist.manifest.Mamifest() @@ -54,9 +58,6 @@ class ConfigInstall(object): # Setup env to be used by others - FIXME self.__init_env() - # Create directories - self.__init_local_paths() - self.__init_remote_paths() def __init_remote_paths(self): """Initialise remote directory structure""" @@ -84,21 +85,21 @@ class ConfigInstall(object): os.environ['__debug'] = "yes" def cleanup(self): - log.debug("Saving " + self.context.out_path + " to " + self.context.cache_path) + self.log.debug("Saving " + self.context.out_path + " to " + self.context.cache_path) if os.path.exists(self.context.cache_path): shutil.rmtree(self.context.cache_path) shutil.move(self.context.out_path, self.context.cache_path) def object_prepare(self, cdist_object): """Prepare object: Run type explorer + manifest""" - log.debug("Preparing object: " + cdist_object.name) + self.log.debug("Preparing object: " + cdist_object.name) cdist_object.explorers = self.explorer.run_type_explorer(cdist_object) self.manifest.run_type_manifest(cdist_object) cdist_object.prepared = True def object_run(self, cdist_object): """Run gencode and code for an object""" - log.debug("Running object %s", cdist_object) + self.log.debug("Running object %s", cdist_object) # Catch requirements, which re-call us if cdist_object.ran: @@ -107,7 +108,7 @@ class ConfigInstall(object): cdist_type = cdist_object.type for requirement in cdist_object.requirements: - log.debug("Object %s requires %s", cdist_object, requirement) + self.log.debug("Object %s requires %s", cdist_object, requirement) self.object_run(requirement) # @@ -123,7 +124,7 @@ class ConfigInstall(object): # gencode for cmd in ["local", "remote"]: - bin = os.path.join(self.type_base_path, + bin = os.path.join(self.context.type_base_path, getattr(cdist_type, "gencode_" + cmd + "_path")) if os.path.isfile(bin): @@ -169,16 +170,16 @@ class ConfigInstall(object): def link_emulator(self): """Link emulator to types""" src = os.path.abspath(self.context.exec_path) - for cdist_type in cdist.core.Type.list_types(self.type_base_path): + for cdist_type in cdist.core.Type.list_types(self.context.type_base_path): dst = os.path.join(self.context.bin_path, cdist_type.name) - log.debug("Linking emulator: %s to %s", src, dst) + self.log.debug("Linking emulator: %s to %s", src, dst) # FIXME: handle exception / make it more beautiful / Steven: raise except :-) os.symlink(src, dst) def deploy_to(self): """Mimic the old deploy to: Deploy to one host""" - log.info("Deploying to " + self.context.target_host) + self.log.info("Deploying to " + self.context.target_host) self.stage_prepare() self.stage_run() @@ -187,25 +188,25 @@ class ConfigInstall(object): start_time = time.time() self.deploy_to() self.cleanup() - log.info("Finished run of %s in %s seconds", + self.log.info("Finished run of %s in %s seconds", self.context.target_host, time.time() - start_time) def stage_prepare(self): """Do everything for a deploy, minus the actual code stage""" self.link_emulator() - self.run_global_explorers() + self.explorer.run_global_explorers() self.run_initial_manifest() - log.info("Running object manifests and type explorers") + self.log.info("Running object manifests and type explorers") # Continue process until no new objects are created anymore new_objects_created = True while new_objects_created: new_objects_created = False for cdist_object in cdist.core.Object.list_objects(self.object_base_path, - self.type_base_path): + self.context.type_base_path): if cdist_object.prepared: - log.debug("Skipping rerun of object %s", cdist_object) + self.log.debug("Skipping rerun of object %s", cdist_object) continue else: self.object_prepare(cdist_object) @@ -213,8 +214,8 @@ class ConfigInstall(object): def stage_run(self): """The final (and real) step of deployment""" - log.info("Generating and executing code") + self.log.info("Generating and executing code") for cdist_object in cdist.core.Object.list_objects(self.object_base_path, - self.type_base_path): - log.debug("Run object: %s", cdist_object) + self.context.type_base_path): + self.log.debug("Run object: %s", cdist_object) self.object_run(cdist_object)