Commit Graph

343 Commits

Author SHA1 Message Date
resin-io-versionbot[bot]
12e9253de6 v6.2.1 2017-08-18 21:52:43 +00:00
resin-io-versionbot[bot]
4875c79703 v6.2.0 2017-08-16 08:48:18 +00:00
Akis Kesoglou
1412785886 Try to resume the download of a delta if it fails due to flaky network
Applying a delta update consists of two parts:

1. The request to the delta server for the delta payload (an rsync batch file, plus some prepended Docker metadata). The response is a redirect to a URL that contains the delta (currently S3).
2. The request for the actual download of the delta. The response is streamed directly to rsync, which applies it onto the mounted root filesystem of the final image.

The first step may take a while as it may trigger the generation of the delta if the request is the first one for this combination of src/dest image and the images are large. If the request times out, either because of the delta server taking too long to respond or bad network, the Supervisor automatically schedules a retry to be performed after a while.

Currently, similar behaviour applies to the second step as well -- if the request fails, we immediately bail out and the Supervisor schedules a retry of the whole process (i.e. from step 1). But in this case it means we might have downloaded and applied some or most of the delta when a socket timeout occurs causing us to start all over again, wasting time and bandwidth.

This commit splits the process into the two discreet steps and improves the behaviour on the second step. Specifically:

- makes the Supervisor try to resume the delta download request several times before it bails out and starts the process all over again.
- removes arbitrary timeout which applied over the whole process and meant some deltas would never manage to be applied (because of large delta size and low network bandwidth).
- makes sure any launched rsync processes always exit and any opened streams consumed and closed.

Most of the improvements are in the two dependencies linked below -- `resumable-request` and `node-docker-delta` -- and this commit merely combines the updated versions of these modules.

Change-Type: minor
Connects-To: #140
Depends-On: https://github.com/resin-io/node-docker-delta/pull/19
Depends-On: https://github.com/resin-io-modules/resumable-request/pull/2
2017-08-09 11:55:22 +03:00
resin-io-versionbot[bot]
24a23dece2 v6.1.4 2017-08-07 22:32:59 +00:00
resin-io-versionbot[bot]
4d2c381e23 v6.1.3 2017-08-03 20:45:06 +00:00
resin-io-versionbot[bot]
fdc7d49e18 v6.1.2 2017-07-27 23:59:50 +00:00
resin-io-versionbot[bot]
902e31f1c0 v6.1.1 2017-07-27 18:07:56 +00:00
resin-io-versionbot[bot]
0f491c1a98 v6.1.0 2017-07-27 14:45:11 +00:00
Pablo Carranza Velez
7aedd7062d Update docker-delta to 1.1.1, docker-toolbelt to 3.0.1, docker-progress to 2.6.0 to add support for deltas and overlay2
This makes the Async suffix for docker functions unnecessary. It also allows us to remove dockerode as an
explicit dependency.

Change-Type: minor
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-07-27 01:48:35 -03:00
resin-io-versionbot[bot]
6978465ca8 v6.0.5 2017-07-27 04:06:14 +00:00
Pablo Carranza Velez
f5f8ca6df2 Allow building the supervisor source without optimizations for easier debugging with dindctl
Change-Type: patch
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-07-26 20:30:51 -03:00
resin-io-versionbot[bot]
097262878d v6.0.4 2017-07-26 18:47:54 +00:00
resin-io-versionbot[bot]
b6742851f2 v6.0.3 2017-07-25 20:09:26 +00:00
resin-io-versionbot[bot]
7ee2d48706 v6.0.2 2017-07-24 20:03:30 +00:00
resin-io-versionbot[bot]
2594ffee08 v6.0.1 2017-07-12 03:06:42 +00:00
Pablo Carranza Velez
1790939046 Use webpack to join all modules
This saves around 13MB in the resulting uncompressed docker image.

Change-Type: patch
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-07-11 14:01:16 -07:00
resin-io-versionbot[bot]
9b72451b4c v6.0.0 2017-07-07 18:03:13 +00:00
resin-io-versionbot[bot]
933515db79 v5.1.1 2017-07-04 18:33:42 +00:00
resin-io-versionbot[bot]
14e31857e3 v5.1.0 2017-07-01 08:47:33 +00:00
resin-io-versionbot[bot]
bff29c2f72 v5.0.2 2017-07-01 05:59:48 +00:00
resin-io-versionbot[bot]
28f1d29d64 v5.0.1 2017-07-01 03:01:26 +00:00
resin-io-versionbot[bot]
2097c5cc85 v5.0.0 2017-06-26 22:26:16 +00:00
Pablo Carranza Velez
597a2c6b65 Remove the undocumented and unused sideload and compose APIs
This allows us to also remove a few npm dependencies and the docker compose binary.

