diff options
author | Paul Sokolovsky <paul.sokolovsky@linaro.org> | 2013-04-16 17:35:19 +0300 |
---|---|---|
committer | Paul Sokolovsky <paul.sokolovsky@linaro.org> | 2013-04-16 17:35:19 +0300 |
commit | 519933b99d547d0e1da167ece9a349c4b2ae3c18 (patch) | |
tree | 0e1d1dec6a9ce7d3db7853a786aabb2296afbcbf /utils | |
parent | eb21e1ac14f61faefced951d554d32f9f8050e03 (diff) |
Throw in paramiko to handle SFTP dir creation sanely.
Diffstat (limited to 'utils')
-rwxr-xr-x | utils/new-publish/publish.py | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/utils/new-publish/publish.py b/utils/new-publish/publish.py index 53334a9..22bf7b7 100755 --- a/utils/new-publish/publish.py +++ b/utils/new-publish/publish.py @@ -4,10 +4,13 @@ import os import glob import optparse +import paramiko + +REMOTE_HOST = "android-build.linaro.org" +USER_NAME = "publish-copy" UPLOAD_DIR = "/upload" -REMOTE_HOST = "publish-copy@android-build.linaro.org" -KEY = "/var/run/lava/publish-copy" +KEY_FILE = "/var/run/lava/publish-copy" def get_file_list(patterns): expanded = [] @@ -35,7 +38,7 @@ def strip_path_comps(path, num): path = path.strip("/") return "/".join(path.split("/")[num:]) -def create_dir_struct(file_list, dir="", strip=0): +def make_dir_struct(file_list, dir="", strip=0): script = [] file_list = map(lambda f: strip_path_comps(f, strip), file_list) @@ -51,10 +54,21 @@ def create_dir_struct(file_list, dir="", strip=0): p = os.path.join(UPLOAD_DIR, "/".join(created)) for comp in to_create: p = os.path.join(p, comp) - script.append("mkdir %s" % p) + script.append(p) prev_d = d return script +def create_dir_struct(dir_list): + client = paramiko.SSHClient() + client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + client.connect(REMOTE_HOST, username=USER_NAME, key_filename=KEY_FILE) + sftp = paramiko.SFTPClient.from_transport(client.get_transport()) + for d in dir_list: + try: + sftp.listdir(p) + except: + sftp.mkdir(p, 0755) + def upload_files(file_list, dir="", strip=0): script = [] @@ -94,13 +108,14 @@ if __name__ == "__main__": file_list = get_file_list(patterns) print "File list:", file_list - dir_script = create_dir_struct(file_list, options.dest_dir, options.strip) + dir_list = make_dir_struct(file_list, options.dest_dir, options.strip) + create_dir_struct(dir_list) upload_script = upload_files(file_list, options.dest_dir, options.strip) with open("/tmp/sftp.script", "w") as f: f.write("\n".join(dir_script) + "\n") f.write("\n".join(upload_script) + "\n") - cmd = "sftp -v -i %s -b /tmp/sftp.script %s" % (KEY, REMOTE_HOST) + cmd = "sftp -v -i %s -b /tmp/sftp.script %s@%s" % (KEY_FILE, USER_NAME, REMOTE_HOST) print cmd sys.stdout.flush() if not options.dry_run: |