Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EventHubs]: Fixing Get-AzEventHubNamespace to return all namespaces for subscriptions and resource groups that have more than 100 of them. #18672

Merged
merged 6 commits into from
Jun 27, 2022
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions src/EventHub/EventHub.Test/ScenarioTests/NamespaceTests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ function NamespaceAuthTests
$createdNamespace = Get-AzEventHubNamespace -ResourceGroup $resourceGroupName -Name $namespaceName
Assert-AreEqual $createdNamespace.ResourceGroup $resourceGroupName "Namespace get : ResourceGroup name matches"
Assert-AreEqual $createdNamespace.ResourceGroupName $resourceGroupName "Namespace get : ResourceGroupName name matches"
Assert-AreEqual $createdNamespace.Name $namespaceName

#Assert
Assert-AreEqual $createdNamespace.Name $namespaceName "Namespace created earlier is not found."
Expand Down Expand Up @@ -286,10 +287,13 @@ function NamespaceTests
#Assert
Assert-True {$allCreatedNamespace.Count -ge 0 } "Namespace created earlier is not found. in list"

#Write-Debug "Get all the namespaces created in the subscription"
#$allCreatedNamespace = Get-AzEventHubNamespace
Write-Debug "Get all the namespaces created in the subscription"
$allCreatedNamespace = Get-AzEventHubNamespace

#Assert-True {$allCreatedNamespace.Count -ge 0} "Namespaces created earlier is not found."
Assert-True {$allCreatedNamespace.Count -ge 0} "Namespaces created earlier is not found."

$listByResourceGroup = Get-AzEventHubNamespace -ResourceGroup $resourceGroupName
Assert-AreEqual 4 $listByResourceGroup.Count

