Skip to content

Add MultiCloud SKU support to ExpressRoute Circuit#29800

Open
mshrimankar10 wants to merge 4 commits into
Azure:mainfrom
mshrimankar10:multicloudsku
Open

Add MultiCloud SKU support to ExpressRoute Circuit#29800
mshrimankar10 wants to merge 4 commits into
Azure:mainfrom
mshrimankar10:multicloudsku

Conversation

@mshrimankar10

Copy link
Copy Markdown

Description

This PR adds support for ExpressRoute MultiCloud circuits, enabling Azure customers to establish private connectivity between Azure and partner cloud providers (e.g., AWS).

Design Review: Issue #1554
Swagger PR: PR #28799

Changes Made

  1. Cmdlet Enhancement: New-AzExpressRouteCircuit

    • Added MultiCloud as a new accepted value for -SkuTier parameter
    • Added -PartnerAccountId parameter: Account ID on partner cloud provider (for AWS provisioning)
    • Added -ActivationKey parameter: Pre-provisioned activation key from partner cloud
    • Validation: Parameters are mutually exclusive; -SkuFamily must be MeteredData for MultiCloud circuits
  2. Output Model: PSExpressRouteCircuit

    • Added PartnerAccountId property (visible in table output)
    • Added ActivationKey property (hidden from table for security)
    • Added ResiliencyLevel property (visible in table output)
  3. SDK Model: ExpressRouteCircuitPropertiesFormat

    • Added corresponding properties for SDK serialization/deserialization
  4. Documentation: Updated help files with parameter descriptions and two new usage examples

Awaiting

SDK Regeneration: This PR requires the swagger PR to merge to azure-rest-api-specs main. Once merged:

  • Update src/Network/Network.Management.Sdk/README.md with new commit SHA
  • Run AutoRest to regenerate SDK with clean MultiCloud enum value
  • Code will compile cleanly (currently manual SDK stubs are in place for review)

Mandatory Checklist

  • SHOULD update ChangeLog.md file(s) appropriately
    • Update src/{{SERVICE}}/{{SERVICE}}/ChangeLog.md.
      • A snippet outlining the change(s) made in the PR should be written under the ## Upcoming Release header in the past tense.
    • Should not change ChangeLog.md if no new release is required, such as fixing test case only.
  • SHOULD regenerate markdown help files if there is cmdlet API change. Instruction
  • SHOULD have proper test coverage for changes in pull request.
  • SHOULD NOT adjust version of module manually in pull request

Copilot AI review requested due to automatic review settings July 2, 2026 22:01
@azure-client-tools-bot-prd

Copy link
Copy Markdown
Thanks for your contribution! The pull request validation has started. Please revisit this comment for updated status.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds ExpressRoute “MultiCloud” circuit support to the Az.Network module by extending New-AzExpressRouteCircuit, updating the PowerShell output model, and introducing corresponding SDK model fields plus documentation and changelog updates.

Changes:

  • Extended New-AzExpressRouteCircuit to accept -SkuTier MultiCloud and added -PartnerAccountId / -ActivationKey with MultiCloud-specific validation.
  • Extended PSExpressRouteCircuit with PartnerAccountId, ActivationKey, and ResiliencyLevel output properties.
  • Updated Network SDK model (ExpressRouteCircuitPropertiesFormat), help docs, and module changelog to reflect the new capability.

Reviewed changes

Copilot reviewed 3 out of 5 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/Network/Network/ExpressRouteCircuit/NewAzureExpressRouteCircuitCommand.cs Adds MultiCloud tier support, new parameters, and validation logic in the circuit creation cmdlet.
src/Network/Network/Generated/Models/PSExpressRouteCircuit.cs Extends the PowerShell output model with MultiCloud-related properties.
src/Network/Network.Management.Sdk/Generated/Models/ExpressRouteCircuitPropertiesFormat.cs Adds SDK serialization fields for MultiCloud partner properties and resiliency level.
src/Network/Network/help/New-AzExpressRouteCircuit.md Documents the new tier and parameters and adds MultiCloud usage examples.
src/Network/Network/ChangeLog.md Adds an “Upcoming Release” entry describing the new MultiCloud support.

MNM.ExpressRouteCircuitSkuTier.Premium,
MNM.ExpressRouteCircuitSkuTier.Basic,
MNM.ExpressRouteCircuitSkuTier.Local,
MNM.ExpressRouteCircuitSkuTier.MultiCloud,
Comment on lines +181 to +195
if (string.Equals(this.SkuTier, "MultiCloud", StringComparison.OrdinalIgnoreCase))
{
if (string.IsNullOrEmpty(this.PartnerAccountId) && string.IsNullOrEmpty(this.ActivationKey))
{
throw new ArgumentException("For MultiCloud circuits, either PartnerAccountId or ActivationKey must be specified.");
}
if (!string.IsNullOrEmpty(this.PartnerAccountId) && !string.IsNullOrEmpty(this.ActivationKey))
{
throw new ArgumentException("For MultiCloud circuits, only one of PartnerAccountId or ActivationKey can be specified, not both.");
}
if (!string.Equals(this.SkuFamily, "MeteredData", StringComparison.OrdinalIgnoreCase))
{
throw new ArgumentException("For MultiCloud circuits, SkuFamily must be 'MeteredData'.");
}
}
Comment on lines 200 to +203
circuit.Location = this.Location;
circuit.AuthorizationKey = this.AuthorizationKey;
circuit.PartnerAccountId = this.PartnerAccountId;
circuit.ActivationKey = this.ActivationKey;
public string ActivationKey { get; set; }

