User initiated update

Hi!

I’m considering using balena for a product deployment. But I’m not sure it is the right fit.

Balena (and similar services) seem heavily focused on devices that are centrally controlled, where the server just pushes updates.

What we need is a system where the user initiates the update. Our product is being used in the film industry for a very specialized purpose. Since users interact with it heavily and it is only connected to the internet for updates. We need a way where:

  1. The user can receive a notice is an update is available (if the device is connected to the internet)
  2. The user can click a button in our interface (an app) to update the device. Our users want to be in control so them initiating is important.
  3. The user receives some form of progress info during updates (it does not have to be much but users like to see progress and not just a spinning wheel).

Can this be achieved (in a robust stable way and not some roundabout hack) with balena?

Hello! This functionality is available today in the API. It would just be a matter of you creating the buttons in your interface to surface them to your users.

  1. You can fetch a list of Releases on an Application with this resource: Resources - Balena Documentation optionally filtered by tagging your releases, e.g. env: prod, so that you are presenting only Releases that you want your customers to actually consume
  2. You can then provide a button that will use this resource: Resources - Balena Documentation to set the should_be_running__release for that specific device to the one from step 1, which will initiate the update process
  3. In the Supervisor API, you can get the downloaded progress of an image update, as well as the overall status (downloading/installing/starting): Interacting with the balena Supervisor - Balena Documentation or a more detailed per-image breakdown with Interacting with the balena Supervisor - Balena Documentation

Please let us know if this helps!

Wonderful! This is exactly what I was hoping for!