@@ -935,3 +935,97 @@ function Test-CreateEmptyLoadBalancer
935
935
Clean - ResourceGroup $rgname
936
936
}
937
937
}
938
+
939
+ <#
940
+ . SYNOPSIS
941
+ Tests creating a Load balancer with NIC references
942
+ #>
943
+ function Test-LoadBalancer-NicAssociation
944
+ {
945
+ # Setup
946
+ $rgname = Get-ResourceGroupName
947
+ $vnetName = Get-ResourceName
948
+ $subnetName = Get-ResourceName
949
+ $publicIpName = Get-ResourceName
950
+ $lbName = Get-ResourceName
951
+ $frontendName = Get-ResourceName
952
+ $backendAddressPoolName = Get-ResourceName
953
+ $probeName = Get-ResourceName
954
+ $inboundNatRuleName1 = Get-ResourceName
955
+ $inboundNatRuleName2 = Get-ResourceName
956
+ $lbruleName = Get-ResourceName
957
+ $nicname1 = Get-ResourceName
958
+ $nicname2 = Get-ResourceName
959
+ $nicname3 = Get-ResourceName
960
+ $rglocation = Get-ProviderLocation ResourceManagement
961
+ $resourceTypeParent = " Microsoft.Network/loadBalancers"
962
+ $location = Get-ProviderLocation $resourceTypeParent
963
+
964
+ try
965
+ {
966
+ # Create the resource group
967
+ $resourceGroup = New-AzureResourceGroup - Name $rgname - Location $rglocation - Tags @ {Name = " testtag" ; Value = " testval" }
968
+
969
+ # Create the Virtual Network
970
+ $subnet = New-AzureVirtualNetworkSubnetConfig - Name $subnetName - AddressPrefix 10.0 .1.0 / 24
971
+ $vnet = New-AzurevirtualNetwork - Name $vnetName - ResourceGroupName $rgname - Location $location - AddressPrefix 10.0 .0.0 / 16 - Subnet $subnet
972
+
973
+ # Create the publicip
974
+ $publicip = New-AzurePublicIpAddress - ResourceGroupName $rgname - name $publicIpName - location $location - AllocationMethod Dynamic
975
+
976
+ # Create LoadBalancer
977
+ $frontend = New-AzureLoadBalancerFrontendIpConfig - Name $frontendName - PublicIpAddress $publicip
978
+ $backendAddressPool = New-AzureLoadBalancerBackendAddressPoolConfig - Name $backendAddressPoolName
979
+ $probe = New-AzureLoadBalancerProbeConfig - Name $probeName - RequestPath healthcheck.aspx - Protocol http - Port 80 - IntervalInSeconds 15 - ProbeCount 2
980
+ $inboundNatRule1 = New-AzureLoadBalancerInboundNatRuleConfig - Name $inboundNatRuleName1 - FrontendIPConfiguration $frontend - Protocol Tcp - FrontendPort 3389 - BackendPort 3389 - IdleTimeoutInMinutes 15 - EnableFloatingIP
981
+ $inboundNatRule2 = New-AzureLoadBalancerInboundNatRuleConfig - Name $inboundNatRuleName2 - FrontendIPConfiguration $frontend - Protocol Tcp - FrontendPort 3391 - BackendPort 3392
982
+ $lbrule = New-AzureLoadBalancerRuleConfig - Name $lbruleName - FrontendIPConfiguration $frontend - BackendAddressPool $backendAddressPool - Probe $probe - Protocol Tcp - FrontendPort 80 - BackendPort 80 - IdleTimeoutInMinutes 15 - EnableFloatingIP - LoadDistribution SourceIP
983
+ $lb = New-AzureLoadBalancer - Name $lbName - ResourceGroupName $rgname - Location $location - FrontendIpConfiguration $frontend - BackendAddressPool $backendAddressPool - Probe $probe - InboundNatRule $inboundNatRule1 , $inboundNatRule2 - LoadBalancingRule $lbrule
984
+
985
+ # Verification of Load Balancer
986
+ Assert-AreEqual $rgname $lb.ResourceGroupName
987
+ Assert-AreEqual $lbName $lb.Name
988
+ Assert-AreEqual $location $lb.Location
989
+ Assert-AreEqual " Succeeded" $lb.ProvisioningState
990
+ Assert-AreEqual 1 @ ($lb.FrontendIPConfigurations ).Count
991
+
992
+ Assert-Null $lb.InboundNatRules [0 ].BackendIPConfiguration
993
+ Assert-Null $lb.InboundNatRules [1 ].BackendIPConfiguration
994
+ Assert-AreEqual 0 @ ($lb.BackendAddressPools [0 ].BackendIpConfigurations).Count
995
+
996
+ # Create 3 network interfaces and accociate to loadbalancer
997
+ $nic1 = New-AzureNetworkInterface - Name $nicname1 - ResourceGroupName $rgname - Location $location - Subnet $vnet.Subnets [0 ]
998
+ $nic2 = New-AzureNetworkInterface - Name $nicname2 - ResourceGroupName $rgname - Location $location - Subnet $vnet.Subnets [0 ]
999
+ $nic3 = New-AzureNetworkInterface - Name $nicname3 - ResourceGroupName $rgname - Location $location - Subnet $vnet.Subnets [0 ]
1000
+
1001
+ # Associate the nic to the load balancer
1002
+ $nic1.IpConfigurations [0 ].LoadBalancerBackendAddressPools.Add($lb.BackendAddressPools [0 ]);
1003
+ $nic1.IpConfigurations [0 ].LoadBalancerInboundNatRules.Add($lb.InboundNatRules [0 ]);
1004
+ $nic2.IpConfigurations [0 ].LoadBalancerBackendAddressPools.Add($lb.BackendAddressPools [0 ]);
1005
+ $nic3.IpConfigurations [0 ].LoadBalancerInboundNatRules.Add($lb.InboundNatRules [1 ]);
1006
+
1007
+ # set the nics
1008
+ $nic1 = $nic1 | Set-AzureNetworkInterface
1009
+ $nic2 = $nic2 | Set-AzureNetworkInterface
1010
+ $nic3 = $nic3 | Set-AzureNetworkInterface
1011
+
1012
+ # Verify the Load balancer references
1013
+ $lb = Get-AzureLoadBalancer - Name $lbName - ResourceGroupName $rgname
1014
+
1015
+ Assert-AreEqual $nic1.IpConfigurations [0 ].Id $lb.InboundNatRules [0 ].BackendIPConfiguration.Id
1016
+ Assert-AreEqual $nic3.IpConfigurations [0 ].Id $lb.InboundNatRules [1 ].BackendIPConfiguration.Id
1017
+ Assert-AreEqual 2 @ ($lb.BackendAddressPools [0 ].BackendIpConfigurations).Count
1018
+
1019
+ # Delete
1020
+ $deleteLb = Remove-AzureLoadBalancer - Name $lbName - ResourceGroupName $rgname - PassThru - Force
1021
+ Assert-AreEqual true $deleteLb
1022
+
1023
+ $list = Get-AzureLoadBalancer - ResourceGroupName $rgname
1024
+ Assert-AreEqual 0 @ ($list ).Count
1025
+ }
1026
+ finally
1027
+ {
1028
+ # Cleanup
1029
+ Clean - ResourceGroup $rgname
1030
+ }
1031
+ }
0 commit comments