Releases: opsmill/infrahub
Alpha #3.0 - Version 0.9.0
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
- Add ability to run proposed change checks on targets @ogenstad (#1663)
- Fetch schema and schemaSummary before rendering App @bilalabbad (#1662)
- Upsert mutations @ajtmccarty (#1611)
- Add and remove options from dropdown and enum @pa-lem (#1635)
- Create a dedicated python package for infrahub-sync @dgarros (#1640)
- Add priorities to messages within RabbitMQ @ogenstad (#1632)
- feature: Refactor Storage Engine @wvandeun (#1613)
- Optimize schema fetching, only when hash changes @bilalabbad (#1622)
- Using Jotai for currentBranch state management @bilalabbad (#1618)
- Extend IPHost & IPNetwork return values @BeArchiTek (#1598)
- Add targeted checks for infrahubctl and enforce name @ogenstad (#1614)
- All Textarea supports Markdown and have an editor @bilalabbad (#1565)
- Refactor scheduling service @ogenstad (#1575)
- Core egine :: implement filters with multiple values @wvandeun (#1560)
- Add new dropdown for items with color and description @pa-lem (#1561)
- Add support for Directional Relationship @dgarros (#1517)
- Python SDK : Add Fetch Relationships flag @BeArchiTek (#1507)
- Add ability to modify enums in the schema @ogenstad (#1531)
- Add transform rendering to infrahubctl @morganpartee (#1533)
- SDK: Add config flag to specify default branch @ogenstad (#1538)
- Related objects creation on the fly @pa-lem (#1532)
- Python SDK :: Add functions to fetch and generate artifacts. @wvandeun (#1505)
- remove read-only attributes from mutations @ajtmccarty (#1528)
- Add Helm Chart for infrahub @BeArchiTek (#1485)
- Support Markdown in TextArea field @bilalabbad (#1492)
- Add dropdown kind, an enum type with extra options @ogenstad (#1504)
- Add new api endpoints to retrieve partial schema for the frontend @dgarros (#1498)
- Add IPHost query type and add ability to query for host_address @ogenstad (#1483)
- Indicate if a field is unique on UI @bilalabbad (#1471)
- Add support for both Pydantic v1 and v2 in the SDK @dgarros (#1426)
- Read only attributes @pa-lem (#1434)
- Cancel an open or closed proposed change if a branch is deleted @ogenstad (#1404)
- Add read-only attribute to schema @ogenstad (#1407)
- Adds password reset view from user profile @pa-lem (#1421)
🐛 Bug Fixes
- Fix flaky E2E test tutorial-1 @bilalabbad (#1606)
- fix issue in SDK when UUID was not properly used @BeArchiTek (#1569)
- Fix several bugs on comments on proposed changes' files @bilalabbad (#1544)
- Self-update mutation @ajtmccarty (#1490)
- Fix one flaky test (tuto 1) and skip another one (relationships) @pa-lem (#1521)
- fix typo isOptionnal > isOptional @bilalabbad (#1488)
- Fix issue with multiple transforms @ogenstad (#1465)
- Fix relationship counter's update when adding or deleting one @bilalabbad (#1453)
- Debounced time selector @pa-lem (#1440)
- Reload menu on branch change @pa-lem (#1442)
- Delete relationships @pa-lem (#1439)
- improve diff data query validation @ajtmccarty (#1412)
- Fix branch selector when deleting the currently selected one @bilalabbad (#1410)
- Fix: Delete generics (UI) @pa-lem (#1427)
🧰 Maintenance
- Update screenshots @pa-lem (#1668)
- Use dropdown in demo @BeArchiTek (#1619)
- Using Jotai for datetime state management @bilalabbad (#1657)
- Move Status, Role, Criticality and Organization out of the core schema @dgarros (#1603)
- Update TS types from OpenAPI schemas @bilalabbad (#1650)
- (re)Build Nautobot Sync @BeArchiTek (#1552)
- Minor upgrades of dependencies in pyproject.toml @dgarros (#1642)
- Docs: Add howto guide for Python transforms @ogenstad (#1626)
- Remove locust from deps and set ruff to 0.1.8 @dgarros (#1641)
- Update Neo4j to 5.14 @dgarros (#1629)
- Update memgraph to 2.13 @dgarros (#1630)
- docs :: update infrahub_sdk installation instructions @wvandeun (#1617)
- Docs: Fix broken headers in reference @ogenstad (#1621)
- Update InfraRack schema to use Dropdown for status and role @dgarros (#1602)
- Modify Python transforms to require a name in .infrahub.yml @ogenstad (#1616)
- Move color selection to schema process() @ogenstad (#1607)
- Improved App first load: remove duplicate schema fetch and unused atom @bilalabbad (#1549)
- Update Jotai to latest version (2.6.0) @bilalabbad (#1608)
- Add message to sync repositories and change schedule of git agent @ogenstad (#1599)
- Add mutations to add & remove Dropdown choices @ogenstad (#1572)
- Add namespace information to schema API @ogenstad (#1562)
- chore: update infrahub-sdk version from 0.2.1 to 0.3.0 @BeArchiTek (#1571)
- docs: add docs guide @markmichon (#1491)
- docs(fix): update build and serve tasks @markmichon (#1574)
- Refactor initialization of RabbitMQ on API server @ogenstad (#1564)
- Fix ability to run checks from infrahubctl @ogenstad (#1558)
- Cleanup of git-agent move rabbit logic to the adapter @ogenstad (#1542)
- docs: Improve Generated Docs for the Schema @dgarros (#1520)
- Mutation change for account self udpate @pa-lem (#1535)
- Remove "repository" requirement of rfile definition @ogenstad (#1523)
- docs(fix): fix release note titles @markmichon (#1529)
- Add vale.sh to CI to validate docs grammar @ogenstad (#1530)
- docs: additional style and consistency updates @markmichon (#1519)
- docs: add vale and markdown configurations @markmichon (#1518)
- Add GraphQLQueryAnalyzer to auth validation @ajtmccarty (#1437)
- Fix cypress typing @pa-lem (#1527)
- Increase cypress timeout @pa-lem (#1524)
- Refactor Schema Validation @dgarros (#1516)
- Change URL slugs for SDK documentation @ogenstad (#1511)
- Split apart exclusions for mypy @ogenstad (#1510)
- Add CI job to ensure that automated documentation is up to date @ogenstad (#1501)
- Increase timeout to load schema to 120sec and add more logs for better troubleshooting @dgarros (#1502)
- Update CI @BeArchiTek (#1493)
- Remove serve.log from excluded mypy checks @ogenstad (#1487)
- docs: docs cleanup for consistency @markmichon (#1479)
- Move generation of all automated documentation to one command @ogenstad (#1482)
- Minor cleanup of how services are initialized @ogenstad (#1481)
- Add missing documentation for infrahubctl and automate rendering @ogenstad (#1476)
- Update schema for Python checks in .infrahub.yml @ogenstad (#1470)
- Reactivate coverage report for CTL @ogenstad (#1468)
- added test e2e for profile page @bilalabbad (#1478)
- Fix typehints for infrahub.storage @ogenstad (#1469)
- Update memgraph version to 2.12.1 and re-enable E2E tests with memgraph @dgarros (#1443)
- Change logic for importing information from .infrahub.yml @ogenstad (#1417)
- Move repository check imports to .infrahub.yml @ogenstad (#1432)
- Initialize git-agent with services object @ogenstad (#1433)
- Add InfrahubLogger object to services @ogenstad (#1429)
- Changes to SDK recorder, enable recording of all requests regardless of configured request method @ogenstad (#1436)
- docs(fix): update infrahub-cli output path @markmichon (#1425)
- Move checks and transforms to SDK @ogenstad (#1431)
- Self host icons from iconify/mdi @bilalabbad (#1423)
- some fixes/updates for tutorial pages @ajtmccarty (#1413)
- Add source and protection to the commit attribute on update @ogenstad (#1420)
- Fix type hints for checks and transforms @ogenstad (#1405)
- Minor cleanup for handling menu titles @ogenstad (#1406)
- Add CI step for documentation @ogenstad (#1418)
- docs: Update organization and structure @markmichon (#1414)
- Update labels and descriptions @pa-lem (#1411)
- Update favicons @pa-lem (#883)
- Remove import from Infrahub in infrahubctl @dgarros (#1397)
Alpha #2.1 - Version 0.8.2
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
- Do not query value for hashed password + use password field @pa-lem (#1369)
- Hide passsword @pa-lem (#1356)
- Ple menu @pa-lem (#1353)
🐛 Bug Fixes
- Fix to get the commit id of the repo from the branch @ogenstad (#1394)
- Fix error with unbound branch variable when syncing git @ogenstad (#1390)
- fix pagination labels @pa-lem (#1380)
- Catch network errors from httpx @ogenstad (#1358)
- Fix new value colour for diff view @pa-lem (#1359)
- Fix ability to merge git branches without data changes @ogenstad (#1347)
🧰 Maintenance
- Update icon for password in details values and trim the actual value if needed @pa-lem (#1393)
- Audit fix package at root level @pa-lem (#1391)
- Add section for proposed changes in the docs @ogenstad (#1372)
- Use labels in the menu if available and hide accordion icons @ogenstad (#1379)
- Proposal for icons @BeArchiTek (#1374)
- update icons for password field @pa-lem (#1375)
- Udpate packages @pa-lem (#1370)
- Add or correct type hints @ogenstad (#1365)
- Add ability to control menu placements from within schema @ogenstad (#1357)
- Integrate database initialisation within Start procedure @dgarros (#1350)
- Fixes to SDK tests (db init) @ogenstad (#1355)
- chore: add label for internal tooling @BeArchiTek (#1352)
- Remove ability to trigger checks on non open proposed changes @ogenstad (#1348)
- Fix typo repositoryy -> repository @ogenstad (#1349)
- Change Repository password from kind test -> password @ogenstad (#1346)
- Add /api/menu to define the sidebar menu in the frontend @ogenstad (#1345)
Alpha #2 - Version 0.8.1
Alpha #2 - Version 0.8.0
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
- Sort branches @pa-lem (#1334)
- Move Python SDK to dedicated python package and rename module to python_sdk @dgarros (#1332)
- Add support for loading schema from a Git repository @dgarros (#1313)
- Add actions to choose a change or cancel it @pa-lem (#1318)
- Add support for Node Creation with an ID @dgarros (#1300)
- Convert schema load API to accept multiple schemas @dgarros (#1301)
- Convert Artifact to Branch.LOCAL @dgarros (#1294)
- Merge branch when proposed change state is updated to merged @ogenstad (#1286)
- Query nodes based on their Lineage information @dgarros (#1259)
- Add ability to merge branches that have deleted the same node @ogenstad (#1257)
- Fix required datetime field + add test @pa-lem (#1242)
- Ple conflicts @pa-lem (#1223)
- New artifact messages and rewriting of API logic to create artifacts @ogenstad (#1228)
- Update graphql errors @pa-lem (#1227)
- Add Validators for Artifact Checks @ogenstad (#1209)
- Change URL for the object name @pa-lem (#1195)
- Trim values in list view @pa-lem (#1208)
- Disable checks retry for unauthenticated users @pa-lem (#1190)
- Init nautobot sync for infrahub-sync @BeArchiTek (#1178)
- Add ability to run repository code checks in proposed change @ogenstad (#1156)
- Add Branch support in infrahub-sync @BeArchiTek (#1177)
🐛 Bug Fixes
- Fix token tab from profile page @pa-lem (#1321)
- Fix conflict info for relationships @pa-lem (#1320)
- Fix relationship redirection with branch context @pa-lem (#1296)
- Fix edit relationship form @pa-lem (#1295)
- Add Branch in mutation validation @BeArchiTek (#1271)
- Fix missing or wrong query names @dgarros (#1274)
- Fix metadata form and mutation + add tests @pa-lem (#1267)
- Raise NodeNotFound when local storage object does not exist @wvandeun (#1254)
- Escaped special char in path @BeArchiTek (#1251)
- fix optionnal relationship @pa-lem (#1207)
- Fix query string for artifact generation on branches @ogenstad (#1205)
- Fix generate playload sdk @BeArchiTek (#1202)
- Fix target link for groups in artifact definition @pa-lem (#1193)
- Fix construct url for relationships and groups @pa-lem (#1173)
🧰 Maintenance
- Pull from stable + frontend conflict resolution @pa-lem (#1339)
- Regenerated documentation for docs @ogenstad (#1335)
- Add missing image to create an organization @ogenstad (#1333)
- Add basic labels for our issue-template @BeArchiTek (#1325)
- Check validator conclusions before merge @ogenstad (#1305)
- Rework edge script @BeArchiTek (#1322)
- Update conflicts resolution UI @pa-lem (#1319)
- Conflict payload cleanup for data integrity checks @ogenstad (#1298)
- Update diff conflicts in diff view @pa-lem (#1312)
- Change payload for relationsip_one conflicts @ogenstad (#1303)
- Fix conflicts with new payload @pa-lem (#1311)
- Use parent mutate_create method for InfrahubRepositoryMutation class @wvandeun (#1302)
- Update Neo4j docker image to 5.13 and switch to community @dgarros (#1299)
- Remove duplicate Class Branchdata @BeArchiTek (#1289)
- Fix type hints on main graphql mutation @ogenstad (#1283)
- Upgrade gitpython=3.1.40 @ogenstad (#1285)
- Add event when a branch is deleted @ogenstad (#1287)
- removing /data and /schema endpoint @fooelisa (#1244)
- Switch to Neo4j by default for demo @dgarros (#1273)
- add branch naming documentation @morganpartee (#1272)
- Update cypress type options for proposed-changes test @pa-lem (#1279)
- Remove old authentication middleware @wvandeun (#1268)
- Stop infrahub-server and infrahub-git in demo init @BeArchiTek (#1264)
- Add database_name property to DatabaseSettings config class @wvandeun (#1258)
- Replace deprecated pkg_resources with importlib @ogenstad (#1263)
- Minor UI fixes (margins, icons sizes) @pa-lem (#1243)
- Catch database connection errors and raise Infrahub error @ogenstad (#1261)
- Rename InfrahubBaseMessage class to InfrahubMessage @wvandeun (#1253)
- Escaped special char in path @BeArchiTek (#1251)
- Add Job in GHA to run E2E tests with Neo4j as well @dgarros (#1249)
- Pull database option from environment variable to simplify how to run NEO4J @dgarros (#1237)
- Minor cleanup of messaging and git-agent & typehints @ogenstad (#1246)
- Clean up unused message code @ogenstad (#1236)
- Use bigger runner for E2E tests @dgarros (#1238)
- Convert git messages to json @ogenstad (#1226)
- Nornir unit tests @fooelisa (#1201)
- Extend schema for netbox @BeArchiTek (#1198)
- Add codespace support @BeArchiTek (#1214)
- Add more schema extension example @BeArchiTek (#1180)
- Cleanup of keys used in Redis and add tests to adapter @ogenstad (#1188)
- Convert message for git diff to json @ogenstad (#1187)
- Convert repo add to json format @ogenstad (#1184)
- adding favicon to docs @fooelisa (#1179)
- Update memgraph log level to INFO @dgarros (#1176)
0.7.2 - Alpha #1.2
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
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
- Update e2e test to use organization @pa-lem (#1133)
- expand branch name regex to allow git ref names @morganpartee (#1012)
- Infrahub Nornir inventory plugin @wvandeun (#694)
- Add ability to get a single branch from the SDK. @ogenstad (#1125)
- Add cookie auth support @morganpartee (#1055)
- Fetch logout endpoint when logging out @pa-lem (#1109)
- Ple proposed changes diff updates @pa-lem (#1107)
- Refactor Branch Rebase @dgarros (#1097)
- Proposed change redirection after creation @pa-lem (#1096)
- Datetime UI update @pa-lem (#1094)
- Add events to trigger actions in all workers based on changes @ogenstad (#1064)
🐛 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
- Add RPCError exception for more detailed errors from RPC @ogenstad (#1139)
- Convert message to get file from git to json format @ogenstad (#1128)
- Refactor Schema Registry @dgarros (#1114)
- Refactor git worktree to use the internal id instead of the name to create a branch worktree @dgarros (#1122)
- Remove auth feature flag @pa-lem (#1120)
- Add state field to ProposedChange @ogenstad (#1123)
- Move timeout setting to Config object @ogenstad (#1126)
- Add display labels to all CoreCheck and CoreValidator @dgarros (#1124)
- Update no data + error screens @pa-lem (#1118)
- Remove "diff" query from GraphQL app @ogenstad (#1115)
- Update schema diff endpoint @pa-lem (#1110)
- Rework creation of branches in repositories @ogenstad (#1111)
- Impose query limit for internal queries and properties @ogenstad (#1108)
- Cleanup of StandardNode and add support for Dict attribute @dgarros (#1100)
- Convert transform from pickle to json @ogenstad (#1105)
- Add Serialize on IPNetwork and IPHost @BeArchiTek (#1093)
- Update the way we wait after object creation / deletion @pa-lem (#1062)
- Finalize restructure of documentation URL scheme @ogenstad (#1099)
- Upgrade Neo4j to 5.11 @dgarros (#1091)
- Rename "branch" query to "Branch" @dgarros (#1089)
- Enforce authentication in SDK integration tests @ogenstad (#1078)
- add * for requireed fields and refactor props @pa-lem (#1090)
- Metadata e2e @pa-lem (#1076)
- Fix frontend vulnerabilities @pa-lem (#1066)
- Add ability to use JSON payload for RPC responses from the Message Bus @ogenstad (#976)
- Change URL structure in docs to remove number prefixes @ogenstad (#1068)
0.7.0 - Alpha #1
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 tooltips 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)
0.6.1
🚀 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
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'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 variableINFRAHUB_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.
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
intoname
- (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 refactorinfrahubctl 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
- Fix: Add missing port number to database URI @dgarros (#721)
- Fix: last page for pagination @pa-lem (#672)
- Fix: Ability to merge a graph without any changes @ogenstad (#657)
🧰 Housekeeping
- Remove hashed password @pa-lem (#787)
- Update Runner Size for E2E tests @dgarros (#798)
- Add end to end tests in CI based on Cypress @dgarros (#761)
- Fix object creation + deletion and add tests @pa-lem (#786)
- User profile @pa-lem (#780)
- Protected fields + tests @pa-lem (#779)
- Refactor Gitpod to just run the demo environment in docker @dgarros (#772)
- Fix docker image names locally @dgarros (#773)
- Add login page + login for each cypress test @pa-lem (#770)
- Increase e2e timeout @pa-lem (#767)
- Refactor project to run unit tests in Docker in CI @dgarros (#753)
- Fix E2E tests @pa-lem (#760)
- Add home link on logo @pa-lem (#758)
- Fix profile query + fix relationships in details view @pa-lem (#757)
- Add a label and a description to all models @dgarros (#755)
- Fix group path @pa-lem (#754)
- Enable cache for NPM in Github Actions @dgarros (#752)
- Add CI job to build docker images leveraging GHA cache @dgarros (#751)
- Convert all CI related workflows into a jobs inside a single workflow @dgarros (#750)
- Fix load-data script and exclude Node from relationship mutation @dgarros (#738)
- Update UI @pa-lem (#737)
- Move GraphQL resolver into dedicated file @dgarros (#734)
- Add back restart after
load-infra-schema
command @dgarros (#733) - Load filters only when displayed @pa-lem (#732)
- Fix files diff when there is no data @pa-lem (#730)
- Minor cleanup of the infrahub cli @dgarros (#720)
- Remove signin button when the auth is disabled @pa-lem (#719)
- Cleanup profile view @pa...
0.5.0 - Tech Preview #3
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.