Skip to content

Commit bff7783

Browse files
authored
update azure blob upload support to use azure_storage_blob (#762)
1 parent 409aab1 commit bff7783

8 files changed

Lines changed: 510 additions & 664 deletions

File tree

Cargo.lock

Lines changed: 167 additions & 359 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "avml"
3-
version = "0.17.0"
3+
version = "0.18.0"
44
license = "MIT"
55
description = "A portable volatile memory acquisition tool"
66
authors = ["avml@microsoft.com"]
@@ -15,11 +15,12 @@ rust-version = "1.88.0"
1515
[features]
1616
default = ["put", "blobstore", "native-tls"]
1717
put = ["dep:reqwest", "reqwest?/stream", "dep:url", "dep:tokio", "dep:tokio-util"]
18-
blobstore = ["dep:url", "dep:azure_core", "dep:azure_storage_blobs", "dep:tokio", "dep:tokio-util", "dep:async-channel"]
18+
blobstore = ["dep:url", "dep:azure_core", "dep:azure_storage_blob", "dep:tokio", "dep:async-trait"]
1919
status = ["dep:indicatif"]
20-
native-tls = ["dep:native-tls"]
20+
native-tls = ["dep:native-tls", "azure_core?/reqwest", "reqwest?/native-tls-vendored"]
2121

2222
[dependencies]
23+
async-trait = {version="0.1", optional=true}
2324
byteorder = "1.5"
2425
bytes = "1.11"
2526
clap = {version="4.6", default-features=false, features=["derive", "std", "usage", "error-context", "help"]}
@@ -30,9 +31,8 @@ snap = "1.1"
3031
thiserror = "2.0"
3132
libc = "0.2"
3233

33-
async-channel = {version="2.5", optional=true}
34-
azure_core = {version="0.21", optional=true, default-features=false}
35-
azure_storage_blobs = {version="0.21", optional=true, default-features=false}
34+
azure_core = {version="0.35", optional=true, default-features=false, features=["reqwest", "tokio"]}
35+
azure_storage_blob = {version="0.12", optional=true, default-features=false, features=["tokio"]}
3636
indicatif = {version="0.18", optional=true, default-features=false}
3737
native-tls = {version="0.2", features=["vendored"], optional=true, default-features=false}
3838
reqwest = {version="0.13", optional=true, default-features=false}

README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,10 @@ Options:
140140
upload via Azure Blob Store upon acquisition
141141
142142
--sas-block-size <SAS_BLOCK_SIZE>
143-
specify maximum block size in MiB
143+
specify maximum block size in MiB; must be greater than 0
144144
145145
--sas-block-concurrency <SAS_BLOCK_CONCURRENCY>
146-
specify blob upload concurrency
147-
148-
[default: 10]
146+
specify blob upload concurrency; must be greater than 0
149147
150148
-h, --help
151149
Print help (see a summary with '-h')

eng/build.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ cd $(dirname ${BASH_SOURCE[0]})/../
1111
ARCH=$(uname -m)
1212

1313
cargo +stable test --release --target ${ARCH}-unknown-linux-musl --locked --all-targets --all-features
14+
cargo +stable test --release --target ${ARCH}-unknown-linux-musl --locked --doc --all-features
1415
for FEATURE in $(cargo metadata --locked --format-version 1 | jq '.packages | [.[] | select(.name=="avml")][0].features | keys | @tsv' -r); do
1516
cargo +stable check --release --target ${ARCH}-unknown-linux-musl --locked --no-default-features --features ${FEATURE} --features native-tls
1617
done

src/bin/avml-upload.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77
#![deny(clippy::manual_assert)]
88
#![deny(clippy::indexing_slicing)]
99

10-
use avml::{BlobUploader, DEFAULT_CONCURRENCY, Error, Result, put};
10+
use avml::{BlobUploader, Error, Result, put};
1111
use clap::{Parser, Subcommand};
12-
use std::path::PathBuf;
12+
use std::{
13+
num::{NonZeroU64, NonZeroUsize},
14+
path::PathBuf,
15+
};
1316
use tokio::runtime::Runtime;
1417
use url::Url;
1518

@@ -37,13 +40,13 @@ enum Commands {
3740
/// url to upload via Azure Blob Storage
3841
url: Url,
3942

40-
/// specify blob upload concurrency
41-
#[arg(long, default_value_t=DEFAULT_CONCURRENCY)]
42-
sas_block_concurrency: usize,
43+
/// specify blob upload concurrency; must be greater than 0
44+
#[arg(long)]
45+
sas_block_concurrency: Option<NonZeroUsize>,
4346

44-
/// specify maximum block size in MiB
47+
/// specify maximum block size in MiB; must be greater than 0
4548
#[arg(long)]
46-
sas_block_size: Option<usize>,
49+
sas_block_size: Option<NonZeroU64>,
4750
},
4851
}
4952

src/bin/avml.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
use avml::Error;
1212
use avml::{Result, Snapshot, Source, iomem};
1313
use clap::Parser;
14+
#[cfg(feature = "blobstore")]
15+
use std::num::NonZeroUsize;
1416
use std::{num::NonZeroU64, ops::Range, path::PathBuf};
1517
#[cfg(any(feature = "blobstore", feature = "put"))]
1618
use tokio::{fs::remove_file, runtime::Runtime};
@@ -52,15 +54,15 @@ struct Config {
5254
#[arg(long)]
5355
sas_url: Option<Url>,
5456

55-
/// specify maximum block size in MiB
57+
/// specify maximum block size in MiB; must be greater than 0
5658
#[cfg(feature = "blobstore")]
5759
#[arg(long)]
58-
sas_block_size: Option<usize>,
60+
sas_block_size: Option<NonZeroU64>,
5961

60-
/// specify blob upload concurrency
62+
/// specify blob upload concurrency; must be greater than 0
6163
#[cfg(feature = "blobstore")]
62-
#[arg(long, default_value_t=avml::DEFAULT_CONCURRENCY)]
63-
sas_block_concurrency: usize,
64+
#[arg(long)]
65+
sas_block_concurrency: Option<NonZeroUsize>,
6466

6567
/// name of the file to write to on local system
6668
filename: PathBuf,

0 commit comments

Comments
 (0)