Skip to content

Add Microsoft.Network/InterconnectGroups TypeSpec for 2025-07-01 - #42331

Merged
jbouzarouata1 merged 37 commits into
release-microsoft-network-2025-07-01from
jbouzarouata/tsp-2025-07-01-interconnectgroup
May 5, 2026
Merged

jbouzarouata1 merged 37 commits into
release-microsoft-network-2025-07-01from
jbouzarouata/tsp-2025-07-01-interconnectgroup

Conversation

@jbouzarouata1

@jbouzarouata1 jbouzarouata1 commented Apr 13, 2026 •

Copy link
Copy Markdown
Member

ARM (Control Plane) API Specification Update Pull Request

Tip

Overwhelmed by all this guidance? See the Getting help section at the bottom of this PR description.

PR review workflow diagram

Please understand this diagram before proceeding. It explains how to get your PR approved & merged.

spec_pr_review_workflow_diagram

Purpose of this PR

What's the purpose of this PR? Check the specific option that applies. This is mandatory!

  • New resource provider.
  • New API version for an existing resource provider. (If API spec is not defined in TypeSpec, the PR should have been created in adherence to OpenAPI specs PR creation guidance).
  • Update existing version for a new feature. (This is applicable only when you are revising a private preview API version.)
  • Update existing version to fix OpenAPI spec quality issues in S360.
  • Convert existing OpenAPI spec to TypeSpec spec (do not combine this with implementing changes for a new API version).
  • Other, please clarify:
    • replace with your clarification

Adds InterconnectGroup and Subgroup resources to the Microsoft.Network 2025-07-01 API version using TypeSpec.

Resources & Operations

  • InterconnectGroup (tracked resource): Get, CreateOrUpdate, UpdateTags, Delete, List by RG, List by Subscription
  • Subgroup (nested resource): Get, List
  • GetNodeAvailability (async POST action): Returns node availability for all subgroups

Models (aligned with NRP source)

  • InterconnectGroupScope, SubgroupProfile, SubgroupProfileScope
  • SubgroupProperties: internalSubgroupId, interconnectBlock, virtualMachines
  • InterconnectGroupNodeAvailability, SubgroupNodeAvailabilityEntry

Due diligence checklist

To merge this PR, you must go through the following checklist and confirm you understood
and followed the instructions by checking all the boxes:

  • I confirm this PR is modifying Azure Resource Manager (ARM) related specifications, and not data plane related specifications.
  • I have reviewed following Resource Provider guidelines, including
    ARM resource provider contract and
    REST guidelines (estimated time: 4 hours).
    I understand this is required before I can proceed to the diagram Step 2, "ARM API changes review", for this PR.
  • A release plan has been created. If not, please create one as it will help guide you through the REST API and SDK creation process.

Additional information

Viewing API changes

For convenient view of the API changes made by this PR, refer to the URLs provided in the table
in the Generated ApiView comment added to this PR. You can use ApiView to show API versions diff.

Suppressing failures

If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the
suppressions guide to get approval.

Getting help

  • First, please carefully read through this PR description, from top to bottom. Please fill out the Purpose of this PR and Due diligence checklist.
  • If you don't have permissions to remove or add labels to the PR, request write access per aka.ms/azsdk/access#request-access-to-rest-api-or-sdk-repositories
  • To understand what you must do next to merge this PR, see the Next Steps to Merge comment. It will appear within few minutes of submitting this PR and will continue to be up-to-date with current PR state.
  • For guidance on fixing this PR CI check failures, see the hyperlinks provided in given failure
    and https://aka.ms/ci-fix.
  • For help with ARM review (PR workflow diagram Step 2), see https://aka.ms/azsdk/pr-arm-review.
  • If the PR CI checks appear to be stuck in queued state, please add a comment with contents /azp run.
    This should result in a new comment denoting a PR validation pipeline has started and the checks should be updated after few minutes.
  • If the help provided by the previous points is not enough, post to https://aka.ms/azsdk/support/specreview-channel and link to this PR.
  • For guidance on SDK breaking change review, refer to https://aka.ms/ci-fix.

