Skip to content

Commit

Permalink
[Integration][Azure] Enhanced API Version Consistency in Resource Man…
Browse files Browse the repository at this point in the history
…agement Client (#1321)

# Description

What - Updated the `list_resources` function to set both
`_config.api_version` and `_api_version` in the
`ResourceManagementClient.resources` object.

Why - The `_config.api_version` alone was insufficient in ensuring
consistent behavior across paginated responses and API interactions as
list method defaults to the `_api_version` for 2nd iteration and beyond
during iteration through paginated response. By also setting
`_api_version`, the resource client uses the specified version
throughout its operations, improving reliability and consistency when
querying Azure resources.

How - Patched default value for
`resources_client.resources._api_version`

## Type of change

Please leave one option from the following and delete the rest:

- [x] Bug fix (non-breaking change which fixes an issue)

<h4> All tests should be run against the port production
environment(using a testing org). </h4>

### Core testing checklist

- [ ] Integration able to create all default resources from scratch
- [ ] Resync finishes successfully
- [ ] Resync able to create entities
- [ ] Resync able to update entities
- [ ] Resync able to detect and delete entities
- [ ] Scheduled resync able to abort existing resync and start a new one
- [ ] Tested with at least 2 integrations from scratch
- [ ] Tested with Kafka and Polling event listeners
- [ ] Tested deletion of entities that don't pass the selector


### Integration testing checklist

- [ ] Integration able to create all default resources from scratch
- [ ] Resync able to create entities
- [ ] Resync able to update entities
- [ ] Resync able to detect and delete entities
- [ ] Resync finishes successfully
- [ ] If new resource kind is added or updated in the integration, add
example raw data, mapping and expected result to the `examples` folder
in the integration directory.
- [ ] If resource kind is updated, run the integration with the example
data and check if the expected result is achieved
- [ ] If new resource kind is added or updated, validate that
live-events for that resource are working as expected
- [ ] Docs PR link [here](#)

### Preflight checklist

- [ ] Handled rate limiting
- [ ] Handled pagination
- [ ] Implemented the code in async
- [ ] Support Multi account

## Screenshots

Include screenshots from your environment showing how the resources of
the integration will look.

## API Documentation

Provide links to the API documentation used for this integration.
  • Loading branch information
oiadebayo authored Jan 14, 2025
1 parent c04093c commit 7bbdacd
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 2 deletions.
7 changes: 7 additions & 0 deletions integrations/azure/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

<!-- towncrier release notes start -->

0.1.126 (2025-01-14)

### Bug Fixes

- Fixed the listing of azure subscription resource to use the latest API version `(2023-07-01)` when building url for the next page during paginated response iterations


0.1.125 (2025-01-12)

### Improvements
Expand Down
7 changes: 6 additions & 1 deletion integrations/azure/azure_integration/azure_patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,13 @@ async def list_resources(
Those params will result the following request:
(https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{storageAccountName}/blobServices/{blobService}/containers?api-version={apiVersion})
"""
# override the default version in the client to the version that we want to query
# Override the default API version in the client configuration.
# This ensures that the specified API version is used for operations like subscription and resource group queries.
resources_client.resources._config.api_version = api_version

# Override the API version used in constructing requests during pagination.
# This ensures consistency in the API version for resource listing operations across paginated requests.
resources_client.resources._api_version = api_version
if resource_type and resource_url:
raise ValueError("Only one of resource_type and resource_url can be passed")

Expand Down
2 changes: 1 addition & 1 deletion integrations/azure/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "azure"
version = "0.1.125"
version = "0.1.126"
description = "Azure integration"
authors = ["Tom Tankilevitch <[email protected]>"]

Expand Down

0 comments on commit 7bbdacd

Please sign in to comment.