API Update Workflow

From time to time, it can happen that Nazara becomes incompatible with the newest NetBox release.

Follow these steps in order to bring Nazara up to speed again.

To do this, you will need to install Thanix and clone the thanix_client repository.

1. Create Version Branch

The first thing we do, is lock the current version into a new branch. This ensures we have a fallback, and allows users to patch the version that may still be compatible to their running NetBox instance.

To do this, use this format:

$ git checkout -b version/alpha-2

Or for full release versions:

$ git checkout -b version/vX.Y.Z

2. Update thanix_client

thanix_client is the crate we use to handle API requests to and from NetBox. It is generated by Thanix using the current upstream NetBox API schema.

2.1 Get the latest API schema

Get the latest API schema YAML (Download may take a couple seconds)

2.2 Generate new thanix_client crate

Throw the downloaded YAML file into Thanix to generate a new crate. You will get a new directory wherever you executed it containing a completely new thanix_client repo.

Take the src directory from that output and copy it, in its entirety, into the thanix_client repository you cloned from GitHub. If prompted, agree to overtwrite all existing files.

Update the version numbers in thanix_client accordingly.

Test build the crate by running:

$ cargo build --release

This may take a while depending on your system. If all is good, publish it to crates.io:

$ cargo publish

3. Perform Port of Nazara

First thing you need to do is to update the thanix_client version number in Nazara's Cargo.toml file.

It is almost guaranteed that Nazara won't build after updating that API client. This means that you have to go and fix all the issues that arise. Most likely these will be linked to the payloads and their corresponding fields (like it was moving from 3.x to 4.x).

You will have to fix these in order to fully port Nazara to the newest NetBox version.

4. Follow Release Workflow

Ports of the API client like these are always a separate minor release.

After the codebase is updated, and has been tested and verified and the associated PRs merged, a new release will have to be created.

For this, follow the release workflow.