Open
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This pull request refactors the FinOps hub architecture to replace implicit dependsOn relationships with explicit typed metadata outputs, making inter-app dependencies compile-time verified and contracts clear.
Changes:
- Added
metadata.bicepfiles to Core, Analytics, Exports, and ManagedExports apps defining typed metadata contracts - Removed implicit
dependsOndeclarations in hub.bicep, relying on Bicep's automatic dependency inference from metadata parameters - Updated build and package scripts to support manifest-driven copying of metadata files to release output
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/templates/finops-hub/package-manifest.json | New manifest file specifying metadata.bicep files should be recursively copied to deployment output |
| src/templates/finops-hub/modules/hub.bicep | Removed explicit dependsOn declarations, now passes metadata outputs between modules as parameters; updated outputs to reference metadata properties |
| src/templates/finops-hub/modules/fx/hub-types.bicep | Added isSupportedVersion() function for validating metadata version compatibility |
| src/templates/finops-hub/modules/Microsoft.FinOpsHubs/RemoteHub/app.bicep | Updated to consume Core metadata instead of using hardcoded values; added version validation |
| src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Core/metadata.bicep | Defines typed metadata contract for Core app resources (containers, datasets, linked services, etc.) |
| src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Core/app.bicep | Added shared azurerm linked service; outputs typed metadata instead of individual properties |
| src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/metadata.bicep | Defines typed metadata contract for Analytics app resources (cluster, databases, linked services, datasets) |
| src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/app.bicep | Consumes Core metadata as parameter; outputs typed metadata; replaced old individual outputs |
| src/templates/finops-hub/modules/Microsoft.CostManagement/ManagedExports/metadata.bicep | Defines typed metadata contract for ManagedExports app pipelines |
| src/templates/finops-hub/modules/Microsoft.CostManagement/ManagedExports/app.bicep | Consumes Core and Exports metadata; uses metadata values throughout pipelines; outputs typed metadata |
| src/templates/finops-hub/modules/Microsoft.CostManagement/Exports/metadata.bicep | Defines typed metadata contract for Exports app resources (containers, datasets) |
| src/templates/finops-hub/modules/Microsoft.CostManagement/Exports/app.bicep | Consumes Core metadata; outputs typed metadata; removed individual container output |
| src/templates/finops-hub/bicepconfig.json | Enabled userDefinedConstraints experimental feature for @validate decorator support |
| src/scripts/Package-Toolkit.ps1 | Enhanced file copying logic to support recursive pattern matching and wildcard destinations |
| src/scripts/Build-Toolkit.ps1 | Added version placeholder replacement in app.bicep files for metadata URLs |
src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/app.bicep
Outdated
Show resolved
Hide resolved
- Use core metadata for ingestion ID separator instead of local hardcoded value - Add source folder validation in Package-Toolkit.ps1 manifest processing - Add changelog entry for typed metadata contracts 🤖 Generated with [Claude Code](https://claude.ai/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Collaborator
Author
|
🤖 [AI][Claude] PR Update Summary Addressed: 3 thread(s)
Changes:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
dependsOnrelationships between hub apps with explicit typed metadata outputs, making inter-app contracts clear and compile-time verifiedmetadata.bicepfiles to each app (Core, Analytics, Exports, ManagedExports) that define typed metadata contracts for what each app exposes to dependentspackage-manifest.jsonto include metadata files in build outputBuild-Toolkit.ps1andPackage-Toolkit.ps1to support the new manifest-driven file copyingTest plan
bicep buildsucceeds for all modified templates🤖 Generated with Claude Code