Change-Type: major
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-06-26 13:08:52 -07:00
resin-io-versionbot[bot]
e487ca4d51 v4.5.0 2017-06-26 17:20:31 +00:00
Pablo Carranza Velez
536ef458c9 Update docker-delta to 1.0.3 to support docker 17
Change-Type: minor
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-06-26 07:54:43 -07:00
resin-io-versionbot[bot]
0829260c17 v4.4.2 2017-06-26 14:05:37 +00:00
resin-io-versionbot[bot]
bd997b4ea6 v4.4.1 2017-06-24 01:24:14 +00:00
resin-io-versionbot[bot]
a5d6df6284 v4.4.0 2017-06-15 05:05:06 +00:00
resin-io-versionbot[bot]
d6d51678a3 v4.3.2 2017-06-14 09:09:14 +00:00
resin-io-versionbot[bot]
efa9c41917 v4.3.1 2017-06-13 16:26:13 +00:00
resin-io-versionbot[bot]
085793b4d3 v4.3.0 2017-06-05 23:48:38 +00:00
resin-io-versionbot[bot]
e26bf361d3 v4.2.4 2017-05-12 22:26:44 +00:00
resin-io-versionbot[bot]
cefd18c4b8 v4.2.3 2017-05-11 19:18:00 +00:00
Pablo Carranza Velez
0799fc1173 4.2.2
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-04-27 21:19:36 -07:00
Pablo Carranza Velez
c251de1cd3 Only delete the provisioning key if the supervisor is running on an OS that supports using the deviceApiKey
This avoids problems when updating the supervisor on an older OS, where the VPN and other
host services still require config.json to have an apiKey field to authenticate.

Change-Type: patch
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-04-27 13:31:25 -07:00
Pagan Gazzard
8a1d17a697 4.2.1 2017-04-26 15:14:39 -07:00
Pagan Gazzard
6a7ff91180 4.2.0 2017-04-24 12:59:38 -07:00
Pagan Gazzard
477184d72d Add handling for duplicate UUIDs and key exchanging for old user-api-keys
Change-Type: minor
2017-04-20 21:37:27 -07:00
Pagan Gazzard
03ec97ab8d Change to the new device registration method to exchange our provisioning key with a dedicated api key for the device.
Change-Type: minor
2017-04-20 21:37:27 -07:00
Pablo Carranza Velez
d2c5ca4fdb 4.1.2
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-04-10 14:23:56 -07:00
Pablo Carranza Velez
dbd4c62f29 4.1.1
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-03-30 14:14:32 -03:00
Pablo Carranza Velez
d9b421a574 4.1.0
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-03-29 12:43:53 -03:00
Andreas Fitzek
ff01d27b7a Authentication credentials for registry and delta server
Hand over authentication credentials to the docker engine
Fetch an access token from the API if possible and hand it over to the delta server

Change-Type: minor
Signed-off-by: Andreas Fitzek <andreas@resin.io>
2017-03-29 01:11:16 +02:00
Pablo Carranza Velez
4c2d2b8256 4.0.0
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-03-09 20:21:01 -03:00
Pablo Carranza Velez
3b5906a307 3.0.1 2017-02-15 17:52:15 -08:00
Pablo Carranza Velez
1e2d3d1af7 3.0.0
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-01-18 14:27:44 -03:00
Pablo Carranza Velez
6a94782a1d Update versionist to v2.8.0
Also remove versionist.conf.js as it's no longer necessary (versionist now
defaults to its internal versionist.conf).

Change-Type: patch
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-01-16 22:41:28 -03:00
Pablo Carranza Vélez
6ab2b45104 Merge pull request #370 from resin-io/359-kmod-only-in-resinos1
[Breaking] Do not bind mount kmod if the host is not Resin OS 1.X
2017-01-16 12:51:08 -03:00
Pablo Carranza Velez
c2544afe47 Update docker-progress to v2.3.3
Closes #374

