Skip to content

Commit b6fbae3

Browse files
subnet (broken)
1 parent 01d6a92 commit b6fbae3

File tree

2 files changed

+62
-16
lines changed

2 files changed

+62
-16
lines changed

experiments/Compute.Experiments/AzureRM.Compute.Experiments.Tests.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ New-AzVm -Name MyVM -Credential $vmCredential -WhatIf
1919

2020
# $vm = New-AzVm
2121
# $vm = New-AzVm -Credential $vmCredential
22-
$vm = New-AzVm -Name MyVM -Credential $vmCredential
22+
$vm = New-AzVm -Name MyVMA -Credential $vmCredential
2323

2424
$vm
2525

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

Lines changed: 61 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ function New-AzVm {
1010
[Parameter()][string] $Location,
1111

1212
[Parameter()][string] $VirtualNetworkName,
13+
[Parameter()][string] $SubnetName,
1314
[Parameter()][string] $PublicIpAddressName,
1415
[Parameter()][string] $SecurityGroupName,
1516

@@ -22,13 +23,14 @@ function New-AzVm {
2223
$rgi = [ResourceGroup]::new($ResourceGroupName);
2324

2425
$vni = [VirtualNetwork]::new($VirtualNetworkName);
26+
$subnet = [Subnet]::new($SubnetName, $vni);
2527
$piai = [PublicIpAddress]::new($PublicIpAddressName);
2628
$sgi = [SecurityGroup]::new($SecurityGroupName);
2729

2830
# we don't allow to reuse NetworkInterface so $name is $null.
2931
$nii = [NetworkInterface]::new(
3032
$null,
31-
$vni,
33+
$subnet,
3234
$piai,
3335
$sgi);
3436

@@ -142,8 +144,11 @@ class AzureObject {
142144
if ($this.Name) {
143145
return $this.GetInfo();
144146
} else {
147+
Write-Host "{"
148+
Write-Host $this
145149
$result = $this.Create($p);
146150
$this.Name = $p.Name;
151+
Write-Host "}"
147152
return $result;
148153
}
149154
}
@@ -179,16 +184,24 @@ class VirtualNetwork: Resource1 {
179184
}
180185

181186
[object] Create([CreateParams] $p) {
187+
<#
182188
$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
183-
-Name "Subnet" `
184-
-AddressPrefix "192.168.1.0/24"
189+
-Name "Subnet" `
190+
-AddressPrefix "192.168.1.0/24"
185191
return New-AzureRmVirtualNetwork `
186192
-ResourceGroupName $p.ResourceGroupName `
187193
-Location $p.Location `
188194
-Name $p.Name `
189195
-AddressPrefix "192.168.0.0/16" `
190196
-Subnet $subnetConfig `
191197
-WarningAction SilentlyContinue
198+
#>
199+
return New-AzureRmVirtualNetwork `
200+
-ResourceGroupName $p.ResourceGroupName `
201+
-Location $p.Location `
202+
-Name $p.Name `
203+
-AddressPrefix "192.168.0.0/16" `
204+
-WarningAction SilentlyContinue;
192205
}
193206
}
194207

@@ -215,7 +228,7 @@ class SecurityGroup: Resource1 {
215228
}
216229

217230
[object] GetInfo() {
218-
return Get-AzureRMSecurityGroup -Name $this.Name;
231+
return Get-AzureRMSecurityGroup -Name $this.Name
219232
}
220233

221234
[object] Create([CreateParams] $p) {
@@ -229,7 +242,6 @@ class SecurityGroup: Resource1 {
229242
-SourceAddressPrefix "*" `
230243
-DestinationPortRange 3389 `
231244
-DestinationAddressPrefix "*"
232-
233245
return New-AzureRmNetworkSecurityGroup `
234246
-ResourceGroupName $p.ResourceGroupName `
235247
-Location $p.Location `
@@ -239,18 +251,49 @@ class SecurityGroup: Resource1 {
239251
}
240252
}
241253

242-
class NetworkInterface: AzureObject {
254+
class Subnet: AzureObject {
243255
[VirtualNetwork] $VirtualNetwork;
256+
257+
Subnet([string] $name, [VirtualNetwork] $virtualNetwork):
258+
base($name, @($virtualNetwork)) {
259+
$this.VirtualNetwork = $virtualNetwork;
260+
}
261+
262+
[object] GetInfo() {
263+
Write-Host "sn.GetInfo {"
264+
$virutalNetworkInfo = $this.VirtualNetwork.GetInfo();
265+
Write-Host "}"
266+
return $virutalNetworkInfo | Get-AzureRmVirtualNetworkSubnetConfig -Name $this.Name;
267+
}
268+
269+
[object] Create([CreateParams] $p) {
270+
Write-Host "sn.Create {"
271+
$virtualNetworkInfo = $this.VirtualNetwork.GetOrCreate($p);
272+
Set-AzureRmVirtualNetworkSubnetConfig `
273+
-VirtualNetwork $virtualNetworkInfo `
274+
-Name $p.Name `
275+
-AddressPrefix "192.168.1.0/24";
276+
Set-AzureRmVirtualNetwork -VirtualNetwork $virtualNetworkInfo
277+
$result = Get-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $virtualNetworkInfo -Name $p.Name
278+
Write-Host $virtualNetworkInfo
279+
Write-Host $result
280+
Write-Host "} sn.Create"
281+
return $result;
282+
}
283+
}
284+
285+
class NetworkInterface: AzureObject {
286+
[Subnet] $Subnet;
244287
[PublicIpAddress] $PublicIpAddress;
245288
[SecurityGroup] $SecurityGroup;
246289

247290
NetworkInterface(
248291
[string] $name,
249-
[VirtualNetwork] $virtualNetwork,
292+
[Subnet] $subnet,
250293
[PublicIpAddress] $publicIpAddress,
251294
[SecurityGroup] $securityGroup
252-
): base($name, @($virtualNetwork, $publicIpAddress, $securityGroup)) {
253-
$this.VirtualNetwork = $virtualNetwork;
295+
): base($name, @($subnet, $publicIpAddress, $securityGroup)) {
296+
$this.Subnet = $subnet;
254297
$this.PublicIpAddress = $publicIpAddress;
255298
$this.SecurityGroup = $securityGroup;
256299
}
@@ -260,16 +303,19 @@ class NetworkInterface: AzureObject {
260303
}
261304

262305
[object] Create([CreateParams] $p) {
263-
$xpublicIpAddress = $this.PublicIpAddress.GetOrCreate($p);
264-
$xvirtualNetwork = $this.VirtualNetwork.GetOrCreate($p);
265-
$xsecurityGroup = $this.SecurityGroup.GetOrCreate($p);
306+
$publicIpAddressInfo = $this.PublicIpAddress.GetOrCreate($p);
307+
$subnetInfo = $this.Subnet.GetOrCreate($p);
308+
Write-Host "sn: {"
309+
Write-Host $subnetInfo
310+
Write-Host "} sn"
311+
$securityGroupInfo = $this.SecurityGroup.GetOrCreate($p);
266312
return New-AzureRmNetworkInterface `
267313
-ResourceGroupName $p.ResourceGroupName `
268314
-Location $p.Location `
269315
-Name $p.Name `
270-
-PublicIpAddressId $xpublicIpAddress.Id `
271-
-SubnetId $xvirtualNetwork.Subnets[0].Id `
272-
-NetworkSecurityGroupId $xsecurityGroup.Id `
316+
-PublicIpAddressId $publicIpAddressInfo.Id `
317+
-SubnetId $subnetInfo.Id `
318+
-NetworkSecurityGroupId $securityGroupInfo.Id `
273319
-WarningAction SilentlyContinue
274320
}
275321
}

0 commit comments

Comments
 (0)