Skip to content

Commit 1476c6f

Browse files
committed
Merge pull request Azure#1596 from wastoresh/clu
Fix bug and add scenario test cases
2 parents af9dfe7 + ea8f84d commit 1476c6f

File tree

56 files changed

+101265
-46791
lines changed

Some content is hidden

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

56 files changed

+101265
-46791
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
Param(
2+
[string]$rgname,
3+
[string]$resourceGroupLocation
4+
)
5+
Write-Host "=== Managing Storage Accounts Resources in Azure ==="
6+
7+
$stoname = 'sto' + $rgname;
8+
$stotype = 'Standard_GRS';
9+
$loc = 'West US';
10+
11+
New-AzureRmResourceGroup -Name $rgname -Location $resourceGroupLocation;
12+
13+
Write-Host "1. Create a new storage account"
14+
New-AzureRmStorageAccount -ResourceGroupName $rgname -Name $stoname -Location $loc -Type $stotype;
15+
16+
Write-Host "2. Get info of a storage account"
17+
$stos = Get-AzureRmStorageAccount -ResourceGroupName $rgname;
18+
19+
Write-Host "3. Update storage account type"
20+
$stotype = 'Standard_RAGRS';
21+
Set-AzureRmStorageAccount -ResourceGroupName $rgname -Name $stoname -Type $stotype;
22+
23+
Write-Host "4. Get account key of a storage account"
24+
$stokeys=Get-AzureRmStorageAccountKey -ResourceGroupName $rgname -Name $stoname;
25+
26+
Write-Host "5. Renew key1 of a storage account"
27+
New-AzureRmStorageAccountKey -ResourceGroupName $rgname -Name $stoname -KeyName key1;
28+
29+
Write-Host "6. Renew key2 of a storage account"
30+
New-AzureRmStorageAccountKey -ResourceGroupName $rgname -Name $stoname -KeyName key2;
31+
32+
Write-Host "7. Remove storage account"
33+
Remove-AzureRmStorageAccount -ResourceGroupName $rgname -Name $stoname;
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#!/bin/bash
2+
printf "\n=== Managing Storage Accounts Resources in Azure ===\n"
3+
export BASEDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
4+
5+
azure group get -n $groupName
6+
if [ $? -ne 0 ]; then
7+
printf "\n Creating group %s in location %s \n" $groupName $location
8+
azure group create -n "$groupName" --location "$location"
9+
fi
10+
11+
set -e
12+
accountName=`randomName $groupName`
13+
accountType="Standard_GRS"
14+
15+
printf "\n1. Creating storage account %s in resrouce group %s with type %s in location %s \n" $accountName $groupName $accountType $location
16+
azure storage account new -g "$groupName" -n "$accountName" -t "$accountType" -l "$location"
17+
18+
printf "\n2. Get account info of storage account %s in group %s\n" $accountName $groupName
19+
azure storage account get -g $groupName -n $accountName > $BASEDIR/$accountName.json
20+
[ $(cat $BASEDIR/$accountName.json | jq '.ResourceGroupName' --raw-output) == "$groupName" ]
21+
[ $(cat $BASEDIR/$accountName.json | jq '.StorageAccountName' --raw-output) == "$accountName" ]
22+
[ $(cat $BASEDIR/$accountName.json | jq '.AccountType' --raw-output) == "$accountType" ]
23+
[ $(cat $BASEDIR/$accountName.json | jq '.Location' --raw-output) == "$location" ]
24+
rm -f $BASEDIR/$accountName.json
25+
26+
accountType1="Standard_RAGRS"
27+
printf "\n3. Set account type from %s to %s of storage account %s in group %s\n" $accountType $accountType1 $accountName $groupName
28+
azure storage account set -g $groupName -n $accountName -t "$accountType1" > $BASEDIR/$accountName.json
29+
[ $(cat $BASEDIR/$accountName.json | jq '.AccountType' --raw-output) == "$accountType1" ]
30+
rm -f $BASEDIR/$accountName.json
31+
32+
printf "\n4. Get account key of storage account %s in group %s\n" $accountName $groupName
33+
azure storage account key get -g $groupName -n $accountName > $BASEDIR/$accountName.json
34+
key1=$(cat $BASEDIR/$accountName.json | jq '.key1' --raw-output)
35+
key2=$(cat $BASEDIR/$accountName.json | jq '.key2' --raw-output)
36+
[ $key1 != $key2 ]
37+
rm -f $BASEDIR/$accountName.json
38+
39+
printf "\n5. Renew account key1 of storage account %s in group %s\n" $accountName $groupName
40+
azure storage account key new -g $groupName -n $accountName -k "key1"
41+
azure storage account key get -g $groupName -n $accountName > $BASEDIR/$accountName.json
42+
[ $(cat $BASEDIR/$accountName.json | jq '.key1' --raw-output) != $key1 ]
43+
rm -f $BASEDIR/$accountName.json
44+
45+
printf "\n6. Renew account key2 of storage account %s in group %s\n" $accountName $groupName
46+
azure storage account key new -g $groupName -n $accountName -k "key2"
47+
azure storage account key get -g $groupName -n $accountName > $BASEDIR/$accountName.json
48+
[ $(cat $BASEDIR/$accountName.json | jq '.key2' --raw-output) != $key2 ]
49+
rm -f $BASEDIR/$accountName.json
50+
51+
printf "\n7. Removing account %s in group %s\n" $accountName $groupName
52+
azure storage account remove -g $groupName -n $accountName

