diff --git a/bin/cdist b/bin/cdist index f6156825..137f701f 100755 --- a/bin/cdist +++ b/bin/cdist @@ -90,72 +90,21 @@ class Cdist: self.target_host = target_host self.remote_prefix = ["ssh", "root@" + self.target_host] - self.path_info = cdist.path.Path(target_host, base_dir=home) - - # Setup directory paths - self.temp_dir = tempfile.mkdtemp() + self.path = cdist.path.Path(target_host, + initial_manifest=initial_manifest, + remote_user=remote_user, + base_dir=home, + debug=debug) self.debug = debug - if home: - self.base_dir = home - else: - self.base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)) - - self.conf_dir = os.path.join(self.base_dir, "conf") - self.cache_base_dir = os.path.join(self.base_dir, "cache") - self.cache_dir = os.path.join(self.cache_base_dir, self.target_host) - self.global_explorer_dir = os.path.join(self.conf_dir, "explorer") - self.lib_dir = os.path.join(self.base_dir, "lib") - self.manifest_dir = os.path.join(self.conf_dir, "manifest") - self.type_base_dir = os.path.join(self.conf_dir, "type") - - self.out_dir = os.path.join(self.temp_dir, "out") - os.mkdir(self.out_dir) - - self.global_explorer_out_dir = os.path.join(self.out_dir, "explorer") - os.mkdir(self.global_explorer_out_dir) - - self.object_base_dir = os.path.join(self.out_dir, "object") - - # Setup binary directory + contents - self.bin_dir = os.path.join(self.out_dir, "bin") - os.mkdir(self.bin_dir) - self.link_type_to_emulator() - - # List of type explorers transferred - self.type_explorers_transferred = {} - # objects self.objects_prepared = [] self.remote_user = remote_user - # Mostly static, but can be overwritten on user demand - if initial_manifest: - self.initial_manifest = initial_manifest - else: - self.initial_manifest = os.path.join(self.manifest_dir, "init") - def cleanup(self): - # Do not use in __del__: - # http://docs.python.org/reference/datamodel.html#customization - # "other globals referenced by the __del__() method may already have been deleted - # or in the process of being torn down (e.g. the import machinery shutting down)" - # - log.debug("Saving" + self.temp_dir + "to " + self.cache_dir) - # Remove previous cache - if os.path.exists(self.cache_dir): - shutil.rmtree(self.cache_dir) - shutil.move(self.temp_dir, self.cache_dir) - - def remote_mkdir(self, directory): - """Create directory on remote side""" - self.run_or_fail(["mkdir", "-p", directory], remote=True) - - def remote_cat(filename): - """Use cat on the remote side for output""" - self.run_or_fail(["cat", filename], remote=True) + self.path.cleanup() def shell_run_or_debug_fail(self, script, *args, **kargs): # Manually execute /bin/sh, because sh -e does what we want @@ -415,8 +364,8 @@ class Cdist: """Ensure the base directories are cleaned up""" log.debug("Creating clean directory structure") - self.remove_remote_dir(REMOTE_BASE_DIR) - self.remote_mkdir(REMOTE_BASE_DIR) + self.path.remove_remote_dir(REMOTE_BASE_DIR) + self.path.remote_mkdir(REMOTE_BASE_DIR) def run_initial_manifest(self): """Run the initial manifest"""