Skip to content

Commit 315747d

Browse files
CreateParams type
1 parent 390bc29 commit 315747d

File tree

1 file changed

+49
-36
lines changed

1 file changed

+49
-36
lines changed

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

Lines changed: 49 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,11 @@ function New-AzVm {
4242
$locationi.Value = $Location;
4343
}
4444

45+
$createParams = [CreateParams]::new($Name, $locationi.Value, $Name);
46+
4547
if ($PSCmdlet.ShouldProcess($Name, "Creating a virtual machine")) {
46-
$resourceGroup = $rgi.GetOrCreate($Name + "ResourceGroup", $locationi.Value, $null);
47-
$vmResponse = $vmi.Create($Name, $locationi.Value, $resourceGroup.ResourceGroupName);
48+
$resourceGroup = $rgi.GetOrCreate($createParams);
49+
$vmResponse = $vmi.Create($createParams);
4850

4951
New-PsObject @{
5052
ResourceId = $resourceGroup.ResourceId;
@@ -64,6 +66,18 @@ class Location {
6466
}
6567
}
6668

69+
class CreateParams {
70+
[string] $Name;
71+
[string] $Location;
72+
[string] $ResourceGroupName;
73+
74+
CreateParams([string] $name, [string] $location, [string] $resourceGroupName) {
75+
$this.Name = $name;
76+
$this.Location = $location;
77+
$this.ResourceGroupName = $resourceGroupName;
78+
}
79+
}
80+
6781
class AzureObject {
6882
[string] $Name;
6983
[AzureObject[]] $Children;
@@ -86,7 +100,7 @@ class AzureObject {
86100
return $null;
87101
}
88102

89-
[object] Create([string] $name, [string] $location, [string] $resourceGroupName) {
103+
[object] Create([CreateParams] $p) {
90104
return $null;
91105
}
92106

@@ -103,12 +117,12 @@ class AzureObject {
103117
}
104118
}
105119

106-
[object] GetOrCreate([string] $name, [string] $location, [string] $resourceGroupName) {
120+
[object] GetOrCreate([CreateParams] $p) {
107121
if ($this.Name) {
108122
return $this.GetInfo();
109123
} else {
110-
$result = $this.Create($name, $location, $resourceGroupName);
111-
$this.Name = $name;
124+
$result = $this.Create($p);
125+
$this.Name = $p.Name;
112126
return $result;
113127
}
114128
}
@@ -122,10 +136,10 @@ class ResourceGroup: AzureObject {
122136
return Get-AzureRmResourceGroup -Name $this.Name;
123137
}
124138

125-
[object] Create([string] $name, [string] $location, [string] $resourceGroupName) {
139+
[object] Create([CreateParams] $p) {
126140
return New-AzureRmResourceGroup `
127-
-Name $name `
128-
-Location $location `
141+
-Name $p.Name `
142+
-Location $p.Location `
129143
-WarningAction SilentlyContinue;
130144
}
131145
}
@@ -143,14 +157,14 @@ class VirtualNetwork: Resource1 {
143157
return Get-AzureRmVirtualNetwork -Name $this.Name;
144158
}
145159

146-
[object] Create([string] $name, [string] $location, [string] $resourceGroupName) {
160+
[object] Create([CreateParams] $p) {
147161
$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
148162
-Name "Subnet" `
149163
-AddressPrefix "192.168.1.0/24"
150164
return New-AzureRmVirtualNetwork `
151-
-ResourceGroupName $resourceGroupName `
152-
-Location $location `
153-
-Name $name `
165+
-ResourceGroupName $p.ResourceGroupName `
166+
-Location $p.Location `
167+
-Name $p.Name `
154168
-AddressPrefix "192.168.0.0/16" `
155169
-Subnet $subnetConfig `
156170
-WarningAction SilentlyContinue
@@ -165,12 +179,12 @@ class PublicIpAddress: Resource1 {
165179
return Get-AzureRMPublicIpAddress -Name $this.Name;
166180
}
167181

168-
[object] Create([string] $name, [string] $location, [string] $resourceGroupName) {
182+
[object] Create([CreateParams] $p) {
169183
return New-AzureRmPublicIpAddress `
170-
-ResourceGroupName $resourceGroupName `
171-
-Location $location `
184+
-ResourceGroupName $p.ResourceGroupName `
185+
-Location $p.Location `
186+
-Name $p.Name `
172187
-AllocationMethod Static `
173-
-Name $name `
174188
-WarningAction SilentlyContinue
175189
}
176190
}
@@ -183,9 +197,9 @@ class SecurityGroup: Resource1 {
183197
return Get-AzureRMSecurityGroup -Name $this.Name;
184198
}
185199

186-
[object] Create([string] $name, [string] $location, [string] $resourceGroupName) {
200+
[object] Create([CreateParams] $p) {
187201
$securityRuleConfig = New-AzureRmNetworkSecurityRuleConfig `
188-
-Name $name `
202+
-Name $p.Name `
189203
-Protocol "Tcp" `
190204
-Priority 1000 `
191205
-Access "Allow" `
@@ -196,9 +210,9 @@ class SecurityGroup: Resource1 {
196210
-DestinationAddressPrefix "*"
197211

198212
return New-AzureRmNetworkSecurityGroup `
199-
-ResourceGroupName $resourceGroupName `
200-
-Location $location `
201-
-Name $name `
213+
-ResourceGroupName $p.ResourceGroupName `
214+
-Location $p.Location `
215+
-Name $p.Name `
202216
-SecurityRules $securityRuleConfig `
203217
-WarningAction SilentlyContinue
204218
}
@@ -224,14 +238,14 @@ class NetworkInterface: AzureObject {
224238
return Get-AzureRMNetworkInterface -Name $this.Name;
225239
}
226240

227-
[object] Create([string] $name, [string] $location, [string] $resourceGroupName) {
228-
$xpublicIpAddress = $this.PublicIpAddress.GetOrCreate($name, $location, $resourceGroupName);
229-
$xvirtualNetwork = $this.VirtualNetwork.GetOrCreate($name, $location, $resourceGroupName);
230-
$xsecurityGroup = $this.SecurityGroup.GetOrCreate($name, $location, $resourceGroupName);
241+
[object] Create([CreateParams] $p) {
242+
$xpublicIpAddress = $this.PublicIpAddress.GetOrCreate($p);
243+
$xvirtualNetwork = $this.VirtualNetwork.GetOrCreate($p);
244+
$xsecurityGroup = $this.SecurityGroup.GetOrCreate($p);
231245
return New-AzureRmNetworkInterface `
232-
-ResourceGroupName $resourceGroupName `
233-
-Location $location `
234-
-Name $name `
246+
-ResourceGroupName $p.ResourceGroupName `
247+
-Location $p.Location `
248+
-Name $p.Name `
235249
-PublicIpAddressId $xpublicIpAddress.Id `
236250
-SubnetId $xvirtualNetwork.Subnets[0].Id `
237251
-NetworkSecurityGroupId $xsecurityGroup.Id `
@@ -264,9 +278,8 @@ class VirtualMachine: AzureObject {
264278
return Get-AzureRMVirtualMachine -Name $this.Name;
265279
}
266280

267-
[object] Create([string] $name, [string] $location, [string] $resourceGroupName) {
268-
$networkInterfaceInstance = $this.NetworkInterface.GetOrCreate( `
269-
$name, $location, $resourceGroupName);
281+
[object] Create([CreateParams] $p) {
282+
$networkInterfaceInstance = $this.NetworkInterface.GetOrCreate($p);
270283

271284
if (-not $this.Credential) {
272285
$this.Credential = Get-Credential
@@ -278,8 +291,8 @@ class VirtualMachine: AzureObject {
278291
}
279292

280293
$vmSize = "Standard_DS2"
281-
$vmConfig = New-AzureRmVMConfig -VMName $Name -VMSize $vmSize
282-
$vmComputerName = $Name + "Computer"
294+
$vmConfig = New-AzureRmVMConfig -VMName $p.Name -VMSize $vmSize
295+
$vmComputerName = $p.Name + "Computer"
283296
switch ($vmImage.Type) {
284297
"Windows" {
285298
$vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
@@ -305,8 +318,8 @@ class VirtualMachine: AzureObject {
305318
| Add-AzureRmVMNetworkInterface -Id $networkInterfaceInstance.Id
306319

307320
return New-AzureRmVm `
308-
-ResourceGroupName $resourceGroupName `
309-
-Location $location `
321+
-ResourceGroupName $p.ResourceGroupName `
322+
-Location $p.Location `
310323
-VM $vmConfig `
311324
-WarningAction SilentlyContinue
312325
}

0 commit comments

Comments
 (0)