When apiEndpoint is not defined, work in offline mode

The supervisor uses an `API_ENDPOINT` environment variable to define what API to register to. Up to now this has been defaulted to `https://api.resin.io`.
(In Resin OS devices this environment variable ultimately comes from config.json).
This commit changes the behavior so that an empty value of that environment variable causes the supervisor to work in "offline mode", i.e. not connected to a remote server.
Basically only preloaded apps and the supervisor API work in this mode.

The config.json `supervisorOfflineMode` field still works for backwards compatibility, but we'll treat it as deprecated and it should be removed eventually.

Change-Type: minor
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
This commit is contained in:
Pablo Carranza Velez 2017-06-14 12:49:01 -07:00
parent 1e7bdad7a9
commit 00b53bd03e
3 changed files with 3 additions and 3 deletions

View File

@ -175,7 +175,7 @@ bootstrapper.startBootstrapping = ->
readConfig()
.then (configFromFile) ->
userConfig = configFromFile
bootstrapper.offlineMode = Boolean(userConfig.supervisorOfflineMode)
bootstrapper.offlineMode = !Boolean(config.apiEndpoint) or Boolean(userConfig.supervisorOfflineMode)
knex('config').select('value').where(key: 'uuid')
.then ([ uuid ]) ->
if uuid?.value

View File

@ -4,7 +4,7 @@ dockerRoot = checkString(process.env.DOCKER_ROOT) ? '/mnt/root/var/lib/rce'
# Defaults needed for both gosuper and node supervisor are declared in entry.sh
module.exports =
apiEndpoint: checkString(process.env.API_ENDPOINT) ? 'https://api.resin.io'
apiEndpoint: checkString(process.env.API_ENDPOINT)
apiTimeout: checkInt(process.env.API_TIMEOUT, positive: true) ? 15 * 60 * 1000
listenPort: checkInt(process.env.LISTEN_PORT, positive: true) ? 80
gosuperAddress: "http://unix:#{process.env.GOSUPER_SOCKET}:"

View File

@ -18,7 +18,7 @@ device = require './device'
exports.supervisorVersion = require('./lib/supervisor-version')
configJson = require('/boot/config.json')
if !Boolean(configJson.supervisorOfflineMode)
if Boolean(config.apiEndpoint) and !Boolean(configJson.supervisorOfflineMode)
mixpanelClient = mixpanel.init(config.mixpanelToken)
else
mixpanelClient = { track: _.noop }