@github-actions github-actions Bot added ARMReview resource-manager TypeSpec Authored with TypeSpec WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required labels Apr 13, 2026
@github-actions

github-actions Bot commented Apr 13, 2026 •

Copy link
Copy Markdown

Next Steps to Merge

Important checks have failed. As of today they are not blocking this PR, but in near future they may.
Addressing the following failures is highly recommended:
  • ⚠️ The check named SDK Validation Status has failed. Refer to the check in the PR's 'Checks' tab for details on how to fix it and consult the aka.ms/ci-fix guide
If you still want to proceed merging this PR without addressing the above failures, refer to step 4 in the PR workflow diagram.

Comment generated by summarize-checks workflow run.

@github-actions

github-actions Bot commented Apr 13, 2026 •

Copy link
Copy Markdown

API Change Check

APIView identified API level changes in this PR and created the following API reviews

Language API Review for Package
TypeSpec Microsoft.Network
Go sdk/resourcemanager/network/armnetwork
Java com.azure.resourcemanager:azure-resourcemanager-network

Comment generated by After APIView workflow run.

@pshao25 Pan Shao (pshao25) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This PR is your prerequisite #42312

@psah434

Copy link
Copy Markdown
Member

required checks failed. please fix

jbouzarouata1 and others added 9 commits April 23, 2026 11:34
Service-side delete is synchronous. Removed DeleteResponseCodes suppression
from readme.md as it is no longer needed with sync delete.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…delete

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ability, fix model doc

- Changed ArmResourceCreateOrReplaceAsync to ArmResourceCreateOrReplaceSync
- Renamed subgroups property to subgroupsNodeAvailability in InterconnectGroupNodeAvailability
- Updated model doc: removed 'all' from description

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace 11 FIXME suppress justifications in InterconnectGroup.tsp with
  descriptive reasons explaining why each suppression is needed
