Skip to content

feat: add Azure DevOps Flow Registry Client support#413

Merged
Chaffelson merged 1 commit into
mainfrom
feature/azuredevops-registry-to-main
Jul 20, 2026
Merged

feat: add Azure DevOps Flow Registry Client support#413
Chaffelson merged 1 commit into
mainfrom
feature/azuredevops-registry-to-main

Conversation

@Chaffelson

Copy link
Copy Markdown
Owner

Summary

Lands the Azure DevOps Flow Registry Client support on main. This is the same, already-reviewed change from #412, which was inadvertently squash-merged into its stacked base branch (feat/nifi-2.10.0) rather than main, so main never received it. This PR re-homes that exact delta onto current main (which already has the NiFi 2.10.0 client regen from #411).

Contents (cherry-pick of the #412 squash)

  • versioning: ensure_azuredevops_registry() — provisions NiFi's native AzureDevOpsFlowRegistryClient end to end (Entra service-principal / OAuth2 client-credentials auth), wiring the required management controller services.
  • canvas: create_management_controller() + idempotent ensure_management_controller() for controller-level (management) controller services.
  • ci: azuredevops provider branch in ensure_registry with NIFI_ADO_* env fallbacks.
  • cli: native Azure Pipelines output format (##vso[task.setvariable], auto-detected via TF_BUILD).
  • docs: Azure DevOps / Azure Pipelines coverage in ci.rst, cli.rst, README, and the 1.7.0 changelog sections.
  • tests: management-controller CRUD, Azure DevOps unit/validation, and CLI output-format tests.

Notes

.... Generated with Cortex Code

* feat: add Azure DevOps Flow Registry Client support

Add nipyapi.versioning.ensure_azuredevops_registry() to provision NiFi's
native AzureDevOpsFlowRegistryClient end to end. Azure DevOps authenticates
only via a Microsoft Entra service principal (OAuth2 client credentials), so
the helper ensures the two required management (controller-level) controller
services - a Web Client Service and an OAuth2 Access Token Provider - and
wires them into the registry client.

Supporting changes:
- canvas: add create_management_controller() (controller-level create via the
  Controller API, unlike the process-group-scoped create_controller) and the
  idempotent ensure_management_controller() composer built on the existing
  get/update/schedule controller functions.
- ci: add an "azuredevops" provider branch to ensure_registry (with NIFI_ADO_*
  environment fallbacks).
- cli: add native Azure Pipelines output format (##vso[task.setvariable],
  auto-detected via the TF_BUILD environment variable).
- tests: management-controller CRUD tests, Azure DevOps unit/validation tests,
  gated live integration tests, and teardown fixtures.

* fix(canvas): make ensure_management_controller idempotent; verify real ADO auth

- ensure_management_controller: re-applying properties to an existing,
  already-enabled management service failed because update_controller refuses
  to modify an enabled service without auto_disable. Pass auto_disable=True so
  the update disables, applies, and re-enables (with built-in rollback).
- test_canvas: cover re-invocation with properties on an already-enabled
  service (previously only the no-properties idempotent path was tested).
- test_ci: the live Azure DevOps test now lists buckets from the repo, forcing
  the SP OAuth2 token fetch + a live ADO API call, to prove the service
  principal actually authenticated rather than only that config is VALID.

* fix(canvas): validate ensure_management_controller properties via prepare_controller_config

* docs: document Azure DevOps registry + Azure Pipelines support
@Chaffelson
Chaffelson merged commit 759aae8 into main Jul 20, 2026
10 checks passed
@Chaffelson
Chaffelson deleted the feature/azuredevops-registry-to-main branch July 20, 2026 09:55
@codecov

codecov Bot commented Jul 20, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 87.34177% with 10 lines in your changes missing coverage. Please review.
✅ Project coverage is 77.12%. Comparing base (ea7070c) to head (8f7e1b1).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
nipyapi/versioning.py 58.82% 7 Missing ⚠️
nipyapi/ci/ensure_registry.py 92.59% 2 Missing ⚠️
nipyapi/canvas.py 95.83% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #413      +/-   ##
==========================================
+ Coverage   76.91%   77.12%   +0.21%     
==========================================
  Files          41       41              
  Lines        4877     4954      +77     
==========================================
+ Hits         3751     3821      +70     
- Misses       1126     1133       +7     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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.

2 participants