Skip to content

Releases: opsmill/infrahub

Alpha #3.0 - Version 0.9.0

20 Dec 07:37
3c2af6b
Compare
Choose a tag to compare

Main Changes

Ability to run checks on a proposed change based on a target group

With this change any check you define in an external Git repository can be tied to a group. This enables you to run the same check across all members of a group. For instance a custom check that gets executed on for all devices.

Upsert mutations

The upsert mutations allows you to update or create a resource with a single mutation. It can be useful if you are not sure if an object exists and you want to either update or create the object.

Add new attribute type: Dropdown

The dropdown works in the same way as an enum with the difference that the dropdown also supports assigning a color and description to make them stand out more. The description is visible when choosing the options, and the color will be displayed in the different views.

Add mutations and ability to add or remove enums and dropdowns as a user

A user can now add or remove enum and dropdown attribute choices using a mutation or the frontend.

Add new storage options

With the redesigned storage engine it's now possible to store artefacts in AWS S3 (or S3 compatible) aside from the local storage on disk.

Extend IPHost and IPNetwork types

Instead of just returning the ip interface (i.e., 172.16.1.1/24) or the ip network (i.e., 172.16.1.0/24) Infrahub now exposes additional options aside from value so you can query for ip, prefix_len, netmask etc. This should simplify some tasks when creating Jinja templates or Transforms.

Add markdown editor for textarea fields

A markdown editor has been added and will be used for all textarea type fields, and for comments in the proposed changes.

Migration Guide

Rebuild the demo environment

It's mandatory to completely rebuild your demo environment with the following commands.

