Pablo Carranza Velez
503e043c4c
In cleanup, normalize all image tags for comparison
2016-10-04 17:48:11 -03:00
Pablo Carranza Velez
ddaa9f12db
Use getRegistryAndName from docker-toolbelt 1.2.0
2016-10-04 14:43:45 -03:00
Pagan Gazzard
19db0e78e0
Switch to v2 api to be able to set is_online
2016-09-30 23:40:03 -03:00
Pablo Carranza Velez
a6f2ff074c
Dependent devices, state endpoint, extra env vars and deviceConfig:
...
* Implement proxyvisor API with dependent device handling
* Use the state endpoint from the API to get the full device state
* Add a deviceConfig db table to store host config separately, and allow deleting config.txt entries
* Expose RESIN_APP_NAME, RESIN_APP_RELEASE, RESIN_DEVICE_NAME_AT_INIT, RESIN_DEVICE_TYPE and RESIN_HOST_OS_VERSION env vars
* Add missing error handler on a stream in docker-utils
2016-09-30 23:40:03 -03:00
Pablo Carranza Velez
e7acff0bcf
On cleanup, force removal for images and containers, and remove container volumes
2016-09-29 19:34:19 -03:00
Pablo Carranza Velez
f385fe6bcc
Add system logs for Shutdown, Reboot and Purge
2016-09-28 03:32:38 +00:00
Pablo Carranza Velez
4a99fd8803
Implement delete-then-download update strategy
2016-09-26 18:16:01 +00:00
Kostas Lekkas
05690a81dc
typo: fix startAppError message
2016-09-20 11:35:28 +03:00
Pablo Carranza Velez
16e2ec286e
DRY up calls to gosuper API, and use empty Host header
2016-09-13 16:52:25 -03:00
Praneeth Bodduluri
2cc4b0fb46
Add iptables rules to allow resin-vpn named interface to be used by VPN
2016-09-09 17:41:35 +05:30
Alexios Theodoros Brezas
12a4560518
Catch exec format error and provide friendlier message
2016-09-05 18:22:20 +00:00
Theodor Gherzan
32bf433af1
device.coffee: Remove hardcode of resin-boot partitions's mount point
...
Signed-off-by: Theodor Gherzan <theodor@gherzan.ro>
2016-09-02 19:55:01 +00:00
Pablo Carranza Velez
ec178f7a7f
Use a more conservative message size, and properly account for URI encoding
2016-08-31 16:28:42 +00:00
Pablo Carranza Velez
78b4570b93
Allow storing several messages, will allow us to withstand log bursts better
...
Also, send a warning message when we start dropping logs.
2016-08-29 19:03:06 -03:00
Pablo Carranza Velez
a8dd29cd82
Change the logger to send at a specific interval and with a different message format
...
Log messages to PubNub are now an array instead of an object.
Each element of the array is an object with m (message), t (timestamp) and s (isSystem, optional) attributes.
Logs are sent at a specific interval (110ms, fit with some margin to PubNub's approximated 10 messages/s limit), and truncated to PubNub's 32KB limit.
2016-08-29 19:03:06 -03:00
Pablo Carranza Velez
1eb63366ee
Allow using an HTTP header for auth
2016-08-16 20:39:55 +00:00
Pablo Carranza Velez
145d124410
Check if rules exist before adding them
2016-08-16 09:30:38 -03:00
Pablo Carranza Velez
c4ea2c77a0
Add iptables rules to block requests to the supervisor API from all interfaces except vpn, docker and local
2016-08-15 18:02:36 -03:00
Petros Angelatos
dd06f993ce
bootstrap: if offlineMode is enabled, persist only the uuid
...
If we don't persist the uuid then every time the supervisor starts it
will think it's a new device. This triggers a wipe of the local state
and also a re-load of the preloaded apps. This in turn causes multiple
instances of the preloaded apps to be left running.
Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-08-02 23:48:13 -07:00
Petros Angelatos
5ee15e664e
utils: allow specifying links in compose files
...
Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-07-28 17:45:16 -07:00
Petros Angelatos
b708f05476
utils: sort compose options
...
Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-07-28 17:43:26 -07:00
Petros Angelatos
eb09713391
Merge pull request #216 from resin-io/215-improve-containers-api
...
Improve containers API
2016-07-26 20:52:56 -07:00
Petros Angelatos
66fe7fc30c
logger: empty the publish queue if in offline mode
...
Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-07-26 14:04:51 -07:00
Pablo Carranza Velez
98d9aca92d
Allow the supervisor to work in offline mode
...
A supervisorOfflineMode true-ish attribute in config.json will cause that:
* If unprovisioned, the supervisor won't try to provision on Resin
* The update cycle will not start as the device won't consider itself provisioned
* Logs will not be sent to pubnub
* Mixpanel events won't be tracked
* The device state won't be updated to the Resin API
This change will also make the Supervisor API work with an unprovisioned device.
2016-07-23 14:04:24 +00:00
Pablo Carranza Velez
02e111ff62
Allow only the options that we know can be supported
2016-07-22 23:28:28 -03:00
Pablo Carranza Velez
4db78b9743
Allow purging and deleting a container from the DB with a purge option
2016-07-22 23:17:25 -03:00
Pablo Carranza Velez
0b4f50d207
Avoid creating duplicate entries in the image table
2016-07-22 23:17:25 -03:00
Pablo Carranza Velez
1d16941a2d
Fix cleanup of official images, and allow passing Name in container options
2016-07-22 23:17:25 -03:00
Pablo Carranza Velez
e41ebbb52b
Add validation for options when creating and starting containers
2016-07-22 23:17:25 -03: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
b97fe634d5
Add default binds to containers created with API, add /v1/containers/update endpoint, and add a /data bind with an internal id
2016-07-22 23:17:25 -03:00
Kostas Lekkas
761a0cbd82
Fix double-printed logs after container restart
2016-07-21 22:39:19 +03:00
Pagan Gazzard
8715534d84
Run the linting automatically as part of the jenkins build.
2016-07-19 14:37:46 -07:00
Pablo Carranza Velez
0609619863
Do not bind mount /run/dbus to /run/dbus
2016-07-19 02:13:34 +00:00
Pablo Carranza Velez
f5b0a4e7e7
Default to not bind mounting kmod if container distro can't be found
2016-07-18 16:49:45 +00:00
Pablo Carranza Velez
102eb460db
Use log-timestamp to add timestamps to logs
2016-07-18 14:01:16 +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 Vélez
08d74b578b
Fix preloaded apps by passing appId to extendEnvVars
2016-07-06 17:56:51 -03:00
Pagan Gazzard
6cb4b090c5
Rename pullImage to pullAndProtectImage to make it a bit clearer that it isn't a simple pull
2016-06-24 21:08:47 +00:00
Pagan Gazzard
707ed7e1f6
Deduplicate compose command running logic.
2016-06-24 21:08:47 +00:00
Pagan Gazzard
a371e35d5c
Deduplicate knex app fetching logic.
2016-06-24 21:08:47 +00:00
Pablo Carranza Velez
4278b6baf1
Add endpoints for docker-compose up and down
2016-06-24 21:08:46 +00:00
Kostas Lekkas
d64d413838
Remove unused vars and fix linting issues
2016-06-16 18:47:12 +03:00
Pablo Carranza Velez
164d565283
Make the data path configurable
2016-06-14 13:50:50 -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
6e39128f3a
fix deltas by not using the supervisor as source
2016-06-10 17:22:52 -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
Alexios Theodoros Brezas
e3f480c217
Container restart policy specificiation.
...
Allow users to set container restart policy using environment variables.
RESIN_APP_RESTART_POLICY sets the name of the policy, and
if policy is "on-failure", optionally, RESIN_APP_RESTART_RETRIES
sets the maximum number of retries.
More information on docker docs:
https://docs.docker.com/engine/reference/run/#restart-policies-restart
One major change we introduce here is that the default policy is set
to always while we used to have the default "no".
We validate the arguments and pass retries parameter only for the case
of "on-failure" as specified in Docker API as of v1.19.
We could let docker handle the arguments directly, gaining
forwards-compatibility with any new features, but I opted
for an implementation that is as well-defined as possible.
2016-06-07 12:49:30 -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
Pablo Carranza Velez
7104806ad1
Correctly compare container image name on cleanup
...
Docker 1.10 sends containerInfo.Image without the ":latest", so
the image name doesn't match the app's imageId.
This fix first splits the image name into repo and tag and then rebuilds
it to include ":latest" when appropriate. Should avoid removing containers
when using resin-sync.
2016-06-02 14:55:12 -03:00
Kostas Lekkas
383be0946e
bugfix: do not mutate original env vars object
2016-06-01 00:02:53 +03:00
Kostas Lekkas
6193ebe1df
Log useful supervisor info to stdout/stderr
2016-05-30 16:51:27 +03:00
Pablo Carranza Velez
ed7b936fee
Use buffer-equal-constant-time to evaluate apikey
2016-05-23 23:59:45 -03:00
Pablo Carranza Velez
25be1176d2
Add changelog for alpine super and fix version reporting
2016-05-19 16:25:49 +00:00
Pablo Carranza Velez
d58517f32d
Use rwlock to block when images are being pulled
2016-05-19 13:24:23 +00:00
Pablo Carranza Velez
95f4fdb97f
Add /v1/images/load endpoint
2016-05-18 13:47:54 -03:00
Pablo Carranza Velez
951bd2888f
Fix routing for deleting images with a slash in the name
2016-05-17 19:18:39 +00:00
Pablo Carranza Velez
7b9eaeea3a
Add some protections to avoid deleting supervisor or app containers
2016-05-17 00:03:23 +00:00
Pablo Carranza Velez
3a77c2ec4b
Allow passing tag when using fromImage in /v1/images/create
2016-05-13 10:35:03 -03:00
Pablo Carranza Velez
dcc3717949
Use Routers to separate endpoints with bodyParser
2016-05-13 10:35:03 -03:00
Pablo Carranza Velez
5d822b8dab
Allow pulling images too
2016-05-13 10:35:03 -03:00
Pablo Carranza Velez
3d2f3ad94b
Implement container management endpoints
2016-05-11 15:43:21 +00:00
Pablo Carranza Velez
8101d08433
Add endpoints to create, delete and list images, and also list containers
2016-05-11 14:44:05 +00:00
Pablo Carranza Velez
67a7271995
Add RESIN_APP_ID variable
2016-05-09 19:35:35 -03:00
Pablo Carranza Velez
7039b23ad9
Increase delta request timeout to 15 minutes
2016-05-02 17:33:21 -03:00
Kostas Lekkas
8577280dc5
Merge pull request #126 from resin-io/add-stop-start-endpoints
...
WIP: Add stop, start and get app endpoints
2016-04-25 13:27:08 +03:00
Kostas Lekkas
01e39825b4
Style fixes, select() app columns to return in /v1/apps
2016-04-21 09:58:36 +03:00
Kostas Lekkas
f76b38eb49
Use exclusion lists for keys/columns to be omited from the /v1/apps endpoint
2016-04-20 19:43:16 +03:00
Kostas Lekkas
e03e5ed0ae
Address review comments
2016-04-20 19:08:35 +03:00
Kostas Lekkas
757e5b3244
Return container Id from the /v1/start and /v1/stop endpoints
2016-04-20 15:49:22 +03:00
Kostas Lekkas
809609dd76
Set containerId to null if container gets removed after a failed start attempt
2016-04-20 14:53:56 +03:00
Pagan Gazzard
f910ec11a8
Remove even more old terminal related stuff.
2016-04-18 18:13:23 +01:00
Kostas Lekkas
4e3106154d
Require lodash
2016-04-18 19:04:06 +03:00
Pablo Carranza Velez
1c69f14e82
Refactor into /apps/:appId endpoint namespace, and add endpoint to GET the app
2016-04-16 13:52:38 -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
Pablo Carranza Velez
7161564123
Add /v1/stop and /v1/start endpoints
2016-04-08 16:51:39 -03:00
Pablo Carranza Velez
d0f748379e
Fix log message for setLogToDisplay
2016-03-23 17:59:44 -03:00
Pablo Carranza Velez
adb7ef1140
Omit host config also when formatting local apps
2016-03-23 17:36:04 -03:00
Pablo Carranza Velez
9fea0a729b
Use json to print boot config
2016-03-23 17:24:03 -03:00
Pablo Carranza Velez
8771307c39
Lodash 3 has no omitBy
2016-03-23 16:48:23 -03:00
Pablo Carranza Velez
c9968f7bbc
Improve logging, plus some style fixes
2016-03-23 12:21:15 -03:00
Pablo Carranza Velez
eddc58ee86
Finish log to display setting. Add logging to host config. Save host config before rebooting. Allow applying boot config to RPi3.
2016-03-23 12:21:15 -03:00
Pablo Carranza Velez
2c5bc8b90a
Add nodejs side of enabling/disabling log to display
2016-03-23 12:21:14 -03:00
Alexios Theodoros Brezas
3d082aaaa8
mount to /host dir
2016-03-23 04:15:02 +00:00
Alexios Theodoros Brezas
84d42ca6de
Bind mount /var/lib/connman to application containers.
...
This allows application containers to interface with host connman.
Host /var/lib/connman is bind mounted to /host_var/lib/connman to avoid
collisions with connman installations inside the container.
2016-03-23 04:15:01 +00:00
Pablo Carranza Velez
f29bab0b9d
Add RESIN_SUPERVISOR_DELTA to special list so that app is not restarted when it changes
2016-03-09 10:53:48 -03:00
Kostas Lekkas
fcaafd9033
Reduce noise in logs
2016-03-07 13:16:38 +02:00
Pablo Carranza Velez
a4b08e389e
Add more update-related fields to the GET /v1/device endpoint
2016-02-18 16:53:15 +00:00
Pablo Carranza Velez
d0c76aec0f
Use a closure for device state and also report in GET /v1/device whether there's a pending update
2016-02-18 16:53:15 +00:00
Pablo Carranza Velez
670f318c39
Add endpoint to get device state
2016-02-18 16:53:15 +00:00
Pablo Carranza Velez
b088612ddd
Check for valid strings or ints in all config values
2016-02-18 12:52:00 -03:00
Pablo Carranza Velez
71bd742dfe
Remove quotes in OS version
2016-02-15 19:03:06 +00: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
Pablo Carranza Velez
676f6699fe
Nicer use of spawn
2016-01-28 11:08:42 -03:00
Pablo Carranza Velez
9dd1fa2408
Catch out of sync errors falling back to scratch. Make update retries more dependent on number of failures
2016-01-28 11:08:42 -03:00
Pablo Carranza Velez
d3fea26c11
Send both source tag and Id to delta server
2016-01-28 11:08:42 -03:00
Pablo Carranza Velez
b9eb6836be
Better check for source image.
...
Don't use config.supervisorImage, and use image Id's instead of tags.
Also, change the RESIN_DELTA var into the RESIN_SUPERVISOR_ namespace.
2016-01-28 11:08:42 -03:00
Pablo Carranza Vélez
5b48856c9a
Bring back request - and show an error when talking to delta server fails
2016-01-28 11:08:42 -03:00
Pablo Carranza Vélez
1a5a9b0e23
findSimilarImage should always return an array, and test the repoTag[0]
2016-01-28 11:08:42 -03:00
Pablo Carranza Vélez
8e4e844cfa
JSON.parse env before checking for delta, and use progress.percentage
2016-01-28 11:08:42 -03:00
Petros Angelatos
1bc149866d
deltas: sync() after running rsync on the new subvolume
2016-01-28 11:08:42 -03:00
Petros Angelatos
f7a2668c4f
config: change default delta endpoint to https and production
...
Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-01-28 11:08:42 -03:00
Petros Angelatos
f6f88941eb
delta: only use deltas when RESIN_DELTA is set
...
Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2016-01-28 11:08:42 -03:00
Petros Angelatos
582e3322ec
Set a 5 min timeout to delta requests
2016-01-28 11:08:42 -03:00
Petros Angelatos
88f0e4e229
Fix typo
2016-01-28 11:08:42 -03:00
Petros Angelatos
a12ebf884b
Increase rsync timeout to 5 mins
2016-01-28 11:08:42 -03:00
Petros Angelatos
83931a0915
Add timeout to prevent rsync from hanging
2016-01-28 11:08:42 -03:00
Petros Angelatos
071ee3dcf4
Ignore output from dockersync.sh
2016-01-28 11:08:42 -03:00
Petros Angelatos
79d638f4f5
Pass the --delete parameter to rsync
2016-01-28 11:08:42 -03:00
Petros Angelatos
f6eafb7b96
Always send the final progress event
2016-01-28 11:08:42 -03:00
Petros Angelatos
004286a07e
Tag the target image at the last step
2016-01-28 11:08:42 -03:00
Petros Angelatos
595f80e031
Fix rsync stream resumption
2016-01-28 11:08:42 -03:00
Petros Angelatos
7eefee77d0
Fix config var typo
2016-01-28 11:08:42 -03:00
Petros Angelatos
8c7964684a
Return the supervisor tag containing the git commit
2016-01-28 11:08:42 -03:00
Petros Angelatos
d0b6ba1721
Switch to http default transport
2016-01-28 11:08:42 -03:00
Petros Angelatos
bd2f31624b
Delete unused functions
2016-01-28 11:08:42 -03:00
Petros Angelatos
10e166020e
Speed up rsync diff application
2016-01-28 11:08:42 -03:00
Petros Angelatos
c13e16c96a
Remove fallback to docker pull
2016-01-28 11:08:42 -03:00
Petros Angelatos
9adbd81bc0
Avoid shadowing the config variable
2016-01-28 11:08:42 -03:00
Petros Angelatos
11dfbd1687
Don't timeout while waiting for delta
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
3e3e2a8d99
Quickfix again: Cast buffer to string when getting OS version. (Sorry)
2016-01-27 17:17:53 +00:00
Pablo Carranza Vélez
94e34ee990
Quickfix: use String .split instead of _.split
...
lodash 3 doesn't have the _.split function :S
2016-01-26 20:56:19 -03:00
Pablo Carranza Velez
8a4514ac00
Report Host OS version to the API
2016-01-26 10:20:04 -03:00
Pablo Carranza Velez
0f20251a8b
Use _.defaults instead of _.extend to ensure internal env vars are not overwritten
2016-01-22 12:40:41 -03:00
Pablo Carranza Velez
11b5e0abc9
Expose resin API key to apps
2016-01-21 17:50:47 -03:00
Pablo Carranza Velez
5961be6ffb
Set status to Idle when download is over
2016-01-21 10:52:36 -03:00
Pablo Carranza Velez
7d31ae9b24
Set download_progress to 0 when beginning download
2016-01-15 16:59:55 +00:00
Praneeth Bodduluri
fb47f73907
Add missing container filtering + Address PR Comments by removing regexp and making more idiomatic choices
2016-01-12 17:58:07 +05:30
Praneeth Bodduluri
396fe7d619
Initialize DOCKER_SOCKET in entry.sh
2016-01-08 18:30:14 +05:30
Pablo Carranza Vélez
17deb53c7c
Revert "Make config.json writes atomic"
2016-01-07 21:01:12 -03:00
Pablo Carranza Velez
c29f54b08c
Make config.json writes atomic
2015-12-19 02:14:07 +00:00
Praneeth Bodduluri
89abff57f6
Fix: Duplicated exports.connectivityCheck in utils.coffee
2015-12-10 20:30:04 +05:30
Pablo Carranza Velez
50137c163d
Bugfix: assign app.containerId before attaching logger
2015-12-04 23:27:45 +00:00
Pablo Carranza Velez
f0afdb9b2a
Only save the app if starting the container was successful
2015-12-02 11:37:47 -08:00
Pablo Carranza Velez
ac0917b114
Quick-fix: knex.select doesn't have .get()
2015-12-01 09:51:06 -08:00
Pablo Carranza Velez
10350c3d4a
Remove volumes when removing a container
2015-11-25 15:00:45 -08:00
Pablo Carranza Vélez
cbb3e2f461
Improve the update strategies:
...
* On handover, fetch old app from DB before starting the new app (and overwriting the DB record)
* Tidy up the logging
* Fix waitToKill so that it actually works
* Several other fixups
2015-11-23 10:02:19 -08:00
Pablo Carranza Vélez
1d6811a423
Implement waitToKill, keep RESIN_OVERRIDE_LOCK, and changelog for update strategies
2015-11-16 19:03:37 +00:00
Pablo Carranza Vélez
13dce75a21
Implement several update strategies
...
* Break up the update function into manageable parts
* Refactor the special variables into the RESIN_SUPERVISOR_ namespace
* Use three update strategies: normal, kill before download, hand over
TO-DO: implement waitToKill in the hand over case.
2015-11-16 19:03:36 +00:00
Praneeth Bodduluri
51ee79b7a2
Fix the error that comes up when no ip addresses are returned by gosuper
2015-11-12 20:33:18 +05:30
Pagan Gazzard
16a9cfa365
Switch to docker-progress for pull progress.
2015-11-10 17:29:22 +00:00
Praneeth Bodduluri
6bc92b4276
Fix semvar versioning in tcp-ping endpoint
2015-11-09 19:50:49 +05:30
Pablo Carranza Vélez
0605a9f4ee
Use generic config.forceSecret[name] and allow forcing logsChannel
2015-11-03 13:49:24 -03:00
Pablo Carranza Vélez
b08a028d69
Use random secret for logs channel
2015-10-28 20:02:00 -03:00
Pablo Carranza Vélez
811e929955
Don't bind mount docker.sock. It doesn't exist on devices that use rce
2015-10-16 13:56:06 +00:00
Pablo Carranza Vélez
ee273f1ec7
Expose a RESIN_SUPERVISOR_VERSION env var to app
2015-10-15 23:08:21 +00:00
Pablo Carranza Vélez
4bcba5adf6
Refactor to use a different name for the env vars (otherwise resin-vars overrides it with a null value)
2015-10-14 18:50:26 -03:00
Pablo Carranza Vélez
33d402c3c0
Default PubNub and Mixpanel keys are now passed at build time
2015-10-14 16:53:33 -03:00
Pablo Carranza Vélez
7eb17bd79b
Don't let the bootstrap delete apiSecret from DB
2015-10-13 13:45:08 -03:00
Pablo Carranza Vélez
b57dd10e81
Add API endpoint to expire and create new API key
2015-10-13 13:45:08 -03:00
Praneeth Bodduluri
4130df7771
Add Changelog and switch to using RESIN variables
2015-10-13 13:45:08 -03:00
Praneeth Bodduluri
96d4aebb76
Refactor api.go to use abstracted sendResponse and sendError - Also fix most go doc complaints
2015-10-13 13:45:08 -03:00
Praneeth Bodduluri
4413397103
Abstract update polling function and fix wrong comment for disabling logging
2015-10-13 13:45:08 -03:00
Praneeth Bodduluri
8fe516253a
Modify the earlier logic of Interval instead of a timeout
2015-10-13 13:45:08 -03:00
Praneeth Bodduluri
50a804683d
Use Promises for requests+ Add better console logs
2015-10-13 13:45:08 -03:00
Praneeth Bodduluri
9efcc59252
Reorganize callbacks to utils and check for status accepted from go supervisor
2015-10-13 13:45:08 -03:00
Praneeth Bodduluri
e43e11b3c1
Enable control of API poll interval through Device Variables
2015-10-13 13:45:08 -03:00
Praneeth Bodduluri
b91cb78eea
Allow control of VPN + TCP check + Pub nub logs with Device Environment variables
2015-10-13 13:45:07 -03:00
Pablo Carranza Vélez
3d7f5f3ced
Fix getting API key from DB by returning its .value
2015-10-13 13:45:07 -03:00
Pablo Carranza Vélez
e975f0f69f
Do auth for localhost too
2015-10-13 13:45:07 -03:00
Pablo Carranza Vélez
ec6fd6eb03
Pass api key to app, and keep it saved in the DB (do not regenerate on startup)
2015-10-13 13:45:07 -03:00
Pablo Carranza Vélez
6ed2fddd37
Wrap all update errors as Errors
2015-10-13 13:45:07 -03:00
Petros Angelatos
2d891262a7
wait 5s after sending SIGTERM and before sending SIGKILL
...
Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
2015-10-13 13:45:07 -03:00
Pablo Carranza Vélez
0fd03054e8
Expose supervisor API to app by allowing all requests from 127.0.0.1 and passing address and port as env vars
2015-10-13 13:45:07 -03:00
Pablo Carranza Vélez
7f7a550363
Only apply boot config or special actions when env vars have changed and within lock, and persist the new env to the DB
2015-10-13 13:45:07 -03:00
Pablo Carranza Vélez
8da8092104
Use a function in utils to extend env vars
2015-10-13 13:45:06 -03:00
Pablo Carranza Vélez
65df89aab6
Give extra environment variables to preloaded apps. Ensures the app is not unnecessarily restarted as soon as we gain connectivity.
2015-10-13 13:45:06 -03:00
Pablo Carranza Vélez
d25447d539
Promisify executeSpecialActionsAndBootConfig and remount /boot rw
2015-10-13 13:45:06 -03:00
Pablo Carranza Vélez
c136793cdd
Blacklist certain config.txt entries, Update node to 0.10.40 everywhere
...
Use board-specific images until we have new arch based ones
2015-10-13 13:45:06 -03:00
Pablo Carranza Vélez
39a07b8cd4
Remove the RPi /boot bind mount
2015-10-13 13:45:06 -03:00
Pablo Carranza Vélez
0e283e8e72
Actually apply config.txt changes and reboot
...
Keep the original statements where possible. (to ensure same config keys under different filters are not overwritten with always the same value)
2015-10-13 13:45:06 -03:00
Pablo Carranza Vélez
8b4d1e9f75
Ensure special env vars are persistent and add placeholder for device.setBootConfig
2015-10-13 13:45:06 -03:00
Praneeth Bodduluri
38df4651cb
Change to using _.has
2015-10-13 13:45:06 -03:00
Praneeth Bodduluri
173d5ee651
Execute the callback function associated with the specialActionVars only once and remove unused parts
2015-10-13 13:45:06 -03:00
Pablo Carranza Vélez
941d3b15af
Allow special env vars with a callback which don't cause an app restart
2015-10-13 13:45:06 -03:00
Praneeth Bodduluri
66a4bf4ab3
Remove unused config.supervisorContainer in config.coffee
2015-10-13 13:45:06 -03:00
Pablo Carranza Vélez
bd889e06a1
Bind mount /boot in RPi
2015-10-13 13:45:06 -03:00
Praneeth Bodduluri
391a141843
Change ipAddress to IPAddresses and add error message on unknown ip addr type
2015-10-13 13:45:05 -03:00
Praneeth Bodduluri
ea0b058721
Change APIResponse to a struct with a Data Interface
2015-10-13 13:45:05 -03:00
Praneeth Bodduluri
e1957def25
Address style fixes in app.coffee
2015-10-13 13:45:05 -03:00
Praneeth Bodduluri
f86f5881d9
Implement and use golang endpoint for getting ipaddress' of the device
2015-10-13 13:45:05 -03:00
Pablo Carranza Vélez
8eb1c3ea7b
Ensure we have the deviceId by GETting it from the Resin API
2015-10-13 13:45:05 -03:00
Pablo Carranza Vélez
8de173f6c3
Use crypto.randomBytes for API secret
2015-10-13 13:45:05 -03:00
Pablo Carranza Vélez
0373607c56
Refactor bootstrapper. Run preloaded supervisor dind. Change dind configs to be ignored and document how to populate them.
2015-10-13 13:45:05 -03:00
Pablo Carranza Vélez
909e193cea
Update resin-register-device to 2.0.0
2015-10-13 13:45:05 -03:00
Pablo Carranza Vélez
9d2c142c36
Put preloaded apps in DB, and use promise for when boostrap is done
2015-10-13 13:45:05 -03:00
Pablo Carranza Vélez
0bfd329ebc
change the bootstrap process
2015-10-13 13:45:05 -03:00
Pablo Carranza Vélez
6f42fc2036
Try to do systemd calls in gosuper
2015-10-13 13:45:04 -03:00
Pablo Carranza Vélez
3da4dae190
Add systemd interface and reboot/shutdown endpoints
2015-10-13 13:45:04 -03:00
Pablo Carranza Vélez
53ed41a4e2
Allow lockfile force to be specified in the request body
2015-10-13 13:45:04 -03:00
Pablo Carranza Vélez
d5ddad914e
Add /v1/restart API endpoint
2015-10-13 13:45:04 -03:00
Praneeth Bodduluri
a15c9e636e
Add additional mount for the host's docker.sock
2015-10-13 13:45:04 -03:00
Praneeth Bodduluri
efc272533c
Also mount the host dbus on host_run/dbus
2015-10-13 13:45:04 -03:00
Pablo Carranza Vélez
6e62366541
Always unlock the lockfile when killing the app.
...
Otherwise, we have a deadlock whenever the lock is forced: the app
will be restarted, and will find the lockfile is already there so it won't be
able to lock/unlock it. The supervisor will have the same problem.
So the solution is that, whenever we kill the app, that is the lock owner, we also unlock the file.
2015-10-13 13:45:04 -03:00
Pablo Carranza Vélez
233004d130
Download/update/remove/install all apps in a map
2015-10-13 13:45:03 -03:00
Pablo Carranza Vélez
4aea117330
Purge handles strings and numbers, and is tested with a table
2015-10-13 13:45:03 -03:00
Pablo Carranza Vélez
3da961d4fd
Use env var for force, and don't touch lockfile on force
...
Also:
* Force lock when purging
* Use updateStatus object to keep update state
2015-10-13 13:45:03 -03:00
Pablo Carranza Vélez
c7c4aed746
Use rwlock together with lockfile
...
Select app to kill from DB within lock (otherwise, if some other part kills and restarts the app, the
containerId will have changed and the real container will not be removed).
2015-10-13 13:45:03 -03:00