blob: 52d42fb20f0a14c1c5274cb51de9d9313c63ca0e [file] [log] [blame]
Soma
--------------------------------------------------------------------------------
Soma is the Brillo daemon that manages the on-disk presence of Brillo service
bundles.
Currently, this mostly entails determining the appropriate containment
policy for a given service at runtime. By convention, an appropriately
packaged service bundle installs a config file in its own filesystem
overlay at /etc/services/<service-name>.conf. Soma handles locating
this file within the appropriate service bundle, interpreting it and
exporting the info as a handy data structure upon request.
The Soma API consists of one function that takes the fully-qualified
name of a service and returns a specification describing how it should
be contained.
Talking to Soma
--------------------------------------------------------------------------------
Soma uses proto2 RPC. The interface is defined in idl/soma.proto, while the
protobuf that describes a container is in idl/container_spec.proto.
See .proto files in idl/ for descriptions of the API and message format.
Container specifications
--------------------------------------------------------------------------------
Soma container specifications are JSON files that comply with a subset of
the 'appc' specification used by Rocket and others
(https://github.com/appc/spec/blob/master/SPEC.md).
TODO(cmasone): Once this settles down, explain all the fields in this example.
Currently only single-entry 'apps' list is supported.
The only fields supported inside an 'apps' entry are:
name: String
app.exec: List
app.user: Int
app.group: Int
Example in com.android.embedded.ping_brick.ping_service.json