Add Confluent PowerShell commands for API version 2025-08-18-preview#29246
Add Confluent PowerShell commands for API version 2025-08-18-preview#29246Shekar2004 wants to merge 1 commit intoAzure:mainfrom
Conversation
| Thanks for your contribution! The pull request validation has started. Please revisit this comment for updated status. |
There was a problem hiding this comment.
Pull request overview
Updates the Az.Confluent module to onboard Confluent management-plane cmdlets generated from the 2025-08-18-preview API version, including refreshed docs, UX metadata, and test scaffolding.
Changes:
- Added new cmdlet help/docs and UX descriptors for preview API resources (environments, clusters, topics, connectors, API keys, access endpoints).
- Updated module manifest/solution wiring and bumped assembly version to 0.3.0.
- Added/updated example markdowns and Pester test stubs + recordings for the new cmdlets.
Reviewed changes
Copilot reviewed 151 out of 175 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Confluent/Confluent/help/Get-AzConfluentOrganizationEnvironment.md | New cmdlet help for listing/getting organization environments |
| src/Confluent/Confluent/help/Get-AzConfluentOrganizationClusterApiKey.md | New cmdlet help for fetching cluster API key details |
| src/Confluent/Confluent/help/Get-AzConfluentOrganization.md | Updated help metadata/types/descriptions for consistency with newer generator output |
| src/Confluent/Confluent/help/Get-AzConfluentMarketplaceAgreement.md | Updated help metadata/type casing + parameter descriptions |
| src/Confluent/Confluent/help/Get-AzConfluentAccessUser.md | New cmdlet help for listing organization users |
| src/Confluent/Confluent/help/Get-AzConfluentAccessCluster.md | New cmdlet help for cluster access listing |
| src/Confluent/Confluent/help/Az.Confluent.md | Updated module cmdlet index to include new cmdlets |
| src/Confluent/Confluent/Az.Confluent.psd1 | Manifest updates (required Az.Accounts version, exported functions list, generated date) |
| src/Confluent/Confluent.sln | Solution wiring updated to new generated project path/name |
| src/Confluent/Confluent.Autorest/test/env.json | Updated test environment values used by Pester tests |
| src/Confluent/Confluent.Autorest/test/Update-AzConfluentTopic.Tests.ps1 | New Pester test stub for Update-AzConfluentTopic |
| src/Confluent/Confluent.Autorest/test/Update-AzConfluentOrganization.Tests.ps1 | Existing Pester tests marked skipped |
| src/Confluent/Confluent.Autorest/test/Update-AzConfluentConnector.Tests.ps1 | New Pester test stub for Update-AzConfluentConnector |
| src/Confluent/Confluent.Autorest/test/Test-AzConfluentValidationOrganizationV2.Tests.ps1 | New Pester test stub for org validation V2 |
| src/Confluent/Confluent.Autorest/test/Test-AzConfluentValidationOrganization.Tests.ps1 | New Pester test stub for org validation |
| src/Confluent/Confluent.Autorest/test/Set-AzConfluentEnvironment.Tests.ps1 | New Pester test stub for Set-AzConfluentEnvironment |
| src/Confluent/Confluent.Autorest/test/Set-AzConfluentConnector.Tests.ps1 | New Pester test stub for Set-AzConfluentConnector |
| src/Confluent/Confluent.Autorest/test/Set-AzConfluentCluster.Tests.ps1 | New Pester test stub for Set-AzConfluentCluster |
| src/Confluent/Confluent.Autorest/test/Remove-AzConfluentTopic.Tests.ps1 | New Pester test stub for Remove-AzConfluentTopic |
| src/Confluent/Confluent.Autorest/test/Remove-AzConfluentOrganizationClusterApiKey.Tests.ps1 | New Pester test stub for removing API keys |
| src/Confluent/Confluent.Autorest/test/Remove-AzConfluentEnvironment.Tests.ps1 | New Pester test stub for removing environments |
| src/Confluent/Confluent.Autorest/test/Remove-AzConfluentConnector.Tests.ps1 | New Pester test stub for removing connectors |
| src/Confluent/Confluent.Autorest/test/Remove-AzConfluentCluster.Tests.ps1 | New Pester test stub for removing clusters |
| src/Confluent/Confluent.Autorest/test/Remove-AzConfluentAccessRoleBinding.Tests.ps1 | New Pester test stub for removing role bindings |
| src/Confluent/Confluent.Autorest/test/New-AzConfluentTopic.Tests.ps1 | New Pester test stub for creating topics |
| src/Confluent/Confluent.Autorest/test/New-AzConfluentOrganizationApiKey.Tests.ps1 | New Pester test stub for creating org API keys |
| src/Confluent/Confluent.Autorest/test/New-AzConfluentOrganization.Tests.ps1 | Existing Pester tests marked skipped |
| src/Confluent/Confluent.Autorest/test/New-AzConfluentEnvironment.Tests.ps1 | New Pester test stub for creating environments |
| src/Confluent/Confluent.Autorest/test/New-AzConfluentConnector.Tests.ps1 | New Pester test stub for creating connectors |
| src/Confluent/Confluent.Autorest/test/New-AzConfluentCluster.Tests.ps1 | New Pester test stub for creating clusters |
| src/Confluent/Confluent.Autorest/test/New-AzConfluentAccessRoleBinding.Tests.ps1 | New Pester test stub for creating role bindings |
| src/Confluent/Confluent.Autorest/test/Invoke-AzConfluentInviteAccessUser.Tests.ps1 | New Pester test stub for inviting users |
| src/Confluent/Confluent.Autorest/test/Get-AzConfluentTopic.Tests.ps1 | New Pester test stub for listing/getting topics |
| src/Confluent/Confluent.Autorest/test/Get-AzConfluentOrganizationSchemaRegistryCluster.Tests.ps1 | New Pester test stub for schema registry clusters |
| src/Confluent/Confluent.Autorest/test/Get-AzConfluentOrganizationRegion.Tests.ps1 | New Pester test stub for regions |
| src/Confluent/Confluent.Autorest/test/Get-AzConfluentOrganizationEnvironment.Tests.ps1 | New Pester test stub for environments |
| src/Confluent/Confluent.Autorest/test/Get-AzConfluentOrganizationClusterApiKey.Tests.ps1 | New Pester test stub for API keys |
| src/Confluent/Confluent.Autorest/test/Get-AzConfluentOrganizationCluster.Tests.ps1 | New Pester test stub for clusters |
| src/Confluent/Confluent.Autorest/test/Get-AzConfluentOrganization.Tests.ps1 | Existing Pester tests marked skipped |
| src/Confluent/Confluent.Autorest/test/Get-AzConfluentMarketplaceAgreement.Recording.json | Updated recording to new subscription + preview API version |
| src/Confluent/Confluent.Autorest/how-to.md | Updated module naming references in developer how-to |
| src/Confluent/Confluent.Autorest/generate-info.json | Updated autorest generation id |
| src/Confluent/Confluent.Autorest/examples/Update-AzConfluentTopic.md | New example content for updating topics |
| src/Confluent/Confluent.Autorest/examples/Update-AzConfluentConnector.md | New example content for updating connectors |
| src/Confluent/Confluent.Autorest/examples/Test-AzConfluentValidationOrganizationV2.md | New example content for org validation V2 |
| src/Confluent/Confluent.Autorest/examples/Test-AzConfluentValidationOrganization.md | New example content for org validation |
| src/Confluent/Confluent.Autorest/examples/Set-AzConfluentEnvironment.md | New example content for setting environments |
| src/Confluent/Confluent.Autorest/examples/Set-AzConfluentConnector.md | New example content for setting connectors |
| src/Confluent/Confluent.Autorest/examples/Set-AzConfluentCluster.md | New example content for setting clusters |
| src/Confluent/Confluent.Autorest/examples/Remove-AzConfluentTopic.md | New example content for removing topics |
| src/Confluent/Confluent.Autorest/examples/Remove-AzConfluentOrganizationClusterApiKey.md | New example content for removing API keys |
| src/Confluent/Confluent.Autorest/examples/Remove-AzConfluentEnvironment.md | New example content for removing environments |
| src/Confluent/Confluent.Autorest/examples/Remove-AzConfluentConnector.md | New example content for removing connectors |
| src/Confluent/Confluent.Autorest/examples/Remove-AzConfluentCluster.md | New example content for removing clusters |
| src/Confluent/Confluent.Autorest/examples/Remove-AzConfluentAccessRoleBinding.md | New example content for removing role bindings |
| src/Confluent/Confluent.Autorest/examples/New-AzConfluentTopic.md | New example content for creating topics |
| src/Confluent/Confluent.Autorest/examples/New-AzConfluentOrganizationApiKey.md | New example content for creating org API keys |
| src/Confluent/Confluent.Autorest/examples/New-AzConfluentEnvironment.md | New example content for creating environments |
| src/Confluent/Confluent.Autorest/examples/New-AzConfluentConnector.md | New example content for creating connectors |
| src/Confluent/Confluent.Autorest/examples/New-AzConfluentCluster.md | New example content for creating clusters |
| src/Confluent/Confluent.Autorest/examples/New-AzConfluentAccessRoleBinding.md | New example content for creating role bindings |
| src/Confluent/Confluent.Autorest/examples/Invoke-AzConfluentInviteAccessUser.md | New example content for inviting users |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentTopic.md | New example content for listing/getting topics |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentOrganizationSchemaRegistryCluster.md | New example content for schema registry clusters |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentOrganizationRegion.md | New example content for regions |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentOrganizationEnvironment.md | New example content for environments |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentOrganizationClusterApiKey.md | New example content for API keys |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentOrganizationCluster.md | New example content for clusters |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentConnector.md | New example content for connectors |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentAccessUser.md | New example content for listing users |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentAccessServiceAccount.md | New example content for listing service accounts |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentAccessRoleBindingNameList.md | New example content for role binding name list |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentAccessRoleBinding.md | New example content for listing role bindings |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentAccessInvitation.md | New example content for listing invitations |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentAccessEnvironment.md | New example content for listing environments (access) |
| src/Confluent/Confluent.Autorest/examples/Get-AzConfluentAccessCluster.md | New example content for listing clusters (access) |
| src/Confluent/Confluent.Autorest/docs/Update-AzConfluentOrganization.md | Updated reference doc metadata/type casing + description capitalization |
| src/Confluent/Confluent.Autorest/docs/Remove-AzConfluentOrganizationClusterApiKey.md | New reference doc for removing org cluster API keys |
| src/Confluent/Confluent.Autorest/docs/Remove-AzConfluentOrganization.md | Updated reference doc metadata/type casing |
| src/Confluent/Confluent.Autorest/docs/Remove-AzConfluentAccessRoleBinding.md | New reference doc for removing role bindings |
| src/Confluent/Confluent.Autorest/docs/README.md | Updated docs README module name casing |
| src/Confluent/Confluent.Autorest/docs/New-AzConfluentOrganization.md | Updated reference doc (new parameters + metadata/type casing) |
| src/Confluent/Confluent.Autorest/docs/Get-AzConfluentOrganizationRegion.md | New reference doc for regions |
| src/Confluent/Confluent.Autorest/docs/Get-AzConfluentOrganizationClusterApiKey.md | New reference doc for API keys |
| src/Confluent/Confluent.Autorest/docs/Get-AzConfluentOrganization.md | Updated reference doc metadata/type casing |
| src/Confluent/Confluent.Autorest/docs/Get-AzConfluentMarketplaceAgreement.md | Updated reference doc metadata/type casing |
| src/Confluent/Confluent.Autorest/docs/Get-AzConfluentAccessRoleBindingNameList.md | New reference doc for role binding name list |
| src/Confluent/Confluent.Autorest/docs/Get-AzConfluentAccessRoleBinding.md | New reference doc for role bindings |
| src/Confluent/Confluent.Autorest/docs/Get-AzConfluentAccessCluster.md | New reference doc for access cluster listing |
| src/Confluent/Confluent.Autorest/docs/Az.Confluent.md | Updated module doc index and module metadata |
| src/Confluent/Confluent.Autorest/custom/README.md | Updated custom cmdlets README module name/type casing |
| src/Confluent/Confluent.Autorest/custom/Az.Confluent.custom.psm1 | Updated internal/private module import paths to new casing |
| src/Confluent/Confluent.Autorest/UX/Microsoft.Confluent/organizations.json | Updated API version to 2025-08-18-preview |
| src/Confluent/Confluent.Autorest/UX/Microsoft.Confluent/organizations-environments.json | New UX descriptor for environments endpoints/cmdlets |
| src/Confluent/Confluent.Autorest/UX/Microsoft.Confluent/organizations-environments-schemaRegistryClusters.json | New UX descriptor for schema registry cluster get |
| src/Confluent/Confluent.Autorest/UX/Microsoft.Confluent/organizations-environments-clusters.json | New UX descriptor for clusters get/remove |
| src/Confluent/Confluent.Autorest/UX/Microsoft.Confluent/organizations-environments-clusters-topics.json | New UX descriptor for topics get/remove |
| src/Confluent/Confluent.Autorest/UX/Microsoft.Confluent/organizations-environments-clusters-connectors.json | New UX descriptor for connectors get/remove |
| src/Confluent/Confluent.Autorest/UX/Microsoft.Confluent/organizations-deleteRoleBinding.json | New UX descriptor for role binding deletion |
| src/Confluent/Confluent.Autorest/UX/Microsoft.Confluent/organizations-apiKeys.json | New UX descriptor for API keys get/remove |
| src/Confluent/Confluent.Autorest/README.md | Updated autorest config to preview spec + commit, and module naming |
| src/Confluent/Confluent.Autorest/Properties/AssemblyInfo.cs | Version bump to 0.3.0 |
You can also share your feedback on Copilot code review. Take the survey.
| "userEmail": "pgnanashekar@microsoft.com", | ||
| "rstr1": "fwh8oe", | ||
| "location": "eastus2euap", | ||
| "userEmail": "LucasYao01@mpliftrconfluent20210509out.onmicrosoft.com", | ||
| "confluentOrgName03": "confluentorg-g8jtwf", | ||
| "Tenant": "074f1f2e-9f4e-4105-aec4-daf863053c5d", | ||
| "confluentOrgName01": "confluentorg-wgz3m7", | ||
| "rstr2": "9kxuva", | ||
| "confluentOrgName02": "confluentorg-w8ude5", | ||
| "confluentOrgName00": "confluentorg-godiy8", | ||
| "rstr1": "dcn09p" | ||
| "Tenant": "9a3b483e-2424-4f93-8613-4faf2f4093b4", | ||
| "rstr2": "81jvnd", | ||
| "confluentOrgName00": "confluentorg-63y1vz", | ||
| "SubscriptionId": "209ad589-cefc-4b2b-8eca-a12d726494a4", |
There was a problem hiding this comment.
This test env file contains a real email address plus tenant/subscription IDs. These values are typically considered sensitive and should not be committed; please replace with sanitized placeholders (e.g., user@contoso.com, 00000000-0000-0000-0000-000000000000) and rely on local developer overrides or secure pipeline variables for real values.
| "confluentOrgName03": "confluentorg-z9deo2", | ||
| "rstr3": "nu5xj8", | ||
| "confluentOrgName01": "confluentorg-yuxk6q", | ||
| "resourceGroup": "confluentorg-rg-fwh8oe", |
There was a problem hiding this comment.
This test env file contains a real email address plus tenant/subscription IDs. These values are typically considered sensitive and should not be committed; please replace with sanitized placeholders (e.g., user@contoso.com, 00000000-0000-0000-0000-000000000000) and rely on local developer overrides or secure pipeline variables for real values.
| PartnerConnectorInfo : { | ||
| "partnerConnectorType": "KafkaAzureBlobStorageSink", | ||
| "authType": "KAFKA_API_KEY", | ||
| "inputFormat": "AVRO", | ||
| "outputFormat": "AVRO", | ||
| "apiKey": "PL7EV4FPZK44HPG7", | ||
| "apiSecret": "<ApiSecret>", |
There was a problem hiding this comment.
The example output includes what looks like a real API key value. Even if this is a test key, examples should not publish credentials/secrets; please replace API-key-like values with a clear placeholder (e.g., "") and ensure any recordings/examples are sanitized consistently.
| RequiredModules = @(@{ModuleName = 'Az.Accounts'; ModuleVersion = '5.3.2'; }) | ||
|
|
||
| # Assemblies that must be loaded prior to importing this module | ||
| RequiredAssemblies = 'Confluent.Autorest/bin/Az.Confluent.private.dll' |
There was a problem hiding this comment.
The manifest still requires Az.Confluent.private.dll, but the custom module loader was updated to import Az.confluent.private.dll. On case-sensitive filesystems (Linux/macOS), this mismatch can break module import. Align the DLL naming across RequiredAssemblies and custom/Az.Confluent.custom.psm1 (and the actual generated output name) to use a single, consistent filename.
| $null = Import-Module -PassThru -Name (Join-Path $PSScriptRoot '..\bin\Az.confluent.private.dll') | ||
|
|
||
| # Load the internal module | ||
| $internalModulePath = Join-Path $PSScriptRoot '..\internal\Az.Confluent.internal.psm1' | ||
| $internalModulePath = Join-Path $PSScriptRoot '..\internal\Az.confluent.internal.psm1' |
There was a problem hiding this comment.
The Join-Path child paths contain Windows-style backslashes (..\\bin\\...). On non-Windows platforms, the backslash is a normal character and can produce an invalid path. Prefer Join-Path $PSScriptRoot '..' and then Join-Path again for the leaf filename (or use forward slashes) to keep the module cross-platform.
| ```powershell | ||
| Get-AzConfluentAccessCluster -OrganizationName sharedrp-scus-org -ResourceGroupName sharedrp-confluent | ||
| ``` | ||
|
|
There was a problem hiding this comment.
Docs examples should demonstrate successful usage. Currently the example shows an error output ('Environment ID not specified') and also contains a duplicated word ('This This'). Please update the example invocation to include the required inputs so it succeeds, and correct the sentence to remove the duplication.
|
|
||
| Describe 'Update-AzConfluentOrganization' { | ||
| It 'UpdateExpanded' { | ||
| It 'UpdateExpanded' -skip { |
There was a problem hiding this comment.
Existing tests were changed to -skip, and most newly added tests in this PR are also skipped stubs. This effectively removes coverage for both existing and new cmdlets. Please either (1) re-enable these tests with recorded playback files and proper assertions, or (2) remove the test stubs until they can be implemented, to avoid giving the impression of coverage while executing nothing.
| } | ||
|
|
||
| It 'UpdateViaIdentityExpanded' { | ||
| It 'UpdateViaIdentityExpanded' -skip { |
There was a problem hiding this comment.
Existing tests were changed to -skip, and most newly added tests in this PR are also skipped stubs. This effectively removes coverage for both existing and new cmdlets. Please either (1) re-enable these tests with recorded playback files and proper assertions, or (2) remove the test stubs until they can be implemented, to avoid giving the impression of coverage while executing nothing.
| It 'UpdateExpanded' -skip { | ||
| { throw [System.NotImplementedException] } | Should -Not -Throw | ||
| } | ||
|
|
||
| It 'UpdateViaIdentityOrganizationExpanded' -skip { | ||
| { throw [System.NotImplementedException] } | Should -Not -Throw | ||
| } | ||
|
|
||
| It 'UpdateViaIdentityEnvironmentExpanded' -skip { | ||
| { throw [System.NotImplementedException] } | Should -Not -Throw | ||
| } | ||
|
|
||
| It 'UpdateViaIdentityClusterExpanded' -skip { | ||
| { throw [System.NotImplementedException] } | Should -Not -Throw | ||
| } | ||
|
|
||
| It 'UpdateViaIdentityExpanded' -skip { | ||
| { throw [System.NotImplementedException] } | Should -Not -Throw | ||
| } |
There was a problem hiding this comment.
This is a skipped placeholder test that asserts a NotImplementedException isn't thrown (but the block always throws). Even if unskipped, it would fail; as-is, it provides no validation. Replace with real cmdlet invocation/assertions against playback recordings (or remove the placeholder test until it’s implemented).
| It 'UpdateExpanded' -skip { | |
| { throw [System.NotImplementedException] } | Should -Not -Throw | |
| } | |
| It 'UpdateViaIdentityOrganizationExpanded' -skip { | |
| { throw [System.NotImplementedException] } | Should -Not -Throw | |
| } | |
| It 'UpdateViaIdentityEnvironmentExpanded' -skip { | |
| { throw [System.NotImplementedException] } | Should -Not -Throw | |
| } | |
| It 'UpdateViaIdentityClusterExpanded' -skip { | |
| { throw [System.NotImplementedException] } | Should -Not -Throw | |
| } | |
| It 'UpdateViaIdentityExpanded' -skip { | |
| { throw [System.NotImplementedException] } | Should -Not -Throw | |
| } | |
| # TODO: Add tests that invoke Update-AzConfluentTopic against playback recordings |
| - $(repo)/specification/confluent/resource-manager/Microsoft.Confluent/stable/2020-03-01/confluent.json | ||
| - $(repo)/specification/confluent/resource-manager/Microsoft.Confluent/preview/2025-08-18-preview/confluent.json | ||
|
|
||
| module-version: 0.2.0 |
There was a problem hiding this comment.
The autorest config still declares module-version: 0.2.0, but AssemblyInfo.cs was bumped to 0.3.0 and recordings show Az.confluent/0.3.0 in the User-Agent. Please align the module version across the autorest README, assembly versioning, and packaging metadata to avoid inconsistent artifacts.
| module-version: 0.2.0 | |
| module-version: 0.3.0 |
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
Description
Mandatory Checklist
Please choose the target release of Azure PowerShell. (⚠️ Target release is a different concept from API readiness. Please click below links for details.)
Check this box to confirm: I have read the Submitting Changes section of
CONTRIBUTING.mdand reviewed the following information:ChangeLog.mdfile(s) appropriatelysrc/{{SERVICE}}/{{SERVICE}}/ChangeLog.md.## Upcoming Releaseheader in the past tense.ChangeLog.mdif no new release is required, such as fixing test case only.