From e6a0e86c91e8bf0855da2c1eb170f92edbd7c660 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Wed, 17 Feb 2021 00:44:06 -0800 Subject: [PATCH 01/20] EdgeZone Parameter for networking --- src/Network/Network/Models/PSTopLevelResource.cs | 6 ++++++ .../NewAzureNetworkInterfaceCommand.cs | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/Network/Network/Models/PSTopLevelResource.cs b/src/Network/Network/Models/PSTopLevelResource.cs index 0888bfa7edb9..92c403a17dd1 100644 --- a/src/Network/Network/Models/PSTopLevelResource.cs +++ b/src/Network/Network/Models/PSTopLevelResource.cs @@ -13,6 +13,7 @@ // ---------------------------------------------------------------------------------- using Microsoft.Azure.Management.Internal.Resources.Utilities; +using Microsoft.Azure.Management.Network.Models; using Microsoft.WindowsAzure.Commands.Common.Attributes; using System.Collections; @@ -26,6 +27,11 @@ public class PSTopLevelResource : PSChildResource [Ps1Xml(Label = "Location", Target = ViewControl.Table, Position = 2)] public string Location { get; set; } + public ExtendedLocation ExtendedLocation { get; set; } + + // Not sure that is right + public string ExtendedLocationType { get; set; } + public string ResourceGuid { get; set; } public string Type { get; set; } diff --git a/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs b/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs index c820141f0f7e..85b883f8e0a1 100644 --- a/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs +++ b/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs @@ -19,6 +19,7 @@ using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; using Microsoft.Azure.Commands.ResourceManager.Common.Tags; using Microsoft.Azure.Management.Network; +using Microsoft.Azure.Management.Network.Models; using System.Collections; using System.Collections.Generic; using System.Linq; @@ -233,6 +234,12 @@ public class NewAzureNetworkInterfaceCommand : NetworkInterfaceBaseCmdlet HelpMessage = "A hashtable which represents resource tags.")] public Hashtable Tag { get; set; } + [Parameter( + Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "EdgeZone for Network Interface.")] + public string EdgeZone { get; set; } + [Parameter( Mandatory = false, HelpMessage = "Do not ask for confirmation if you want to overwrite a resource")] @@ -428,6 +435,12 @@ private PSNetworkInterface CreateNetworkInterface() networkInterface.NetworkSecurityGroup.Id = this.NetworkSecurityGroupId; } + if (!string.IsNullOrEmpty(this.EdgeZone)) + { + networkInterface.ExtendedLocation = new MNM.ExtendedLocation(this.EdgeZone); + networkInterface.ExtendedLocationType = ExtendedLocationTypes.EdgeZone; + } + var networkInterfaceModel = NetworkResourceManagerProfile.Mapper.Map(networkInterface); this.NullifyApplicationSecurityGroupIfAbsent(networkInterfaceModel); From 81cd18567a36d6c3cf0334f796e884c4b3620b25 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Wed, 17 Feb 2021 01:09:04 -0800 Subject: [PATCH 02/20] Hmm --- .../NewAzureNetworkInterfaceCommand.cs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs b/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs index 85b883f8e0a1..4d777f33903f 100644 --- a/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs +++ b/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs @@ -237,8 +237,8 @@ public class NewAzureNetworkInterfaceCommand : NetworkInterfaceBaseCmdlet [Parameter( Mandatory = false, ValueFromPipelineByPropertyName = true, - HelpMessage = "EdgeZone for Network Interface.")] - public string EdgeZone { get; set; } + HelpMessage = "ExtendedLocation of Network Interface.")] + public ExtendedLocation ExtendedLocation { get; set; } [Parameter( Mandatory = false, @@ -435,11 +435,7 @@ private PSNetworkInterface CreateNetworkInterface() networkInterface.NetworkSecurityGroup.Id = this.NetworkSecurityGroupId; } - if (!string.IsNullOrEmpty(this.EdgeZone)) - { - networkInterface.ExtendedLocation = new MNM.ExtendedLocation(this.EdgeZone); - networkInterface.ExtendedLocationType = ExtendedLocationTypes.EdgeZone; - } + networkInterface.ExtendedLocation = this.ExtendedLocation; var networkInterfaceModel = NetworkResourceManagerProfile.Mapper.Map(networkInterface); From df6e3ef687d6da39ba216629a7ec553cd94703a9 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Wed, 14 Apr 2021 12:18:27 -0700 Subject: [PATCH 03/20] UT stub --- .../Network.Test/ScenarioTests/NetworkInterfaceTests.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.cs b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.cs index ed277c7cfd9d..11be88a923e6 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.cs +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.cs @@ -130,5 +130,12 @@ public void TestNetworkInterfaceVmss() { TestRunner.RunTestScript("Test-NetworkInterfaceVmss"); } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + [Trait(Category.Owner, NrpTeamAlias.sdnnrp)] + public void TestNetworkInterfaceEdgeZone() + { + } } } From 771f11fa288b36b18616f5c2fc406b7b89a847be Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Wed, 14 Apr 2021 12:26:09 -0700 Subject: [PATCH 04/20] Script stub --- .../Network.Test/ScenarioTests/NetworkInterfaceTests.cs | 1 + .../Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.cs b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.cs index 11be88a923e6..af0847e543c9 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.cs +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.cs @@ -136,6 +136,7 @@ public void TestNetworkInterfaceVmss() [Trait(Category.Owner, NrpTeamAlias.sdnnrp)] public void TestNetworkInterfaceEdgeZone() { + TestRunner.RunTestScript("Test-NetworkInterfaceEdgeZone"); } } } diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 index f54825e67b66..62c578c8f57e 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 @@ -1088,3 +1088,8 @@ function Test-NetworkInterfaceVmss Clean-ResourceGroup $rgname; } } + +function Test-NetworkInterfaceEdgeZone +{ + +} From 80e5b333db1391d2c6e1938c8892c78abf230e95 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Wed, 14 Apr 2021 12:34:31 -0700 Subject: [PATCH 05/20] Boilerplate code --- .../ScenarioTests/NetworkInterfaceTests.ps1 | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 index 62c578c8f57e..7b70d86410c6 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 @@ -1091,5 +1091,14 @@ function Test-NetworkInterfaceVmss function Test-NetworkInterfaceEdgeZone { - + # Setup + $rgname = Get-ResourceGroupName + $vnetName = Get-ResourceName + $subnetName = Get-ResourceName + $publicIpName = Get-ResourceName + $nicName = Get-ResourceName + $domainNameLabel = Get-ResourceName + $rglocation = Get-ProviderLocation ResourceManagement + $resourceTypeParent = "Microsoft.Network/networkInterfaces" + $location = Get-ProviderLocation $resourceTypeParent } From a4b043c740dd970a61dd87661a06024a982c51b4 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Wed, 14 Apr 2021 12:50:40 -0700 Subject: [PATCH 06/20] More boilerplate code --- .../ScenarioTests/NetworkInterfaceTests.ps1 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 index 7b70d86410c6..e5a4bc803ea2 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 @@ -1101,4 +1101,15 @@ function Test-NetworkInterfaceEdgeZone $rglocation = Get-ProviderLocation ResourceManagement $resourceTypeParent = "Microsoft.Network/networkInterfaces" $location = Get-ProviderLocation $resourceTypeParent + + try + { + # Create the resource group + $resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval" } + } + finally + { + # Cleanup + Clean-ResourceGroup $rgname + } } From 23e5bce63bbefdb1df58ce3123b50af5ad655290 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Wed, 14 Apr 2021 12:59:28 -0700 Subject: [PATCH 07/20] Even more boilerplate code --- .../ScenarioTests/NetworkInterfaceTests.ps1 | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 index e5a4bc803ea2..21b071232661 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 @@ -1106,6 +1106,29 @@ function Test-NetworkInterfaceEdgeZone { # Create the resource group $resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval" } + + # Create the resource group + $resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval" } + + # Create the Virtual Network + $subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.1.0/24 + $vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $subnet + + # Create the publicip + $publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Dynamic -DomainNameLabel $domainNameLabel + + # Create NetworkInterface + $actualNic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname -Location $location -Subnet $vnet.Subnets[0] -PublicIpAddress $publicip + $expectedNic = Get-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname + + # Delete NetworkInterface + $job = Remove-AzNetworkInterface -ResourceGroupName $rgname -name $nicName -PassThru -Force -AsJob + $job | Wait-Job + $delete = $job | Receive-Job + Assert-AreEqual true $delete + + $list = Get-AzNetworkInterface -ResourceGroupName $rgname + Assert-AreEqual 0 @($list).Count } finally { From 4e8d69a49e94f2f591f3e8ec0cd5c30e5e755db2 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Wed, 14 Apr 2021 16:45:40 -0700 Subject: [PATCH 08/20] Weirdness with the UT --- .../Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 index 21b071232661..4ed833fd0d25 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 @@ -1107,9 +1107,6 @@ function Test-NetworkInterfaceEdgeZone # Create the resource group $resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval" } - # Create the resource group - $resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval" } - # Create the Virtual Network $subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.1.0/24 $vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $subnet @@ -1118,8 +1115,10 @@ function Test-NetworkInterfaceEdgeZone $publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Dynamic -DomainNameLabel $domainNameLabel # Create NetworkInterface - $actualNic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname -Location $location -Subnet $vnet.Subnets[0] -PublicIpAddress $publicip - $expectedNic = Get-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname + $job = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname -Location $location -Subnet $vnet.Subnets[0] -PublicIpAddress $publicip -AsJob + $job | Wait-Job + + #$expectedNic = Get-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname # Delete NetworkInterface $job = Remove-AzNetworkInterface -ResourceGroupName $rgname -name $nicName -PassThru -Force -AsJob From 522892a65a8e3e1ae74db767527d0c186670f7d3 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Wed, 14 Apr 2021 17:43:05 -0700 Subject: [PATCH 09/20] More updates --- src/Network/Network/Models/PSTopLevelResource.cs | 3 --- .../NetworkInterface/NewAzureNetworkInterfaceCommand.cs | 9 ++++++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Network/Network/Models/PSTopLevelResource.cs b/src/Network/Network/Models/PSTopLevelResource.cs index 92c403a17dd1..3dcc498a4418 100644 --- a/src/Network/Network/Models/PSTopLevelResource.cs +++ b/src/Network/Network/Models/PSTopLevelResource.cs @@ -29,9 +29,6 @@ public class PSTopLevelResource : PSChildResource public ExtendedLocation ExtendedLocation { get; set; } - // Not sure that is right - public string ExtendedLocationType { get; set; } - public string ResourceGuid { get; set; } public string Type { get; set; } diff --git a/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs b/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs index 4d777f33903f..5a1bed903beb 100644 --- a/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs +++ b/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs @@ -237,8 +237,8 @@ public class NewAzureNetworkInterfaceCommand : NetworkInterfaceBaseCmdlet [Parameter( Mandatory = false, ValueFromPipelineByPropertyName = true, - HelpMessage = "ExtendedLocation of Network Interface.")] - public ExtendedLocation ExtendedLocation { get; set; } + HelpMessage = "Edge zone of Network Interface.")] + public string EdgeZone { get; set; } [Parameter( Mandatory = false, @@ -435,7 +435,10 @@ private PSNetworkInterface CreateNetworkInterface() networkInterface.NetworkSecurityGroup.Id = this.NetworkSecurityGroupId; } - networkInterface.ExtendedLocation = this.ExtendedLocation; + if (this.EdgeZone != null) + { + networkInterface.ExtendedLocation = new ExtendedLocation(this.EdgeZone); + } var networkInterfaceModel = NetworkResourceManagerProfile.Mapper.Map(networkInterface); From d52476111c9bd4300ce195ab01869624a8dd44a8 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Wed, 14 Apr 2021 18:40:09 -0700 Subject: [PATCH 10/20] More validation --- .../ScenarioTests/NetworkInterfaceTests.ps1 | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 index 4ed833fd0d25..1f935243915d 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 @@ -1106,19 +1106,27 @@ function Test-NetworkInterfaceEdgeZone { # Create the resource group $resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval" } + $resourceGroupRetrieved = Get-AzResourceGroup -ResourceGroupName $rgname + Assert-NotNull $resourceGroupRetrieved # Create the Virtual Network $subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.1.0/24 $vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $subnet + $retrievedVnet = Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname + Assert-NotNull $retrievedVnet + $retrievedSubnet = Get-AzVirtualNetworkSubnetConfig -Name $subnetName -VirtualNetwork $vnet + Assert-NotNull $retrievedSubnet # Create the publicip $publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Dynamic -DomainNameLabel $domainNameLabel + $publicIpRetrieved = Get-AzPublicIpAddress -Name $publicIpName -ResourceGroupName $rgname + Assert-NotNull $publicIpRetrieved # Create NetworkInterface $job = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname -Location $location -Subnet $vnet.Subnets[0] -PublicIpAddress $publicip -AsJob $job | Wait-Job - #$expectedNic = Get-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname + $expectedNic = Get-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname # Delete NetworkInterface $job = Remove-AzNetworkInterface -ResourceGroupName $rgname -name $nicName -PassThru -Force -AsJob From 4d6fae4a9abe27a8e88a1f2562294152c4613db8 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Mon, 19 Apr 2021 17:38:07 -0700 Subject: [PATCH 11/20] PSExtendedLocation wrapper --- .../Network/Models/PSExtendedLocation.cs | 22 +++++++++++++++++++ .../Network/Models/PSTopLevelResource.cs | 3 +-- .../NewAzureNetworkInterfaceCommand.cs | 5 +++-- 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 src/Network/Network/Models/PSExtendedLocation.cs diff --git a/src/Network/Network/Models/PSExtendedLocation.cs b/src/Network/Network/Models/PSExtendedLocation.cs new file mode 100644 index 000000000000..79a16095cd12 --- /dev/null +++ b/src/Network/Network/Models/PSExtendedLocation.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.Azure.Management.Network.Models; + +namespace Microsoft.Azure.Commands.Network.Models +{ + public class PSExtendedLocation + { + public PSExtendedLocation() + { } + + public PSExtendedLocation(ExtendedLocation extendedLocation) + { + this.Name = extendedLocation.Name; + this.Type = ExtendedLocation.Type; + } + + public string Name { get; set; } + public string Type { get; set; } + } +} diff --git a/src/Network/Network/Models/PSTopLevelResource.cs b/src/Network/Network/Models/PSTopLevelResource.cs index 3dcc498a4418..cad7a2852c3f 100644 --- a/src/Network/Network/Models/PSTopLevelResource.cs +++ b/src/Network/Network/Models/PSTopLevelResource.cs @@ -13,7 +13,6 @@ // ---------------------------------------------------------------------------------- using Microsoft.Azure.Management.Internal.Resources.Utilities; -using Microsoft.Azure.Management.Network.Models; using Microsoft.WindowsAzure.Commands.Common.Attributes; using System.Collections; @@ -27,7 +26,7 @@ public class PSTopLevelResource : PSChildResource [Ps1Xml(Label = "Location", Target = ViewControl.Table, Position = 2)] public string Location { get; set; } - public ExtendedLocation ExtendedLocation { get; set; } + public PSExtendedLocation ExtendedLocation { get; set; } public string ResourceGuid { get; set; } diff --git a/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs b/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs index 5a1bed903beb..07e877fc9621 100644 --- a/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs +++ b/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs @@ -238,6 +238,7 @@ public class NewAzureNetworkInterfaceCommand : NetworkInterfaceBaseCmdlet Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Edge zone of Network Interface.")] + [ValidateNotNullOrEmpty] public string EdgeZone { get; set; } [Parameter( @@ -435,9 +436,9 @@ private PSNetworkInterface CreateNetworkInterface() networkInterface.NetworkSecurityGroup.Id = this.NetworkSecurityGroupId; } - if (this.EdgeZone != null) + if (!string.IsNullOrEmpty(this.EdgeZone)) { - networkInterface.ExtendedLocation = new ExtendedLocation(this.EdgeZone); + networkInterface.ExtendedLocation = new PSExtendedLocation(new ExtendedLocation(this.EdgeZone)); } var networkInterfaceModel = NetworkResourceManagerProfile.Mapper.Map(networkInterface); From fbece3647a0d75a7f89d30a8ea6c74bc839a05d0 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Mon, 19 Apr 2021 17:42:47 -0700 Subject: [PATCH 12/20] Decouple --- src/Network/Network/Models/PSExtendedLocation.cs | 8 +++----- .../NetworkInterface/NewAzureNetworkInterfaceCommand.cs | 3 +-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/Network/Network/Models/PSExtendedLocation.cs b/src/Network/Network/Models/PSExtendedLocation.cs index 79a16095cd12..ee5bd4f467bb 100644 --- a/src/Network/Network/Models/PSExtendedLocation.cs +++ b/src/Network/Network/Models/PSExtendedLocation.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Microsoft.Azure.Management.Network.Models; +using Microsoft.Azure.Management.Network.Models; namespace Microsoft.Azure.Commands.Network.Models { @@ -10,8 +7,9 @@ public class PSExtendedLocation public PSExtendedLocation() { } - public PSExtendedLocation(ExtendedLocation extendedLocation) + public PSExtendedLocation(string EdgeZone) { + var extendedLocation = new ExtendedLocation(EdgeZone); this.Name = extendedLocation.Name; this.Type = ExtendedLocation.Type; } diff --git a/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs b/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs index 07e877fc9621..31710d520d66 100644 --- a/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs +++ b/src/Network/Network/NetworkInterface/NewAzureNetworkInterfaceCommand.cs @@ -19,7 +19,6 @@ using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; using Microsoft.Azure.Commands.ResourceManager.Common.Tags; using Microsoft.Azure.Management.Network; -using Microsoft.Azure.Management.Network.Models; using System.Collections; using System.Collections.Generic; using System.Linq; @@ -438,7 +437,7 @@ private PSNetworkInterface CreateNetworkInterface() if (!string.IsNullOrEmpty(this.EdgeZone)) { - networkInterface.ExtendedLocation = new PSExtendedLocation(new ExtendedLocation(this.EdgeZone)); + networkInterface.ExtendedLocation = new PSExtendedLocation(this.EdgeZone); } var networkInterfaceModel = NetworkResourceManagerProfile.Mapper.Map(networkInterface); From 9852b6beb77bfa9605417744e611dc9b7eeeb408 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Mon, 19 Apr 2021 18:22:36 -0700 Subject: [PATCH 13/20] Try catch --- .../ScenarioTests/NetworkInterfaceTests.ps1 | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 index 1f935243915d..f9be6d3a2aee 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 @@ -1122,17 +1122,25 @@ function Test-NetworkInterfaceEdgeZone $publicIpRetrieved = Get-AzPublicIpAddress -Name $publicIpName -ResourceGroupName $rgname Assert-NotNull $publicIpRetrieved - # Create NetworkInterface - $job = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname -Location $location -Subnet $vnet.Subnets[0] -PublicIpAddress $publicip -AsJob - $job | Wait-Job + try + { + # Create NetworkInterface + $job = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname -Location $location -Subnet $vnet.Subnets[0] -PublicIpAddress $publicip -AsJob -EdgeZone "EdgeZone0" + $job | Wait-Job - $expectedNic = Get-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname + $expectedNic = Get-AzNetworkInterface -Name $nicName -ResourceGroupName $rgname + + # Delete NetworkInterface + $job = Remove-AzNetworkInterface -ResourceGroupName $rgname -name $nicName -PassThru -Force -AsJob + $job | Wait-Job + $delete = $job | Receive-Job + Assert-AreEqual true $delete + } + catch [Microsoft.Azure.Commands.Network.Common.NetworkCloudException] + { + Assert-NotNull $_.Exception.Message + } - # Delete NetworkInterface - $job = Remove-AzNetworkInterface -ResourceGroupName $rgname -name $nicName -PassThru -Force -AsJob - $job | Wait-Job - $delete = $job | Receive-Job - Assert-AreEqual true $delete $list = Get-AzNetworkInterface -ResourceGroupName $rgname Assert-AreEqual 0 @($list).Count From 392707113ea4489f138dfa98d2c7694295d1e1fd Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Mon, 19 Apr 2021 18:39:04 -0700 Subject: [PATCH 14/20] exception message --- src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 index f9be6d3a2aee..22c4215579be 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 @@ -1139,6 +1139,7 @@ function Test-NetworkInterfaceEdgeZone catch [Microsoft.Azure.Commands.Network.Common.NetworkCloudException] { Assert-NotNull $_.Exception.Message + Assert-NotNull { $_.Exception.Message -like "*edge*" } } From a3043d374b5d0368a1e5e2a2e760d5c38535ab17 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Mon, 19 Apr 2021 18:47:08 -0700 Subject: [PATCH 15/20] Clean up --- .../Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 index 22c4215579be..a6059e5250e1 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 @@ -1138,8 +1138,7 @@ function Test-NetworkInterfaceEdgeZone } catch [Microsoft.Azure.Commands.Network.Common.NetworkCloudException] { - Assert-NotNull $_.Exception.Message - Assert-NotNull { $_.Exception.Message -like "*edge*" } + Assert-NotNull { $_.Exception.Message -like "*does not support edge zone*" } } From b459933136f630803b6263986ec77dc41a89e561 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Mon, 19 Apr 2021 18:50:43 -0700 Subject: [PATCH 16/20] Regex --- .../Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 index a6059e5250e1..3a7eaf756e7c 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 @@ -1138,7 +1138,7 @@ function Test-NetworkInterfaceEdgeZone } catch [Microsoft.Azure.Commands.Network.Common.NetworkCloudException] { - Assert-NotNull { $_.Exception.Message -like "*does not support edge zone*" } + Assert-NotNull { $_.Exception.Message -match '.*does not support edge zone.*' } } From dafd50d9f44265748b813df38259b01305941bb3 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Mon, 19 Apr 2021 18:54:43 -0700 Subject: [PATCH 17/20] Checkpoint --- .../Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 index 3a7eaf756e7c..5db8dec0af45 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 @@ -1138,7 +1138,7 @@ function Test-NetworkInterfaceEdgeZone } catch [Microsoft.Azure.Commands.Network.Common.NetworkCloudException] { - Assert-NotNull { $_.Exception.Message -match '.*does not support edge zone.*' } + Assert-NotNull { $_.Exception.Message -match 'Resource type .*does not support edge zone.*' } } From 89a5677235f348e3ab248f0fc9851048d850692c Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Mon, 19 Apr 2021 18:58:07 -0700 Subject: [PATCH 18/20] Finish regex --- .../Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 index 5db8dec0af45..87314d0867a3 100644 --- a/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 +++ b/src/Network/Network.Test/ScenarioTests/NetworkInterfaceTests.ps1 @@ -1138,7 +1138,7 @@ function Test-NetworkInterfaceEdgeZone } catch [Microsoft.Azure.Commands.Network.Common.NetworkCloudException] { - Assert-NotNull { $_.Exception.Message -match 'Resource type .*does not support edge zone.*' } + Assert-NotNull { $_.Exception.Message -match 'Resource type .* does not support edge zone .* in location .* The supported edge zones are .*' } } From 5c906cd94ac1b5dcad0bb8d062d7c19cdb2e8ca9 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Mon, 19 Apr 2021 19:23:28 -0700 Subject: [PATCH 19/20] Refactor PSExtendedLocation --- .../Network/Models/PSExtendedLocation.cs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Network/Network/Models/PSExtendedLocation.cs b/src/Network/Network/Models/PSExtendedLocation.cs index ee5bd4f467bb..47300c7d4d25 100644 --- a/src/Network/Network/Models/PSExtendedLocation.cs +++ b/src/Network/Network/Models/PSExtendedLocation.cs @@ -1,7 +1,22 @@ -using Microsoft.Azure.Management.Network.Models; +// +// Copyright (c) Microsoft. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// namespace Microsoft.Azure.Commands.Network.Models { + using Microsoft.Azure.Management.Network.Models; + public class PSExtendedLocation { public PSExtendedLocation() @@ -10,11 +25,13 @@ public PSExtendedLocation() public PSExtendedLocation(string EdgeZone) { var extendedLocation = new ExtendedLocation(EdgeZone); + this.Name = extendedLocation.Name; this.Type = ExtendedLocation.Type; } public string Name { get; set; } + public string Type { get; set; } } } From 9e5710b1c369b3b2fdab689495ae5fb188695931 Mon Sep 17 00:00:00 2001 From: Will Ehrich Date: Tue, 20 Apr 2021 23:16:48 -0700 Subject: [PATCH 20/20] Make extended location specific to PSNetworkInterface --- src/Network/Network/Models/PSNetworkInterface.cs | 2 ++ src/Network/Network/Models/PSTopLevelResource.cs | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Network/Network/Models/PSNetworkInterface.cs b/src/Network/Network/Models/PSNetworkInterface.cs index f51da0dfe175..1192f672a9eb 100644 --- a/src/Network/Network/Models/PSNetworkInterface.cs +++ b/src/Network/Network/Models/PSNetworkInterface.cs @@ -86,6 +86,8 @@ public string PrivateEndpointText get { return JsonConvert.SerializeObject(PrivateEndpoint, Formatting.Indented, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore }); } } + public PSExtendedLocation ExtendedLocation { get; set; } + public bool ShouldSerializeIpConfigurations() { return !string.IsNullOrEmpty(this.Name); diff --git a/src/Network/Network/Models/PSTopLevelResource.cs b/src/Network/Network/Models/PSTopLevelResource.cs index cad7a2852c3f..0888bfa7edb9 100644 --- a/src/Network/Network/Models/PSTopLevelResource.cs +++ b/src/Network/Network/Models/PSTopLevelResource.cs @@ -26,8 +26,6 @@ public class PSTopLevelResource : PSChildResource [Ps1Xml(Label = "Location", Target = ViewControl.Table, Position = 2)] public string Location { get; set; } - public PSExtendedLocation ExtendedLocation { get; set; } - public string ResourceGuid { get; set; } public string Type { get; set; }