From 2f842d56eb1e55cf0fbbc6fbe35dc2faa7832f57 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 26 Nov 2013 01:17:37 +0100 Subject: [PATCH] integrate messaging into gencode, manifest Signed-off-by: Nico Schottelius --- cdist/core/code.py | 3 ++- cdist/core/manifest.py | 4 +++- cdist/exec/local.py | 23 ++++++++++++++--------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/cdist/core/code.py b/cdist/core/code.py index 910d1c47..f128697f 100644 --- a/cdist/core/code.py +++ b/cdist/core/code.py @@ -104,7 +104,8 @@ class Code(object): '__object_id': cdist_object.object_id, '__object_name': cdist_object.name, }) - return self.local.run_script(script, env=env, return_output=True) + message_prefix=cdist_object.name + return self.local.run_script(script, env=env, return_output=True, message_prefix=message_prefix) def run_gencode_local(self, cdist_object): """Run the gencode-local script for the given cdist object.""" diff --git a/cdist/core/manifest.py b/cdist/core/manifest.py index 6bb33bb3..95bf4c25 100644 --- a/cdist/core/manifest.py +++ b/cdist/core/manifest.py @@ -122,7 +122,8 @@ class Manifest(object): if not os.path.isfile(initial_manifest): raise NoInitialManifestError(initial_manifest, user_supplied) - self.local.run_script(initial_manifest, env=self.env_initial_manifest(initial_manifest)) + message_prefix="initialmanifest" + self.local.run_script(initial_manifest, env=self.env_initial_manifest(initial_manifest), message_prefix=message_prefix) def env_type_manifest(self, cdist_object): type_manifest = os.path.join(self.local.type_path, cdist_object.cdist_type.manifest_path) @@ -141,5 +142,6 @@ class Manifest(object): def run_type_manifest(self, cdist_object): type_manifest = os.path.join(self.local.type_path, cdist_object.cdist_type.manifest_path) + message_prefix = cdist_object.name if os.path.isfile(type_manifest): self.local.run_script(type_manifest, env=self.env_type_manifest(cdist_object)) diff --git a/cdist/exec/local.py b/cdist/exec/local.py index b0109a4e..28c50eec 100644 --- a/cdist/exec/local.py +++ b/cdist/exec/local.py @@ -30,6 +30,7 @@ import logging import tempfile import cdist +import cdist.message from cdist import core class Local(object): @@ -44,11 +45,9 @@ class Local(object): exec_path=sys.argv[0], initial_manifest=None, base_path=None, - add_conf_dirs=None, - message_prefix=None): + add_conf_dirs=None): self.target_host = target_host - self.message_prefix=message_prefix # FIXME: stopped: create base that does not require moving later if base_path: @@ -131,6 +130,7 @@ class Local(object): def create_files_dirs(self): self._init_directories() self._create_conf_path_and_link_conf_dirs() + self._create_messages() self._link_types_for_emulator() @@ -153,7 +153,7 @@ class Local(object): self.log.debug("Local mkdir: %s", path) os.makedirs(path, exist_ok=True) - def run(self, command, env=None, return_output=False): + def run(self, command, env=None, return_output=False, message_prefix=None): """Run the given command with the given environment. Return the output as a string. @@ -166,8 +166,8 @@ class Local(object): # Export __target_host for use in __remote_{copy,exec} scripts env['__target_host'] = self.target_host - if self.message_prefix: - message = cdist.Message(self.message_prefix, self.messages_path) + if message_prefix: + message = cdist.message.Message(message_prefix, self.messages_path) try: if return_output: @@ -179,10 +179,10 @@ class Local(object): except OSError as error: raise cdist.Error(" ".join(*args) + ": " + error.args[1]) finally: - if self.message_prefix: + if message_prefix: message.merge_messages() - def run_script(self, script, env=None, return_output=False): + def run_script(self, script, env=None, return_output=False, message_prefix=None): """Run the given script with the given environment. Return the output as a string. @@ -190,7 +190,7 @@ class Local(object): command = ["/bin/sh", "-e"] command.append(script) - return self.run(command, env, return_output) + return self.run(command=command, env=env, return_output=return_output, message_prefix=message_prefix) def save_cache(self): destination = os.path.join(self.cache_path, self.target_host) @@ -199,6 +199,11 @@ class Local(object): shutil.rmtree(destination) shutil.move(self.base_path, destination) + def _create_messages(self): + """Create empty messages""" + with open(self.messages_path, "w"): + pass + def _create_conf_path_and_link_conf_dirs(self): # Link destination directories for sub_dir in [ "explorer", "manifest", "type" ]: