aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorPaul Sokolovsky <paul.sokolovsky@linaro.org>2013-04-16 17:35:19 +0300
committerPaul Sokolovsky <paul.sokolovsky@linaro.org>2013-04-16 17:35:19 +0300
commit519933b99d547d0e1da167ece9a349c4b2ae3c18 (patch)
tree0e1d1dec6a9ce7d3db7853a786aabb2296afbcbf /utils
parenteb21e1ac14f61faefced951d554d32f9f8050e03 (diff)
Throw in paramiko to handle SFTP dir creation sanely.
Diffstat (limited to 'utils')
-rwxr-xr-xutils/new-publish/publish.py27
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: