This is the changelog for the Infrahub SDK. All notable changes to this project will be documented in this file.
Issue tracking is located in Github.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
This project uses towncrier and the changes for the upcoming release can be found in https://github.com/opsmill/infrahub/tree/develop/infrahub/python_sdk/changelog/.
1.5.0 - 2025-01-09
- Adds
infrahubctl info
command to display information of the connectivity status of the SDK. (#109) - Add
count
method to both sync and async clients to retrieve the number of objects of a given kind (#158) - Add the ability to batch API queries for
all
andfilter
functions. (#159) client.all
andclient.filters
now supportorder
parameter allowing to disable order of retrieve nodes in order to enhance performances
1.4.1 - 2025-01-05
- Fixes an issue introduced in 1.4 that would prevent a node with relationship of cardinality one from being updated.
1.4.0 - 2025-01-03
- The inclusion of properties for Attribute and Relationships by default has been disabled when querying nodes from Infrahub.
it can be enabled by using the parameter
property
inclient.get|all|filters
method (#191) - Fix an issue with python-transform-unit-process failing to run (#198)
- Add processing of nodes when no variable are passed into the command to run generators (#176)
1.3.0 - 2024-12-30
A new collection of tools and utilities to help with testing is available under infrahub_sdk.testing
.
The first component available is a TestInfrahubDockerClient
, a pytest Class designed to help creating integration tests based on Infrahub. See a simple example below to help you get started.
the installation of
infrahub-testcontainers
is required
import pytest
from infrahub_sdk import InfrahubClient
from infrahub_sdk.testing.docker import TestInfrahubDockerClient
class TestInfrahubNode(TestInfrahubDockerClient):
@pytest.fixture(scope="class")
def infrahub_version(self) -> str:
"""Required (for now) to define the version of infrahub to use."""
return "1.0.10"
@pytest.fixture(scope="class")
async def test_create_tag(self, default_branch: str, client: InfrahubClient) -> None:
obj = await client.create(kind="BuiltinTag", name="Blue")
await obj.save()
assert obj.id
- The Pydantic models for the schema have been split into multiple versions to align better with the different phase of the lifecycle of the schema.
- User input: includes only the options available for a user to define (NodeSchema, AttributeSchema, RelationshipSchema, GenericSchema)
- API: Format of the schema as exposed by the API in infrahub with some read only settings (NodeSchemaAPI, AttributeSchemaAPI, RelationshipSchemaAPI, GenericSchemaAPI)
- Fix behaviour of attribute value coming from resource pools for async client (#66)
- Convert import_root to a string if it was submitted as a Path object to ensure that anything added to sys.path is a string
- Fix relative imports for the pytest plugin, note that the relative imports can't be at the top level of the repository alongside .infrahub.yml. They have to be located within a subfolder. (#166)
1.2.0 - 2024-12-19
- Add batch feature, that use threading, to sync client (#168)
- Added InfrahubClient.schema.in_sync method to indicate if a specific branch is in sync across all worker types
- Added Python 3.13 to the list of supported versions
- Fix an issue with with
infrahubctl menu load
that would fail while loading the menu
1.1.0 - 2024-11-28
- Added InfrahubClient.schema.wait_until_converged() which allowes you to wait until the schema has converged across all Infrahub workers before proceeding with an operation. The InfrahubClient.schema.load() method has also been updated with a new parameter "wait_until_converged".
- CTL:
schema load
return a proper error message when authentication is missing or when the user doesn't have the permission to update the schema. (#127) - CTL: List available transforms and generators if no name is provided (#140)
1.0.1 - 2024-11-12
- Removed previously deprecated InfrahubTransform.init() method
- Marked InfrahubCheck.init() as deprecated and scheduled to be removed in Infrahub SDK 2.0.0
- Adds
groups.group_add_subscriber
function to add a subscriber to a group. - Adds order_weight property to AttributeSchema and RelationSchema classes.
- Fix generated GraphQL query when having a relationship to a pool node (#27)
- CTL: Fix support for relative imports for transforms and generators (#81)
- Fixes issues where InfrahubClient was not properly configured for a branch when running the
infrahubctl transform
,infrahubctl check
andinfrhubctl generator
commands. (#133) - Fixes an issue where a generator would not return any output if there are no members in the generator's target group.
1.0.0 - 2024-10-31
- Breaking change: Removed all exports from
infrahub_sdk/__init__.py
except InfrahubClient, InfrahubClientSync and Config. If you previously imported other classes such as InfrahubNode from the root level these need to change to instead be an absolute path.
- Add support for specific timeout per request on InfrahubClient and InfrahubNode function calls. (#25)
- Added
infrahubctl menu
command to load menu definitions into Infrahub
- Fix SDK playback hash generation to read the correct filename (#64)
- CTL: Return friendly error on encoding violations when reading files. (#102)
- Changed the default connection timeout in the SDK to 60s.
- Fixes an issue where InfrahubClient was not properly URL encoding URL parameters.
0.14.1 - 2024-10-22
- Make
infrahubctl transform
command set up the InfrahubTransform class with an InfrahubClient instance (#8) - Command
infrahubctl protocols
now supports every kind of schema attribute. (#57)
0.14.0 - 2024-10-04
- Removed deprecated methods InfrahubClient.init and InfrahubClientSync.init (#33)
-
Query filters are not validated locally anymore, the validation will be done on the server side instead. (#9)
-
Method client.get() can now return
None
instead of raising an exception whenraise_when_missing
is set to Falseresponse = await clients.get( kind="CoreRepository", name__value="infrahub-demo", raise_when_missing=False ) ``` ([#11](https://github.com/opsmill/infrahub-sdk-python/issues/11))
- prefix and address attribute filters are now available in the Python SDK (#10)
- Queries using isnull as a filter are now supported by the Python SDK (#30)
execute_graphql
method for InfrahubClient(Sync) now properly considers thedefault_branch
setting (#46)
0.13.1.dev0 - 2024-09-24
- Allow id filters to be combined when executing a query (#3)
- Add ability to construct HFIDs from payload for upsert mutations (#45)
- Fix pytest plugin integration tests unable to run because we were not properly setting the api_token configuration setting for the SDK.