Skip to content

Commit c4d8261

Browse files
AsJob preparation
1 parent d0ec671 commit c4d8261

File tree

1 file changed

+55
-29
lines changed

1 file changed

+55
-29
lines changed

experiments/Compute.Experiments/AzureRM.Compute.Experiments.psm1

Lines changed: 55 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ function New-AzVm {
2424
[Parameter()][int[]] $OpenPorts = @(3389, 5985),
2525

2626
[Parameter()][string] $ImageName = "Win2016Datacenter",
27-
[Parameter()][string] $Size = "Standard_DS1_v2"
27+
[Parameter()][string] $Size = "Standard_DS1_v2",
28+
29+
[Parameter()][switch] $AsJob
2830
)
2931

3032
PROCESS {
@@ -66,17 +68,27 @@ function New-AzVm {
6668
$createParams = [CreateParams]::new($Name, $locationi.Value, $Name);
6769

6870
if ($PSCmdlet.ShouldProcess($Name, "Creating a virtual machine")) {
69-
$resourceGroup = $rgi.GetOrCreate($createParams);
70-
$vmResponse = $vmi.Create($createParams);
71-
72-
return [PSAzureVm]::new(
73-
$resourceGroup.ResourceId,
74-
$Name
75-
);
71+
return New-AzVmInternal -ResourceGroup $rgi -VirtualMachine $vmi -CreateParams $createParams -ErrorAction Stop;
7672
}
7773
}
7874
}
7975

76+
function New-AzVmInternal {
77+
param (
78+
[ResourceGroup] $ResourceGroup,
79+
[VirtualMachine] $VirtualMachine,
80+
[CreateParams] $createParams
81+
)
82+
83+
$rg = $ResourceGroup.GetOrCreate($createParams);
84+
$vmResponse = $VirtualMachine.Create($createParams);
85+
86+
return [PSAzureVm]::new(
87+
$rg.ResourceId,
88+
$VirtualMachine.Name
89+
);
90+
}
91+
8092
class PSAzureVm {
8193
[string] $ResourceGroupId;
8294
[string] $Name;
@@ -171,7 +183,8 @@ class ResourceGroup: AzureObject {
171183
return New-AzureRmResourceGroup `
172184
-Name $p.Name `
173185
-Location $p.Location `
174-
-WarningAction SilentlyContinue;
186+
-WarningAction SilentlyContinue `
187+
-ErrorAction Stop;
175188
}
176189
}
177190

@@ -184,11 +197,11 @@ class VirtualNetwork: Resource1 {
184197
[string] $AddressPrefix;
185198

186199
VirtualNetwork([string] $name, [string] $addressPrefix): base($name) {
187-
$this.AddressPrefix = $addressPrefix;
200+
$this.AddressPrefix = $addressPrefix
188201
}
189202

190203
[object] GetInfo() {
191-
return Get-AzureRmVirtualNetwork -Name $this.Name;
204+
return Get-AzureRmVirtualNetwork -Name $this.Name
192205
}
193206

194207
[object] Create([CreateParams] $p) {
@@ -197,7 +210,8 @@ class VirtualNetwork: Resource1 {
197210
-Location $p.Location `
198211
-Name $p.Name `
199212
-AddressPrefix $this.AddressPrefix `
200-
-WarningAction SilentlyContinue;
213+
-WarningAction SilentlyContinue `
214+
-ErrorAction Stop
201215
}
202216
}
203217

@@ -223,9 +237,10 @@ class PublicIpAddress: Resource1 {
223237
-ResourceGroupName $p.ResourceGroupName `
224238
-Location $p.Location `
225239
-Name $p.Name `
226-
-DomainNameLabel $this.DnsLabel `
227-
-AllocationMethod Static `
228-
-WarningAction SilentlyContinue
240+
-DomainNameLabel $this.DomainNameLabel.ToLower() `
241+
-AllocationMethod $this.AllocationMethod `
242+
-WarningAction SilentlyContinue `
243+
-ErrorAction Stop
229244
}
230245
}
231246

@@ -241,27 +256,31 @@ class SecurityGroup: Resource1 {
241256
}
242257

