From 00b53bd03e5bfd091c69dba8095406a709a85b08 Mon Sep 17 00:00:00 2001 From: Pablo Carranza Velez Date: Wed, 14 Jun 2017 12:49:01 -0700 Subject: [PATCH] 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 --- src/bootstrap.coffee | 2 +- src/config.coffee | 2 +- src/utils.coffee | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bootstrap.coffee b/src/bootstrap.coffee index bb7052c5..ea5a5dc4 100644 --- a/src/bootstrap.coffee +++ b/src/bootstrap.coffee @@ -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 diff --git a/src/config.coffee b/src/config.coffee index 1288f98a..44998fe4 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -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}:" diff --git a/src/utils.coffee b/src/utils.coffee index 57023c22..390134f2 100644 --- a/src/utils.coffee +++ b/src/utils.coffee @@ -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 }