src/CLU/Microsoft.Azure.Commands.Management.Storage/Models/PSStorageAccount.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,10 @@ public static PSStorageAccount Create(StorageModels.StorageAccount storageAccoun
8282
var credentials = StorageUtilities.GenerateStorageCredentials(client, result.ResourceGroupName, result.StorageAccountName);
8383
CloudStorageAccount account = new CloudStorageAccount(
8484
credentials,
85-
new Uri(storageAccount.PrimaryEndpoints.Blob),
86-
new Uri(storageAccount.PrimaryEndpoints.Queue),
87-
new Uri(storageAccount.PrimaryEndpoints.Table),
88-
new Uri(storageAccount.PrimaryEndpoints.File));
85+
null == storageAccount.PrimaryEndpoints.Blob ? null : new Uri(storageAccount.PrimaryEndpoints.Blob),
86+
null == storageAccount.PrimaryEndpoints.Queue ? null : new Uri(storageAccount.PrimaryEndpoints.Queue),
87+
null == storageAccount.PrimaryEndpoints.Table ? null : new Uri(storageAccount.PrimaryEndpoints.Table),
88+
null == storageAccount.PrimaryEndpoints.File ? null : new Uri(storageAccount.PrimaryEndpoints.File));
8989
result.Context = new AzureStorageContext(account);
9090
return result;
9191
}

src/CLU/Microsoft.Azure.Commands.Management.Storage/StorageAccount/NewAzureStorageAccount.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ public class NewAzureStorageAccountCommand : StorageAccountBaseCmdlet
7272
ValueFromPipelineByPropertyName = true,
7373
HelpMessage = "Storage Account Tags.")]
7474
[ValidateNotNull]
75-
[Alias("t")]
7675
public Hashtable[] Tags { get; set; }
7776

7877
protected override void ProcessRecord()

src/CLU/Microsoft.Azure.Commands.Management.Storage/StorageAccount/NewAzureStorageAccountKey.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public class NewAzureStorageAccountKeyCommand : StorageAccountBaseCmdlet
5050
ValueFromPipelineByPropertyName = true,
5151
HelpMessage = "Storage Account Key StorageAccountName.")]
5252
[ValidateSet(Key1, Key2, IgnoreCase = true)]
53+
[Alias("k")]
5354
public string KeyName { get; set; }
5455

5556
protected override void ProcessRecord()

src/CLU/Microsoft.Azure.Commands.Management.Storage/StorageAccount/SetAzureStorageAccount.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ public class SetAzureStorageAccountCommand : StorageAccountBaseCmdlet
9191
HelpMessage = "Storage Account Tags.")]
9292
[AllowEmptyCollection]
9393
[ValidateNotNull]
94-
[Alias("t")]
9594
public Hashtable[] Tags { get; set; }
9695