[Ps1Xml(Target = ViewControl.Table)]
public string ResiliencyLevel { get; set; }
{
base.Execute();

if (string.Equals(this.SkuTier, "MultiCloud", StringComparison.OrdinalIgnoreCase))
Meera Shrimankar added 2 commits July 2, 2026 15:11
Copilot AI review requested due to automatic review settings July 2, 2026 22:14
@mshrimankar10 mshrimankar10 marked this pull request as ready for review July 2, 2026 22:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 5 changed files in this pull request and generated 6 comments.

MNM.ExpressRouteCircuitSkuTier.Premium,
MNM.ExpressRouteCircuitSkuTier.Basic,
MNM.ExpressRouteCircuitSkuTier.Local,
MNM.ExpressRouteCircuitSkuTier.MultiCloud,
Comment on lines +181 to +195
if (string.Equals(this.SkuTier, "MultiCloud", StringComparison.OrdinalIgnoreCase))
{
if (string.IsNullOrEmpty(this.PartnerAccountId) && string.IsNullOrEmpty(this.ActivationKey))
{
throw new ArgumentException("For MultiCloud circuits, either PartnerAccountId or ActivationKey must be specified.");
}
if (!string.IsNullOrEmpty(this.PartnerAccountId) && !string.IsNullOrEmpty(this.ActivationKey))
{
throw new ArgumentException("For MultiCloud circuits, only one of PartnerAccountId or ActivationKey can be specified, not both.");
}
if (!string.Equals(this.SkuFamily, "MeteredData", StringComparison.OrdinalIgnoreCase))
{
throw new ArgumentException("For MultiCloud circuits, SkuFamily must be 'MeteredData'.");
}
}
Comment on lines +183 to +185
if (string.IsNullOrEmpty(this.PartnerAccountId) && string.IsNullOrEmpty(this.ActivationKey))
{
throw new ArgumentException("For MultiCloud circuits, either PartnerAccountId or ActivationKey must be specified.");
Comment on lines +36 to +44
### Partner Provider
```
New-AzExpressRouteCircuit -Name <String> -ResourceGroupName <String> -Location <String> [-SkuTier <String>]
[-SkuFamily <String>] -ServiceProviderName <String> -PeeringLocation <String> -BandwidthInMbps <Int32>
[-PartnerAccountId <String>] [-ActivationKey <String>] [-Peering <PSPeering[]>] [-Authorization <PSExpressRouteCircuitAuthorization[]>]
[-AllowClassicOperations <Boolean>] [-Tag <Hashtable>] [-Force] [-AsJob]
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
[<CommonParameters>]
```
Comment on lines +68 to +71
[Ps1Xml(Target = ViewControl.Table)]
public string PartnerAccountId { get; set; }

public string ActivationKey { get; set; }
Comment on lines +228 to +232
/// <summary>
/// Gets or sets account ID of the customer on the partner cloud provider (for MultiCloud circuits).
/// </summary>
[Newtonsoft.Json.JsonProperty(PropertyName = "partnerAccountId")]
public string PartnerAccountId {get; set; }
@VeryEarly VeryEarly self-assigned this Jul 6, 2026
/// <param name="enableDirectPortRateLimit">Flag denoting rate-limiting status of the ExpressRoute direct-port circuit.
/// </param>
public ExpressRouteCircuitPropertiesFormat(bool? allowClassicOperations = default(bool?), string circuitProvisioningState = default(string), string serviceProviderProvisioningState = default(string), System.Collections.Generic.IList<ExpressRouteCircuitAuthorization> authorizations = default(System.Collections.Generic.IList<ExpressRouteCircuitAuthorization>), System.Collections.Generic.IList<ExpressRouteCircuitPeering> peerings = default(System.Collections.Generic.IList<ExpressRouteCircuitPeering>), string serviceKey = default(string), string serviceProviderNotes = default(string), ExpressRouteCircuitServiceProviderProperties serviceProviderProperties = default(ExpressRouteCircuitServiceProviderProperties), SubResource expressRoutePort = default(SubResource), double? bandwidthInGbps = default(double?), int? stag = default(int?), string provisioningState = default(string), string gatewayManagerEtag = default(string), bool? globalReachEnabled = default(bool?), string authorizationKey = default(string), string authorizationStatus = default(string), bool? enableDirectPortRateLimit = default(bool?))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please do not manually update sdk, perform full generation instead

[<CommonParameters>]
```

### Partner Provider

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

new parameters are not introduced in a new parameter set, instead they are for all parameter sets. Please properly regenerate help markdowns

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants