Add Azure Analysis Services hook, operator, sensor, and trigger#65879
Add Azure Analysis Services hook, operator, sensor, and trigger#65879coleheflin wants to merge 9 commits into
Conversation
Manual Testing CompletedThe following manual tests were run locally against the Breeze development environment: Import sanity check ✅ DAG authoring ✅ Connection type UI ✅ Unit tests ✅ (40/40 passing) The only remaining test is the end-to-end system test against a live Azure Analysis Services instance, which requires real credentials. |
Adds support for triggering and monitoring Azure Analysis Services model refreshes via the Analysis Services REST API, without requiring Azure Data Factory as an intermediary. New components: - AzureAnalysisServicesHook: authenticates with client secret or managed identity and wraps the REST API for triggering and polling refreshes - AzureAnalysisServicesRefreshOperator: triggers a model refresh and optionally waits for completion (sync or deferrable) - AzureAnalysisServicesSensor: polls an in-progress refresh by ID - AzureAnalysisServicesRefreshTrigger: async trigger for deferrable mode closes: apache#51377
…on type The get_provider_info.py file is auto-generated from provider.yaml. Running breeze release-management prepare-provider-documentation --reapply-templates-only to include the new azure_analysis_services connection type registration.
…s provider - Add docs/connections/aas.rst with required howto/connection anchor - Add docs/operators/analysis_services.rst how-to guide referenced in provider.yaml - Guard settings.Session None check to fix mypy error in system test Co-Authored-By: Cole Heflin <cole.heflin@astronomer.io>
…ysis Services Use AzureAnalysisServicesRefreshException (already defined in the hook) instead of the broad AirflowException in the operator and sensor deferrable callbacks, satisfying the check-no-new-airflow-exceptions static check. Co-Authored-By: Cole Heflin <cole.heflin@astronomer.io>
4d7193d to
e37435c
Compare
- Fix status values to match REST API: notStarted (was notProcessed), add timedOut as terminal failure status - Remove .lower() on status response that broke camelCase comparisons - Add RefreshType Literal and runtime validation with clear error message - Fix trigger serialize() to use dynamic class path - Fix asyncio.get_event_loop() -> get_running_loop() in trigger - Add refresh types table and exampleinclude to operator docs - Fix connection doc link to point to service principal setup page
|
The remaining CI failure (Static checks / ruff) is unrelated to this PR. The error is The previous Compat 2.11.1 failure was also unrelated — all 50 errors were Drafted-by: Claude Code (claude-sonnet-4-6) |
Adds support for triggering and monitoring Azure Analysis Services model refreshes via the Analysis Services REST API, without requiring Azure Data Factory as an intermediary.
New components
AzureAnalysisServicesHook: authenticates with client secret or managed identity and wraps the REST API for triggering and polling refreshesAzureAnalysisServicesRefreshOperator: triggers a model refresh and optionally waits for completion (sync or deferrable)AzureAnalysisServicesSensor: polls an in-progress refresh by refresh IDAzureAnalysisServicesRefreshTrigger: async trigger for deferrable modeConnection type
A new
azure_analysis_servicesconnection type is registered with:eastus.asazure.windows.net)Managed identity and workload identity auth are also supported.
closes: #51377
Was generative AI tooling used to co-author this PR?
Generated-by: Claude Sonnet 4.6 (Claude Code) following the guidelines