9796
protected override void ProcessRecord()
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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+
$script:aliases = @{
16+
# Storage aliases
17+
"Get-AzureStorageContainerAcl" = "Get-AzureStorageContainer";
18+
"Start-CopyAzureStorageBlob" = "Start-AzureStorageBlobCopy";
19+
"Stop-CopyAzureStorageBlob" = "Stop-AzureStorageBlobCopy";
20+
}
21+
22+
$aliases.GetEnumerator() | Select @{Name='Name'; Expression={$_.Key}}, @{Name='Value'; Expression={$_.Value}} | New-Alias -Description "AzureAlias"

src/Common/Storage/Commands.Storage/Blob/Cmdlet/StartAzureStorageBlobCopy.cs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
namespace Microsoft.WindowsAzure.Commands.Storage.Blob.Cmdlet
1616
{
1717
using System;
18+
using System.IO;
1819
using System.Collections.Generic;
1920
using System.Management.Automation;
2021
using System.Security.Permissions;
@@ -28,10 +29,12 @@ namespace Microsoft.WindowsAzure.Commands.Storage.Blob.Cmdlet
2829
using Microsoft.WindowsAzure.Storage.Blob;
2930
using Microsoft.WindowsAzure.Storage.DataMovement;
3031
using Microsoft.WindowsAzure.Storage.File;
32+
using Microsoft.Azure.Common.Authentication;
33+
using System.Reflection;
3134

3235
[Cmdlet(VerbsLifecycle.Start, StorageNouns.CopyBlob, ConfirmImpact = ConfirmImpact.High, DefaultParameterSetName = ContainerNameParameterSet),
3336
OutputType(typeof(AzureStorageBlob))]
34-
public class StartAzureStorageBlobCopy : StorageDataMovementCmdletBase
37+
public class StartAzureStorageBlobCopy : StorageDataMovementCmdletBase, IModuleAssemblyInitializer
3538
{
3639
/// <summary>
3740
/// Blob Pipeline parameter set name
@@ -620,5 +623,23 @@ private CloudBlob GetDestinationBlobWithCopyId(IStorageBlobManagement destChanne
620623
CloudBlob blob = destChannel.GetBlobReferenceFromServer(container, blobName, accessCondition, options, OperationContext);
621624
return blob;
622625
}
626+
627+
public void OnImport()
628+
{
629+
try
630+
{
631+
System.Management.Automation.PowerShell invoker = null;
632+
invoker = System.Management.Automation.PowerShell.Create(RunspaceMode.CurrentRunspace);
633+
invoker.AddScript(File.ReadAllText(FileUtilities.GetContentFilePath(
634+
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
635+
"AzureStorageStartup.ps1")));
636+
invoker.Invoke();
637+
}
638+
catch
639+
{
640+
// Ignore exception.
641+
}
642+
}
643+
623644
}
624645
}

src/Common/Storage/Commands.Storage/Commands.Storage.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,9 @@
295295
<Link>Azure.Storage.psd1</Link>
296296
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
297297
</None>
298+
<None Include="AzureStorageStartup.ps1" >
299+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
300+
</None>
298301
<None Include="Microsoft.WindowsAzure.Commands.Storage.format.ps1xml">
299302
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
300303
<SubType>Designer</SubType>

src/ResourceManager/Compute/Commands.Compute.Test/Commands.Compute.Test.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,9 @@
359359
<None Include="SessionRecords\Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineTests\TestVirtualMachineWithDifferentStorageResource.json">
360360
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
361361
</None>
362+
<None Include="SessionRecords\Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineTests\TestVirtualMachineWithEmptyAuc.json">
363+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
364+
</None>
362365
<None Include="SessionRecords\Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineTests\TestVirtualMachineWithVMAgentAutoUpdate.json">
363366
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
364367
</None>

