lib/nexussw/lxd/transport/mixins/helpers/folder_txfr.rb in lxd-common-0.9.0 vs lib/nexussw/lxd/transport/mixins/helpers/folder_txfr.rb in lxd-common-0.9.1
- old
+ new
@@ -9,12 +9,12 @@
module FolderTxfr
def upload_folder(local_path, path, options = {})
upload_using_tarball(local_path, path, options) || upload_files_individually(local_path, path, options)
end
- def download_folder(path, local_path)
- download_using_tarball(path, local_path) || download_files_individually(path, local_path)
+ def download_folder(path, local_path, options = {})
+ download_using_tarball(path, local_path, options) || download_files_individually(path, local_path)
end
def upload_files_individually(local_path, path, options = {})
dest = File.join(path, File.basename(local_path))
execute('mkdir -p ' + dest).error! # for parity with tarball extract
@@ -34,18 +34,24 @@
download_file line.strip.sub(/^\./, path), line.strip.sub(/^\./, dest)
end
end
# gzip(-z) or bzip2(-j) (these are the only 2 on trusty atm)
- def download_using_tarball(path, local_path)
+ def download_using_tarball(path, local_path, options = {})
+ if options[:auto_detect] && execute("test -d #{path}").error?
+ download_file(path, File.join(local_path, File.basename(path)))
+ return true
+ end
+
return false unless can_archive?
tfile = Transport.remote_tempname(container_name)
tarball_name = File.join Transport.local_tempdir, File.basename(tfile) + '.tgz'
execute("tar -czf #{tfile} -C #{File.dirname path} #{File.basename path}").error!
download_file tfile, tarball_name
Archive::Tar::Minitar.unpack Zlib::GzipReader.new(File.open(tarball_name, 'rb')), local_path
+ return true
ensure
if tarball_name
File.delete tarball_name if File.exist? tarball_name
execute "rm -rf #{tfile}"
end