From 151022ffd1ef322b2e7fbeb4057630ab42d08f17 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 10 Sep 2011 23:46:17 +0200 Subject: [PATCH] support file transfer and begin support for non root logins Signed-off-by: Nico Schottelius --- bin/cdist | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/bin/cdist b/bin/cdist index b9c071b5..f34812d9 100755 --- a/bin/cdist +++ b/bin/cdist @@ -97,7 +97,7 @@ def banner(): class Cdist: """Cdist main class to hold arbitrary data""" - def __init__(self, target_host, initial_manifest=False): + def __init__(self, target_host, initial_manifest=False, remote_user="root"): self.target_host = target_host self.remote_prefix = ["ssh", "root@" + self.target_host] @@ -120,6 +120,8 @@ class Cdist: # List of type explorers transferred self.type_explorers_transferred = {} + self.remote_user = remote_user + # Mostly static, but can be overwritten on user demand if initial_manifest: self.initial_manifest = initial_manifest @@ -192,7 +194,17 @@ class Cdist: def transfer_dir(self, source, destination): """Transfer directory and previously delete the remote destination""" self.remove_remote_dir(destination) - self.run_or_fail(["scp", "-qr", source, "root@" + self.target_host + ":" + destination]) + self.run_or_fail(["scp", "-qr", source, + self.remote_user + "@" + + self.target_host + ":" + + destination]) + + def transfer_file(self, source, destination): + """Transfer file""" + self.run_or_fail(["scp", "-q", source, + self.remote_user + "@" + + self.target_host + ":" + + destination]) def global_explorer_output_path(self, explorer): """Returns path of the output for a global explorer""" @@ -311,6 +323,16 @@ class Cdist: self.transfer_dir(self.object_parameter_dir(cdist_object), self.remote_object_parameter_dir(cdist_object)) + def transfer_object_code(self, cdist_object): + FIXME + """Transfer the object code to the remote destination""" + # Create base path before using mkdir -p + self.remote_mkdir(self.remote_object_parameter_dir(cdist_object)) + + # Synchronise parameter dir afterwards + self.transfer_dir(self.object_parameter_dir(cdist_object), + self.remote_object_parameter_dir(cdist_object)) + def transfer_global_explorers(self): """Transfer the global explorers""" self.transfer_dir(GLOBAL_EXPLORER_DIR, REMOTE_GLOBAL_EXPLORER_DIR)