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