Skip to content

AzureRT updates #708

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Aug 10, 2015
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -251,9 +251,15 @@
<None Include="SessionRecords\Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineExtensionTests\TestVirtualMachineCustomScriptExtension.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="SessionRecords\Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineExtensionTests\TestVirtualMachineCustomScriptExtensionFileUri.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="SessionRecords\Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineExtensionTests\TestVirtualMachineExtension.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="SessionRecords\Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineExtensionTests\TestVirtualMachineExtensionUsingHashTable.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="SessionRecords\Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineNetworkInterfaceTests\TestAddNetworkInterface.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ function Get-MarketplaceImage
{
param([string] $location = "westus", [string] $pubFilter = '*', [string] $offerFilter = '*')

$imgs = Get-AzureVMImagePublisher -Location $location | where { $_.PublisherName -like $pubFilter } | Get-AzureVMImageOffer | where { $_.Offer -like $offerFilter } | Get-AzureVMImageSku | Get-AzureVMImage | Get-AzureVMImageDetail | where { $_.PurchasePlan -ne $null };
$imgs = Get-AzureVMImagePublisher -Location $location | where { $_.PublisherName -like $pubFilter } | Get-AzureVMImageOffer | where { $_.Offer -like $offerFilter } | Get-AzureVMImageSku | Get-AzureVMImage | Get-AzureVMImage | where { $_.PurchasePlan -ne $null };

return $imgs;
}
Expand Down Expand Up @@ -333,3 +333,22 @@ function Assert-OutputContains
$st = Write-Verbose "Found.";
}
}


# Create a SAS Uri
function Get-SasUri
{
param ([string] $storageAccount, [string] $storageKey, [string] $container, [string] $file, [TimeSpan] $duration, [Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions] $type)

$uri = [string]::Format("https://{0}.blob.core.windows.net/{1}/{2}", $storageAccount, $container, $file);

$destUri = New-Object -TypeName System.Uri($uri);
$cred = New-Object -TypeName Microsoft.WindowsAzure.Storage.Auth.StorageCredentials($storageAccount, $storageKey);
$destBlob = New-Object -TypeName Microsoft.WindowsAzure.Storage.Blob.CloudPageBlob($destUri, $cred);
$policy = New-Object Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPolicy;
$policy.Permissions = $type;
$policy.SharedAccessExpiryTime = [DateTime]::UtcNow.Add($duration);
$uri += $destBlob.GetSharedAccessSignature($policy);

return $uri;
}
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ function ps_vm_dynamic_test_func_1_pstestrg592
$st = Write-Verbose 'Running Test ps_vm_dynamic_test_func_1_pstestrg592 - Creating VM';

$vmname = 'vm' + $rgname;
$st = New-AzureVM -ResourceGroupName $rgname -Location $loc -Name $vmname -VM $vmconfig;
$st = New-AzureVM -ResourceGroupName $rgname -Location $loc -VM $vmconfig;

# Get VM
$st = Write-Verbose 'Running Test ps_vm_dynamic_test_func_1_pstestrg592 - Getting VM';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ function ps_vm_dynamic_test_func_2_pstestrg2115
$st = Write-Verbose 'Running Test ps_vm_dynamic_test_func_2_pstestrg2115 - Creating VM';

$vmname = 'vm' + $rgname;
$st = New-AzureVM -ResourceGroupName $rgname -Location $loc -Name $vmname -VM $vmconfig;
$st = New-AzureVM -ResourceGroupName $rgname -Location $loc -VM $vmconfig;

# Get VM
$st = Write-Verbose 'Running Test ps_vm_dynamic_test_func_2_pstestrg2115 - Getting VM';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ function ps_vm_dynamic_test_func_3_pstestrg4410
$st = Write-Verbose 'Running Test ps_vm_dynamic_test_func_3_pstestrg4410 - Creating VM';

$vmname = 'vm' + $rgname;
$st = New-AzureVM -ResourceGroupName $rgname -Location $loc -Name $vmname -VM $vmconfig;
$st = New-AzureVM -ResourceGroupName $rgname -Location $loc -VM $vmconfig;

# Get VM
$st = Write-Verbose 'Running Test ps_vm_dynamic_test_func_3_pstestrg4410 - Getting VM';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ function ${generated_func_name}

`$vmname = `$rgname + 'vm';

