aboutsummaryrefslogtreecommitdiff
path: root/devlib/target.py
diff options
context:
space:
mode:
authorAnouk Van Laer <anouk.vanlaer@arm.com>2017-05-17 17:13:33 +0100
committerAnouk Van Laer <anouk.vanlaer@arm.com>2017-05-17 17:39:00 +0100
commit0b7ab6aa940b7bb3597588adb1d93347914191a6 (patch)
treecbe2a3e47baf8fdb8cfd4cb7e69c8e0dcc562455 /devlib/target.py
parent35987d5281a0c2457f8b0b7fbf2fb5c13cd11d1f (diff)
downloaddevlib-0b7ab6aa940b7bb3597588adb1d93347914191a6.tar.gz
target: Added get_directory method
This new method allows to pull over a complete directory from the target. It does so by compressing the directory, pulling over the compressed file and extracting the directory on the host.
Diffstat (limited to 'devlib/target.py')
-rw-r--r--devlib/target.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/devlib/target.py b/devlib/target.py
index 5bddad4..35473b4 100644
--- a/devlib/target.py
+++ b/devlib/target.py
@@ -4,6 +4,7 @@ import time
import logging
import posixpath
import subprocess
+import tarfile
import tempfile
import threading
from collections import namedtuple
@@ -281,6 +282,33 @@ class Target(object):
def pull(self, source, dest, timeout=None):
return self.conn.pull(source, dest, timeout=timeout)
+ def get_directory(self, source_dir, dest):
+ """ Pull a directory from the device, after compressing dir """
+ # Create all file names
+ tar_file_name = source_dir.lstrip(self.path.sep).replace(self.path.sep, '.')
+ # Host location of dir
+ outdir = os.path.join(dest, tar_file_name)
+ # Host location of archive
+ tar_file_name = '{}.tar'.format(tar_file_name)
+ tempfile = os.path.join(dest, tar_file_name)
+
+ # Does the folder exist?
+ self.execute('ls -la {}'.format(source_dir))
+ # Try compressing the folder
+ try:
+ self.execute('{} tar -cvf {} {}'.format(self.busybox, tar_file_name,
+ source_dir))
+ except TargetError:
+ self.logger.debug('Failed to run tar command on target! ' \
+ 'Not pulling directory {}'.format(source_dir))
+ # Pull the file
+ os.mkdir(outdir)
+ self.pull(tar_file_name, tempfile )
+ # Decompress
+ f = tarfile.open(tempfile, 'r')
+ f.extractall(outdir)
+ os.remove(tempfile)
+
# execution
def execute(self, command, timeout=None, check_exit_code=True, as_root=False):