blob: 92919c71f51447ce2acfaf647f190c20bc9e07e2 [file] [log] [blame]
Jiri Simsad7616c92015-03-24 23:44:30 -07001// Copyright 2015 The Vanadium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
Suharsh Sivakumar8646ba62015-03-18 15:22:28 -07005// Package device contains the implementation for the v.io/v23//mgmt/device APIs.
Bogdan Capritac87a9142014-07-21 10:38:13 -07006//
Bogdan Caprita2b219362014-12-09 17:03:33 -08007// The device manager is a server that is expected to run on every
Suharsh Sivakumar1d38dc02015-03-16 17:53:29 -07008// Vanadium-enabled device, and it handles both device management and management
Bogdan Caprita2b219362014-12-09 17:03:33 -08009// of the applications running on the device.
Bogdan Capritac87a9142014-07-21 10:38:13 -070010//
Bogdan Caprita2b219362014-12-09 17:03:33 -080011// The device manager is responsible for installing, updating, and launching
Bogdan Capritac87a9142014-07-21 10:38:13 -070012// applications. It therefore sets up a footprint on the local filesystem, both
13// to maintain its internal state, and to provide applications with their own
14// private workspaces.
15//
Bogdan Caprita2b219362014-12-09 17:03:33 -080016// The device manager is responsible for updating itself. The mechanism to do
17// so is implementation-dependent, though each device manager expects to be
18// supplied with the file path of a symbolic link file, which the device manager
19// will then update to point to the updated version of itself before terminating
20// itself. The device manager should therefore be launched via this symbolic
21// link to enable auto-updates. To enable updates, in addition to the symbolic
22// link path, the device manager needs to be told what its application metadata
23// is (such as command-line arguments and environment variables, i.e. the
Todd Wang94c9d0b2015-04-01 14:27:00 -070024// application envelope defined in the v.io/v23/services/application package),
25// as well as the object name for where it can fetch an updated envelope, and
26// the local filesystem path for its previous version (for rollbacks).
Bogdan Capritac87a9142014-07-21 10:38:13 -070027//
Bogdan Caprita2b219362014-12-09 17:03:33 -080028// Finally, the device manager needs to know its own object name, so it can pass
Bogdan Capritac87a9142014-07-21 10:38:13 -070029// that along to the applications that it starts.
30//
Bogdan Caprita2b219362014-12-09 17:03:33 -080031// The impl subpackage contains the implementation of the device manager
32// service.
Bogdan Capritac87a9142014-07-21 10:38:13 -070033//
34// The config subpackage encapsulates the configuration settings that form the
Bogdan Caprita2b219362014-12-09 17:03:33 -080035// device manager service's 'contract' with its environment.
Bogdan Capritac87a9142014-07-21 10:38:13 -070036//
Bogdan Capritaa456f472014-12-10 10:18:03 -080037// The deviced subpackage contains the main driver.
38package device