Skip to content

Commit b8f592a

Browse files
[Storage] get_account_info all clients, set/get_tags for BlobClient, set_properties for BlobServiceClient (#2795)
1 parent 8461f0a commit b8f592a

17 files changed

+323
-92
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"AssetsRepo": "Azure/azure-sdk-assets",
33
"AssetsRepoPrefixPath": "rust",
4-
"Tag": "rust/azure_storage_blob_873d66a4ea",
4+
"Tag": "rust/azure_storage_blob_cb9b90a35f",
55
"TagPrefix": "rust/azure_storage_blob"
66
}

sdk/storage/azure_storage_blob/src/clients/append_blob_client.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ impl AppendBlobClient {
5555

5656
let client = GeneratedAppendBlobClient::new(
5757
endpoint,
58-
credential.clone(),
59-
container_name.clone(),
60-
blob_name.clone(),
58+
credential,
59+
container_name,
60+
blob_name,
6161
Some(options),
6262
)?;
6363
Ok(Self {

sdk/storage/azure_storage_blob/src/clients/blob_client.rs

Lines changed: 60 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,18 @@ use crate::{
55
generated::clients::BlobClient as GeneratedBlobClient,
66
generated::models::{
77
BlobClientAcquireLeaseResult, BlobClientBreakLeaseResult, BlobClientChangeLeaseResult,
8-
BlobClientDownloadResult, BlobClientGetPropertiesResult, BlobClientReleaseLeaseResult,
9-
BlobClientRenewLeaseResult, BlockBlobClientCommitBlockListResult,
10-
BlockBlobClientStageBlockResult, BlockBlobClientUploadResult,
8+
BlobClientDownloadResult, BlobClientGetAccountInfoResult, BlobClientGetPropertiesResult,
9+
BlobClientReleaseLeaseResult, BlobClientRenewLeaseResult,
10+
BlockBlobClientCommitBlockListResult, BlockBlobClientStageBlockResult,
11+
BlockBlobClientUploadResult,
1112
},
1213
models::{
1314
AccessTier, BlobClientAcquireLeaseOptions, BlobClientBreakLeaseOptions,
1415
BlobClientChangeLeaseOptions, BlobClientDeleteOptions, BlobClientDownloadOptions,
15-
BlobClientGetPropertiesOptions, BlobClientReleaseLeaseOptions, BlobClientRenewLeaseOptions,
16-
BlobClientSetMetadataOptions, BlobClientSetPropertiesOptions, BlobClientSetTierOptions,
17-
BlockBlobClientCommitBlockListOptions, BlockBlobClientUploadOptions, BlockList,
16+
BlobClientGetAccountInfoOptions, BlobClientGetPropertiesOptions, BlobClientGetTagsOptions,
17+
BlobClientReleaseLeaseOptions, BlobClientRenewLeaseOptions, BlobClientSetMetadataOptions,
18+
BlobClientSetPropertiesOptions, BlobClientSetTagsOptions, BlobClientSetTierOptions,
19+
BlobTags, BlockBlobClientCommitBlockListOptions, BlockBlobClientUploadOptions, BlockList,
1820
BlockListType, BlockLookupList,
1921
},
2022
pipeline::StorageHeadersPolicy,
@@ -24,10 +26,11 @@ use azure_core::{
2426
credentials::TokenCredential,
2527
http::{
2628
policies::{BearerTokenCredentialPolicy, Policy},
27-
NoFormat, RequestContent, Response, Url, XmlFormat,
29+
JsonFormat, NoFormat, RequestContent, Response, Url, XmlFormat,
2830
},
2931
Bytes, Result,
3032
};
33+
use std::collections::HashMap;
3134
use std::sync::Arc;
3235

3336
/// A client to interact with a specific Azure storage blob, although that blob may not yet exist.
@@ -63,9 +66,9 @@ impl BlobClient {
6366

6467
let client = GeneratedBlobClient::new(
6568
endpoint,
66-
credential.clone(),
67-
container_name.clone(),
68-
blob_name.clone(),
69+
credential,
70+
container_name,
71+
blob_name,
6972
Some(options),
7073
)?;
7174
Ok(Self {
@@ -304,4 +307,51 @@ impl BlobClient {
304307
) -> Result<Response<BlobClientRenewLeaseResult, NoFormat>> {
305308
self.client.renew_lease(lease_id, options).await
306309
}
310+
311+
/// Sets tags on a blob. Note that each call to this operation replaces all existing tags. To remove
312+
/// all tags from the blob, call this operation with no tags specified.
313+
///
314+
/// # Arguments
315+
///
316+
/// * `tags` - Name-value pairs associated with the blob as tag. Tags are case-sensitive.
317+
/// The tag set may contain at most 10 tags. Tag keys must be between 1 and 128 characters,
318+
/// and tag values must be between 0 and 256 characters.
319+
/// Valid tag key and value characters include: lowercase and uppercase letters, digits (0-9),
320+
/// space (' '), plus (+), minus (-), period (.), solidus (/), colon (:), equals (=), underscore (_)
321+
/// * `options` - Optional configuration for the request.
322+
pub async fn set_tags(
323+
&self,
324+
tags: HashMap<String, String>,
325+
options: Option<BlobClientSetTagsOptions<'_>>,
326+
) -> Result<Response<(), NoFormat>> {
327+
let blob_tags: BlobTags = tags.into();
328+
self.client
329+
.set_tags(RequestContent::try_from(blob_tags)?, options)
330+
.await
331+
}
332+
333+
/// Gets the tags on a blob.
334+
///
335+
/// # Arguments
336+
///
337+
/// * `options` - Optional configuration for the request.
338+
pub async fn get_tags(
339+
&self,
340+
options: Option<BlobClientGetTagsOptions<'_>>,
341+
) -> Result<Response<BlobTags, XmlFormat>> {
342+
self.client.get_tags(options).await
343+
}
344+
345+
/// Gets information related to the Storage account in which the blob resides.
346+
/// This includes the `sku_name` and `account_kind`.
347+
///
348+
/// # Arguments
349+
///
350+
/// * `options` - Optional configuration for the request.
351+
pub async fn get_account_info(
352+
&self,
353+
options: Option<BlobClientGetAccountInfoOptions<'_>>,
354+
) -> Result<Response<BlobClientGetAccountInfoResult, NoFormat>> {
355+
self.client.get_account_info(options).await
356+
}
307357
}

sdk/storage/azure_storage_blob/src/clients/blob_container_client.rs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,17 @@ use crate::{
55
generated::clients::BlobContainerClient as GeneratedBlobContainerClient,
66
generated::models::{
77
BlobContainerClientAcquireLeaseResult, BlobContainerClientBreakLeaseResult,
8-
BlobContainerClientChangeLeaseResult, BlobContainerClientGetPropertiesResult,
9-
BlobContainerClientReleaseLeaseResult, BlobContainerClientRenewLeaseResult,
8+
BlobContainerClientChangeLeaseResult, BlobContainerClientGetAccountInfoResult,
9+
BlobContainerClientGetPropertiesResult, BlobContainerClientReleaseLeaseResult,
10+
BlobContainerClientRenewLeaseResult,
1011
},
1112
models::{
1213
BlobContainerClientAcquireLeaseOptions, BlobContainerClientBreakLeaseOptions,
1314
BlobContainerClientChangeLeaseOptions, BlobContainerClientCreateOptions,
14-
BlobContainerClientDeleteOptions, BlobContainerClientGetPropertiesOptions,
15-
BlobContainerClientListBlobFlatSegmentOptions, BlobContainerClientReleaseLeaseOptions,
16-
BlobContainerClientRenewLeaseOptions, BlobContainerClientSetMetadataOptions,
17-
ListBlobsFlatSegmentResponse,
15+
BlobContainerClientDeleteOptions, BlobContainerClientGetAccountInfoOptions,
16+
BlobContainerClientGetPropertiesOptions, BlobContainerClientListBlobFlatSegmentOptions,
17+
BlobContainerClientReleaseLeaseOptions, BlobContainerClientRenewLeaseOptions,
18+
BlobContainerClientSetMetadataOptions, ListBlobsFlatSegmentResponse,
1819
},
1920
pipeline::StorageHeadersPolicy,
2021
BlobClient, BlobContainerClientOptions,
@@ -233,4 +234,17 @@ impl BlobContainerClient {
233234
) -> Result<Response<BlobContainerClientRenewLeaseResult, NoFormat>> {
234235
self.client.renew_lease(lease_id, options).await
235236
}
237+
238+
/// Gets information related to the Storage account in which the container resides.
239+
/// This includes the `sku_name` and `account_kind`.
240+
///
241+
/// # Arguments
242+
///
243+
/// * `options` - Optional configuration for the request.
244+
pub async fn get_account_info(
245+
&self,
246+
options: Option<BlobContainerClientGetAccountInfoOptions<'_>>,
247+
) -> Result<Response<BlobContainerClientGetAccountInfoResult, NoFormat>> {
248+
self.client.get_account_info(options).await
249+
}
236250
}

sdk/storage/azure_storage_blob/src/clients/blob_service_client.rs

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33

44
use crate::{
55
generated::clients::BlobServiceClient as GeneratedBlobServiceClient,
6+
generated::models::BlobServiceClientGetAccountInfoResult,
67
models::{
7-
BlobServiceClientGetPropertiesOptions, BlobServiceClientListContainersSegmentOptions,
8+
BlobServiceClientGetAccountInfoOptions, BlobServiceClientGetPropertiesOptions,
9+
BlobServiceClientListContainersSegmentOptions, BlobServiceClientSetPropertiesOptions,
810
ListContainersSegmentResponse, StorageServiceProperties,
911
},
1012
pipeline::StorageHeadersPolicy,
@@ -14,7 +16,7 @@ use azure_core::{
1416
credentials::TokenCredential,
1517
http::{
1618
policies::{BearerTokenCredentialPolicy, Policy},
17-
PageIterator, Response, Url, XmlFormat,
19+
NoFormat, PageIterator, RequestContent, Response, Url, XmlFormat,
1820
},
1921
Result,
2022
};
@@ -95,4 +97,33 @@ impl BlobServiceClient {
9597
) -> Result<PageIterator<Response<ListContainersSegmentResponse, XmlFormat>>> {
9698
self.client.list_containers_segment(options)
9799
}
100+
101+
/// Sets properties for a Storage account's Blob service endpoint, including properties for Storage Analytics and CORS rules.
102+
///
103+
/// # Arguments
104+
///
105+
/// * `storage_service_properties` - The Storage service properties to set.
106+
/// * `options` - Optional configuration for the request.
107+
pub async fn set_properties(
108+
&self,
109+
storage_service_properties: RequestContent<StorageServiceProperties, XmlFormat>,
110+
options: Option<BlobServiceClientSetPropertiesOptions<'_>>,
111+
) -> Result<Response<(), NoFormat>> {
112+
self.client
113+
.set_properties(storage_service_properties, options)
114+
.await
115+
}
116+
117+
/// Gets information related to the Storage account.
118+
/// This includes the `sku_name` and `account_kind`.
119+
///
120+
/// # Arguments
121+
///
122+
/// * `options` - Optional configuration for the request.
123+
pub async fn get_account_info(
124+
&self,
125+
options: Option<BlobServiceClientGetAccountInfoOptions<'_>>,
126+
) -> Result<Response<BlobServiceClientGetAccountInfoResult, NoFormat>> {
127+
self.client.get_account_info(options).await
128+
}
98129
}

sdk/storage/azure_storage_blob/src/clients/block_blob_client.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ impl BlockBlobClient {
6161

6262
let client = GeneratedBlockBlobClient::new(
6363
endpoint,
64-
credential.clone(),
65-
container_name.clone(),
66-
blob_name.clone(),
64+
credential,
65+
container_name,
66+
blob_name,
6767
Some(options),
6868
)?;
6969
Ok(Self {

sdk/storage/azure_storage_blob/src/clients/page_blob_client.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ impl PageBlobClient {
5858

5959
let client = GeneratedPageBlobClient::new(
6060
endpoint,
61-
credential.clone(),
62-
container_name.clone(),
63-
blob_name.clone(),
61+
credential,
62+
container_name,
63+
blob_name,
6464
Some(options),
6565
)?;
6666
Ok(Self {

sdk/storage/azure_storage_blob/src/generated/clients/blob_client.rs

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

sdk/storage/azure_storage_blob/src/generated/models/header_traits.rs

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

sdk/storage/azure_storage_blob/src/generated/models/pub_models.rs

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

0 commit comments

Comments
 (0)