integrate messaging into gencode, manifest

Signed-off-by: Nico Schottelius <nico@bento.schottelius.org>
This commit is contained in:
Nico Schottelius 2013-11-26 01:17:37 +01:00
parent edec2abb1d
commit 2f842d56eb
3 changed files with 19 additions and 11 deletions

View file

@ -104,7 +104,8 @@ class Code(object):
'__object_id': cdist_object.object_id, '__object_id': cdist_object.object_id,
'__object_name': cdist_object.name, '__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): def run_gencode_local(self, cdist_object):
"""Run the gencode-local script for the given cdist object.""" """Run the gencode-local script for the given cdist object."""

View file

@ -122,7 +122,8 @@ class Manifest(object):
if not os.path.isfile(initial_manifest): if not os.path.isfile(initial_manifest):
raise NoInitialManifestError(initial_manifest, user_supplied) 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): def env_type_manifest(self, cdist_object):
type_manifest = os.path.join(self.local.type_path, cdist_object.cdist_type.manifest_path) 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): def run_type_manifest(self, cdist_object):
type_manifest = os.path.join(self.local.type_path, cdist_object.cdist_type.manifest_path) 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): if os.path.isfile(type_manifest):
self.local.run_script(type_manifest, env=self.env_type_manifest(cdist_object)) self.local.run_script(type_manifest, env=self.env_type_manifest(cdist_object))

View file

@ -30,6 +30,7 @@ import logging
import tempfile import tempfile
import cdist import cdist
import cdist.message
from cdist import core from cdist import core
class Local(object): class Local(object):
@ -44,11 +45,9 @@ class Local(object):
exec_path=sys.argv[0], exec_path=sys.argv[0],
initial_manifest=None, initial_manifest=None,
base_path=None, base_path=None,
add_conf_dirs=None, add_conf_dirs=None):
message_prefix=None):
self.target_host = target_host self.target_host = target_host
self.message_prefix=message_prefix
# FIXME: stopped: create base that does not require moving later # FIXME: stopped: create base that does not require moving later
if base_path: if base_path:
@ -131,6 +130,7 @@ class Local(object):
def create_files_dirs(self): def create_files_dirs(self):
self._init_directories() self._init_directories()
self._create_conf_path_and_link_conf_dirs() self._create_conf_path_and_link_conf_dirs()
self._create_messages()
self._link_types_for_emulator() self._link_types_for_emulator()
@ -153,7 +153,7 @@ class Local(object):
self.log.debug("Local mkdir: %s", path) self.log.debug("Local mkdir: %s", path)
os.makedirs(path, exist_ok=True) 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. """Run the given command with the given environment.
Return the output as a string. Return the output as a string.
@ -166,8 +166,8 @@ class Local(object):
# Export __target_host for use in __remote_{copy,exec} scripts # Export __target_host for use in __remote_{copy,exec} scripts
env['__target_host'] = self.target_host env['__target_host'] = self.target_host
if self.message_prefix: if message_prefix:
message = cdist.Message(self.message_prefix, self.messages_path) message = cdist.message.Message(message_prefix, self.messages_path)
try: try:
if return_output: if return_output:
@ -179,10 +179,10 @@ class Local(object):
except OSError as error: except OSError as error:
raise cdist.Error(" ".join(*args) + ": " + error.args[1]) raise cdist.Error(" ".join(*args) + ": " + error.args[1])
finally: finally:
if self.message_prefix: if message_prefix:
message.merge_messages() 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. """Run the given script with the given environment.
Return the output as a string. Return the output as a string.
@ -190,7 +190,7 @@ class Local(object):
command = ["/bin/sh", "-e"] command = ["/bin/sh", "-e"]
command.append(script) 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): def save_cache(self):
destination = os.path.join(self.cache_path, self.target_host) destination = os.path.join(self.cache_path, self.target_host)
@ -199,6 +199,11 @@ class Local(object):
shutil.rmtree(destination) shutil.rmtree(destination)
shutil.move(self.base_path, 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): def _create_conf_path_and_link_conf_dirs(self):
# Link destination directories # Link destination directories
for sub_dir in [ "explorer", "manifest", "type" ]: for sub_dir in [ "explorer", "manifest", "type" ]: