This is the public repository for the OORT Agent.
The OORT Agent is a standalone server that is the endpoint of the OORT pipeline. It currently provides basic functions to send and receive files, and to support the rest of the pipeline.
The Agent is intended to be an always-available service. To support this goal, it requires only a small amount of resources from the host system.
The agent can be built for the current platform using make
:
$ cd agent
$ make
The compiled binary can be found in agent/build/oort-server
.
The OORT agent can be built for several different architectures. Building for
architectures other than native require a cross-compiler. These cross-compilers
are packaged in docker images, and can be built from the builder
subdirectory.
$ cd builder
$ make armv7a arm8
Note that these cross-compilers take significant time (several hours) to build. Be careful cleaning up images unless you wish to repeat these lengthy builds!
Once the cross-compiler dockers are available, the agent itself can be built.
$ cd agent
$ make cross ARCH=armv7a
This will build the agent for the armv7a
architecture, suitable for the OBC and most
other satellite payloads. The compiled binary will be found in agent/build-cross-armv7a/oort-server
The OORT Agent is expected to run at system startup and be available at any time after that. In testing settings, it can be started normally from the command line:
oort-agent -w /tmp/workdir
The agent performs several checks at startup to minimize surprises later. Among these is checking the ownership and permissions on the working directory, so if those are incorrect the agent will refuse to start.
All configuration options are specified on the command line. Running with -h
will
give a brief description of the options, reproduced here.
oort-agent -w workdir
[-t cleanup-timeout] [-i cleanup-interval] [-f config-file]
[-s ident] [-m minfree] [-p port] [-l level]
[-c can-interface] [-n can-node-id]
workdir - base working directory; must be writable
cleanup-timeout - age in seconds after which files can be deleted
cleanup-interval - how frequently in seconds to run the cleanup task
config-file - file to use for setting config values (not implemented)
ident - identifier for syslog (default is to log to stderr)
minfree - minimum free space to maintain; either ddM or dd%
port - tcp port to listen on
level - logging level (debug, info, warn, error)
can-interface - CAN interface name for healthcheck interface (e.g. can0)
can-node-id - CAN node ID for healthcheck interface, required if -c is set
Defaults:
cleanup-timeout = 86400 cleanup-interval = 3600
minfree = 20%
port = 2005
level = warn
The OORT Agent is installed by copying the binary to the target location, and configuring the system startup scripts to run it from that location.
Full details can be found in INSTALL.md.
The OORT Agent is upgraded by copying the new binary over the existing one. Configutation options are the same or compatible, so changes to the startup scripts are not necessary, other than to configure previously unavailable functionality.
In the usual case, new oort-agent binaries will be uploaded to the host by the OORT collector.
If it has been configured, the collector will kick off the upgrade install as well, requiring
no additional manual steps.
Full details can be found in UPGRADE.md.