Releases: opsmill/infrahub
Python SDK - Version 0.12.0
Changelog
Warning
This release drops the support for Pydantic version 1.
🚀 Features
- Add infrahubctl command to export Python protocols @gmazoyer (#3705)
- Add methods to fetch allocated details of pools @gmazoyer (#3673)
🐛 Bug Fixes
🧰 Maintenance
- Add Core to restricted namespaces @ogenstad (#3306)
- Remove unneeded
url
parameter fromdecode_json
@gmazoyer (#3723) - Fix Ruff UP006: Use X instead of Y for type annotation @gmazoyer (#3707)
- Properly set default value for mode in Config @ogenstad (#3704)
- Fix security issues in
urllib3
@ogenstad (#3685) - Fix Ruff command to produce correct exit code @ogenstad (#3668)
- Drop Pydantic v1 support in Python SDK @gmazoyer (#3622)
infrahub-v0.15.0
Release 0.15.0
We are thrilled to announce the latest release of Infrahub (0.15).
This release focuses on enhancing the user experience and laying the groundwork for future features.
Main changes
Unified storage
Profiles enhancements
- You can now create profiles on a Generic, in addition to Nodes.
- A node inheriting from multiple Generics can utilize any profiles associated with these Generics.
- Introduced a new attribute
generate_profile
in the schema for more precise control over which nodes should have profiles generated or supported. - Profiles have been disabled on most core models.
Schema
Schema Validation
Added a new validation to ensure schemas do not require relationships to one another. This will prevent incompatible schemas from being loaded in the future.
Frontend
Tree view for hierarchical model
All hierarchical models will now display a tree view in the frontend to simplify navigation across the tree.
Hierarchical dropdowns for relationships to parent/component models
When a relationship references a peer model with a parent (identified by a parent relationship), the form will automatically display multiple dropdown fields—one for the parent and one for the object itself, filtered by parent.
Refactor form components
The form component in the frontend has been refactored to provide a better foundation for future features that could not be supported by the previous version.
Helm Chart
Upstream charts
The official helm chart to deploy Infrahub now leverages the upstream charts for Neo4j, Redis, and RabbitMQ instead of defining these components directly. This approach provides more flexibility and allows us to use pod settings such as pod affinity.
Infrahub Sync
Integration with IP Fabric
Added the initial version of the Infrahub Sync adapter for IP Fabric.
Other
Support for isnull
filter for attributes and relationships
In most GraphQL queries, it’s now possible to search for objects based on the absence of an attribute or a relationship using the new isnull filter. For example, the following query returns all groups that have a parent group defined:
As an example the following query will return all groups that have a parent group defined.
query {
CoreGroup(parent__isnull: false){
edges {
node {
display_label
}
}
}
}
Dedicated search anywhere query in GraphQL
The search anywhere bar in the frontend now leverages a dedicated GraphQL query.
This new query can search for objects by their UUID, improving search results.
Generate Protocol for Core models
Protocol for the internal models have been introduced to improve typing and type checking across the backend.
Drop support for Pydantic V1 & Python 3.9
Internally, Infrahub no longer support Python 3.9 and Pydantic v1.
Demo Environment
Cleanup and performance improvement
The script infrastructure_edge.py used to load data in the demo environment has been cleaned up to improve readability and performance. Demo in codespace should start faster now.
New Services models
A new service model has been added to the demo schema
Migration Guide
To migrate your instance of Infrahub to the latest version, please run the following commands and restart all instances of Infrahub.
infrahub db migrate
infrahub db update-core-schema
if you are running in docker these commands need to run from the container where Infrahub is installed
Migration of the demo instance
If you are using the demo environment, you can migrate to the latest version with the following commands
invoke demo.stop
invoke demo.build
invoke demo.migrate
invoke demo.start
If you don't want to keep your data, you can start a clean instance with the following command
invoke demo.destroy demo.build demo.start demo.load-infra-schema demo.load-infra-data
All data will be lost, please make sure to backup everything you need before running this command.
The repository https://github.com/opsmill/infrahub-demo-edge has also been updated, it's recommended to pull the latest changes into your fork.
🚀 Features
isnull
filter for relationships and attributes on backend @ajtmccarty (#3717)- Add tree navigation on hierarchical model @bilalabbad (#3732)
- Added Layout for object details page + hooks useObjectDetails @bilalabbad (#3727)
- Hierarchical dropdowns update to hide parent and node fields + use clear labels @pa-lem (#3712)
- Added Layout for /objects routes + hooks useObjectItems @bilalabbad (#3725)
- Add model for number pool @ogenstad (#3667)
🐛 Bug Fixes
- Validate if an attribute
default_value
matches its kind @gmazoyer (#3735) - set branch for Nodes returned by NodeListGetInfoQuery @ajtmccarty (#3720)
- Filters update removes pagination offset @pa-lem (#3739)
🧰 Maintenance
- add label for ProfileSchemas @ajtmccarty (#3724)
- Add kind filter in generic view @pa-lem (#3708)
- Add Core to restricted namespaces @ogenstad (#3306)
- Migrate core models to pydantic v2 @ogenstad (#3542)
- Fix typehints in graphql.types.node @ogenstad (#3715)
- Fix Ruff UP006: Use X instead of Y for type annotation @gmazoyer (#3707)
- Remove quotes from type annotation (fix UP037) @ogenstad (#3714)
Python SDK - Version 0.12.0 - Beta 1
Note
This is a pre-release of Infrahub Python SDK 0.12.0.
Changelog
Warning
This release drops the support for Pydantic version 1.
🚀 Features
- Add infrahubctl command to export Python protocols @gmazoyer (#3705)
- Add methods to fetch allocated details of pools @gmazoyer (#3673)
🐛 Bug Fixes
🧰 Maintenance
- Add Core to restricted namespaces @ogenstad (#3306)
- Remove unneeded
url
parameter fromdecode_json
@gmazoyer (#3723) - Fix Ruff UP006: Use X instead of Y for type annotation @gmazoyer (#3707)
- Properly set default value for mode in Config @ogenstad (#3704)
- Fix security issues in
urllib3
@ogenstad (#3685) - Fix Ruff command to produce correct exit code @ogenstad (#3668)
- Drop Pydantic v1 support in Python SDK @gmazoyer (#3622)
Infrahub v0.15.0-beta1
🚀 Features
isnull
filter for relationships and attributes on backend @ajtmccarty (#3717)- Add tree navigation on hierarchical model @bilalabbad (#3732)
- Added Layout for object details page + hooks useObjectDetails @bilalabbad (#3727)
- Hierarchical dropdowns update to hide parent and node fields + use clear labels @pa-lem (#3712)
- Added Layout for /objects routes + hooks useObjectItems @bilalabbad (#3725)
- Add model for number pool @ogenstad (#3667)
🐛 Bug Fixes
- Validate if an attribute
default_value
matches its kind @gmazoyer (#3735) - set branch for Nodes returned by NodeListGetInfoQuery @ajtmccarty (#3720)
- Filters update removes pagination offset @pa-lem (#3739)
🧰 Maintenance
- add label for ProfileSchemas @ajtmccarty (#3724)
- Add kind filter in generic view @pa-lem (#3708)
- Add Core to restricted namespaces @ogenstad (#3306)
- Migrate core models to pydantic v2 @ogenstad (#3542)
- Fix typehints in graphql.types.node @ogenstad (#3715)
- Fix Ruff UP006: Use X instead of Y for type annotation @gmazoyer (#3707)
- Remove quotes from type annotation (fix UP037) @ogenstad (#3714)
Version 0.14.2 - Open Beta Maintenance
Changelog
🚀 Features
🐛 Bug Fixes
- Fix querying resource pool with resources not in active branch @gmazoyer (#3660)
- Validate
member_type
forIPPrefixPoolGetResource
@gmazoyer (#3671) - Behaviour update for boolean attributes @pa-lem (#3656)
- Make node manager
find_object
behaviour consistent @gmazoyer (#3651) - Branch details updates @pa-lem (#3644)
- Empty option in select correctly sends null in the mutation @pa-lem (#3639)
- Allow use of
from_pool
for Relationship create mutation @gmazoyer (#3602) - Resolve relationship when computing HFID @gmazoyer (#3610)
Python SDK - Version 0.11.1
Version 0.14.1 - Open Beta Maintenance
Changelog
Version 0.14.1 is maintenance release with minor fixes.
🧰 Maintenance
- Add db-retry decorator for IPAM mutations @ogenstad (#3569)
- Update oneliner docker-compose @BeArchiTek (#3570)
- Add description to resource pool default_prefix_length attribute @ogenstad (#3533)
- Remove outdated development docs index page @ogenstad (#3544)
- Add prefix length to IP prefix sorting properties @gmazoyer (#3526)
- Fields description in question mark @pa-lem (#3528)
- Fix select 2 steps options when the schema is not found @pa-lem (#3509)
- Update demo-container url @BeArchiTek (#3513)
- Update screenshots in getting started tutorial @wvandeun (#3514)
- Add resource manager documentation @wvandeun (#3464)
- Add inheritance topic docs @BeArchiTek (#3493)
Python SDK - Version 0.11.0
Changelog
🚀 Features
- Add HFID support @gmazoyer (#3327)
- Add client store by HFID @gmazoyer (#3369)
- Add resource pools support @gmazoyer (#3402)
- Remove support for non-isolated branch @dgarros (#3365)
- Add TLS config options @fatih-acar (#3321)
- Do not generate node ID locally @gmazoyer (#3303)
- Handle token refresh on expired signature @gmazoyer (#3200)
🐛 Bug Fixes
🧰 Maintenance
- Update schema for IP Prefix Pool and IP Address Pool @dgarros (#3468)
- Add a
decode_json
function that can fail instead of assuming success @ogenstad (#3427) - Update vulnerable version of requests @ogenstad (#3389)
- Add license Information @dgarros (#3336)
- Enable ruff PTH linter @gmazoyer (#3204)
- Update SDK README and links @petercrocker (#3273)
- Update Ruff @ogenstad (#3268)
Version 0.14.0 - Open Beta
We are thrilled to announce the latest release of Infrahub (0.14), marking the start of our open beta.
This release focuses on preparing for the open beta by cleaning up and improving documentation and introducing key features like the Resource Manager.
Main changes
Unified storage
Resource Manager
The resource manager simplifies resource management and allocation.
This initial implementation supports IP Prefixes and IP Addresses, with future support for additional resources like VLAN, IDs, and interfaces.
Key features of the Resource Manager include:
- Inline Allocation: Allocate resources from a pool directly when creating an object.
- Branch Agnostic: Resource allocation works across branches. A resource allocated in one branch won’t be allocated in another.
- Idempotent: If the same consumer requests a resource multiple times, the Resource Manager will always return the same value. This reduces the complexity of managing resource allocation on the client side in an idempotent way.
Schema
Human Friendly Identifier (hfid)
In addition to the automatically generated internal ID (UUID) for each object, Infrahub now allows defining fields that form a human-friendly identifier (hfid
).
The hfid can uniquely reference objects across systems, even before an object is created in Infrahub.
While mostly invisible in the frontend, hfid
is crucial for building robust data synchronization between systems and creating truly idempotent scripts.
Applied to the network industry:
- the
hfid
of a device could be its name:atl1-edge01
- the
hfid
of an interface will be the combination of the name of the device and the name of the interface: `["atl1-edge01", "Ethernet1"]
The fields that will compose the human_friendly_id
must be defined in the schema
hfid support in GraphQL
hfid
can be used as an alternative to the ID in most GraphQL operations, including:
- Update Mutation
- Upsert Mutation
- Delete Mutation
- Related Node in all Mutations
Other
Documentation update
We have significantly improved and added new content to the documentation, including a new FAQ section.
Breaking Changes
Remove support for non-isolated branch
Support for branches in non-isolated mode has been removed.
Although useful, it posed challenges for operations dependent on other nodes in the graph, such as schema management, constraints validation, and IPAM.
All branches now operate in isolated mode by default, similar to branches in Git. A branch need to be rebased to stay in sync with main.
Migration Guide
To migrate your instance of Infrahub to the latest version, please run the following commands and restart all instances of Infrahub.
infrahub db migrate
infrahub db update-core-schema
if you are running in docker these commands need to run from the container where Infrahub is installed
Migration of the demo instance
If you are using the demo environment, you can migrate to the latest version with the following commands
invoke demo.stop
invoke demo.build
invoke demo.migrate
invoke demo.start
If you don't want to keep your data, you can start a clean instance with the following command
invoke demo.destroy demo.build demo.start demo.load-infra-schema demo.load-infra-data
All data will be lost, please make sure to backup everything you need before running this command.
The repository https://github.com/opsmill/infrahub-demo-edge has also been updated, it's recommended to pull the latest changes into your fork.
Changelog
🚀 Features
- Update schema manager to inherit property of generics and fix process_human_friendly_id @dgarros (#3449)
- Hide profile select if no data + select first generic if only 1 result @pa-lem (#3431)
- Added global utilization on resource pool details @bilalabbad (#3437)
- Add GraphQL mutations to allocate resources from pool @dgarros (#3397)
- Remove support for Non Isolated branch @dgarros (#3365)
- Added Global Error boundary to catch exception on frontend app @bilalabbad (#3403)
- Prevent dropdown and enum creation for inherited fields @pa-lem (#3400)
- feat(utilities): add benchmark tool @fatih-acar (#3393)
- Added resource pool allocation details page @bilalabbad (#3385)
- Field description in question mark tooltip @pa-lem (#3386)
- Optional pool selector for prefix relationships @pa-lem (#3338)
- Required message for relationships many (multiselect) @pa-lem (#3383)
- Support GraphQL query on previous version of the schema @dgarros (#3359)
- IP Prefix and pool utilization properties @ajtmccarty (#3319)
- Extend InfrahubDatabase to work as a proxy to access the schema @dgarros (#3335)
- feat(backend): add usage telemetry push job @fatih-acar (#3279)
- feat(sdk): add tls config options @fatih-acar (#3321)
- Add GraphQL query & mutation to list and delete API tokens @ogenstad (#3339)
- Resource manager page for list and details view @bilalabbad (#3325)
- Add MLAG models to the demo schema @wvandeun (#3309)
- Initial support for HFID @dgarros (#3310)
- implement initial json_schema endpoint @morganpartee (#3042)
- Do not generate node ID locally @gmazoyer (#3303)
- Resource Manager: Add ip address pool @ogenstad (#3300)
- Namespace selector in IPAM view @pa-lem (#3261)
- feat(backend): allow TLS for all dependencies @fatih-acar (#3293)
- Introduce Context object for Typer @dgarros (#3285)
- Update IPAM tree on create/delete of a prefix @bilalabbad (#3290)
- Filter menu: Display all child groups when group title matches but none have children @bilalabbad (#3292)
- feat(backend): integrate NATS for cache, message, and lock @fatih-acar (#2993)
- Initial Prototype of Resource Manager @dgarros (#3235)
🐛 Bug Fixes
- Fix mutation for pool assignment on fields for relationships of cardinality many @pa-lem (#3477)
- Fix link for allocated ip address to IPAM @bilalabbad (#3484)
- Improve support for Profile in Artifact & Proposed Change @dgarros (#3471)
- Fix test to include only required relationships of cardinality many only in create form @pa-lem (#3476)
- fix off-by-one type error in ip address parent identification @ajtmccarty (#3480)
- Updates peers to display in form for relationships inputs @pa-lem (#3419)
- Fixed default value on textarea input + fixed label missing on json input @bilalabbad (#3451)
- new relationship constraint for peer type @ajtmccarty (#3396)
- small fix for diff payload with multiple relationship changes @ajtmccarty (#3442)
- Fix get artifact API endpoint @gmazoyer (#3440)
- Added basic validation on proposed change creation form @bilalabbad (#3450)
- Ensure hfid is defined to generate an identifier @dgarros (#3448)
- Fix menu overflow @pa-lem (#3446)
- Raise user-friendly error and exit if git-agent is unable to reach Infrahub @ogenstad (#3445)
- fixes for IP reconciliation logic @ajtmccarty (#3381)
- Prevent menu from disappearing on small screens @pa-lem (#3432)
- GraphiQL link preserves QSP @bilalabbad (#3424)
- Fix password length details on details view @bilalabbad (#3423)
- Fix mutation data for relationship select @pa-lem (#3415)
- Thread mutation fix depending on the view @pa-lem (#3408)
- Support display_label for Generic node in Graphql @dgarros (#3361)
- Fix typo in INFRAHUB_STORAGE_QUERYSTRING_AUTH @dgarros (#3353)
- [FIX] min time is not applied anymore on past date on time selector @bilalabbad (#3311)
- Fix query for hierarchical children in relationships many @pa-lem (#3304)
🧰 Maintenance
- Add exception in schema_manager for ip_namespace @dgarros (#3486)
- Convert attribute variables on CoreGraphQLQuery to read-only @dgarros (#3479)
- Add section about performance benchmark tool to docs @dgarros (#3482)
- Update schema for IP Prefix Pool and IP Address Pool @dgarros (#3468)
- fixes identifier description of IpPrefixPoolGetResource and IpAddresPoolGetResource mutations @wvandeun (#3467)
- Rename default_prefix_size -> default_prefix_length for IP Address pool @ogenstad (#3465)
- update readme screenshot @petercrocker (#3470)
- Add optional initial agent user @ogenstad (#3390)
- Set order_weight for resource pool objects @ogenstad (#3447)
- Add tests for allocation queries @ogenstad (#3421)
- Rename CorePrefixPool -> CoreIPPrefixPool @ogenstad (#3425)
- Add condition to backend.validate-generated documentations files are changed @BeArchiTek (#3418)
- Add relationship name to generated identifier @dgarros (#3398)
- Rename Groups & Profiles to Object Management and add resourcepool @ogenstad (#3344)
- Add logic to resource pool allocation query @ogenstad (#3387)
- Run IPAM reconcilement after assignment from pool @ogenstad (#3384)
- Add utilization_branches for frontend and resource_id to allocation @ogenstad (#3374)
- Only allocate ip prefixes & addresses if available across all branches @ogenstad (#3363)
- Remove get_account_by_id and get_account functions that aren't used currently @dgarros (#3349)
- Small update for the demo environment in the doc @dgarros (#3357)
- Cleanup schema path parsing and analysis @dgarros (#3351)
- Major documentation updates @petercrocker (#3332)
- Add skeleton for IPPrefix pool utilization query @ogenstad (#3330)
- Remove "contact opsmill" from swagger docs @petercrocker (#3333)
- Switch to reflect member_types of BuiltinIPPrefix @ogenstad (#3323)
- fix(backend): use correct label value for query metrics @fatih-acar (#3298)
- Set integer enum values to strings, otherwise keep the previous logic of _.join @fra...