Hyperion on BlueAPI#

This document describes the migration of Hyperion from a monolithic service that contains its own application server and is only partially dependent on BlueAPI, to a standard BlueAPI application deployment.

Architecture#

Hyperion on BlueAPI consists of two components:

  • hyperion-blueapi: This is intended to ultimately be a standard blueapi installation, consisting of a beamline module and a dodal plan module. In the interim, deployment may vary from the standard method until such time as monolithic operation can be desupported. hyperion-blueapi exposes a minimal set of bluesky plans for UDC data collection.

  • hyperion-supervisor: This will be a separate service that is responsible for fetching instructions from Agamemnon, decoding them and sending corresponding requests to hyperion-blueapi for execution. The supervisor also monitors the state of hyperion-blueapi, manages the Hyperion baton and provides endpoints for status monitoring.

Deployment#

hyperion-blueapi and hyperion-supervisor are automatically available in a standard Hyperion deployment.

Launching#

hyperion-blueapi can be launched in using the run_hyperion.sh script, using the --blueapi option:

./run_hyperion.sh --beamline=i03 --dev --blueapi

hyperion-supervisor can be launched using the run_hyperion.sh script, using the --supervisor option:

./run_hyperion.sh --beamline=i03 --dev --supervisor

Configuration#

Configuration of hyperion-blueapi and hyperion-supervisor is done via standard BlueAPI .yaml configuration files. Basic configuration files for i03 are supplied as follows in src/mx_bluesky/hyperion.

hyperion-blueapi configuration files#

File

Description

blueapi_config.yaml

Defines beamline device module and blueapi plans to be exported, BlueAPI REST to listen on, Stomp and graylog servers.

hyperion-supervisor configuration files#

File

Description

supervisor/client_config.yaml

Tells the supervisor how to communicate with hyperion-blueapi, specifying the REST endpoint and stomp server.

supervisor/supervisor_config.yaml

Configures the internal blueapi context with a minimal beamline module containing the baton device and the graylog endpoint.

When these are deployed in kubernetes it is anticipated that these will be provided by specifying directly in the values.yaml which will be expanded by the base helmcharts at deployment time.