- Add doc comment for interconnectGroup feature in Common/main.tsp
  (replacing #suppress documentation-required)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace 7 no-legacy-usage FIXME placeholders on InterconnectGroup unions
and models in models.tsp with proper justification.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@sandipsh

Copy link
Copy Markdown
Contributor

Quick follow-up on still-open review items (current code still reflects these):

  1. Tracked resource envelope is still modeled with Common.Resource instead of tracked base.

Why this should be fixed: Common.Resource does not require location, while tracked resources should require it on create and carry standard tracked semantics. Keeping it optional can lead to inconsistent contract behavior across clients and control plane tooling.

Suggested fix: switch to tracked base (CommonTrackedResource equivalent in this RP) and ensure location is required in PUT model.

Related open threads:

@sandipsh

Copy link
Copy Markdown
Contributor

Second open item still not addressed:

  1. Parent model and GET example still embed full Subgroup child resources while Subgroup is also a nested ARM resource with its own GET/List APIs.

Why this should be fixed: dual representation (inline + child resource APIs) causes ambiguity and can create stale/duplicated indexing behavior in control-plane and ARG scenarios.

Suggested fix: remove inline subgroups from parent response model, or return lightweight references only (IDs), and rely on /subgroups endpoints for enumeration/details.

Related open threads:

@sandipsh

Copy link
Copy Markdown
Contributor

CI blockers that still need to be cleared before merge:

  • Swagger Avocado - Analyze Code: failing with MULTIPLE_API_VERSION for package-2025-07-01 in readme.md.
  • SDK Validation - .NET: failing.
  • SDK Validation - JS: failing.

Please resolve/re-run these checks first, then we can close the remaining active review threads.

@sandipsh

Copy link
Copy Markdown
Contributor

Review Status Summary

Addressed Items ✅:

  • Suppression documentation: doc comment added, suppress removed
  • FIXME placeholders: all 18 updated with proper justifications
  • DELETE response pattern: changed to ArmResourceDeleteSync (sync instead of async)

Pending Items Requiring Attention:

  1. Property Naming Question (from initial review): Your own comment from 2026-04-21 asks whether the property should be named \subgroupsNodeAvailibilities\ - this question was never answered. Can you confirm the final naming decision?

  2. CI Failures 🔴: Three checks are currently failing:

    • Swagger Avocado (analysis)
    • SDK Validation (.NET)
    • SDK Validation (JS)

    These need to be resolved before approval. What's causing these failures? Are they related to the property naming or model structure?

  3. Architectural Concerns (from Copilot feedback): Your response dismisses tracked resource inheritance and embedded subgroups as "matching RP conventions," but these touch on ARM guidance principles. For the suppression review:

    • Can you confirm this pattern was explicitly approved by Network RP architecture/ARM team?
    • What suppressions are in place (beyond MULTIPLE_API_VERSION) to accommodate this design?

Once CI passes and these questions are clarified, this is ready to move forward.

@jbouzarouata1

Copy link
Copy Markdown
Member Author

Review Status Summary

Addressed Items ✅:

  • Suppression documentation: doc comment added, suppress removed
  • FIXME placeholders: all 18 updated with proper justifications
  • DELETE response pattern: changed to ArmResourceDeleteSync (sync instead of async)

Pending Items Requiring Attention:

  1. Property Naming Question (from initial review): Your own comment from 2026-04-21 asks whether the property should be named \subgroupsNodeAvailibilities\ - this question was never answered. Can you confirm the final naming decision?

  2. CI Failures 🔴: Three checks are currently failing:

    • Swagger Avocado (analysis)
    • SDK Validation (.NET)
    • SDK Validation (JS)

    These need to be resolved before approval. What's causing these failures? Are they related to the property naming or model structure?

  3. Architectural Concerns (from Copilot feedback): Your response dismisses tracked resource inheritance and embedded subgroups as "matching RP conventions," but these touch on ARM guidance principles. For the suppression review:

    • Can you confirm this pattern was explicitly approved by Network RP architecture/ARM team?
    • What suppressions are in place (beyond MULTIPLE_API_VERSION) to accommodate this design?

Once CI passes and these questions are clarified, this is ready to move forward.

Sandip Shahane (@sandipsh) Thanks for your comment-
1- I closed this naming with PMs. The correct name is subgroupsNodeAvailabilities which is reflected in this PR.
2- These 3 checks are failing on the target branch as well. These are not "required" checks and are pre-existing issues on the Networking branch unrelated to my PR.
3- This pattern was explicitly approved by the Networking RP team. Subgroups are meant to be a child resource and the design has been approved by Networking and has been tested internally.

- stable/2025-07-01/expressRoute.json
- stable/2025-07-01/firewall.json
- stable/2025-07-01/firewallPolicy.json
- stable/2025-07-01/interconnectGroup.json

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.

Blocking CI: Swagger Avocado - Analyze Code is failing with MULTIPLE_API_VERSION on tag: package-2025-07-01. Please update the tag configuration so the default package does not mix API versions. Suggested fix: keep only the intended 2025-07-01 swagger set in the default tag and move non-2025-07 files to version-specific tags as needed.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

The multiple_api_version issue is a known issue on this branch. it is unrelated to my PR as you can see on this other PR you approved targeting the same branch #42420

]
}
}
]

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.

as per our offline chat, author agrees this is not technically needed and could be removed, however needs follow up with the team. Waiting on the response; ideally if not needed should be removed.

@@ -0,0 +1,45 @@
{

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is this file expected?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Tsp was automatically generating it due to a missing header in main.tsp, removed and regenrated the tsp correctly.

jbouzarouata1 and others added 4 commits May 4, 2026 10:08
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The interconnectGroup feature is new in 2025-07-01 and should not appear
in 2025-05-01 swagger output. Adding the version decorator prevents
TypeSpec from generating an empty interconnectGroup.json for 2025-05-01.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants