Pagan Gazzard
fafef6cc6f
Post the supervisor api port to the resin api.
2015-10-13 13:36:12 -03:00
Pagan Gazzard
c8023e0780
Add a config var to determine what port for the api to listen on.
2015-10-13 13:36:12 -03:00
Pagan Gazzard
644ad14295
Use the api to do the filtering, avoiding fetching unnecessary data.
2015-10-13 13:36:12 -03:00
Eugene Mirotin
3c9be7e2ed
update Open terminal button styles
2015-10-13 13:36:12 -03:00
Aleksis Brezas
7161c04123
update config.json on device registration
2015-10-13 13:36:12 -03:00
Pagan Gazzard
3f94b353f5
Remove VPN from the supervisor
2015-10-13 13:36:12 -03:00
Aleksis Brezas
c667b55025
move uncaught exception to the top of app.coffee
2015-10-13 13:36:12 -03:00
Aleksis Brezas
0665054a79
no updates
2015-10-13 13:34:23 -03:00
Pagan Gazzard
f216a691a1
Add missing import to logger module.
2015-10-13 13:29:42 -03:00
Pagan Gazzard
ab44c79f62
Switch to using a separate module for network checking.
2015-10-13 13:29:42 -03:00
Pagan Gazzard
f0682b162a
Switch to using a separate module for blinking.
2015-10-13 13:29:42 -03:00
Pagan Gazzard
b1d16da9fa
Separate out the pubnub logging functionality.
2015-10-13 13:29:40 -03:00
Pagan Gazzard
56f54331a5
Fix TypeError: Cannot read property 'Running' of undefined
2015-10-13 13:28:00 -03:00
Pagan Gazzard
848aa66494
Fix reference error.
2015-10-13 13:28:00 -03:00
Praneeth Bodduluri
d300ec6baf
User Supervisord for logging
2015-10-13 13:28:00 -03:00
Praneeth Bodduluri
497ecc90a8
Log Supervisor to file and mount the /var/log from host to the supervisor
2015-10-13 13:28:00 -03:00
Aleksis Brezas
b584c6b705
improve code flow
2015-10-13 13:28:00 -03:00
Aleksis Brezas
528bf39a66
use docker inspect output
2015-10-13 13:28:00 -03:00
Aleksis Brezas
85626a4157
Exited containers do not have empty status
2015-10-13 13:28:00 -03:00
Pagan Gazzard
df536f672f
Update to pinejs-client-js v0.3.1
2015-10-13 13:28:00 -03:00
Pagan Gazzard
fe05824429
Extract out a duplicate function.
2015-10-13 13:28:00 -03:00
Pagan Gazzard
9673ae40d9
Remove some unneeded dependencies.
2015-10-13 13:28:00 -03:00
Pagan Gazzard
c5506d4566
Separate vpn connecting.
2015-10-13 13:28:00 -03:00
Pagan Gazzard
a7f5689873
Separate vpn bootstrapping.
2015-10-13 13:28:00 -03:00
Pagan Gazzard
6aa6ff5773
Specify the tty app to stop.
2015-10-13 13:28:00 -03:00
Pagan Gazzard
e25563f85c
Add a dummy user.js
2015-10-13 13:28:00 -03:00
Pagan Gazzard
f0afcb706a
Separate out tty.js
2015-10-13 13:28:00 -03:00
Pagan Gazzard
0b93c1ce2c
Use typed-error for the disconnected error.
2015-10-13 13:27:59 -03:00
Pagan Gazzard
e054b36d58
Use sensible defaults for the blink patterns, and make use of it for the API blink.
2015-10-13 13:27:59 -03:00
Pagan Gazzard
b63e7fd595
Accept the pattern as an argument for the blink module.
2015-10-13 13:27:59 -03:00
Pagan Gazzard
cd2603f228
Change the blink pattern to use a pattern specified by an object.
2015-10-13 13:27:59 -03:00
Pagan Gazzard
c218adb09e
Separate the blinking out, ready to move to a separate module.
2015-10-13 13:27:59 -03:00
Pagan Gazzard
1c46e1e2a4
Separate the network polling out, ready to move to a separate module.
2015-10-13 13:27:59 -03:00
Pagan Gazzard
e67de4b279
Simplify the state checking logic.
2015-10-13 13:27:59 -03:00
Pagan Gazzard
49d6e3142c
Use a 10s timeout for the connectivity check to make the internet connectivity check more responsive.
2015-10-13 13:27:59 -03:00
Pagan Gazzard
bf0b38354f
Use a repeating blink pattern that starts on the first failed internet check, and is consistent until we get internet again.
...
Previously it would pause whilst waiting for the next check (potentially a very very long time, as request doesn't have a timeout by default)
2015-10-13 13:27:59 -03:00
Pagan Gazzard
5e380fb66a
Turn the connectivity check into a singleton, so we only have one running.
2015-10-13 13:27:59 -03:00
Pagan Gazzard
2557ebcfc2
Move the connectivity check into utils.
2015-10-13 13:27:59 -03:00
Pagan Gazzard
63f1d66402
Fix trying to delete supervisor images.
2015-10-13 13:27:59 -03:00
Pagan Gazzard
58b9040a36
Use read -p to wait for enter.
2015-10-13 13:27:59 -03:00
Aleksis Brezas
32e1712df7
register device fallback fix
2015-10-13 13:27:59 -03:00
Pagan Gazzard
53196208b0
Start the connectivity check straight away, rather than waiting for bootstrapping to succeed.
2015-10-13 13:27:59 -03:00
Aleksis Brezas
460768d366
do not override dockerfile cmd
2015-10-13 13:27:59 -03:00
Pagan Gazzard
fcc6d1375d
Fix the default device type.
2015-10-13 13:27:59 -03:00
Pagan Gazzard
b9675de9e0
Change IP address update interval from 5m to 30s
2015-10-13 13:27:58 -03:00
Petros Angelatos
7ffb65d3fa
Expose host dbus to containers. This enables control of host connman
2015-10-13 13:27:58 -03:00
Aleksis Brezas
433f0920c8
remove exited supervisors
2015-10-13 13:27:58 -03:00
Aleksis Brezas
86c2e1280e
delete exited containers
2015-10-13 13:27:58 -03:00
Pagan Gazzard
f5f6ee3a61
Enable compression for all of our custom requests.
2015-10-13 13:27:58 -03:00
Pagan Gazzard
26c8b140ce
Only get the device id once, rather than for every request to updateDeviceInfo
2015-10-13 13:27:58 -03:00
Pagan Gazzard
6a50889086
Only select the fields we need to compare/update apps.
2015-10-13 13:27:58 -03:00
Pagan Gazzard
de6de9d397
Select just the id as it's all we need, and reduces network traffic.
2015-10-13 13:27:58 -03:00
Aleksis Brezas
e6e42d6631
improved getregistryandname
2015-10-13 13:27:58 -03:00
Aleksis Brezas
4185fb56c8
comment docker utility functions
2015-10-13 13:27:58 -03:00
Aleksis Brezas
a5ee91ceaf
calculate progress in a transform stream and expose a callback for progress events
2015-10-13 13:27:58 -03:00
Aleksis Brezas
6b496693ad
download progress bars
2015-10-13 13:27:58 -03:00
Aleksis Brezas
cdca01eed1
Use require to parse package.json for supervisor version
2015-10-13 13:27:58 -03:00
Aleksis Brezas
523a8b5637
update device supervisor_version
2015-10-13 13:27:58 -03:00
Pagan Gazzard
3b2b75998e
Tell startNewSupervisor which image to start, we need to start the working image on a restart, and the new (possibly broken) image on update.
2015-10-13 13:27:58 -03:00
Pagan Gazzard
c8a7c49cd5
Move the application update poll interval to an env var and reduce to 60s.
2015-10-13 13:27:57 -03:00
Pagan Gazzard
c7c1c45f38
Deal with int env vars more nicely (actually parse them and check they're valid ints)
2015-10-13 13:27:57 -03:00
Praneeth Bodduluri
10012a48cf
Enforce a TLS check while connecting to the server - Prevents MITM
2015-10-13 13:27:57 -03:00
Pagan Gazzard
ffc05f9d84
Use .constructor.prototype
for promisifying instead of __proto__
.
2015-10-13 13:27:57 -03:00
Pagan Gazzard
00d725cfac
Move the cleanupContainersAndImages
code into the docker utils, and make use of a count of currently fetching images to only clean up images if we aren't fetching any.
2015-10-13 13:27:57 -03:00
Pagan Gazzard
07a4df1d05
Share the code for fetching an image.
2015-10-13 13:27:57 -03:00
Pagan Gazzard
67c9db9fce
Move the docker promisification/creation to a util lib.
2015-10-13 13:27:57 -03:00
Pagan Gazzard
73c62cb5be
Make sure the responses are at least non-empty, otherwise we're going to get into a broken vpn situation.
2015-10-13 13:27:57 -03:00
Pagan Gazzard
4c257c8e7d
Log the body of the sign_certificate response, it'd be very useful for debugging.
2015-10-13 13:27:57 -03:00
Pagan Gazzard
19e066bf24
Log errors when updating device info.
2015-10-13 13:27:56 -03:00
Pagan Gazzard
0240f74f47
Fix reference error when failing to delete containers.
2015-10-13 13:27:56 -03:00
Aleksis Brezas
c4f9fd853d
require config is needed to retry bootstrap
2015-10-13 13:27:56 -03:00
Pagan Gazzard
2a28046533
Use Promise suffix for promise to make it a little clearer.
2015-10-13 13:27:56 -03:00
Pagan Gazzard
6c9ccfcb8c
Make the supervisor container remove itself rather than just exiting when launching a new supervisor.
2015-10-13 13:27:56 -03:00
Pagan Gazzard
cd7ee9b82f
There is no need to resolve currentSupervisor again as we have already resolved it.
2015-10-13 13:27:56 -03:00
Pagan Gazzard
7e3c9707cb
Cleanup containers as well as images, this stops issues with having containers hanging around on an old image, stopping that image from being deleted.
2015-10-13 13:27:56 -03:00
Aleksis Brezas
01f6794ccd
meta logs system prefix
2015-10-13 13:27:56 -03:00
Aleksis Brezas
b24a06a935
use channel prefix for differentiating with app logs
2015-10-13 13:27:56 -03:00
Aleksis Brezas
df2066e4de
supervisor meta logs
2015-10-13 13:27:52 -03:00
Pagan Gazzard
5cf8e2c180
Silence the pubnub "Missing Message" errors.
2015-10-13 13:19:45 -03:00
Pagan Gazzard
85e1777a65
We can use mapSync as we don't need anything asynchronous, also we can return nothing as we're done with the stream data at that point.
2015-10-13 13:19:45 -03:00
Pagan Gazzard
7f38248cfa
Let the new supervisor handle tagging itself as a working supervisor, this means that the check that a supervisor update is a working update will not be nullified by a reboot.
2015-10-13 13:19:45 -03:00
Aleksis Brezas
4cf6ce657a
use promise.try to start promise chain
2015-10-13 13:19:45 -03:00
Aleksis Brezas
2d4c22d6eb
use resin-platform-api
2015-10-13 13:19:45 -03:00
Aleksis Brezas
9c9d520da7
multi device support
2015-10-13 13:19:45 -03:00
Aleksis Brezas
ffedae683d
early stage app
2015-10-13 13:19:44 -03:00
Pagan Gazzard
2d8df956a6
Move the starting timeout to a config var.
2015-10-13 13:19:44 -03:00
Pagan Gazzard
2210b1be29
Only wait for success if we're restarting due to an update attempt.
...
If we're restarting for binds/mounts then we're already in a non-working state, and starting the new supervisor may have to wait for bootstrap to complete (which takes an indefinite amount of time to complete, meaning the timeout was killing the new container before it could bootstrap in some cases)
2015-10-13 13:19:44 -03:00
Pagan Gazzard
5efcde7922
Start the supervisor update check ASAP, it allows us to push (and automatically update to) new supervisor images that fix issues in earlier stages.
2015-10-13 13:19:44 -03:00
Pagan Gazzard
5bb552f065
Make mixpanelTrack nicely handle errors being passed in and use it for logging bootstrapping errors.
2015-10-13 13:19:44 -03:00
Pagan Gazzard
f43afd4a95
Retry the bootstrap process if it fails - this means that we remove a point of failure (the previous connectivity check barrier merely reduced the chance of hitting that failure point)
2015-10-13 13:19:44 -03:00
Lorenzo Stoakes
7866d7a9f7
Use API endpoint var as heartbeat endpoint.
2015-10-13 13:19:44 -03:00
Lorenzo Stoakes
77f5c776f5
Allow configuration of heartbeat endpoint via env var.
2015-10-13 13:19:44 -03:00
Lorenzo Stoakes
8ce9c2448f
Spread is neater.
2015-10-13 13:19:44 -03:00
Lorenzo Stoakes
aa4ff76581
Avoid ICMP on connectivity check.
2015-10-13 13:19:44 -03:00
Petros Angelatos
d054ca7023
Use host networking for user containers
2015-10-13 13:19:44 -03:00
Aleksis Brezas
ff12b4b736
comment explaining why we dont throw on supervisor update
2015-10-13 13:19:44 -03:00
Aleksis Brezas
5a9f5bebc6
increase supervisor update timeout to 1 minute
2015-10-13 13:19:44 -03:00
Aleksis Brezas
81fbbab362
remove unnecessary catch
2015-10-13 13:19:44 -03:00
Aleksis Brezas
e65a0b9c66
do not throw update errors
2015-10-13 13:19:43 -03:00
Pagan Gazzard
58cbb3808e
Log the stack trace as well when catching an unhandled error.
2015-10-13 13:18:12 -03:00
Pagan Gazzard
4f431d36ed
Fix binding a folder using the wrong id.
2015-10-13 13:10:12 -03:00
Pagan Gazzard
2746d875f7
Fix "undefined is not a function" error due to not passing a callback to container.stop
2015-10-13 13:10:12 -03:00
Pagan Gazzard
4734f8e834
Remove duplicate require.
2015-10-13 13:10:12 -03:00
Eugene Mirotin
31a48c75f5
pass the error message in despawn as well
2015-10-13 13:10:12 -03:00
Eugene Mirotin
378913862f
pass the proper error message
2015-10-13 13:10:12 -03:00
Lorenzo Stoakes
3810a394c9
Up max comment length to 120 chars.
2015-10-13 13:10:12 -03:00
Lorenzo Stoakes
f39b51885d
Syntax cleanup pass.
2015-10-13 13:10:12 -03:00
Pagan Gazzard
70eef70be2
Log an error if failing to stop a tty session
2015-10-13 13:10:12 -03:00
Pagan Gazzard
a9672bd5af
Make sure that the command socket exists and is a socket.
...
This handles the case of running an updated supervisor on an old image which doesn't support host commands - printing out a nice message and waiting rather than exiting silently.
2015-10-13 13:10:12 -03:00
Pagan Gazzard
33441c74e7
Silence the setting up of the socket.
...
This was appearing whenever you started a new tty.js terminal - leaking stuff that shouldn't really be.
2015-10-13 13:10:12 -03:00
Pagan Gazzard
c1b1aba985
Make sure to stop any spawned tty sessions on container stop.
2015-10-13 13:10:12 -03:00
Pagan Gazzard
ad107b30ae
Enable destroying a tty.js tunnel.
2015-10-13 13:10:12 -03:00
Pagan Gazzard
1b0e364322
Enable spawning a tty.js tunnel.
2015-10-13 13:10:12 -03:00
Aleksis Brezas
aab2a3b3d3
missing require
2015-10-13 13:10:12 -03:00
Aleksis Brezas
839b6ec7ca
get full container id from /proc/1/cgroup
2015-10-13 13:10:12 -03:00
Aleksis Brezas
69e2af5aa1
wait for an ok from next supervisor before exit
2015-10-13 13:10:11 -03:00
Praneeth Bodduluri
b790e4e304
Blink interval of 200ms was too slow to be seen - reverting to 400ms used in api.coffee
2015-10-13 13:10:11 -03:00
Petros Angelatos
a10f118ab9
Use the registry endpoint from config, not environment
2015-10-13 13:10:11 -03:00
Pagan Gazzard
3c5e856ef2
Mount a /data directory for containers, to allow persistent storage.
2015-10-13 13:10:11 -03:00
Pagan Gazzard
a9fe6f3414
Update the app info the moment we create the container, even if then starting the container fails.
...
This stops issues with constantly creating new containers for an image that fails to start.
2015-10-13 13:10:11 -03:00
Praneeth Bodduluri
e7216618ad
Make Blinkable LED configurable + Move blink to utils + Check connectivity before bootstrap + Blink LED on loss of connection
2015-10-13 13:10:11 -03:00
Pagan Gazzard
3975939181
Cleanup unneeded images after a successful update.
2015-10-13 13:10:11 -03:00
Pagan Gazzard
4cc3092b73
Remove /dev mount, privileged flag does it by default.
2015-10-13 13:10:11 -03:00
Pagan Gazzard
d07c6abe99
Store and make use of container ids.
...
This stores the container id for an app when creating that app, using it when it is necessary to stop/remove the app and when attempting to start it again (rather than creating a new container each time, eg restarting the pi does not create a new container any more)
2015-10-13 13:10:11 -03:00
Pagan Gazzard
51bfb69354
Treat the bluebird OperationalError wrapper correctly.
2015-10-13 13:10:11 -03:00
Pagan Gazzard
0fae904f1c
Make sure to use string comparisons for the status code, to avoid issues where the types are different.
2015-10-13 13:10:10 -03:00
Praneeth Bodduluri
7aa66b5cb6
x86 support + Change localImage variable to SUPERVISOR_IMAGE
2015-10-13 13:09:58 -03:00
Pagan Gazzard
e64e6e6dbe
Handle trying to remove already stopped/removed containers gracefully.
2015-10-13 13:08:24 -03:00
Pagan Gazzard
7072b1df96
On update failure schedule another attempt briefly in the future.
2015-10-13 13:08:24 -03:00
Praneeth Bodduluri
0f23ddded8
Change the data mount point to /resin-data
2015-10-13 13:08:23 -03:00
Petros Angelatos
d511d9df94
Set the 'RESIN' env var in user applications
2015-10-13 13:08:23 -03:00
Pagan Gazzard
5bd4ee7ee6
Fix event-stream usage.
2015-10-13 13:08:23 -03:00
Pagan Gazzard
f317927284
Move the restart check to the earliest possible stage, such that the only mount that we actually need in order to bootstrap the the docker.sock mounting.
2015-10-13 13:08:23 -03:00
Pagan Gazzard
2c11b34bdf
Have the supervisor update if it finds itself missing Volumes/Binds it expects to have (or has additional that it does not expect).
...
Conflicts:
src/config.coffee
src/supervisor-update.coffee
2015-10-13 13:08:23 -03:00
Pagan Gazzard
b7149bb266
Report the commit to the API as soon as the container is started.
2015-10-13 13:08:23 -03:00
Pagan Gazzard
3ef5a86344
Report the device status to the API
2015-10-13 13:08:23 -03:00
Pagan Gazzard
c436d8d5c0
Set default values for the config vars, which will be used in the case of an env var not being set, and copy all existing env vars in the case of an update.
2015-10-13 13:08:07 -03:00
Pagan Gazzard
c03a51d404
Make sure the fib_trie mount is propogated on an update.
2015-10-13 13:06:43 -03:00
Pagan Gazzard
a47022a0b4
Report the host ip address to the API on startup and every 5mins after.
2015-10-13 13:06:43 -03:00
Pagan Gazzard
6fb20a5dc5
Add support for exposing multiple ports.
2015-10-13 13:06:42 -03:00
Petros Angelatos
3ae3668221
Test for both 'id' and 'Id' when docker responds with image info
2015-10-13 13:06:42 -03:00
Pagan Gazzard
58035f8b24
Switch from "id" to "Id" to match a docker change..
2015-10-13 13:06:42 -03:00
Pagan Gazzard
597fefcb33
Fix reference error.
2015-10-13 13:06:42 -03:00
Pagan Gazzard
148d067ab9
Add a log entry that we're exiting on a supervisor update.
2015-10-13 13:06:42 -03:00
Petros Angelatos
3e1dd1f922
Log every mixpanel event and remove redundant logs
2015-10-13 13:06:42 -03:00
Petros Angelatos
d00372b5d2
Move mixpanel calls inside corresponding methods
2015-10-13 13:06:42 -03:00
Petros Angelatos
d06b5117f0
Keep method of loading JSON files consistent
2015-10-13 13:06:42 -03:00
Petros Angelatos
7b483e983d
Fix bug of using mixpanel module as the mixpanel client
2015-10-13 13:06:42 -03:00
Petros Angelatos
e622491f37
Add mixpanel events to the update process
2015-10-13 13:06:42 -03:00
Petros Angelatos
1501cf3122
Integrate mixpanel
2015-10-13 13:06:42 -03:00