Provides public APIs to the Fermilab control system. This service exposes several GraphQL endpoints for various, logical APIs that clients may use to retrieve control system data and, in some cases, make changes to the control system. This service is currently running on acsys-proxy.fnal.gov on port 8000 with the development instance on port 8001.
The middle layer of the control system uses gRPCs for communications. The GraphQL resolvers of this service use various gRPC services to obtain the information that is returned. This uses the async-graphql and warp crates to provide GraphQL over http support. The resolvers use the tonic crate for gRPC client support.
The following variables exist for configuring the service at runtime:
ALARMS_KAFKA_TOPIC-> Topic name for alarms in KafkaCLOCK_GRPC_HOST-> Hostname for the clock gRPC serviceDEVDB_GRPC_HOST-> Hostname for the DevDB gRPC serviceDPM_GRPC_HOST-> Hostname for the DPM gRPC serviceGRAPHQL_PORT-> Port for clients to connect via GraphQL to this serviceKAFKA_CONNECTION_SECONDS-> The number of seconds to wait for a connection to Kafka before timing outKAFKA_HOST-> Hostname for the Controls Kafka instanceSCANNER_GRPC_HOST-> Hostname for the wire scanner gRPC serviceTLG_GRPC_HOST-> Hostname for the TLG gRPC service
$ git clone --recurse-submodules https://github.com/fermi-ad/extapi-acsys.git
$ cd extapi-acsysThe main branch is used for deployment; developers cannot commit directly to the main branch. Create a development branch which will host your changes. Once you're ready to release them, create a pull request.
$ git checkout -b develMake changes and commit them to this branch.
$ git push origin develGo to GitHub and make a pull request using this branch.