Skip to content

Enhance darc update-dependencies with --subscription parameter to simulate Maestro subscription updates #5342

@dkurepa

Description

@dkurepa

Summary

Proposal to add a --subscription <maestro-subscription-id> option to the darc update-dependencies command. This would enable users to locally simulate the effect of a specific Maestro subscription, making it easier to debug, validate, and reason about dependency updates as they would occur in Maestro.

Motivation

Currently, darc update-dependencies supports applying updates from a channel, but does not allow users to replicate what a particular subscription would do. This is problematic when multiple subscriptions (from different channels, with different rules) target a single repository, and there is a need to locally test or troubleshoot the outcome of a subscription update.

Proposed Behavior

  • Add a --subscription <maestro-subscription-id> parameter to the command.
  • When provided:
    1. Fetch the subscription metadata (source repo, target repo/branch, channel, target-directory, excluded assets).
    2. Determine the build that Maestro would apply for the subscription (using Maestro's selection logic).
    3. Apply dependency updates locally based on that build, instead of a channel-wide update.
    4. Respect the subscription's target-directory (only update or place assets within that subtree) and excluded assets (skip those).
    5. Support using the existing dry-run/verbose option to show:
      • Which build was selected (id, repo, commit)
      • Which assets would be updated, and which are skipped (with reasons)
    6. Provide clear errors if the subscription id is invalid, no build can be resolved, or assets don't map to current dependencies.

Notes

  • This does not modify the subscription or Maestro service state—it's a local simulation.
  • Goal: To make it easier for engineers to reproduce, validate, and debug Maestro subscription outcome locally.

Related Issue

Metadata

Metadata

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions