Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions NEXT_CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@

### CLI

* Improve performance of `databricks fs cp` command by parallelizing file uploads when
copying directories with the `--recursive` flag.

### Bundles
* engine/direct: Fix dependency-ordered deletion by persisting depends_on in state ([#4105](https://github.com/databricks/cli/pull/4105))
* Pass SYSTEM_ACCESSTOKEN from env to the Terraform provider ([#4135](https://github.com/databricks/cli/pull/4135)
Expand Down
5 changes: 5 additions & 0 deletions acceptance/cmd/fs/cp/dir-to-dir/out.test.toml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions acceptance/cmd/fs/cp/dir-to-dir/output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
localdir/file1.txt -> dbfs:/Volumes/main/default/data/uploaded-dir/file1.txt
localdir/file2.txt -> dbfs:/Volumes/main/default/data/uploaded-dir/file2.txt
6 changes: 6 additions & 0 deletions acceptance/cmd/fs/cp/dir-to-dir/script
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
mkdir -p localdir
echo -n "file1 content" > localdir/file1.txt
echo -n "file2 content" > localdir/file2.txt

# Recursive directory copy (output sorted for deterministic ordering).
$CLI fs cp -r localdir dbfs:/Volumes/main/default/data/uploaded-dir 2>&1 | sort
20 changes: 20 additions & 0 deletions acceptance/cmd/fs/cp/dir-to-dir/test.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Local = true
Cloud = false
Ignore = ["localdir"]

# Recursive copy: localdir/ -> uploaded-dir/.
[[Server]]
Pattern = "PUT /api/2.0/fs/directories/Volumes/main/default/data/uploaded-dir"
Response.StatusCode = 200

[[Server]]
Pattern = "HEAD /api/2.0/fs/directories/Volumes/main/default/data/uploaded-dir"
Response.StatusCode = 200

[[Server]]
Pattern = "PUT /api/2.0/fs/files/Volumes/main/default/data/uploaded-dir/file1.txt"
Response.StatusCode = 200

[[Server]]
Pattern = "PUT /api/2.0/fs/files/Volumes/main/default/data/uploaded-dir/file2.txt"
Response.StatusCode = 200
5 changes: 5 additions & 0 deletions acceptance/cmd/fs/cp/file-to-dir/out.test.toml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions acceptance/cmd/fs/cp/file-to-dir/output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

>>> [CLI] fs cp local.txt dbfs:/Volumes/main/default/data/mydir/
local.txt -> dbfs:/Volumes/main/default/data/mydir/local.txt
4 changes: 4 additions & 0 deletions acceptance/cmd/fs/cp/file-to-dir/script
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
echo -n "hello world!" > local.txt

# Copy file into a directory (trailing slash indicates directory target).
trace $CLI fs cp local.txt dbfs:/Volumes/main/default/data/mydir/
12 changes: 12 additions & 0 deletions acceptance/cmd/fs/cp/file-to-dir/test.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Local = true
Cloud = false
Ignore = ["local.txt"]

# Copy file into existing directory: local.txt -> mydir/local.txt.
[[Server]]
Pattern = "HEAD /api/2.0/fs/directories/Volumes/main/default/data/mydir"
Response.StatusCode = 200

[[Server]]
Pattern = "PUT /api/2.0/fs/files/Volumes/main/default/data/mydir/local.txt"
Response.StatusCode = 200
5 changes: 5 additions & 0 deletions acceptance/cmd/fs/cp/file-to-file/out.test.toml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions acceptance/cmd/fs/cp/file-to-file/output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

>>> [CLI] fs cp local.txt dbfs:/Volumes/main/default/data/uploaded.txt
local.txt -> dbfs:/Volumes/main/default/data/uploaded.txt

>>> [CLI] fs cp dbfs:/Volumes/main/default/data/remote.txt downloaded.txt
dbfs:/Volumes/main/default/data/remote.txt -> downloaded.txt
content from volume
9 changes: 9 additions & 0 deletions acceptance/cmd/fs/cp/file-to-file/script
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
echo -n "hello world!" > local.txt

# Upload local file to volume.
trace $CLI fs cp local.txt dbfs:/Volumes/main/default/data/uploaded.txt

# Download file from volume to local.
trace $CLI fs cp dbfs:/Volumes/main/default/data/remote.txt downloaded.txt

cat downloaded.txt
34 changes: 34 additions & 0 deletions acceptance/cmd/fs/cp/file-to-file/test.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
Local = true
Cloud = false
Ignore = ["local.txt", "downloaded.txt"]

# Upload: local.txt -> dbfs:/Volumes/.../uploaded.txt.
[[Server]]
Pattern = "HEAD /api/2.0/fs/directories/Volumes/main/default/data/uploaded.txt"
Response.StatusCode = 404

[[Server]]
Pattern = "HEAD /api/2.0/fs/files/Volumes/main/default/data/uploaded.txt"
Response.StatusCode = 404

[[Server]]
Pattern = "HEAD /api/2.0/fs/directories/Volumes/main/default/data"
Response.StatusCode = 200

[[Server]]
Pattern = "PUT /api/2.0/fs/files/Volumes/main/default/data/uploaded.txt"
Response.StatusCode = 200

# Download: dbfs:/Volumes/.../remote.txt -> downloaded.txt.
[[Server]]
Pattern = "HEAD /api/2.0/fs/directories/Volumes/main/default/data/remote.txt"
Response.StatusCode = 404

[[Server]]
Pattern = "HEAD /api/2.0/fs/files/Volumes/main/default/data/remote.txt"
Response.StatusCode = 200

[[Server]]
Pattern = "GET /api/2.0/fs/files/Volumes/main/default/data/remote.txt"
Response.StatusCode = 200
Response.Body = "content from volume"
5 changes: 5 additions & 0 deletions acceptance/cmd/fs/cp/input-validation/out.test.toml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions acceptance/cmd/fs/cp/input-validation/output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

>>> errcode [CLI] fs cp src dst --concurrency -1
Error: --concurrency must be at least 1

Exit code: 1

>>> errcode [CLI] fs cp src dst --concurrency 0
Error: --concurrency must be at least 1

Exit code: 1
3 changes: 3 additions & 0 deletions acceptance/cmd/fs/cp/input-validation/script
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Invalid concurrency values should fail.
trace errcode $CLI fs cp src dst --concurrency -1
trace errcode $CLI fs cp src dst --concurrency 0
2 changes: 2 additions & 0 deletions acceptance/cmd/fs/cp/input-validation/test.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Local = true
Cloud = false
Loading