invoke demo.destroy [demo.build](http://demo.build/) demo.start
invoke demo.load-infra-schema
invoke 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 been updated to with a change to the Checks
for the internal CI system it's recommend to pull the latest changes into your fork.

🚀 Features

🐛 Bug Fixes

🧰 Maintenance

Alpha #2.1 - Version 0.8.2

10 Nov 19:22
baeb591
Compare
Choose a tag to compare

Main Changes

Redesigned menu

The 0.8.2 version is a facelift release, the menu on the sidebar has been redesigned. Infrahub now lets you can specify what the objects menu should look like and what models to include based on configuration within the schema. You can define a parent object within the menu and set the icon to use. The infrastructure example schema has been updated to use this feature.

Migration Guide

Rebuild the demo environment

It's mandatory to completely rebuild your demo environment with the following commands.

invoke demo.destroy demo.build demo.start
invoke demo.load-infra-schema
invoke 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 been updated to with a change to the Checks
for the internal CI system it's recommend to pull the latest changes into your fork.

Changelog

🚀 Features

🐛 Bug Fixes

🧰 Maintenance

Alpha #2 - Version 0.8.1

03 Nov 10:32
846bff6
Compare
Choose a tag to compare

Changes

Bugfix release as ruamel-yaml=0.18.4 was deleted from pypi

🐛 Bug Fixes

Alpha #2 - Version 0.8.0

02 Nov 17:56
744f625
Compare
Choose a tag to compare

Main Changes

Conflict resolution for proposed changes

When working with a proposed change and there are data conflicts between the source and target branch,
the system now lets you specify how you want to resolve the conflict when merging. I.e. if you want to
keep the data from the source branch of use what's already in the target branch.

Python SDK

The Python SDK code now lives its own package and has been renamed from infrahub_client -> infrahub_sdk.

Friendlier error messages within the frontend

The frontend how displays error messages from GraphQL that are easier to understand.

Change URL schema in the frontend

The namespace of an object is now included in the URL to avoid conflicting URLs between namespaces.

Added support for loading multiple schema files and the ability to load from a git repository.

Previously you had to use the API or infrahubctl to load schema definitions into Infrahub. A third option
is now to specify these files in an external git repository. Multiple files can be specified to avoid working
with very large files for complex schemas.

Add ability to query nodes based on lineage information

Now you are able to query nodes using lineage information such as owner. So it's possible to query for
all nodes that are owned by a specific account.

Add support for specifying a UUID of nodes that are being created

Previously the ID of a node was always determined by the system, now it's possible to specify a custom uuid
when creating objects. For example when syncing from another system, it would now be possible to keep uuids
used in that other system.

Add checks for Artifact on a proposed change

When opening a proposed change the system will run checks for any artifact definitions that are defined
so that it's possible to see how a proposed change might change an artifact and also if the artifact can
be created successfully or if there is an error that should be resolved before merging.

Add ability to run checks for merge conflicts in Git

When there are repositories tied to a proposed change using non data-only branches the internal CI
system will now check if there are any merge conflicts within the git repositories that needs to be
resolved before merging the proposed change.

Add the ability to run user defined checks for a proposed change

It's possible to specify user defined checks within an external repository, these can then be executed
as part of a proposed change within the internal CI system.

Migration Guide

Rebuild the demo environment

It's mandatory to completely rebuild your demo environment with the following commands.

invoke demo.destroy demo.build demo.init demo.start
invoke demo.load-infra-schema
invoke 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 been updated to with a change to the Checks
for the internal CI system it's recommend to pull the latest changes into your fork.

Changelog

🚀 Features

🐛 Bug Fixes

🧰 Maintenance

0.7.2 - Alpha #1.2

27 Sep 06:55
bd1b062
Compare
Choose a tag to compare

Main changes

Version 0.7.2 is a small bugfix release

Migration Guide

Rebuild the demo environment

It's mandatory to completely rebuild your demo environment with the following commands.

invoke demo.destroy demo.build demo.init demo.start
invoke demo.load-infra-schema
invoke demo.load-infra-data

All data will be lost, please make sure to backup everything you need before running this command.

Changelog

🚀 Features

🐛 Bug Fixes

0.7.1 - Alpha #1.1

22 Sep 08:14
c4f8394
Compare
Choose a tag to compare

Main changes

Cookie Based authentication

Cookie based authentication makes it easier to use the GraphQL playground as you don't need to setup your token each time, once you have logged in an authentication cookie will be used automatically within the GraphQL environment.

General speedups when creating new branches and schema models

In the previous version when creating a new branch you would have to wait on a loading screen before everything was successfully created, this process is a lot faster now.

Nornir inventory plugin

An Inventory plugin for Nornir allows you to populate a Nornir inventory with data from Infrahub.

Migration Guide

Rebuild the demo environment

It's mandatory to completely rebuild your demo environment with the following commands.

invoke demo.destroy demo.build demo.init demo.start
invoke demo.load-infra-schema
invoke 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 been updated to include some Artifact Definition.
it's recommend to pull the latest changes into your fork.

Changelog

🚀 Features

🐛 Bug Fixes

  • Add ability to get a single branch from the SDK. @ogenstad (#1125)
  • Fix field warning with relationship many (value as array) @pa-lem (#1065)

🧰 Maintenance

0.7.0 - Alpha #1

12 Sep 09:40
afdcf67
Compare
Choose a tag to compare

Main Changes

Proposed Change

A Proposed Change provides a single workflow to integrate the changes from a given branch into the main branch.
It is the equivalent of a Pull Request or a Merge Request for Infrahub.

When a user is ready to integrate their change into the main branch, they can create a Proposed Change.
The Proposed Change panel groups all information related to the change and it will allow other members of the team to review and comment the changes as needed.
Information related to a change:

  • Data changes (diff)
  • Files changes (diff)
  • Artifacts changes (diff)
  • Schema changes (diff)
  • Checks results
  • Peer Review
  • Discussions

proposed-changes-1-create
proposed-changes-2-details

Artifacts

An artifact is the result of a Transformation for a specific context and/or object, it can have different format either in plain text or JSON.

An artifact improve the Transformation by providing the following additional features:

  • Caching : Generated Artifact are stored in the internal object storage. For a resource intensive Transformation, it will significantly reduce the load of the system if an artifact can be serve from the cache instead of regenerating each time.
  • Traceability : Past values of an artifact remains available. In a future release, it will be possible to compare the value of an artifact over time.
  • Peer Review : Artifacts are automatically part of the Proposed Change review process

While the content of an artifact can change, its identifier will remain the same over time.

artifacts-1-definition-details
artifacts-2-artifact-details

Support for branch agnostic and branch local models

It's now possible to define in the schema how a given model, attribute or relationship should behave regarding the branches.

By default, all models defined in the schema will be branch aware which means that any changes to an object based on a branch aware model will be applied only to the branch and can be integrated into the main branch via a Propose Change.
It's now possible to also configure a model, an attribute or a relationship as :

  • branch agnostic: All changes to an object based on a branch agnostic model will automatically be available in all branches.
  • branch local: All changes will stay local to the branch. A model in branch local mode will not be affected by the Diff and the Merge.

Object Storage

A new object store has been introduced to easily store and retrieve files in an object storage. The object storage interface is independent of the branches.

Currently only a local backend is supported but the goal over time is to support multiple backend like AWS S3 to allow users to select where they would like their files to be stored.

Python SDK

The Python SDK now support more granular queries by introducing the support for include and exclude parameters on all methods to query objects from Infrahub.

Architecture Change

Several changes to the Architecture have been introduced to prepare the deployment of Infrahub in a production environment:

  • The frontend container has been removed and the frontend is now being served from the same endpoint as the backend (http://localhost:8000 by default).
  • It's now possible to run multiple Git Agents, to increase the number of asynchronous tasks that Infrahub can process at the same time. To support that a new cache container has been introduced.

Other Changes

Migration Guide

Rebuild the demo environment

It's mandatory to completely rebuild your demo environment with the following commands.

invoke demo.destroy demo.build demo.init demo.start
invoke demo.load-infra-schema
invoke 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 been updated to include some Artifact Definition.
it's recommend to pull the latest changes into your fork.

Changelog

🚀 Features

🐛 Bug Fixes

🧰 Maintenance

  • Modify Data Integrity check to report progress @ogenstad (#1041)
  • Change rpc callback function to be async @ogenstad (#1016)
  • Restrict available namespaces for user schemas @ogenstad (#995)
  • Exclude Checks and Validators from the menu and rename Blacklist to Excludelist @dgarros (#984)
  • Remove test_client argument and functionality from SDK @ogenstad (#986)
  • Update demo data to add some conflicts @dgarros (#985)
  • Define enums as known objects and move to constants.py @ogenstad (#969)
  • Move data validation checks into git-agent @ogenstad (#974)
  • Fix to return value for type hinting of artifact generation @ogenstad (#959)
  • Modifications to service object to ease testing @ogenstad (#964)
  • Convert sdk tests to use config instead of test_client param @ogenstad (#965)
  • Use memgraph-platform for the dev environment @dgarros (#963)
  • Wait mutation in E2E test for tuto 1 @pa-lem (#958)
  • Add additional messages for checks @ogenstad (#953)
  • Update UI from new diff endpoint @pa-lem (#944)
  • Convert check_type to enum @ogenstad (#951)
  • Make tokens branch agnostic @ogenstad (#940)
  • Github Actions : Add timeout values and remove always() @dgarros (#938)
  • Convert AccountProfile, Branch and Relationship mutation names to CamelCase @dgarros (#934)
  • Various changes related to docker in CI @dgarros (#914)
  • Upgrade memgraph to version 2.10 @dgarros (#849)

Others

0.6.1

24 Jul 05:31
ea5a6cc
Compare
Choose a tag to compare
0.6.1 Pre-release
Pre-release

🚀 Features

🐛 Bug Fixes

  • Fix boolean input in create/edit forms @pa-lem (#831)
  • Fix select 2 step for add relationship + change relationship mutation @pa-lem (#830)
  • Fix number input to return value as number @pa-lem (#816)
  • Fix button index for add relationship @pa-lem (#811)
  • Fix generator for Repository mutation @ogenstad (#825)

🧰 Maintenance

0.6.0 - Tech Preview #4

10 Jul 12:55
17163ff
Compare
Choose a tag to compare
Pre-release

Main Changes

New Logo and refresh of the frontend

Infrahub has a new logo and a new paint of colors based on a shade of blue.
Infrahub-SVG-hori

Infrahub's logo is inspired by a tree.
Why a tree ? because trees are composed of branches like Infrahub and the leaves on a tree have some similarities to the nodes on a graph.

User Management and Authentication

Infrahub now supports standard user management and authentication systems.

A user account can have 3 levels of permissions

  • admin
  • read-write
  • read-only

By default, Infrahub will allow anonymous access in read-only. it's possible to disable this feature via the configuration main.allow_anonymous_access or via the environment variable INFRAHUB_ALLOW_ANONYMOUS_ACCESS

Check the documentation for more details about the authentication framework

Enforcement of protected fields

Fields labeled as protected and that have an owner defined are now grey out in the frontend for everyone else.

Namespace for the Schema

All models for nodes and generics defined in the schema must now have a Namespace.
The introduction of Namespace will allow us to provide a better classification of the models as the schema grows. It will also allow us to better differentiate between internal and user provided models which will ultimately lead to a better user experience.

In the process we also removed the former attribute name on the model because it was highly redundant with the kind.
In the new format, a model is define by its namespace and its name, which together forms for the new kind
The kind doesn't have to be provided by the user anymore and it is generated by concatenating the namespace and the name

Kind = Namespace + Name

In the example below, the kind of this model will be InfraRack

nodes:
  - name: Rack
    namespace: Infra
    label: Rack

Impact on the GraphQL API

Previously the name was mainly used to generate the top level graphql query.
As a result of this change, the format of the GraphQL top level query are now using the Kind in CamelCase.

Before

query {
    device {
        edges {
            node {
                id
            }
        }
    }
}

After

query {
    InfraDevice {
        edges {
            node {
                id
            }
        }
    }
}

Groups

With the new Group model, it's now possible to create arbitrary groups of objects.
A group can be composed of members and subscribers and both can be objects of any types.

By default a CoreStandardGroup is available but it's possible to create new type of groups with additional attributes and/or relationships.

It's possible to retrieve the list of groups a given object is member of or subscriber of with the relationships
member_of_groups and subscriber_of_groups.

These 2 relationships will be automatically added to all objects in GraphQL.

We are just scratching the surface with the groups. Over time, Groups will have a major role in infrahub and they will act as glue between a lot of other features so stay tuned for more update in the next release.

Add Diff view for files in Git Repository

It's now possible to visualise the diff for the files that are part of a Git repository in the Branch View along with the diff for the data.

Screenshot 2023-07-05 at 2 48 22 PM

Support for Memgraph as the main database

In addition to Neo4j, it's now possible to run Infrahub on Memgraph.

The main benefits to use memgraph is its speed, especially on non-production environment.

The demo environment and the tests are now using Memgraph by default.

It's possible to start the demo environment with the flag --database=neo4j to switch to Neo4j.

Query all Generics Model directly from GraphQL

All generics models are now exposed at the top level of the GraphQL query by default.
This will make it much easier to query for generic nodes whithout having to go through the relationships of a given object.

Other Changes

  • Python SDK : Update query methods to allow user to select fields to query and not query all relationships by default @dgarros (#748)
  • Update infrahubctl to work with authentication + various fixes @dgarros (#742)
  • Change IPHost and IPNetwork graphql type to string @wvandeun (#713)
  • Improve deployment of the demo environment on Ubuntu and sudo environment
  • Initial prototype of a synchronization engine

Migration Guide

Rebuild the demo environment

It's mandatory to completely rebuild your demo environment with the following commands.

invoke demo.destroy demo.build demo.init demo.start
invoke demo.load-infra-schema
invoke 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 been updated to reflect the latest format of the GraphQL API
it's recommend to pull the latest changes into your fork otherwise it won't work with the latest version of Infrahub.

Migrate your existing schema

To migrate an existing schema, you need to:

  • define the namespace
  • delete the current name since it's not used anymore
  • rename the current kind into name
  • (optional) add a label, otherwise the label will be generated from the new kind

Changelog

🚀 Features

  • Add Groups in the Frontend @pa-lem (#783)
  • Add Git Repository in demo environment @dgarros (#775)
  • Fix groups relationships @pa-lem (#771)
  • Add mutation to create account tokens @ogenstad (#746)
  • Support namespaces in schema @ogenstad (#729)
  • Fix namespaces for frontend @pa-lem (#744)
  • Python SDK : Update query methods to allow user to select fields to query and not query all relationships by default @dgarros (#748)
  • Update infrahubctl to work with authentication + various fixes @dgarros (#742)
  • Add groups list and handle generics in the UI construction @pa-lem (#741)
  • Create top level query in GraphQL for all generic objects @dgarros (#735)
  • Add support for Group @dgarros (#726)
  • Add support for memgraph as an alternative to Neo4j @dgarros (#724)
  • Disable protected fields for edit form @pa-lem (#731)
  • Change IPHost and IPNetwork graphql type to string @wvandeun (#713)
  • Add new colours and logo @pa-lem (#728)
  • Enable authentication requirements for demo @ogenstad (#725)
  • Add files diff by repository and by file @pa-lem (#727)
  • Add commit_from and commit_to to api diff endpoint @ogenstad (#717)
  • Add endpoint to read files from git repositories @ogenstad (#716)
  • Anonymous access login @pa-lem (#715)
  • Enable user profile edit @pa-lem (#712)
  • Initial Prototype of a synchronization engine @dgarros (#690)
  • Add a mutation to query the current user profile @ogenstad (#707)
  • Get user profile from account query @pa-lem (#709)
  • Object deletion @pa-lem (#697)
  • Add logout endpoint and support to invalidate refresh tokens @ogenstad (#686)
  • Blocks UI on read only @pa-lem (#692)
  • Make load schema idempotent for node extensions as well @dgarros (#689)
  • Add auth in frontend @pa-lem (#687)
  • Add api endpoint to refresh an access token @ogenstad (#673)
  • Add infrahubctl validate graphql-query and refactor infrahubctl render @dgarros (#564)
  • Update internal Graph Schema to attach all nodes to Root instead of a Branch node @dgarros (#431)
  • Add support for offset and count in Query @dgarros (#426)
  • Add branch detail view, update branch list UI and use mutations for branch actions @pa-lem (#161)

🐛 Bug Fixes

🧰 Housekeeping

Read more

0.5.0 - Tech Preview #3

07 Jun 20:05
Compare
Choose a tag to compare
Pre-release

Summary

This release is a consolidation release with a lot of changes under the hood and only few visible changes from the outside. The main change in this release is the introduction of the pagination across the board, this feature is really important because without it wouldn't be possible to work with large dataset.

Highlights

New GraphQL format

In order to support pagination we had to make some significant changes to the GraphQL API, as a result the format of the query has changed significantly.

If you are using the SDK, these changes should be transparent to you as the client providing a layer of abstraction on top of GraphQL.

The new format of the GraphQL schema is inspired from the GraphQL Relay format that recommend to have

  • All relationship wrap into a node container
  • All list of relationship wrap into an edges container

The query below is using the new format. and it's showing how to control the pagination with limit and offset as well as how to query the total number of objects with count

query($device: String!) {
  device(name__value: $device, limit: 20, offset: 40) {
    count
    edges {
      node {
        id
        name {
          value
        }
        asn {
          node {
            asn {
              value
            }
          }
        }
        interfaces {
          count
          edges {
            properties {
                source: {
                   id
                }
            }
            node {
              id
              name {
                value
              }
            }
          }
        }
      }
    }
  }

Improved tooling to develop your own Jinja Templates and Python Transform function

Improved infrahubctl render command to develop your Jinja template locally

The command infrahubctl render provides better error message to help you develop your jinja template faster.

new infrahubctl validate graphql-query command to validate your GraphQL query

Schema: order_by

The schema now supports a new order_by attribute on all nodes and generics

order_by must be a List of attribute or relationship pointer like name__value or role__name__value

  - name: autonomous_system
    kind: AutonomousSystem
    order_by: ["asn__value"]

Changelog

User facing Changes

  • Add support for pagination in GraphQL, in the frontend and in the Python SDK
  • Add support for result ordering
  • Add ability to filter branches in GraphQL
  • Improve import of resources from a Git Repository
  • Add new command to generate the jsonschema file of some user facing files
  • Documentation Update
  • Configure logging to use structlog
  • Add support for Python 3.11

Internal Changes

  • Replaced the GraphQL client in the frontend with the Apollo Client for GraphQL
  • Replaced React Create Application with Vite
  • Replaced Jest with Vitest for Frontend unit tests
  • Added more unit & integration tests based on Vitest and Cypress
  • Changed the schema of the internal Graph to attach node to a root element
  • Add a feature flag mechanism to control experimental features both on the backend and on the frontend
  • Replaced Flake8 with Ruff for linting
  • Expose execution time metric per Neo4j query
  • Initial work to support authentication in the backend.

Migration Guide

It's mandatory to completely rebuild your environment with the following commands.

invoke demo.destroy demo.build demo.init demo.start
invoke demo.load-infra-schema
invoke 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 been updated to reflect the latest format of the GraphQL API
it's recommend to pull the latest changes into your fork otherwise it won't work with the latest version of Infrahub.