| 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 |
| |