Commit Graph

1632 Commits

Author SHA1 Message Date
5c04df2cb8 compose: Fix network option field names and update dockerode types
Change-type: patch
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-28 17:43:31 +00:00
502167e267 fix: When updating from a legacy supervisor, use updated resource ids and image URL from the API
When updating from old supervisors (<7.0.0), we've been so far using a fake id 1 for serviceId, imageId
and releaseId since these were not available in the old supervisor. This causes problems when the supervisor
tries to report these values to the API. Moreover, the app from the legacy supervisor has an image URL
that doesn't include the content hash - this causes the supervisor to believe the image is not really downloaded
and try to fetch it again.

To fix these issues, we add a request to the API when the supervisor starts up and detects that there's a legacy
app that needs to be normalised. We fetch the appropriate release, and use it to populate the resource ids
and the updated image URL.

This should avoid the unnecessary image download, and errors reporting target state after an update.

Change-type: patch
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-11-28 17:19:55 +00:00
311eaf0ac0 device-api: Add container id endpoint
Change-type: minor
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-28 16:44:19 +00:00
6317b16138 Convert network module to typescript
Change-type: patch
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-28 15:15:06 +00:00
b37ce5e3d9 config: Set default apiKey of empty string to avoid undefined keys
Change-type: patch
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-28 14:53:09 +00:00
142d2a7c6f config: Move config.ts -> config/index.ts
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-28 14:53:08 +00:00
a2e2948a4e Allow local mode to be controlled via config.json
Change-type: minor
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-28 14:53:08 +00:00
2e80b49da1 Don't start connectivity check when in offlineMode
Change-type: patch
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-28 14:53:07 +00:00
ce543d820f Improve UX when apps.json is not present
Change-type: patch
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-28 14:53:06 +00:00
f56be737ee config: Switch default device type to unknown
Change-type: patch
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-28 14:26:05 +00:00
dfa9034fe9 Handle empty apiEndpoint when detecting mixpanel host
Change-type: patch
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-28 14:26:02 +00:00
940d8c9862 fix: Set default apiEndpoint to empty
Change-type: patch
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-28 13:11:45 +00:00
aface89fd2 compose: Set default config for stopSignal to SIGTERM
Change-type: patch
Signed-off-by: Shaun Mulligan shaun@balena.io
2018-11-27 12:21:08 -08:00
646a510310 compose: Change default stop signal from '' to SIGTERM
Change-type: patch
Signed-off-by: Shaun Mulligan <shaun@balena.io>
2018-11-27 12:13:20 -08:00
fe44d496fb compose: Change default grace period to 10s
Change-type: patch
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-22 12:18:18 +00:00
f48e85095b events: Correctly proxy mixpanel events
Change-type: patch
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-21 13:09:06 +00:00
96ecef8052 Fix m00001 migration by using targetValues
Change-type: patch
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-13 22:14:06 +00:00
2a17184d32 Let typescript do the json resolution so we get proper types
Change-type: patch
2018-11-06 18:13:52 +00:00
00bd88c50d fix: Rework code to avoid prettier errors
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-06 11:07:55 +00:00
dfdc371a9c device-api: Also support serviceName in v2 service endpoints
Now you can either pass a serviceName or imageId to restart a specific
service, which is much easier from a device container.

Change-type: minor
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-05 11:44:29 +00:00
9963d24675 fix: Fix typo in image cleanup code
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-05 11:44:29 +00:00
2bdb34d78d fix: Correctly type bluebird promises in application-manager typings
Signed-off-by: Cameron Diver <cameron@balena.io>
2018-11-05 11:44:26 +00:00
235f9f04af Remove some type casts
Change-type: patch
2018-11-02 20:45:13 +00:00
83927f36d8 Update to typescript 3
Change-type: patch
2018-11-02 15:41:14 +00:00
ab6401343b Run prettier on the typescript files 2018-11-02 14:50:13 +00:00
d6e9283a15 Fix coffee-script lint failures 2018-11-02 14:50:12 +00:00
4bf6f75a4f Remove unused codepaths that do deltas from resin/scratch
The supervisor has been doing regular pulls instead of deltas
from scratch for a while now. We remove remaining references to
resin/scratch, and add a handler in docker-utils to fall back
to a regular pull with a null deltaSource (which should never be
called anyways, but is left as a precaution).

