Skip to main content
Release Number0.15.0
Release DateJuly 11th, 2024
Release CodenameBeta #4
Taginfrahub-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.