Release Number | 0.13.0 |
---|---|
Release Date | May 7, 2024 |
Release Codename | Beta #2 |
Tag | infrahub-v0.13.0 |
Release 0.13.0
Main changes
Unified storage
IP address management
Infrahub now includes builtin support for IP Prefixes and IP Addresses, both for IPv4 and IPv6.
To keep things extensible, Infrahub provides a minimal schema to capture the relationships between IP Prefix, IP address and IP Namespace. Infrahub will automatically maintain trees of IP prefixes and IP addresses being built based on the IP Namespace. Building these hierarchies/trees allows Infrahub to determine how IP prefixes and IP addresses are nested as well as computing utilization of the recorded IP spaces.
The following Generic
models are provided by default and can be extended as needed to add your own attributes/relationships or constraints:
BuiltinIPNamespace
: used to model a namespace to manage IP resources, this is a generic representation of what could be, for examples, a routing table, a routing instance or a VRFBuiltinIPPrefix
: used to model a network, sometimes referred as supernet/subnetBuiltinIPAddress
: used to model a single IP address
More information about IPAM is available in the Documentation.
Profiles
A profile in Infrahub allow you to define a common set of attributes that should be applied to nodes.
A node that has a profile assigned, will get the values of its attributes inherited from the assigned profile, if no value is defined for the attribute at the node, or if the default value is used. The attribute values of a node that were inherited from a profile can be overridden, by defining them at the node.
More information about Profiles is available in the Documentation.
Leverage database indexes to improve performance
Infrahub is now leveraging database indexes to improve the overall performance of the database. Indexes will be automatically applied during startup.
A new command infrahub db index
has been introduced to manage the indexes.
infrahub db index --help
Usage: infrahub db index [OPTIONS] [ACTION]:[show|add|drop] [CONFIG_FILE]
Manage Database Indexes
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ action [ACTION]:[show|add|drop] [default: IndexAction.SHOW] │
│ config_file [CONFIG_FILE] [env var: INFRAHUB_CONFIG] [default: infrahub.toml] │
╰───────────────────────────────────────────────────────────────────────────────── ────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
CI pipeline
Generators
A Generator is a generic plugin that can be used apply your own logic to create new nodes and relationships. Generator are expected to be idempotent and should be able to run multiple times and always produce the same result.
One use case for the generators is to be able to manage technical objects derived from a higher level definition of a service.
Generators are associated with some input data identified by a GraphQL query. Similar to the Transforms & Artifacts, Generator will be automatically executed as part of the CI Pipeline if the data associated with a given generator has changed.
The Generator itself is a Python class that is based on the InfrahubGenerator
class from the SDK. Just like transforms and checks, the Generators are user defined.
More information about Generators is available in the Documentation.
Redesigned proposed change creation form
The form to create a proposed change has been redesigned to expand the description field.