243258
[object] Create([CreateParams] $p) {
244-
$rules = New-Object "System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.PSSecurityRule]";
259+
$rules = New-Object "System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.PSSecurityRule]"
260+
$priority = 1000
245261
foreach ($port in $this.OpenPorts) {
246-
$name = $p.Name + $port;
262+
$name = $p.Name + $port
247263
$securityRuleConfig = New-AzureRmNetworkSecurityRuleConfig `
248264
-Name $name `
249265
-Protocol "Tcp" `
250-
-Priority 1000 `
266+
-Priority $priority `
251267
-Access "Allow" `
252268
-Direction "Inbound" `
253269
-SourcePortRange "*" `
254270
-SourceAddressPrefix "*" `
255271
-DestinationPortRange $port `
256-
-DestinationAddressPrefix "*";
257-
$rules.Add($securityRuleConfig);
272+
-DestinationAddressPrefix "*" `
273+
-ErrorAction Stop
274+
$rules.Add($securityRuleConfig)
275+
++$priority
258276
}
259277
return New-AzureRmNetworkSecurityGroup `
260278
-ResourceGroupName $p.ResourceGroupName `
261279
-Location $p.Location `
262280
-Name $p.Name `
263281
-SecurityRules $rules `
264-
-WarningAction SilentlyContinue
282+
-WarningAction SilentlyContinue `
283+
-ErrorAction Stop
265284
}
266285
}
267286

@@ -286,7 +305,7 @@ class Subnet: AzureObject {
286305
-VirtualNetwork $virtualNetworkInfo `
287306
-Name $p.Name `
288307
-AddressPrefix $this.SubnetAddressPrefix;
289-
$virtualNetworkInfo = Set-AzureRmVirtualNetwork -VirtualNetwork $virtualNetworkInfo
308+
$virtualNetworkInfo = Set-AzureRmVirtualNetwork -VirtualNetwork $virtualNetworkInfo -ErrorAction Stop
290309
$result = Get-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $virtualNetworkInfo -Name $p.Name
291310
return $result;
292311
}
@@ -323,7 +342,8 @@ class NetworkInterface: AzureObject {
323342
-PublicIpAddressId $publicIpAddressInfo.Id `
324343
-SubnetId $subnetInfo.Id `
325344
-NetworkSecurityGroupId $securityGroupInfo.Id `
326-
-WarningAction SilentlyContinue
345+
-WarningAction SilentlyContinue `
346+
-ErrorAction Stop
327347
}
328348
}
329349

@@ -367,20 +387,22 @@ class VirtualMachine: AzureObject {
367387
throw "Unknown image: " + $this.ImageName;
368388
}
369389

370-
$vmConfig = New-AzureRmVMConfig -VMName $p.Name -VMSize $this.Size;
371-
$vmComputerName = $p.Name;
390+
$vmConfig = New-AzureRmVMConfig -VMName $p.Name -VMSize $this.Size -ErrorAction Stop
391+
$vmComputerName = $p.Name
372392
switch ($vmImage.Type) {
373393
"Windows" {
374394
$vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
375395
-Windows `
376396
-ComputerName $vmComputerName `
377-
-Credential $this.Credential;
397+
-Credential $this.Credential `
398+
-ErrorAction Stop
378399
}
379400
"Linux" {
380401
$vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
381402
-Linux `
382403
-ComputerName $vmComputerName `
383-
-Credential $this.Credential;
404+
-Credential $this.Credential `
405+
-ErrorAction Stop
384406
}
385407
}
386408

@@ -391,13 +413,17 @@ class VirtualMachine: AzureObject {
391413
-Offer $vmImageImage.offer `
392414
-Skus $vmImageImage.sku `
393415
-Version $vmImageImage.version `
394-
| Add-AzureRmVMNetworkInterface -Id $networkInterfaceInstance.Id
416+
-ErrorAction Stop `
417+
| Add-AzureRmVMNetworkInterface `
418+
-Id $networkInterfaceInstance.Id `
419+
-ErrorAction Stop
395420

396421
return New-AzureRmVm `
397422
-ResourceGroupName $p.ResourceGroupName `
398423
-Location $p.Location `
399424
-VM $vmConfig `
400-
-WarningAction SilentlyContinue
425+
-WarningAction SilentlyContinue `
426+
-ErrorAction Stop
401427
}
402428
}
403429

0 commit comments

Comments
 (0)