Change-type: patch
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-11-01 17:00:13 -07:00
8298487a88 Rename most of the documentation and variable names from resin to balena
Change-type: minor
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-11-01 17:00:13 -07:00
007bd168bb When updating from resin-supervisor to balena-supervisor, try to delete old resin-supervisor images
Change-type: minor
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-11-01 14:59:41 -07:00
b71c59c002 api-binder: Use API v5
Change-type: major
2018-11-01 13:17:30 +02:00
989a5e2c6a fix: When calling the /v1/update endpoint, always trigger a target state apply
getAndSetTargetState in the APIBinder had a check for whether the target state has changed.
When triggering an update from the API, we want to *always* call triggerApplyTarget, especially
when the update is forced. Otherwise the API endpoint doesn't work for forced updates (and in general,
will rarely trigger an update unless a change in the API's target state has happened)

Change-type: patch
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-10-31 14:26:56 -07:00
d5094d8d3b fix: Properly check for the balena-api label to inject the API key env vars
Change-type: patch
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-10-31 13:13:09 -07:00
d6ee60100d fix: When setting target state, delete old apps from the same source
In commit 19cd310da3 this line was deleted,
probably to avoid deleting local mode apps when setting the API target and
viceversa but we need to delete old apps to avoid problems when moving
the device between apps.

We now filter by source to avoid the problem with local mode too.

Change-type: patch
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-10-31 11:20:42 -07:00
1c5891ec09 ApplicationManager: when comparing images to save metadata, take docker image ids into account
Otherwise we may skip saving a target image to the db when updating from legacy supervisors,
which in turn prevents from deleting the legacy image entry (with imageId = 1), leaving the
supervisor in a state where it can't report its current state to the API.

While we're at it, we also remove an unused variable in _getStatus.

Change-type: patch
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-10-23 15:43:59 -07:00
64de3d2f63 fix: Use fat arrow for cleanup method
Change-type: patch
Signed-off-by: Cameron Diver <cameron@resin.io>
2018-10-23 19:13:34 +01:00
1879c76b00 fix: Run checkTruthy on config values before using them
Change-type: patch
Signed-off-by: Cameron Diver <cameron@resin.io>
2018-10-23 18:32:38 +01:00
f5b005bcb2 fix: Properly get the config from target state before comparing during initial config reporting
Change-type: patch
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-10-22 13:18:53 -07:00
0eaae3d670 fix: When checking for legacy containers, properly get the labels from config
Change-type: patch
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-10-20 19:08:53 +02:00
922597e582 fix: Avoid trying to report duplicated values in initial config
We do this by formatting the keys from the target state before comparing them
with the ones from the current state (that are already formatted to strip the namespace
prefix).

Change-type: patch
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-10-20 18:58:13 +02:00
b3860b2b70 fix: Store and retrieve device config without namespaces
This avoids issues on provisioning where the current state
(esp. config.txt) that we want to save is retrieved without
a RESIN_ or BALENA_ prefix, causing those values to be lost.

Change-type: patch
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-10-20 04:40:55 +02:00
32d5e58ead Keep defaulting tty to true to avoid accidental breakage
Otherwise old releases (where applications expected tty to be true)
would break.

Change-type: patch
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-10-19 17:54:13 +02:00
6fb0147d3c Fix preloading in flasher images by reading apps.json if target hasn't been set
i.e. if we're not provisioned or if the target state is empty (of apps), then we
read apps.json to preload. We then mark that the target state has been set to avoid
trying to preload again if we ever get an empty target state from the API.

Change-type: patch
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-10-19 14:42:29 +02:00
583ce34c01 apiBinder: Keep prepending RESIN_ to reported config variables
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-10-18 17:20:53 +02:00
24cbfbb860 deviceConfig: allow BALENA_ config variables
They will take precedence over any existing RESIN_ variables. We strip both namespaces now
whenever we get the target values.

This also fixes preloading with a legacy config (the interface to get the config keys from
the legacy apps.json was broken).

Change-type: minor
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-10-18 17:20:53 +02:00
e04de0a170 fix: Add typescript cast to fix type error
Change-type: patch
Signed-off-by: Cameron Diver <cameron@resin.io>
2018-10-18 15:14:12 +01:00
d939b2b9e6 fix: Remove debugging console logs
Change-type: patch
Signed-off-by: Cameron Diver <cameron@resin.io>
2018-10-18 15:04:04 +01:00
6ad3a7981d fix: Redact environment variable values in debug output
Chnage-type: patch
Signed-off-by: Cameron Diver <cameron@resin.io>
2018-10-18 15:04:04 +01:00
2a94a7b730 fix: Apply default config options when they're falsy
Change-type: patch
Signed-off-by: Cameron Diver <cameron@resin.io>
2018-10-18 15:04:04 +01:00
5569e2bc84 fix: Always set the container name when generating creation options
Change-type: patch
Signed-off-by: Cameron Diver <cameron@resin.io>
2018-10-18 15:04:04 +01:00
e17bb59844 config: Allow atomic config.json writes on balenaOS
Change-type: minor
Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
2018-10-18 15:01:49 +02:00