Skip to content
Ziek
Newray-project/ray 44.0kAzure SDK migration · Ziek

Dependabot bumps the version. Ziek fixes the code.

API providers shouldn't just announce changes. They should ship the fix. Ziek turns upstream API and SDK releases into targeted, verified pull requests for the downstream codebases that need them.

Keeping Ray compatible with Azure SDK 24, 25 and 26ray-project/ray · PR #66714 ↗

A version bump alone would still leave broken calls.

Azure changed where deployment APIs live and how resource queries are called. This PR adapts Ray’s code to both changes while preserving support for SDK 24.

SDK 24 → 25

The deployment API moved.

Version 25 moved deployments into azure-mgmt-resource-deployments. Ray could no longer assume they lived on the resource client.

The fix: select the dedicated deployment client when available, with a fallback to the original client for SDK 24.

config.py · deployment call · excerpt
− client=resource_client.deployments,+ client=deployments_client.deployments,

The helper chooses the client by availability, without checking version numbers.

SDK 25 → 26

The argument now needs a name.

Version 26 requires api_version and filter to be passed by keyword. The old positional calls raise TypeError.

The fix: name the arguments at seven affected call sites. Older SDK versions accept the same syntax.

config.py · identity lookup · excerpt
− existing_msi = get_identity(−     msi_resource_id, "2023-01-31")+ existing_msi = get_identity(+     resource_id=msi_resource_id,+     api_version="2023-01-31"+ )

These keyword arguments work with SDK 24, 25 and 26.

Tests that catch the original mistake.

The new test fake enforces SDK 26’s stricter signatures when tests run on SDK 24. Reverting any of the seven argument fixes causes a test to fail in the author’s mutation checks.

Reported runs against real SDK packages
Azure SDKTargeted suite
24.0.0 · legacy39 passed + 10 subtests
25.0.0 · split package39 passed + 10 subtests
26.0.0 · strict arguments39 passed + 10 subtests

Each downstream team has to work out what broke.

After an SDK release, downstream teams need to find the affected calls, update their code and test the result.

The problem

Teams repeat the same migration work.

  • The provider publishes release notes and a migration guide.
  • Each team searches its own code, and searches over-report: in one of our experiments, 941 code matches meant 2 repositories were actually affected.
  • Engineers decide by hand whether to migrate, wait, or ignore it.
  • Fixes are written and tested repository by repository, with no shared evidence.
The solution

Check which repositories need a fix.

  • Ziek reads the upstream change and finds the downstream code that references it.
  • It decides, for each repository: migration required, already compatible, deliberately pinned, needs review, or not affected.
  • Only where a migration is warranted does it prepare a fix, with the tests that were run attached.
  • Maintainers review and decide whether to merge each proposed fix.

Repository access and review

Public repositories

Ziek can inspect public source code, as it did for the Ray migration.

Private repositories

Require explicit customer authorization. Ziek does not access private code on its own.

Proposed vs verified

Each verified change includes the tests run and their coverage limits.

Human approval

Changes are delivered for authorized review. Nothing is merged or deployed on anyone’s behalf.

Questions about Ziek

What does Ziek do?

Ziek helps SDK and API teams identify downstream repositories affected by a breaking release and prepare code fixes with test evidence for maintainers to review.

How does Ziek work with dependency update tools?

Dependency update tools change package versions. Ziek investigates whether the new version requires changes to the code that calls it. That includes checking resolved versions, intentional pins and migrations already in progress.

What has been tested?

The Ray Azure SDK article documents a compatibility patch and reported tests across SDK 24, 25 and 26. The downstream-impact research reports the Inngest experiments, benchmark results and their limitations.

Does Ziek merge changes automatically?

No. Maintainers review proposed fixes and decide whether to merge them. Private repository access requires authorization.

Let’s test Ziek on your next SDK release.

Bring an upcoming SDK change. We’ll check which downstream repositories need a fix.

Partner on your next SDK release →