`$st = New-AzureVM -ResourceGroupName `$rgname -Location `$loc -Name `$vmname -VM `$vmconfig -Tags (Get-ComputeTestTag `$global:ps_test_tag_name);
`$st = New-AzureVM -ResourceGroupName `$rgname -Location `$loc -VM `$vmconfig -Tags (Get-ComputeTestTag `$global:ps_test_tag_name);

# Get VM
`$st = Write-Verbose 'Running Test ${generated_func_name} - Getting VM';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ public void TestVirtualMachineExtension()
{
ComputeTestController.NewInstance.RunPsTest("Test-VirtualMachineExtension");
}
[Fact(Skip = "Set-AzureVMExtension does not return (for a long period of time).")]

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestVirtualMachineExtensionUsingHashTable()
{
Expand All @@ -40,6 +40,13 @@ public void TestVirtualMachineCustomScriptExtension()
ComputeTestController.NewInstance.RunPsTest("Test-VirtualMachineCustomScriptExtension");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestVirtualMachineCustomScriptExtensionFileUri()
{
ComputeTestController.NewInstance.RunPsTest("Test-VirtualMachineCustomScriptExtensionFileUri");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestVirtualMachineAccessExtension()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ function Test-VirtualMachineExtension
Assert-AreEqual $p.StorageProfile.ImageReference.Version $imgRef.Version;

# Virtual Machine
New-AzureVM -ResourceGroupName $rgname -Location $loc -Name $vmname -VM $p;
New-AzureVM -ResourceGroupName $rgname -Location $loc -VM $p;

# Virtual Machine Extension
$extname = 'csetest';
Expand Down Expand Up @@ -246,7 +246,7 @@ function Test-VirtualMachineExtensionUsingHashTable
Assert-AreEqual $p.StorageProfile.ImageReference.Version $imgRef.Version;

# Virtual Machine Create
New-AzureVM -ResourceGroupName $rgname -Location $loc -Name $vmname -VM $p;
New-AzureVM -ResourceGroupName $rgname -Location $loc -VM $p;

# Virtual Machine Extension
$extname = $rgname + 'ext';
Expand All @@ -255,7 +255,7 @@ function Test-VirtualMachineExtensionUsingHashTable
$extver = '1.1';

# Set extension settings by hash table
$settings = @{"fileUris" = ""; "commandToExecute" = ""};
$settings = @{"fileUris" = @(); "commandToExecute" = ""};
$protectedsettings = @{"storageAccountName" = $stoname; "storageAccountKey" = $stokey};
Set-AzureVMExtension -ResourceGroupName $rgname -Location $loc -VMName $vmname -Name $extname -Publisher $publisher -ExtensionType $exttype -TypeHandlerVersion $extver -Settings $settings -ProtectedSettings $protectedsettings;

Expand Down Expand Up @@ -408,24 +408,24 @@ function Test-VirtualMachineCustomScriptExtension

# Virtual Machine
# TODO: Still need to do retry for New-AzureVM for SA, even it's returned in Get-.
New-AzureVM -ResourceGroupName $rgname -Location $loc -Name $vmname -VM $p;
New-AzureVM -ResourceGroupName $rgname -Location $loc -VM $p;

# Virtual Machine Extension
$extname = $rgname + 'ext';
$extver = '1.1';
$publisher = 'Microsoft.Compute';
$exttype = 'CustomScriptExtension';
$fileToExecute = 'a.exe';
$containderName = 'script';
$containerName = 'script';

# Set custom script extension
Set-AzureVMCustomScriptExtension -ResourceGroupName $rgname -Location $loc -VMName $vmname -Name $extname -TypeHandlerVersion $extver -StorageAccountName $stoname -StorageAccountKey $stokey -FileName $fileToExecute -ContainerName $containderName;
Set-AzureVMCustomScriptExtension -ResourceGroupName $rgname -Location $loc -VMName $vmname -Name $extname -TypeHandlerVersion $extver -StorageAccountName $stoname -StorageAccountKey $stokey -FileName $fileToExecute -ContainerName $containerName;

# Get VM Extension
$ext = Get-AzureVMCustomScriptExtension -ResourceGroupName $rgname -VMName $vmname -Name $extname;

$expCommand = 'powershell -ExecutionPolicy Unrestricted -file ' + $fileToExecute + ' ';
$expUri = $stoname + '.blob.core.windows.net/' + $containderName + '/' + $fileToExecute;
$expUri = $stoname + '.blob.core.windows.net/' + $containerName + '/' + $fileToExecute;
Assert-AreEqual $ext.ResourceGroupName $rgname;
Assert-AreEqual $ext.Name $extname;
Assert-AreEqual $ext.Publisher $publisher;
Expand Down Expand Up @@ -482,6 +482,163 @@ function Test-VirtualMachineCustomScriptExtension
}


<#
.SYNOPSIS
Test Virtual Machine Custom Script Extensions using FileUri
#>
function Test-VirtualMachineCustomScriptExtensionFileUri
{
# Setup
$rgname = Get-ComputeTestResourceName

try
{
# Common
$loc = 'westus';
New-AzureResourceGroup -Name $rgname -Location $loc -Force;

# VM Profile & Hardware
$vmsize = 'Standard_A4';
$vmname = 'vm' + $rgname;
$p = New-AzureVMConfig -VMName $vmname -VMSize $vmsize;
Assert-AreEqual $p.HardwareProfile.VirtualMachineSize $vmsize;

# NRP
$subnet = New-AzureVirtualNetworkSubnetConfig -Name ('subnet' + $rgname) -AddressPrefix "10.0.0.0/24";
$vnet = New-AzureVirtualNetwork -Force -Name ('vnet' + $rgname) -ResourceGroupName $rgname -Location $loc -AddressPrefix "10.0.0.0/16" -DnsServer "10.1.1.1" -Subnet $subnet;
$vnet = Get-AzureVirtualNetwork -Name ('vnet' + $rgname) -ResourceGroupName $rgname;
$subnetId = $vnet.Subnets[0].Id;
$pubip = New-AzurePublicIpAddress -Force -Name ('pubip' + $rgname) -ResourceGroupName $rgname -Location $loc -AllocationMethod Dynamic -DomainNameLabel ('pubip' + $rgname);
$pubip = Get-AzurePublicIpAddress -Name ('pubip' + $rgname) -ResourceGroupName $rgname;
$pubipId = $pubip.Id;
$nic = New-AzureNetworkInterface -Force -Name ('nic' + $rgname) -ResourceGroupName $rgname -Location $loc -SubnetId $subnetId -PublicIpAddressId $pubip.Id;
$nic = Get-AzureNetworkInterface -Name ('nic' + $rgname) -ResourceGroupName $rgname;
$nicId = $nic.Id;

$p = Add-AzureVMNetworkInterface -VM $p -Id $nicId;
Assert-AreEqual $p.NetworkProfile.NetworkInterfaces.Count 1;
Assert-AreEqual $p.NetworkProfile.NetworkInterfaces[0].ReferenceUri $nicId;

# Storage Account (SA)
$stoname = 'sto' + $rgname;
$stotype = 'Standard_GRS';
New-AzureStorageAccount -ResourceGroupName $rgname -Name $stoname -Location $loc -Type $stotype;
Retry-IfException { $global:stoaccount = Get-AzureStorageAccount -ResourceGroupName $rgname -Name $stoname; }
$stokey = (Get-AzureStorageAccountKey -ResourceGroupName $rgname -Name $stoname).Key1;

$osDiskName = 'osDisk';
$osDiskCaching = 'ReadWrite';
$osDiskVhdUri = "https://$stoname.blob.core.windows.net/test/os.vhd";
$dataDiskVhdUri1 = "https://$stoname.blob.core.windows.net/test/data1.vhd";
$dataDiskVhdUri2 = "https://$stoname.blob.core.windows.net/test/data2.vhd";

$p = Set-AzureVMOSDisk -VM $p -Name $osDiskName -VhdUri $osDiskVhdUri -Caching $osDiskCaching -CreateOption FromImage;

$p = Add-AzureVMDataDisk -VM $p -Name 'testDataDisk1' -Caching 'ReadOnly' -DiskSizeInGB 10 -Lun 1 -VhdUri $dataDiskVhdUri1 -CreateOption Empty;
$p = Add-AzureVMDataDisk -VM $p -Name 'testDataDisk2' -Caching 'ReadOnly' -DiskSizeInGB 11 -Lun 2 -VhdUri $dataDiskVhdUri2 -CreateOption Empty;

Assert-AreEqual $p.StorageProfile.OSDisk.Caching $osDiskCaching;
Assert-AreEqual $p.StorageProfile.OSDisk.Name $osDiskName;
Assert-AreEqual $p.StorageProfile.OSDisk.VirtualHardDisk.Uri $osDiskVhdUri;
Assert-AreEqual $p.StorageProfile.DataDisks.Count 2;
Assert-AreEqual $p.StorageProfile.DataDisks[0].Caching 'ReadOnly';
Assert-AreEqual $p.StorageProfile.DataDisks[0].DiskSizeGB 10;
Assert-AreEqual $p.StorageProfile.DataDisks[0].Lun 1;
Assert-AreEqual $p.StorageProfile.DataDisks[0].VirtualHardDisk.Uri $dataDiskVhdUri1;
Assert-AreEqual $p.StorageProfile.DataDisks[1].Caching 'ReadOnly';
Assert-AreEqual $p.StorageProfile.DataDisks[1].DiskSizeGB 11;
Assert-AreEqual $p.StorageProfile.DataDisks[1].Lun 2;
Assert-AreEqual $p.StorageProfile.DataDisks[1].VirtualHardDisk.Uri $dataDiskVhdUri2;

# OS & Image
$user = "Foo12";
$password = 'BaR@123' + $rgname;
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force;
$cred = New-Object System.Management.Automation.PSCredential ($user, $securePassword);
$computerName = 'test';
$vhdContainer = "https://$stoname.blob.core.windows.net/test";

$p = Set-AzureVMOperatingSystem -VM $p -Windows -ComputerName $computerName -Credential $cred -ProvisionVMAgent;

$imgRef = Get-DefaultCRPWindowsImageOffline;
$p = ($imgRef | Set-AzureVMSourceImage -VM $p);

Assert-AreEqual $p.OSProfile.AdminUsername $user;
Assert-AreEqual $p.OSProfile.ComputerName $computerName;
Assert-AreEqual $p.OSProfile.AdminPassword $password;
Assert-AreEqual $p.OSProfile.WindowsConfiguration.ProvisionVMAgent $true;

# Virtual Machine
New-AzureVM -ResourceGroupName $rgname -Location $loc -VM $p;

# Virtual Machine Extension
$extname = $rgname + 'ext';
$extver = '1.1';
$publisher = 'Microsoft.Compute';
$exttype = 'CustomScriptExtension';
$containerName = 'scripts';
$fileToExecute = 'test1.ps1';
$duration = New-Object -TypeName TimeSpan(2,0,0);
$type = [Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions]::Read;

$sasFile1 = Get-SasUri $stoname $stokey $containerName $fileToExecute $duration $type;
$sasFile2 = Get-SasUri $stoname $stokey $containerName $fileToExecute $duration $type;

# Set custom script extension
Set-AzureVMCustomScriptExtension -ResourceGroupName $rgname -Location $loc -VMName $vmname -Name $extname -TypeHandlerVersion $extver -Run $fileToExecute -FileUri $sasFile1, $sasFile2;

# Get VM Extension
$ext = Get-AzureVMCustomScriptExtension -ResourceGroupName $rgname -VMName $vmname -Name $extname;

$expCommand = 'powershell -ExecutionPolicy Unrestricted -file ' + $fileToExecute+ ' ';
$expUri = $stoname + '.blob.core.windows.net/' + $containerName + '/' + $fileToExecute;
Assert-AreEqual $ext.ResourceGroupName $rgname;
Assert-AreEqual $ext.Name $extname;
Assert-AreEqual $ext.Publisher $publisher;
Assert-AreEqual $ext.ExtensionType $exttype;
Assert-AreEqual $ext.TypeHandlerVersion $extver;
Assert-AreEqual $ext.CommandToExecute $expCommand;
Assert-True {$ext.Uri[0].Contains($expUri)};
Assert-True {$ext.Uri[1].Contains($expUri)};
Assert-NotNull $ext.ProvisioningState;

$ext = Get-AzureVMCustomScriptExtension -ResourceGroupName $rgname -VMName $vmname -Name $extname -Status;
Assert-AreEqual $ext.ResourceGroupName $rgname;
Assert-AreEqual $ext.Name $extname;
Assert-AreEqual $ext.Publisher $publisher;
Assert-AreEqual $ext.ExtensionType $exttype;
Assert-AreEqual $ext.TypeHandlerVersion $extver;
Assert-AreEqual $ext.CommandToExecute $expCommand;
Assert-True {$ext.Uri[0].Contains($expUri)};
Assert-True {$ext.Uri[1].Contains($expUri)};
Assert-NotNull $ext.ProvisioningState;
Assert-NotNull $ext.Statuses;

# Get VM
$vm1 = Get-AzureVM -Name $vmname -ResourceGroupName $rgname;
Assert-AreEqual $vm1.Name $vmname;
Assert-AreEqual $vm1.NetworkProfile.NetworkInterfaces.Count 1;
Assert-AreEqual $vm1.NetworkProfile.NetworkInterfaces[0].ReferenceUri $nicId;

Assert-AreEqual $vm1.OSProfile.AdminUsername $user;
Assert-AreEqual $vm1.OSProfile.ComputerName $computerName;
Assert-AreEqual $vm1.HardwareProfile.VirtualMachineSize $vmsize;

# Check Extensions in VM
Assert-AreEqual $vm1.Extensions.Count 1;
Assert-AreEqual $vm1.Extensions[0].Name $extname;
Assert-AreEqual $vm1.Extensions[0].Type 'Microsoft.Compute/virtualMachines/extensions';
Assert-AreEqual $vm1.Extensions[0].Publisher $publisher;
Assert-AreEqual $vm1.Extensions[0].ExtensionType $exttype;
Assert-AreEqual $vm1.Extensions[0].TypeHandlerVersion $extver;
Assert-NotNull $vm1.Extensions[0].Settings;
}
finally
{
# Cleanup
Clean-ResourceGroup $rgname
}
}

<#
.SYNOPSIS
Expand Down Expand Up @@ -578,7 +735,7 @@ function Test-VirtualMachineAccessExtension

# Virtual Machine
# TODO: Still need to do retry for New-AzureVM for SA, even it's returned in Get-.
New-AzureVM -ResourceGroupName $rgname -Location $loc -Name $vmname -VM $p;
New-AzureVM -ResourceGroupName $rgname -Location $loc -VM $p;

# Virtual Machine Extension
$extname = 'csetest';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ function Test-SingleNetworkInterface

# Virtual Machine
# TODO: Still need to do retry for New-AzureVM for SA, even it's returned in Get-.
New-AzureVM -ResourceGroupName $rgname -Location $loc -Name $vmname -VM $p;
New-AzureVM -ResourceGroupName $rgname -Location $loc -VM $p;

# Get VM
$vm1 = Get-AzureVM -Name $vmname -ResourceGroupName $rgname;
Expand Down Expand Up @@ -215,7 +215,7 @@ function Test-SingleNetworkInterfaceDnsSettings

# Virtual Machine
# TODO: Still need to do retry for New-AzureVM for SA, even it's returned in Get-.
New-AzureVM -ResourceGroupName $rgname -Location $loc -Name $vmname -VM $p;
New-AzureVM -ResourceGroupName $rgname -Location $loc -VM $p;

# Get VM
$vm1 = Get-AzureVM -Name $vmname -ResourceGroupName $rgname;
Expand Down Expand Up @@ -324,7 +324,7 @@ function Test-MultipleNetworkInterface

# Virtual Machine
# TODO: Still need to do retry for New-AzureVM for SA, even it's returned in Get-.
New-AzureVM -ResourceGroupName $rgname -Location $loc -Name $vmname -VM $p;
New-AzureVM -ResourceGroupName $rgname -Location $loc -VM $p;

# Get VM
$vm1 = Get-AzureVM -Name $vmname -ResourceGroupName $rgname;
Expand Down Expand Up @@ -447,7 +447,7 @@ function Test-AddNetworkInterface

# Virtual Machine
# TODO: Still need to do retry for New-AzureVM for SA, even it's returned in Get-.
New-AzureVM -ResourceGroupName $rgname -Location $loc -Name $vmname -VM $p;
New-AzureVM -ResourceGroupName $rgname -Location $loc -VM $p;

$vm1 = Get-AzureVM -Name $vmname -ResourceGroupName $rgname;
Assert-AreEqual $vm1.Name $vmname;
Expand Down
Loading