Skip to content

Commit 6493f3a

Browse files
authored
Merge pull request #9005 from wastoresh/xscl10
[Storage] Upgrade to XSCL 10 (depends on PR #9037, to upgrade SRP SDK)
2 parents 7d348da + 31e72a8 commit 6493f3a

File tree

174 files changed

+1311
-403
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

174 files changed

+1311
-403
lines changed

src/Storage/Storage.Management.Test/ScenarioTests/StorageDataPlaneTests.ps1

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,14 @@ function Test-File
4949
Assert-AreEqual $Share.Count 1
5050
Assert-AreEqual $Share[0].Name $shareName
5151

52-
Set-AzStorageFileContent -source $localSrcFile -ShareName $shareName -Path $objectName1 -Force -Context $storageContext
52+
$t = Set-AzStorageFileContent -source $localSrcFile -ShareName $shareName -Path $objectName1 -Force -Context $storageContext -asjob
53+
$t | wait-job
54+
Assert-AreEqual $t.State "Completed"
55+
Assert-AreEqual $t.Error $null
56+
$file = Get-AzStorageFile -ShareName $shareName -Context $storageContext
57+
Assert-AreEqual $file.Count 1
58+
Assert-AreEqual $file[0].Name $objectName1
59+
Set-AzStorageFileContent -source $localSrcFile -ShareName $shareName -Path $objectName1 -Force -Context $storageContext
5360
$file = Get-AzStorageFile -ShareName $shareName -Context $storageContext
5461
Assert-AreEqual $file.Count 1
5562
Assert-AreEqual $file[0].Name $objectName1
@@ -61,7 +68,12 @@ function Test-File
6168
Assert-AreEqual $file[0].Name $objectName1
6269
Assert-AreEqual $file[1].Name $objectName2
6370

64-
Get-AzStorageFileContent -ShareName $shareName -Path $objectName1 -Destination $localDestFile -Force -Context $storageContext
71+
$t = Get-AzStorageFileContent -ShareName $shareName -Path $objectName1 -Destination $localDestFile -Force -Context $storageContext -asjob
72+
$t | wait-job
73+
Assert-AreEqual $t.State "Completed"
74+
Assert-AreEqual $t.Error $null
75+
Assert-AreEqual (Get-FileHash -Path $localDestFile -Algorithm MD5).Hash (Get-FileHash -Path $localSrcFile -Algorithm MD5).Hash
76+
Get-AzStorageFileContent -ShareName $shareName -Path $objectName1 -Destination $localDestFile -Force -Context $storageContext
6577
Assert-AreEqual (Get-FileHash -Path $localDestFile -Algorithm MD5).Hash (Get-FileHash -Path $localSrcFile -Algorithm MD5).Hash
6678

6779
Remove-AzStorageFile -ShareName $shareName -Path $objectName1 -Context $storageContext
@@ -118,6 +130,7 @@ function Test-Blob
118130
$localSrcFile = "localsrcblobtestfile.psd1" #The file need exist before test, and should be 512 bytes aligned
119131
New-Item $localSrcFile -ItemType File -Force
120132
$localDestFile = "localdestblobtestfile.txt"
133+
$localDestFile2 = "localdestblobtestfile2.txt"
121134

122135
$containerName = "blobtestcontainer"
123136
$objectName1 = "blobtest1.txt"
@@ -129,12 +142,19 @@ function Test-Blob
129142
New-AzStorageContainer $containerName -Context $storageContext
130143

131144
# Upload local file to Azure Storage Blob.
132-
Set-AzStorageBlobContent -File $localSrcFile -Container $containerName -Blob $objectName1 -Force -Properties @{"ContentType" = $ContentType; "ContentMD5" = $ContentMD5} -Context $storageContext
145+
$t = Set-AzStorageBlobContent -File $localSrcFile -Container $containerName -Blob $objectName1 -Force -Properties @{"ContentType" = $ContentType; "ContentMD5" = $ContentMD5} -Context $storageContext -asjob
146+
$t | wait-job
147+
Assert-AreEqual $t.State "Completed"
148+
Assert-AreEqual $t.Error $null
133149
$blob = Get-AzStorageContainer -Name $containerName -Context $storageContext | Get-AzStorageBlob
134150
Assert-AreEqual $blob.Count 1
135151
Assert-AreEqual $blob.Name $objectName1
136152
Assert-AreEqual $blob.ICloudBlob.Properties.ContentType $ContentType
137153
Assert-AreEqual $blob.ICloudBlob.Properties.ContentMD5 $ContentMD5
154+
Set-AzStorageBlobContent -File $localSrcFile -Container $containerName -Blob $objectName2 -Force -Properties @{"ContentType" = $ContentType; "ContentMD5" = $ContentMD5} -Context $storageContext
155+
$blob = Get-AzStorageContainer -Name $containerName -Context $storageContext | Get-AzStorageBlob
156+
Assert-AreEqual $blob.Count 2
157+
Get-AzStorageBlob -Container $containerName -Blob $objectName2 -Context $storageContext | Remove-AzStorageBlob -Force
138158

139159
# Copy blob to the same container, but with a different name.
140160
Start-AzStorageBlobCopy -srcContainer $containerName -SrcBlob $objectName1 -DestContainer $containerName -DestBlob $objectName2 -Context $storageContext -DestContext $storageContext
@@ -147,6 +167,11 @@ function Test-Blob
147167
# Download storage blob to compare with the local file.
148168
Get-AzStorageBlobContent -Container $containerName -Blob $objectName2 -Destination $localDestFile -Force -Context $storageContext
149169
Assert-AreEqual (Get-FileHash -Path $localDestFile -Algorithm MD5).Hash (Get-FileHash -Path $localSrcFile -Algorithm MD5).Hash
170+
$t = Get-AzStorageBlobContent -Container $containerName -Blob $objectName2 -Destination $localDestFile2 -Force -Context $storageContext -asjob
171+
$t | wait-job
172+
Assert-AreEqual $t.State "Completed"
173+
Assert-AreEqual $t.Error $null
174+
Assert-AreEqual (Get-FileHash -Path $localDestFile2 -Algorithm MD5).Hash (Get-FileHash -Path $localSrcFile -Algorithm MD5).Hash
150175

151176
Remove-AzStorageBlob -Container $containerName -Blob $objectName2 -Force -Context $storageContext
152177
$blob = Get-AzStorageBlob -Container $containerName -Context $storageContext
@@ -209,6 +234,9 @@ function Test-Queue
209234
$queue = Get-AzStorageQueue -Name $queueName -Context $storageContext
210235
Assert-AreEqual $queue.Count 1
211236
Assert-AreEqual $queue[0].Name $queueName
237+
238+
$queueMessage = New-Object -TypeName "Microsoft.Azure.Storage.Queue.CloudQueueMessage" -ArgumentList "This is message 1"
239+
$queue.CloudQueue.AddMessageAsync($QueueMessage)
212240

213241
$queueCount1 = (Get-AzStorageQueue -Context $storageContext).Count
214242
Remove-AzStorageQueue -Name $queueName -Force -Context $storageContext

src/Storage/Storage.Management/Az.Storage.psd1

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,11 @@ RequiredAssemblies = '.\Microsoft.Azure.Management.Storage.dll',
6363
'.\Microsoft.Azure.Storage.Queue.dll',
6464
'.\Microsoft.Azure.Cosmos.Table.dll',
6565
'.\Microsoft.Azure.DocumentDB.Core.dll',
66-
'.\Microsoft.WindowsAzure.Storage.DataMovement.PowerShell.dll',
66+
'.\Microsoft.Azure.Storage.DataMovement.dll',
6767
'.\Microsoft.Azure.DocumentDB.Core.dll',
6868
'.\Microsoft.OData.Core.dll', '.\Microsoft.OData.Edm.dll',
69-
'.\Microsoft.Spatial.dll'
69+
'.\Microsoft.Spatial.dll',
70+
'.\Microsoft.Azure.KeyVault.Core.dll'
7071

7172
# Script files (.ps1) that are run in the caller's environment prior to importing this module.
7273
# ScriptsToProcess = @()

src/Storage/Storage.Management/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- Additional information about change #1
1919
-->
2020
## Upcoming Release
21+
* Upgrade to Storage Client Library 10.0.1 (the namespace of all objects from this SDK change from "Microsoft.WindowsAzure.Storage.*" to "Microsoft.Azure.Storage.*")
2122
* Upgrade to Microsoft.Azure.Management.Storage 11.0.0, to support new API version 2019-04-01.
2223
* The default Storage account Kind in Create Storage account change from 'Storage' to 'StorageV2'
2324
- New-AzStorageAccount
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
// ----------------------------------------------------------------------------------
2+
//
3+
// Copyright Microsoft Corporation
4+
// Licensed under the Apache License, Version 2.0 (the "License");
5+
// you may not use this file except in compliance with the License.
6+
// You may obtain a copy of the License at
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
// Unless required by applicable law or agreed to in writing, software
9+
// distributed under the License is distributed on an "AS IS" BASIS,
10+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
// See the License for the specific language governing permissions and
12+
// limitations under the License.
13+
// ----------------------------------------------------------------------------------
14+
15+
using Microsoft.Azure.Commands.Common.Authentication.Abstractions;
16+
using Microsoft.Azure.Storage;
17+
using Microsoft.Azure.Storage.Auth;
18+
using Microsoft.WindowsAzure.Commands.Utilities.Common;
19+
using Microsoft.WindowsAzure.Commands.Common.Storage;
20+
using System.Linq;
21+
using System;
22+
using System.Text;
23+
24+
namespace Microsoft.WindowsAzure.Commands.Storage.Adapters
25+
{
26+
public static class AzureContextAdapterExtensions
27+
{
28+
/// <summary>
29+
/// Get the current storage account.
30+
/// </summary>
31+
/// <param name="context">The current Azure context.</param>
32+
/// <returns>The current storage account, or null, if no current storage account is set.</returns>
33+
public static CloudStorageAccount GetCurrentStorageAccount(this IAzureContext context, IStorageServiceProvider provider)
34+
{
35+
if (context != null)
36+
{
37+
var storageConnectionString = context.GetCurrentStorageAccountConnectionString();
38+
try
39+
{
40+
return
41+
CloudStorageAccount.Parse(storageConnectionString);
42+
}
43+
catch
44+
{
45+
var service = provider.GetStorageService(storageConnectionString, null);
46+
return service.GetCloudStorageAccount();
47+
}
48+
}
49+
50+
return null;
51+
}
52+
53+
/// <summary>
54+
/// Get a CloudStorageAccount client for the storage account represented by this context
55+
/// </summary>
56+
/// <param name="context">The storage context for the storage account</param>
57+
/// <returns>A CloudStorageAccount client for storage data plane tasks</returns>
58+
public static CloudStorageAccount GetCloudStorageAccount(this IStorageContext context)
59+
{
60+
CloudStorageAccount result = null;
61+
CloudStorageAccount.TryParse(context.ConnectionString, out result);
62+
return result;
63+
}
64+
65+
/// <summary>
66+
/// Get a CloudStorageAccount client for the storage account represented by this service
67+
/// </summary>
68+
/// <param name="service">The storage service</param>
69+
/// <returns>A CloudStorageAccount client for storage data plane tasks</returns>
70+
public static CloudStorageAccount GetCloudStorageAccount( this IStorageService service)
71+
{
72+
return new CloudStorageAccount(new StorageCredentials(service.Name, service.AuthenticationKeys.First()),
73+
new StorageUri(service.BlobEndpoint), new StorageUri(service.QueueEndpoint),
74+
new StorageUri(service.TableEndpoint), new StorageUri(service.FileEndpoint));
75+
}
76+
77+
/// <summary>
78+
/// Get a storage context client for the storage account represented by this service
79+
/// </summary>
80+
/// <param name="service">The storage service</param>
81+
/// <returns>A CloudStorageAccount client for storage data plane tasks</returns>
82+
public static IStorageContext GetStorageContext(this IStorageService service)
83+
{
84+
return new AzureStorageContext(new CloudStorageAccount(new StorageCredentials(service.Name, service.AuthenticationKeys.First()),
85+
new StorageUri(service.BlobEndpoint), new StorageUri(service.QueueEndpoint),
86+
new StorageUri(service.TableEndpoint), new StorageUri(service.FileEndpoint)));
87+
}
88+
89+
90+
/// <summary>
91+
/// Get a CloudStorageAccount client for the given storage service using the given storage service provider
92+
/// </summary>
93+
/// <param name="provider">The storage service provider to retrieve storage service details</param>
94+
/// <param name="accountName">The storage accoutn name</param>
95+
/// <returns>A CloudStorageAccount client for storage data plane tasks</returns>
96+
public static CloudStorageAccount GetCloudStorageAccount(this IStorageServiceProvider provider, string accountName, string resourceGroupName = null)
97+
{
98+
#if DEBUG
99+
if (TestMockSupport.RunningMocked)
100+
{
101+
return new CloudStorageAccount(new StorageCredentials(accountName,
102+
Convert.ToBase64String(Encoding.UTF8.GetBytes(Guid.NewGuid().ToString()))), true);
103+
}
104+
#endif
105+
return provider.GetStorageService(accountName, resourceGroupName).GetCloudStorageAccount();
106+
}
107+
108+
109+
110+
/// <summary>
111+
/// Get a CloudStorageAccount client for the current storage service using the given storage service provider
112+
/// </summary>
113+
/// <param name="context">The current Azure context.</param>
114+
/// <param name="provider">The storage service provider to retrieve storage service details</param>
115+
/// <returns>A CloudStorageAccount client for storage data plane tasks</returns>
116+
public static CloudStorageAccount GetCloudStorageAccount(this IAzureContext context, IStorageServiceProvider provider)
117+
{
118+
CloudStorageAccount account;
119+
var storageConnectionString = context.GetCurrentStorageAccountConnectionString();
120+
if(!CloudStorageAccount.TryParse(storageConnectionString, out account))
121+
{
122+
if (null == provider)
123+
{
124+
throw new ArgumentNullException("provider");
125+
}
126+
127+
account = provider.GetCloudStorageAccount(storageConnectionString);
128+
}
129+
130+
return account;
131+
}
132+
133+
}
134+
}

0 commit comments

Comments
 (0)