Write-Debug " Delete namespaces"
Remove-AzEventHubNamespace -ResourceGroup $secondResourceGroup -Name $namespaceName2
Expand Down Expand Up @@ -526,6 +530,7 @@ function ApplicationGroupTest{
$clientGroupId2 = getAssetName "SASKeyName=authkey"
$clientGroupId3 = getAssetName "SASKeyName=authkey"
$clientGroupId4 = getAssetName "SASKeyName=authkey"
$randomAppGroup = getAssetName "randomAppGroup"

try{
# Create Resource Group
Expand Down Expand Up @@ -670,6 +675,8 @@ function ApplicationGroupTest{
$appGroup3 = New-AzEventHubApplicationGroup -ResourceGroupName $resourceGroupName -NamespaceName $namespaceName -Name $appGroupName3 -ClientAppGroupIdentifier $clientGroupId3 -ThrottlingPolicyConfig $t1
$appGroup4 = New-AzEventHubApplicationGroup -ResourceGroupName $resourceGroupName -NamespaceName $namespaceName -Name $appGroupName4 -ClientAppGroupIdentifier $clientGroupId4 -ThrottlingPolicyConfig $t2

Assert-ThrowsContains { Set-AzEventHubApplicationGroup -ResourceGroupName $resourceGroupName -NamespaceName $namespaceName -Name $randomAppGroup -ThrottlingPolicyConfig $t1 } "Operation returned an invalid status code 'NotFound'"

$listOfAppGroups = Get-AzEventHubApplicationGroup -ResourceGroupName $resourceGroupName -NamespaceName $namespaceName
Assert-AreEqual $listOfAppGroups.Count 4

Expand Down
7 changes: 7 additions & 0 deletions src/EventHub/EventHub.Test/ScenarioTests/PaginationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,12 @@ public void ApplicationGroupPaginationTests()
{
TestRunner.RunTestScript("ApplicationGroupPagination");
}

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void NamespacePaginationTests()
{
TestRunner.RunTestScript("NamespacePagination");
}
}
}
11 changes: 11 additions & 0 deletions src/EventHub/EventHub.Test/ScenarioTests/PaginationTests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,14 @@ function ApplicationGroupPagination{

Assert-ThrowsContains { New-AzEventHubApplicationGroup -ResourceGroupName $resourceGroupName -NamespaceName $namespaceName -Name test -ClientAppGroupIdentifier SASKeyName=test -ThrottlingPolicyConfig $t1 } "Operation returned an invalid status code 'BadRequest'"
}

function NamespacePagination{
$resourceGroupName = "testpaginationforps"

$listNamespacesBySubscription = Get-AzEventHubNamespace
Assert-True { $listNamespacesBySubscription.Count -gt 200 }

$listNamespacesByResourceGroup = Get-AzEventHubNamespace -ResourceGroupName $resourceGroupName
Assert-True { $listNamespacesByResourceGroup.Count -gt 200}
Assert-True { $listNamespacesByResourceGroup.Count -lt $listNamespacesBySubscription.Count }
}

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

8 changes: 7 additions & 1 deletion src/EventHub/EventHub/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,13 @@
- Additional information about change #1
-->
## Upcoming Release
* Added cmdlets for CRUD operations on EventHub Application Groups.
* Added cmdlets for CRUD operations on EventHub Application Groups. The added cmdlets include,
-New-AzEventHubApplicationGroup
-Set-AzEventHubApplicationGroup
-Remove-AzEventHubApplicationGroup
-Get-AzEventHubApplicationGroup
-New-AzEventHubThrottlingPolicyConfig
* BREAKING CHANGE: Get-AzEventHubNamespace returned a maximum of 100 namespaces for list by resource groups or list by subscriptions so far. From here onwards, for resource groups and subscriptions with over a 100 namespaces, the cmdlet will return all the namespaces. You will not see a change in the cmdlet behaviour if your resource groups or subscriptions have less than a 100 namespaces.
damodaravadhani marked this conversation as resolved.
Show resolved Hide resolved

## Version 2.0.0
* Made `IPRule` and `VirtualNetworkRule` optional in `Set-AzEventHubNetworkRuleSet`.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ namespace Microsoft.Azure.Commands.EventHub.Commands.ApplicationGroups
[Cmdlet("New", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "EventHubThrottlingPolicyConfig"), OutputType(typeof(PSEventHubThrottlingPolicyConfigAttributes))]
public class NewAzureEventHubsThrottlingPolicyConfig: AzureEventHubsCmdletBase
{
[Parameter(Mandatory = false,
[Parameter(Mandatory = true,
Position = 0,
HelpMessage = "Name of Throttling Policy")]
public string Name { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,11 @@ public override void ExecuteCmdlet()
}
else if(ParameterSetName == ApplicationGroupInputObjectParameterSet)
{
//Set Cmdlets must throw exception in case the resource does not already exist
Client.GetApplicationGroup(resourceGroupName: ResourceGroupName,
namespaceName: NamespaceName,
appGroupName: Name);

//When InputObject is given as a parameter, the assumption is that the consumer has given the entire desired state
//Hence we reconstruct a new app group object
//That is why a create call and not update call.
Expand Down
62 changes: 54 additions & 8 deletions src/EventHub/EventHub/Utilities/EventHubsClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,16 +63,62 @@ public PSNamespaceAttributes GetNamespace(string resourceGroupName, string names

public IEnumerable<PSNamespaceAttributes> ListNamespacesByResourceGroup(string resourceGroupName)
{
var response = Client.Namespaces.ListByResourceGroup(resourceGroupName);
var resourceList = response.Select(resource => new PSNamespaceAttributes(resource));
return resourceList;
var listOfNamespaces = new List<PSNamespaceAttributes>();

string nextPageLink = null;

do
{
var pageOfNamespaces = new List<PSNamespaceAttributes>();

if (!String.IsNullOrEmpty(nextPageLink))
{
var result = Client.Namespaces.ListByResourceGroupNext(nextPageLink);
nextPageLink = result.NextPageLink;
pageOfNamespaces = result.Select(resource => new PSNamespaceAttributes(resource)).ToList();
}
else
{
var result = Client.Namespaces.ListByResourceGroup(resourceGroupName);
nextPageLink = result.NextPageLink;
pageOfNamespaces = result.Select(resource => new PSNamespaceAttributes(resource)).ToList();
}

listOfNamespaces.AddRange(pageOfNamespaces);

} while (!String.IsNullOrEmpty(nextPageLink));

return listOfNamespaces;
}

public IEnumerable<PSNamespaceAttributes> ListNamespacesBySubscription()
{
var response = Client.Namespaces.List();
var resourceList = response.Select(resource => new PSNamespaceAttributes(resource));
return resourceList;
var listOfNamespaces = new List<PSNamespaceAttributes>();

string nextPageLink = null;

do
{
var pageOfNamespaces = new List<PSNamespaceAttributes>();

if (!String.IsNullOrEmpty(nextPageLink))
{
var result = Client.Namespaces.ListNext(nextPageLink);
nextPageLink = result.NextPageLink;
pageOfNamespaces = result.Select(resource => new PSNamespaceAttributes(resource)).ToList();
}
else
{
var result = Client.Namespaces.List();
nextPageLink = result.NextPageLink;
pageOfNamespaces = result.Select(resource => new PSNamespaceAttributes(resource)).ToList();
}

listOfNamespaces.AddRange(pageOfNamespaces);

} while (!String.IsNullOrEmpty(nextPageLink));

return listOfNamespaces;
}

public PSNamespaceAttributes BeginCreateNamespace(string resourceGroupName, string namespaceName, string location, string skuName, int? skuCapacity, Dictionary<string, string> tags, bool isAutoInflateEnabled, int? maximumThroughputUnits, bool isKafkaEnabled, string clusterARMId, bool isZoneRedundant, bool isDisableLocalAuth
Expand Down Expand Up @@ -957,7 +1003,7 @@ public IEnumerable<PSEventHubApplicationGroupAttributes> ListApplicationGroup(st
{
var fetchAppGroups = new List<PSEventHubApplicationGroupAttributes>();

if (nextPageLink != null)
if (!String.IsNullOrEmpty(nextPageLink))
{
var result = Client.ApplicationGroup.ListByNamespaceNext(nextPageLink);
nextPageLink = result.NextPageLink;
Expand All @@ -972,7 +1018,7 @@ public IEnumerable<PSEventHubApplicationGroupAttributes> ListApplicationGroup(st

listOfAppGroups.AddRange(fetchAppGroups);

} while (nextPageLink != null);
} while (!String.IsNullOrEmpty(nextPageLink));

return listOfAppGroups;
}
Expand Down