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
Pablo Carranza Vélez
d1b317399e
Updates by appId and use Promise.using for lock
...
Change the update cycle to go by appId instead of imageId.
Use Promise.using for lockFile locks and unlocks.
Now updates shouldn't stop if one of the apps fails to update
(it's a step towards better supporting multiple apps).
Forcing the lock now works.
Remove unnecessary require fs
Nicer assignment for s in joinErrorMessages
2015-10-13 13:45:03 -03:00
Pablo Carranza Vélez
1eb31ce5f6
Apply coffeelint everywhere
2015-10-13 13:45:03 -03:00
Pablo Carranza Vélez
c52c2c0bd9
First attempt at locking updates with files
2015-10-13 13:45:03 -03:00
Praneeth Bodduluri
a8e1d476e3
Change to use 204 for API, Remove extra space in upscript.sh and Make fswatch start only on EEXIST error
2015-10-13 13:43:37 -03:00
Praneeth Bodduluri
7b8ca9fd73
Start the fs watch after the VPN directory has been created - Use finally and not then
2015-10-13 13:43:37 -03:00
Praneeth Bodduluri
ac545ccc52
Change the EEXIST to a function
2015-10-13 13:43:37 -03:00
Praneeth Bodduluri
a57c723e8a
Remove inotify and lint changes
2015-10-13 13:43:37 -03:00
Praneeth Bodduluri
a4966a798a
Change the fs functions to promise
2015-10-13 13:43:37 -03:00
Praneeth Bodduluri
0213916b90
Style changes
2015-10-13 13:43:37 -03:00
Praneeth Bodduluri
8642371094
Pause TCP Pings on VPN connection
2015-10-13 13:43:37 -03:00
Praneeth Bodduluri
d6b6d2d73b
Distinguish betweek - permanent TCP check disable and pausing tcp check
2015-10-13 13:43:37 -03:00
Praneeth Bodduluri
03299d77f5
API to pause TCP checks
2015-10-13 13:43:37 -03:00
Pablo Carranza Vélez
c250ff483c
Fix double app start (app.id = null after kill)
2015-10-13 13:43:37 -03:00
Pablo Carranza Vélez
c2496d30c2
Use Promise Disposer for lock, + cleanup
2015-10-13 13:43:36 -03:00
Pablo Carranza Vélez
6d54e6663e
Lock app restart, cleanup and better testing
2015-10-13 13:43:36 -03:00
Pablo Carranza Vélez
9bc2f6212d
Handle App not found in purge, + cleanup
...
* gosuper in dockerignored folder
* correctly handle app not found in purge
* test formatting in test-gosuper
* Fix test-gosuper
* DRY up test-integration
2015-10-13 13:43:36 -03:00
Pablo Carranza Vélez
53668647c8
Integration test is now working.
...
* More work on the integration test
* Correctly get supervisor IP
* Use Fatal for test errors
* test-integration working separate from run-supervisor
* Use jenkins' JOB_NAME to identify and remove containers with their volumes
* Document testing procedure
* Document the assume-unchanged tip
* Use /mnt/root for data path
* Nicer secret assignment
2015-10-13 13:43:36 -03:00
Pablo Carranza Vélez
513cc24d1c
Purge restarts app, and first attempt at integration testing
...
* Restart app when purging
* Use log.Fatal to exit with status 1
* Quotes in entry.sh
* Use JSON for request body
* Handle errors for parseJsonBody
* Better error printing in main
* First attempt at testing nodesuper from Go
* Cleaner build
* Use ARCH to differentiate concurrent tests/builds
* Use --rm to autoremove containers
2015-10-13 13:43:36 -03:00
Pablo Carranza Vélez
dd53bbd1db
Call the gosuper from node via unix socket + http.
2015-10-13 13:43:36 -03:00
Pablo Carranza Vélez
5d5f38ea69
Add /lib/firmware to the app bind mounts
2015-10-13 13:43:36 -03:00
Pablo Carranza Vélez
1e340f4fac
Return when no appId
2015-10-13 13:43:35 -03:00
Praneeth Bodduluri
418d838dec
Make resolv.conf writable from a User container
2015-10-13 13:43:35 -03:00
Pagan Gazzard
b8ecdb3ce2
Rename state module to device and use sensible function names for the new module name.
2015-10-13 13:43:35 -03:00
Pagan Gazzard
0917a46a2d
Separate the device state updating into its own module.
2015-10-13 13:43:35 -03:00
Pagan Gazzard
3ad47adce4
Fix an issue where an image would not be cleaned up if it was tagged in multiple repos.
2015-10-13 13:43:35 -03:00
Juan Cruz Viotti
aead4c7531
Make use of resin-register-device
2015-10-13 13:42:25 -03:00
Pagan Gazzard
4003bd4828
Write the registered_at
time to config.json as well, in case there is a failure between writing to config.json and writing to knex [Page]
2015-10-13 13:39:39 -03:00
Pagan Gazzard
1ee3072c75
Force a newer bluebird so that we can rely on error properties also being available on the root error.
2015-10-13 13:39:39 -03:00
Pagan Gazzard
52d4cfb9d9
Fix an error where mixpanel events would have the wrong uuid set on first provision.
2015-10-13 13:39:39 -03:00
Pagan Gazzard
ab26c6a401
Don't cache config.json
2015-10-13 13:39:38 -03:00
Praneeth Bodduluri
cb24f338af
Add /etc/resolv.conf bind mounts
2015-10-13 13:39:38 -03:00
Pagan Gazzard
e56d9b678e
Stop displaying an error message when trying to start a container that is already started.
2015-10-13 13:39:38 -03:00
Pagan Gazzard
a959660f90
Improve error messages reported to the user in the case of finding an empty string.
2015-10-13 13:39:38 -03:00
Pagan Gazzard
e38796e92a
Fix trying to delete supervisor container when it reports an alternate tag instead of the primary tag.
2015-10-13 13:39:38 -03:00
Pagan Gazzard
099c13446a
Switch to using the dockerode pull progress mechanism.
2015-10-13 13:39:38 -03:00
Pagan Gazzard
b6a1388c56
mixpanelTrack
expects the error property to be called error
2015-10-13 13:39:38 -03:00
Pagan Gazzard
4d3a179fcb
Nicer error when image tag isn't found
2015-10-13 13:39:38 -03:00
Pagan Gazzard
0063eaf7e7
Reset download progress to null when starting up the supervisor.
2015-10-13 13:39:38 -03:00
Pagan Gazzard
b4306e85db
Fix reporting errors without a "cause"
2015-10-13 13:39:37 -03:00
Pagan Gazzard
1b0cdfe094
Remove some logging from supervisor that wasn't that useful (and caused a lot of noise when looking for issues).
2015-10-13 13:39:37 -03:00
Eugene Mirotin
0cb3316ad9
use pinejs request for env vars retrieval
2015-10-13 13:39:37 -03:00
Eugene Mirotin
9b14babc78
use API endpoint to get merged env vars
2015-10-13 13:39:37 -03:00
Pagan Gazzard
98ae03cf67
Add success/failure messages for better user info when there are issues.
2015-10-13 13:39:09 -03:00
Pagan Gazzard
368a23b823
Centralise the logging logic.
2015-10-13 13:39:09 -03:00
Pagan Gazzard
7a3d5b06c2
Report failures to start the container (eg bad CMD in a Dockerfile)
2015-10-13 13:39:09 -03:00
Pagan Gazzard
84b5746111
Share request settings between request and pinejs-client, and make sure a 30s timeout is used.
2015-10-13 13:39:09 -03:00
Pagan Gazzard
c29e0720c6
Switch to monitoring if the host is reachable via tcp, rather than a using a full http request.
2015-10-13 13:39:09 -03:00
Pagan Gazzard
a97cd40b44
Close the tty.js server as well as the ngrok listener.
2015-10-13 13:39:08 -03:00
Pagan Gazzard
5f5b6f5be1
Fix stopping a tty session via the api using the wrong app id.
2015-10-13 13:39:08 -03:00
Pagan Gazzard
cd6dbedfa2
Be very careful about marking an update attempt finished
2015-10-13 13:39:08 -03:00
Pagan Gazzard
c8df0b2f9e
Make use of the new cache feature of the request backend for pinejs-client 1.2.0 to make use of an ETags based cache for requests to the api.
2015-10-13 13:39:08 -03:00
Pagan Gazzard
82873d2ef2
Add a comment about updateDeviceState
2015-10-13 13:39:08 -03:00
Pagan Gazzard
48c21e9275
Keep track of target and actual device state, and make sure we keep updating the api with any differences until the two match.
2015-10-13 13:39:08 -03:00
Pagan Gazzard
7765bc6a59
Just consume the stream for publish, avoiding any chance of it returning a value and getting stored up in the stream.
2015-10-13 13:39:08 -03:00
Pagan Gazzard
2c94ea57a2
Only load ngrok/tty on demand.
2015-10-13 13:39:08 -03:00
Pagan Gazzard
d578bbfba3
Use the new status/send/sendStatus style.
2015-10-13 13:39:08 -03:00
Pagan Gazzard
6144ea3aeb
Update to express ^4.0.0
2015-10-13 13:39:08 -03:00
Pagan Gazzard
933cbdedad
Be more frugal with the bandwidth used for device updates.
2015-10-13 13:37:56 -03:00
Pagan Gazzard
5b82667b3b
Remove unused require.
2015-10-13 13:37:56 -03:00
Pagan Gazzard
73c7f29c65
Update pinejs-client to ^1.0.0
2015-10-13 13:37:53 -03:00
Pagan Gazzard
8ca8f96f46
Switch to npm deps for blinking and network-checker
2015-10-13 13:37:08 -03:00
Eugene Mirotin
433d0bc0f0
shorter defaults setting, also allows manual timestamps should someone need them
2015-10-13 13:36:13 -03:00
Eugene Mirotin
d47fdf8a3c
log compound messages with timestamp and proper system flag
2015-10-13 13:36:13 -03:00
Pagan Gazzard
3d83c03868
The SUPERVISOR_IMAGE is now the fully qualified image (since it can be on another registry) - update to work with this and stop attempting to delete the actual supervisor image.
2015-10-13 13:36:13 -03:00
Pagan Gazzard
16dea4efcc
Download the new version of an application before stopping/deleting the old.
2015-10-13 13:36:13 -03:00
Aleksis Brezas
af89179886
reset provisioning progress to null when supervisor starts
2015-10-13 13:36:12 -03:00
Pagan Gazzard
2d5dca2171
Make sure the supervisor version update is also retried until succeeding.
2015-10-13 13:36:12 -03:00
Pagan Gazzard
1784c75c57
Add secret/apikey based authentication to the supervisor.
2015-10-13 13:36:12 -03:00
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