src/ResourceManager/Compute/Commands.Compute.Test/ScenarioTests/ComputeTestCommon.ps1

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -400,26 +400,22 @@ function Get-ResourceProviderLocation
400400
{
401401
param ([string] $provider)
402402

403-
if ([Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::Mode -ne [Microsoft.Azure.Test.HttpRecorder.HttpRecorderMode]::Playback)
404-
{
405-
$namespace = $provider.Split("/")[0];
406-
if($provider.Contains("/"))
407-
{
408-
$type = $provider.Substring($namespace.Length + 1);
409-
$location = Get-AzureRmResourceProvider -ProviderNamespace $namespace | where {$_.ResourceTypes[0].ResourceTypeName -eq $type};
403+
$namespace = $provider.Split("/")[0];
404+
if($provider.Contains("/"))
405+
{
406+
$type = $provider.Substring($namespace.Length + 1);
407+
$location = Get-AzureRmResourceProvider -ProviderNamespace $namespace | where {$_.ResourceTypes[0].ResourceTypeName -eq $type};
410408

411-
if ($location -eq $null)
412-
{
413-
return "westus";
414-
}
415-
else
416-
{
417-
return $location.Locations[0];
418-
}
409+
if ($location -eq $null)
410+
{
411+
return "westus";
419412
}
420-
return "westus";
421-
}
422-
return "westus";
413+
else
414+
{
415+
return $location.Locations[0];
416+
}
417+
}
418+
return "westus";
423419
}
424420

425421
function Get-ComputeVMLocation

src/ResourceManager/Compute/Commands.Compute.Test/ScenarioTests/VirtualMachineExtensionTests.ps1

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ function Test-VirtualMachineExtension
139139
Assert-AreEqual $ext.ResourceGroupName $rgname;
140140
Assert-NotNull $ext.ProvisioningState;
141141
Assert-NotNull $ext.Statuses;
142+
Assert-NotNull $ext.SubStatuses;
142143

143144
# Remove Extension
144145
Remove-AzureRmVMExtension -ResourceGroupName $rgname -VMName $vmname -Name $extname -Force;
@@ -295,13 +296,13 @@ function Test-VirtualMachineExtensionUsingHashTable
295296
Assert-AreEqual $vm1.HardwareProfile.VirtualMachineSize $vmsize;
296297

297298
# Check Extensions in VM
298-
Assert-AreEqual $vm1.Extensions.Count 1;
299-
Assert-AreEqual $vm1.Extensions[0].Name $extname;
300-
Assert-AreEqual $vm1.Extensions[0].Type 'Microsoft.Compute/virtualMachines/extensions';
301-
Assert-AreEqual $vm1.Extensions[0].Publisher $publisher;
302-
Assert-AreEqual $vm1.Extensions[0].ExtensionType $exttype;
303-
Assert-AreEqual $vm1.Extensions[0].TypeHandlerVersion $extver;
304-
Assert-NotNull $vm1.Extensions[0].Settings;
299+
Assert-AreEqual $vm1.Extensions.Count 2;
300+
Assert-AreEqual $vm1.Extensions[1].Name $extname;
301+
Assert-AreEqual $vm1.Extensions[1].Type 'Microsoft.Compute/virtualMachines/extensions';
302+
Assert-AreEqual $vm1.Extensions[1].Publisher $publisher;
303+
Assert-AreEqual $vm1.Extensions[1].ExtensionType $exttype;
304+
Assert-AreEqual $vm1.Extensions[1].TypeHandlerVersion $extver;
305+
Assert-NotNull $vm1.Extensions[1].Settings;
305306

306307
# Remove Extension
307308
Remove-AzureRmVMExtension -ResourceGroupName $rgname -VMName $vmname -Name $extname -Force;
@@ -464,13 +465,13 @@ function Test-VirtualMachineCustomScriptExtension
464465
Assert-AreEqual $vm1.HardwareProfile.VirtualMachineSize $vmsize;
465466

466467
# Check Extensions in VM
467-
Assert-AreEqual $vm1.Extensions.Count 1;
468-
Assert-AreEqual $vm1.Extensions[0].Name $extname;
469-
Assert-AreEqual $vm1.Extensions[0].Type 'Microsoft.Compute/virtualMachines/extensions';
470-
Assert-AreEqual $vm1.Extensions[0].Publisher $publisher;
471-
Assert-AreEqual $vm1.Extensions[0].ExtensionType $exttype;
472-
Assert-AreEqual $vm1.Extensions[0].TypeHandlerVersion $extver;
473-
Assert-NotNull $vm1.Extensions[0].Settings;
468+
Assert-AreEqual $vm1.Extensions.Count 2;
469+
Assert-AreEqual $vm1.Extensions[1].Name $extname;
470+
Assert-AreEqual $vm1.Extensions[1].Type 'Microsoft.Compute/virtualMachines/extensions';
471+
Assert-AreEqual $vm1.Extensions[1].Publisher $publisher;
472+
Assert-AreEqual $vm1.Extensions[1].ExtensionType $exttype;
473+
Assert-AreEqual $vm1.Extensions[1].TypeHandlerVersion $extver;
474+
Assert-NotNull $vm1.Extensions[1].Settings;
474475

475476
# *** TODO: The removal call did not return. 12/12/2014
476477
}
@@ -625,13 +626,13 @@ function Test-VirtualMachineCustomScriptExtensionFileUri
625626
Assert-AreEqual $vm1.HardwareProfile.VirtualMachineSize $vmsize;
626627

627628
# Check Extensions in VM
628-
Assert-AreEqual $vm1.Extensions.Count 1;
629-
Assert-AreEqual $vm1.Extensions[0].Name $extname;
630-
Assert-AreEqual $vm1.Extensions[0].Type 'Microsoft.Compute/virtualMachines/extensions';
631-
Assert-AreEqual $vm1.Extensions[0].Publisher $publisher;
632-
Assert-AreEqual $vm1.Extensions[0].ExtensionType $exttype;
633-
Assert-AreEqual $vm1.Extensions[0].TypeHandlerVersion $extver;
634-
Assert-NotNull $vm1.Extensions[0].Settings;
629+
Assert-AreEqual $vm1.Extensions.Count 2;
630+
Assert-AreEqual $vm1.Extensions[1].Name $extname;
631+
Assert-AreEqual $vm1.Extensions[1].Type 'Microsoft.Compute/virtualMachines/extensions';
632+
Assert-AreEqual $vm1.Extensions[1].Publisher $publisher;
633+
Assert-AreEqual $vm1.Extensions[1].ExtensionType $exttype;
634+
Assert-AreEqual $vm1.Extensions[1].TypeHandlerVersion $extver;
635+
Assert-NotNull $vm1.Extensions[1].Settings;
635636
}
636637
finally
637638
{
@@ -774,13 +775,13 @@ function Test-VirtualMachineAccessExtension
774775
Assert-AreEqual $vm1.HardwareProfile.VirtualMachineSize $vmsize;
775776

776777
# Check Extensions in VM
777-
Assert-AreEqual $vm1.Extensions.Count 1;
778-
Assert-AreEqual $vm1.Extensions[0].Name $extname;
779-
Assert-AreEqual $vm1.Extensions[0].Type 'Microsoft.Compute/virtualMachines/extensions';
780-
Assert-AreEqual $vm1.Extensions[0].Publisher $publisher;
781-
Assert-AreEqual $vm1.Extensions[0].ExtensionType $exttype;
782-
Assert-AreEqual $vm1.Extensions[0].TypeHandlerVersion $extver;
783-
Assert-NotNull $vm1.Extensions[0].Settings;
778+
Assert-AreEqual $vm1.Extensions.Count 2;
779+
Assert-AreEqual $vm1.Extensions[1].Name $extname;
780+
Assert-AreEqual $vm1.Extensions[1].Type 'Microsoft.Compute/virtualMachines/extensions';
781+
Assert-AreEqual $vm1.Extensions[1].Publisher $publisher;
782+
Assert-AreEqual $vm1.Extensions[1].ExtensionType $exttype;
783+
Assert-AreEqual $vm1.Extensions[1].TypeHandlerVersion $extver;
784+
Assert-NotNull $vm1.Extensions[1].Settings;
784785

785786
# *** TODO: The removal call did not return. 12/12/2014
786787
}

src/ResourceManager/Compute/Commands.Compute.Test/ScenarioTests/VirtualMachineTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,5 +144,13 @@ public void TestVirtualMachineWithDifferentStorageResource()
144144
{
145145
ComputeTestController.NewInstance.RunPsTest("Test-VirtualMachineWithDifferentStorageResource");
146146
}
147+
148+
[Fact]
149+
[Trait(Category.AcceptanceType, Category.CheckIn)]
150+
public void TestVirtualMachineWithEmptyAuc()
151+
{
152+
ComputeTestController.NewInstance.RunPsTest("Test-VirtualMachineWithEmptyAuc");
153+
}
154+
147155
}
148156
}

0 commit comments

Comments
 (0)