Skip to main content
Release Number0.7.0
Release DateSeptember 12th, 2023
Release CodenameAlpha #1
Tag0.7.0

Release 0.7.0

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

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.

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

  • Add OpenTelemetry
  • Add GraphQL Query Analyzer @dgarros (#966)
  • Replace GraphQL playground with Graphiql @morganpartee (#1024)
  • Add Links in the footer
  • Convert all UUID to Temporal UUID @dgarros (#936)

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

  • Modify SDK to only update changed values @ogenstad (#1009)
  • Add GraphQL query for DiffSummary @ogenstad (#993)
  • Add validators and checks @pa-lem (#990)
  • Add checks for merge conflicts in git repositories @ogenstad (#988)
  • Add comments for the diff view @pa-lem (#971)
  • Adds the ability to generate artifacts related to a proposed change @ogenstad (#962)
  • Update UI from new diff endpoint @pa-lem (#944)
  • Add support for Distributed Lock based on Redis @dgarros (#937)
  • Add checks to proposed change @ogenstad (#908)
  • Add support for Global branch @dgarros (#906)
  • Rebuild monitoring stack @BeArchiTek (#907)
  • Expose data conflicts in the API @ogenstad (#833)
  • Add artifacts details view to display file content @pa-lem (#877)
  • Add recorder and playback features to the SDK @ogenstad (#874)
  • Create proposed changes from branch details view @pa-lem (#861)
  • Replace id with ids in relationship filters @dgarros (#868)
  • Files diff comments @pa-lem (#855)
  • Add proposed changes list + details + conversations @pa-lem (#845)
  • Update GraphQL filters to include Relationship with Generic @dgarros (#844)
  • Add support for Attribute of Type JSON @dgarros (#841)
  • Add support for password based authentication to the SDK @ogenstad (#836)
  • Refactor to_graphql to return all attributes by default if no field have been provided @dgarros (#840)
  • Add initial parts of proposed change schema @ogenstad (#815)
  • Add count pills for groups @pa-lem (#813)

🐛 Bug Fixes

  • Fix tool-tips display + delay @pa-lem (#1029)
  • Remove disclosure component and use custom one @pa-lem (#1023)
  • Diff responsive UI @pa-lem (#1011)
  • Fix approve mutation + add merge button @pa-lem (#1004)
  • Artifacts diff URL @pa-lem (#1005)
  • Abort merge if the operation wasn't successful @ogenstad (#980)
  • Validate values during creation of attributes @ogenstad (#942)

🧰 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

  • add branchupdate mutation and test @morganpartee (#1026)
  • remove graphql playground, update to graphiql @morganpartee (#1024)
  • Add label to Validator and Check @dgarros (#1008)
  • Artifacts updates (buttons, clipboard, links) @pa-lem (#1027)
  • Init Opentelemetry Traces @BeArchiTek (#982)
  • Add artifacts generate buttons, fix responsive, update file view @pa-lem (#1025)
  • Add infrahub-demo-edge repository to demo instance in CI @dgarros (#1018)
  • Fix functions for sync examples @ogenstad (#1002)
  • Updated schema for Validator and Check @dgarros (#973)
  • Rename Check to CheckDefinition and add targets and parameters @dgarros (#954)
  • Use execute_command in demo.test-unit @dgarros (#939)
  • Update format of the new diff api to convert action and display_label to dict @dgarros (#922)
  • Handle JSON values @pa-lem (#870)
  • Fix ids filter in queries @pa-lem (#872)
  • Add uuidt to Python SDK @dgarros (#829)