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