Change-Type: patch
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-01-12 15:51:37 -03:00
Pablo Carranza Velez
458add1759 Do not bind mount kmod if the host is not Resin OS 1.X
Resin OS 2.X removes the use of compressed modules, which was the initial
motivation for us to bind mount kmod into user containers (as Debian distros
don't include support for compressed modules).

This is a breaking change, but we still keep bind mounting on devices that are
on 1.X to ensure we don't break apps currently relying on the feature.

Implementation note: some functions in device.coffee have been refactored to
extract (DRY) a memoization procedure for Promise-returning functions.
`device.getOSVersion()` now also memoizes its result.

Change-Type: major
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-01-04 18:48:45 -03:00
Pablo Carranza Velez
e419ea32d2 2.9.0
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2016-12-20 21:09:20 -03:00
Pablo Carranza Velez
dd708ac3f9 Bump docker-delta to v1.0.1 to fix deltas on aufs when there's many layers
Fixes #355
Change-Type: patch
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2016-12-20 17:48:38 -03:00
Pablo Carranza Velez
68e89fbded 2.8.5
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2016-12-20 15:10:19 -03:00
Pablo Carranza Velez
5ca6c30d4d 2.8.4
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2016-12-16 19:00:11 -03:00
Pablo Carranza Velez
50b865737b Start using versionist for versioning and changelog
We use the default versionist configuration.
Changelog has been edited to match the versionist format as much as possible.

Change-Type: patch
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2016-12-15 19:14:07 -03:00
Pablo Carranza Velez
40675b6f10 2.8.3 2016-12-01 11:20:13 -03:00
Pablo Carranza Velez
2b4c674a1a 2.8.2 2016-11-07 03:27:45 -03:00
Pablo Carranza Velez
58fb5c0a06 2.8.1 2016-10-31 03:50:09 +00:00
Pablo Carranza Velez
3a86d8ec48 2.8.0 2016-10-30 21:51:25 -03:00
Pablo Carranza Velez
6077f1add4 Update request-progress to v2.0.1 2016-10-25 16:29:53 -03:00
Pablo Carranza Velez
ad1a78cdf4 2.7.1 2016-10-24 16:27:31 -03:00
Pablo Carranza Velez
ec875004d6 Add some missing details to package.json 2016-10-23 21:04:40 -03:00
Pablo Carranza Velez
5f74ce6fec 2.7.0 2016-10-23 20:17:29 -03:00
Pablo Carranza Velez
22747fe9d9 Upgrade docker-progress to v2.3.1 2016-10-22 11:27:38 -03:00
Pablo Carranza Velez
d6aead1bad AUFS support and dependent app assets improvement:
* Use appId in dependent app assets tar path, and only create the tar if it doesn't exist
* Support AUFS by upgrading node-docker-delta to 1.0.0 and docker-toolbelt to 1.3.0
2016-10-21 16:37:57 -03:00
Pablo Carranza Velez
95d060757f 2.6.3 2016-10-13 18:08:59 -03:00
Pablo Carranza Velez
d011e545c5 2.6.2 2016-10-11 17:06:02 -03:00
Pagan Gazzard
158ce2810c Update knex to ~0.12.3 2016-10-11 12:04:28 -07:00
Pablo Carranza Velez
6349c692f0 2.6.1 2016-10-11 13:05:20 -03:00
Pablo Carranza Velez
c79aa28a82 2.6.0 2016-10-10 22:01:00 +00:00
Pagan Gazzard
969d714baf Update to bluebird 3 2016-10-10 12:49:54 -07:00
Petros Angelatos
1c1746fc9a 2.5.2
Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-10-07 16:52:12 -07:00
Pagan Gazzard
b2ec2d2a85 Update to pinejs-client 2 2016-10-06 15:03:15 -07:00
Pablo Carranza Velez
8f52a8c7c2 2.5.1 2016-10-06 11:57:06 +00:00
Pagan Gazzard
5c10644df7 Update to lodash 4 2016-10-05 23:03:12 +00:00
Pagan Gazzard
108ed9927d Update to coffeescript 1.11 2016-10-05 15:46:20 -07:00
Pablo Carranza Velez
ddaa9f12db Use getRegistryAndName from docker-toolbelt 1.2.0 2016-10-04 14:43:45 -03:00
Pablo Carranza Velez
8ff8d0a7c0 2.5.0 2016-10-01 00:29:57 -03:00
Pablo Carranza Velez
2968e84135 2.4.0 2016-09-30 19:23:55 -03:00
Pablo Carranza Velez
a97342bf9c 2.3.0 2016-09-26 20:32:57 +00:00
Kostas Lekkas
b5fc0df066 Bump node-docker-delta to 0.0.12 2016-09-26 12:00:08 -03:00
Pablo Carranza Velez
b368ccfd3a 2.2.1 2016-09-26 11:59:36 -03:00
Kostas Lekkas
c2f332fc62 2.2.0 2016-09-23 17:38:08 +03:00
Petros Angelatos
fd44a92782 don't install coffeescript in runtime image
Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-09-14 01:38:37 +00:00
Petros Angelatos
eee400f39f integrate with busybox init system
busybox's init uses /etc/inittab for configuration just like sysvinit,
however it doesn't use any runlevels.

the tty part of inittab is appended to "/dev/", and it becomes connected
to the stdout of the spawned process

Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-09-14 01:38:35 +00:00
Petros Angelatos
488ca41621 build: implement multi-Dockerfile build process
This build strategy lends itself to how Rockerfiles work. In the build
Dockerfile all the build utilities (e.g gcc, python) are installed and
run the build process to produce some build artifacts. There are two
build Dockerfiles, one for the nodejs part and one for the golang part.
The build artifacts of these are combined into the runtime Dockerfile.
For all this to work there is some minimal glue implemented in the
Makefile.

Part of this commit is a switch of the base image the runtime is based
on to the minimal OpenEmbedded one produced by #198

Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-09-14 01:38:35 +00:00
Pablo Carranza Velez
f20947c2d2 2.1.1 2016-09-09 09:24:04 -03:00
Pagan Gazzard
ebec23d0d8 Update to coffee-script ~1.10.0 2016-09-08 11:58:12 -07:00
Pablo Carranza Velez
99bd85e938 2.1.0 2016-09-05 17:59:44 +00:00
Pablo Carranza Velez
de1f6a8f67 2.0.0 2016-08-31 18:16:49 +00:00
Pablo Carranza Velez
6de51543a5 1.14.0 2016-08-16 21:02:30 +00:00
Pablo Carranza Velez
211560472a 1.13.2 2016-08-09 15:23:27 -03:00
Petros Angelatos
d6a7608374 1.13.1 2016-07-28 17:45:43 -07:00
Petros Angelatos
92d7ffbf04 1.13.0 2016-07-27 02:55:18 -07:00
Petros Angelatos
f39ab4b0c8 add missing rimraf package
Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-07-26 21:27:36 -07:00
Pablo Carranza Velez
54288f036a Improve the docker compose API
- Validate the options in the YAML file
- Define bind mounts for each service as in Resin apps
- Keep the modified compose file inside the supervisor's /data folder
- Fix error reporting in the first stage of "up"
2016-07-22 23:17:25 -03:00
Pablo Carranza Velez
102eb460db Use log-timestamp to add timestamps to logs 2016-07-18 14:01:16 +00:00
Pablo Carranza Velez
427a19f2ca 1.12.2 2016-07-15 23:56:09 +00:00
Pablo Carranza Velez
5f926faa70 Bind mount kmod if the container is debian or raspbian
Use docker-toolbelt module.
The bind mount is read-only.
2016-07-15 20:46:09 +00:00
Pablo Carranza Velez
819428850f 1.12.1 2016-07-08 14:02:06 -03:00
Pablo Carranza Velez
9d97aaf30c 1.12.0 2016-06-28 17:50:12 +00:00
Pablo Carranza Velez
4278b6baf1 Add endpoints for docker-compose up and down 2016-06-24 21:08:46 +00:00
Pagan Gazzard
548c9ff12b 1.11.6 2016-06-23 16:16:45 -07:00
Petros Angelatos
f745d2cdb4 update docker-delta to fix deltas on old docker daemons
Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-06-23 16:09:48 -07:00
Pagan Gazzard
9c64a6e917 1.11.5 2016-06-23 13:21:06 -07:00
Pablo Carranza Velez
ac9e027b22 1.11.4 2016-06-17 18:24:21 +00:00
Kostas Lekkas
c53f96edcc Merge pull request #171 from resin-io/170-linting
Linting
2016-06-17 17:56:19 +03:00
Kostas Lekkas
a456a7b1ff Add resin-lint and "lint" npm script 2016-06-16 18:10:20 +03:00
Petros Angelatos
ff97ecb756 bump node-docker-delta version to 0.0.10
this version fixes the issue where failed attempts to apply the delta
result in a lot of docker images on the disk, which could also
potentially lead to out of space issues

Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-06-16 08:42:36 +00:00
Pablo Carranza Velez
d88e7d7d36 1.11.3 2016-06-11 12:22:51 -03:00
Pablo Carranza Velez
a8677a4401 Add listener for container events and reattach on restart 2016-06-11 11:55:22 -03:00
Pablo Carranza Velez
f69e635196 1.11.2 2016-06-10 16:45:13 -03:00
Petros Angelatos
573cf31514 fix delta error handling by listening for the 'error' event
Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-06-10 19:19:23 +00:00
Pablo Carranza Velez
1b7c91a791 1.11.1 2016-06-09 11:17:07 -03:00
Pablo Carranza Vélez
d069ce35e6 Merge pull request #161 from resin-io/fix-alpine-postinstall-sh
Use sh for postinstall as alpine has no bash
2016-06-09 11:11:32 -03:00
Petros Angelatos
d906786d58 update docker-delta to latest version
Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-06-09 06:58:40 +00:00
Pablo Carranza Velez
1a1e1b5e8b Use sh for postinstall as alpine has no bash
Remove pipefail from postinstall.sh and use POSIX comparison
2016-06-07 15:44:28 -03:00
Pablo Carranza Velez
30457c0e0f 1.11.0 2016-06-07 13:01:38 -03:00
Pablo Carranza Velez
a6466b93aa 1.10.1 2016-06-07 11:30:44 -03:00
Petros Angelatos
20419bee3b Switch to docker-delta library to use deltas v2
This npm library implements the new delta format and also works with
docker 1.10.

Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-06-04 01:04:34 +00:00
Alexios Theodoros Brezas
932af53913 1.10.0 2016-05-26 17:49:40 +03:00
Alexios Theodoros Brezas
cba5f1c651 update docker progress to fix progress bars in docker v1.10 2016-05-26 17:46:37 +03:00
Pablo Carranza Velez
fa33cd72e1 1.9.0 2016-05-24 00:06:36 -03:00
Pablo Carranza Velez
ed7b936fee Use buffer-equal-constant-time to evaluate apikey 2016-05-23 23:59:45 -03:00
Trong Nghia Nguyen
7ff638585c Add alpine supervisor build info 2016-05-17 11:59:39 +07:00
Kostas Lekkas
efa7d7b93c 1.8.0 2016-04-25 16:39:42 +03:00
Pagan Gazzard
135365cf37 Remove the old terminal code, since it has been replaced by v2 which does not require supervisor support. 2016-04-15 23:36:28 +01:00
Alexios Theodoros Brezas
1b76b8ae45 1.7.0 2016-03-28 10:30:30 +01:00
Pablo Carranza Velez
eb301cc4c7 1.6.1 2016-03-08 15:31:48 +00:00
Pablo Carranza Velez
1f89f01a23 1.6.0 2016-02-22 14:38:15 -03:00
Pablo Carranza Velez
9965bfeca1 1.5.0 2016-02-09 10:28:11 -03:00
Pablo Carranza Velez
27e8e3c027 Update docker-progress and drop default port from repo tag 2016-01-28 11:08:42 -03:00
Pablo Carranza Velez
78f0df281b Replace dockersync.sh with node and dockerode stuff. Don't install docker. Add Dockerfile changes for armel. 2016-01-28 11:08:42 -03:00
Petros Angelatos
cbde944565 Implement rsync diff fetching method 2016-01-28 11:08:42 -03:00
Pablo Carranza Velez
0472ba1401 1.4.0 2016-01-28 11:04:36 -03:00
Pagan Gazzard
2bbea08938 Update pinejs-client 2016-01-14 16:30:02 +00:00
Pablo Carranza Velez
50b28b1102 1.3.2 2015-12-17 11:44:11 -08:00
Pablo Carranza Velez
3c8dce9bf4 1.3.1 2015-12-07 10:13:58 -08:00
Pablo Carranza Velez
b54087aec2 1.3.0 2015-12-01 10:10:40 -08:00
Pagan Gazzard
16a9cfa365 Switch to docker-progress for pull progress. 2015-11-10 17:29:22 +00:00
Pablo Carranza Vélez
2827719d9a 1.2.1 2015-11-04 13:28:06 -03:00
Pablo Carranza Vélez
605d72cbdc 1.2.0 2015-10-16 15:37:49 +00:00
Lorenzo Stoakes
91b6c1b808 1.1.1 2015-10-15 19:40:55 +01:00
Pablo Carranza Vélez
c1703ce97a 1.1.0 2015-10-13 13:45:08 -03:00
Pablo Carranza Vélez
98c9ee2c21 1.0.2 2015-10-13 13:45:07 -03:00
Pablo Carranza Vélez
3d82ea8249 1.0.1 2015-10-13 13:45:07 -03:00
Pablo Carranza Vélez
858d1097fe 1.0.0 2015-10-13 13:45:07 -03:00
Pablo Carranza Vélez
933af97faf 0.0.18 2015-10-13 13:45:07 -03:00
Pablo Carranza Vélez
6062658933 0.0.17 2015-10-13 13:45:06 -03:00
Pablo Carranza Vélez
8de173f6c3 Use crypto.randomBytes for API secret 2015-10-13 13:45:05 -03:00