balena-supervisor/CHANGELOG.md
Pablo Carranza Velez 0799fc1173 4.2.2
Signed-off-by: Pablo Carranza Velez <pablo@resin.io>
2017-04-27 21:19:36 -07:00

20 KiB

Changelog for resin-supervisor

All notable changes to this project will be documented in this file automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY! This project adheres to Semantic Versioning.

v4.2.2 - 2017-04-27

  • Only delete the provisioning key if the supervisor is running on an OS that supports using the deviceApiKey [Pablo Carranza Velez]
  • Avoid writing target device config to DB if it hasn't changed [Pablo Carranza Velez]

v4.2.1 - 2017-04-26

  • Fix an infinite loop that could happen when trying to bootstrap if the key exchange fails [Pagan Gazzard]
  • Fix the case of being registered with a version of the cli/sdk that does not support device api keys. [Pagan Gazzard]

v4.2.0 - 2017-04-24

  • Add handling for duplicate UUIDs and key exchanging for old user-api-keys [Pagan Gazzard]
  • Change to the new device registration method to exchange our provisioning key with a dedicated api key for the device. [Pagan Gazzard]
  • Docs/API.md: Fix documentation command sent via the API proxy for POST /v1/update. [Horia Delicoti]

v4.1.2 - 2017-04-10

  • Issue #420: Avoid supervisor crash without connection by properly memoizing promise-returning functions [Pablo Carranza Velez]
  • Report the OS variant as a separate field and not as part of the OS version [Pablo Carranza Velez]

v4.1.1 - 2017-03-30

  • Issue #413: Fix an error applying the connectivity check config var [Pablo Carranza Velez]
  • Issue #410: Cleanup images before running an update, preserving the ones that will be used in the target state [Pablo Carranza Velez]

v4.1.0 - 2017-03-29

  • Authentication credentials for registry and delta server [Andreas Fitzek]
  • Issue #402: Ensure that app configs are non-null and valid json objects [Pablo Carranza Velez]
  • Report OS variant to the API together with the OS version [Pablo Carranza Velez]
  • Issue #230: Add a custom User-Agent header to all requests [Pablo Carranza Velez]
  • Update waffle badge [Sabith]

v4.0.0 - 2017-03-09

  • Issue #396: Log when we're rebooting due to a device config change [Pablo Carranza Velez]
  • Issue #20: Change the update lock to a temporary filesystem [Pablo Carranza Velez]
  • Make local mode only work in development OS, and make it remove app containers and allow unauthenticated API requests [Pablo Carranza Velez]
  • Restore default value when clearing a special action config variable [Pablo Carranza Velez]
  • Allow all config variables to take truthy or falsy values [Pablo Carranza Velez]
  • Allow setting the supervisor to a "local mode" which stops apps and prevents cleanup [Pablo Carranza Velez]
  • Issues #23 and #236: Use docker logs to get all logs from the container, including those before supervisor start [Pablo Carranza Velez]
  • Issues #389 and #390: Remove /host_run/dbus and /host/var/lib/connman bind mounts for non-ResinOS-1.X devices [Pablo Carranza Velez]
  • Issue #386: Allow forcing updates when an update was already scheduled [Pablo Carranza Velez]

v3.0.1 - 2017-02-15

  • Issue #381: Set target deviceConfig values from preloaded apps [Pablo Carranza Velez]

v3.0.0 - 2017-01-18

  • Issue #378: Increase delta timeouts (to avoid ESOCKETTIMEOUT errors), make them configurable, and provide nicer message when the delta server times out [Pablo Carranza Velez]
  • Update versionist to v2.8.0 [Pablo Carranza Velez]
  • Update docker-progress to v2.3.3 [Pablo Carranza Velez]
  • Switch to aufs for the docker-in-docker development supervisor [Pablo Carranza Velez]
  • Do not bind mount kmod if the host is not Resin OS 1.X [Pablo Carranza Velez]

v2.9.0 - 2016-12-20

  • Bump docker-delta to v1.0.1 to fix deltas on aufs when there's many layers [Pablo Carranza Velez]
  • Document dependent apps feature [curcuz]

v2.8.5 - 2016-12-20

  • Fix error applying device configuration because deviceConfig table is empty [Pablo Carranza Velez]
  • Make the base image hash more deterministic [Pablo Carranza Velez]

v2.8.4 - 2016-12-16

  • Use versionist's default configuration [Pablo Carranza Velez]
  • Build the base image together with the supervisor [Pablo Carranza Velez]
  • Start using versionist for versioning and changelog [Pablo Carranza Velez]
  • Bump the MAX_BASIS_DIRS limit for rsync [Michal Mazurek]

v2.8.3 - 2016-11-23

  • Fallback to DROP when iptables REJECT is not available [Pablo Carranza Velez]

v2.8.2 - 2016-11-07

  • Update the supervisor base to 20161103 to include the i386 fix [Pablo Carranza Velez]
  • Fix an error when trying to call logSystemEvent with an undefined app [Pagan Gazzard]
  • Fix nodejs for the i386 architectures [Theodor Gherzan]
  • Provide a better error message when app is not found for purging [Pablo Carranza Velez]
  • Only iterate through remote apps to set device config [Pablo Carranza Velez]

v2.8.1 - 2016-10-31

  • Properly delete dependent apps and their corresponding devices [Pablo Carranza Velez]

v2.8.0 - 2016-10-30

  • Add HostConfig in container create instead of start [Pablo Carranza Velez]
  • Make it clear in logs when container was already running [Pablo Carranza Velez]
  • Stop all apps before rebooting or shutting down [Pablo Carranza Velez]
  • Update request-progress to v2.0.1 [Pablo Carranza Velez]

v2.7.1 - 2016-10-24

  • Use multiArgs to promisify gosuper requests [Pablo Carranza Velez]
  • Also make it explicit in mixpanel events when it's a full image download [Pablo Carranza Velez]
  • Log whether deltas are being used when downloading an app [Pablo Carranza Velez]

v2.7.0 - 2016-10-23

  • Upgrade docker-progress to v2.3.1 [Pablo Carranza Velez]
  • Fixed multiple update loops appearing after a long period of updates failing. [Pagan Gazzard]
  • Avoid restarting the app if the device name changes [Pablo Carranza Velez]
  • Use appId in dependent app assets tar path, and only create the tar if it doesn't exist [Pablo Carranza Velez]
  • Support AUFS by upgrading node-docker-delta to 1.0.0 and docker-toolbelt to 1.3.0 [Pablo Carranza Velez]
  • Send the uuid as distinct_id for mixpanel events [Pablo Carranza Velez]
  • gosuper: support i386 platforms without MMX instructions [Petros Angelatos]

v2.6.3 - 2016-10-13

  • Properly set device name, and set undefined arguments to setConfig as null [Pablo Carranza Velez]

v2.6.2 - 2016-10-11

  • Updated knex to ~0.12.3

v2.6.1 - 2016-10-11

  • Do not use parsed JSON to compare dep. device state [Pablo Carranza Velez]

v2.6.0 - 2016-10-10

  • Fix docker utils getImageEnv by correctly parsing the returned array [Pablo Carranza Velez]
  • Avoid installing npm dependencies twice [Pablo Carranza Velez]
  • Updated to bluebird 3 [Pagan Gazzard]
  • Better parameter handling in PUT /v1/devices/:uuid [Pablo Carranza Velez]
  • An update hook response of 200 will cause the proxyvisor to stop pinging the hook [Pablo Carranza Velez]
  • Allow deleting dependent apps and devices [Pablo Carranza Velez]
  • Implement delete dependent device hook [Pablo Carranza Velez]
  • Omit some fields when responding with a device object [Pablo Carranza Velez]
  • Add validation to dependent device provisioning [Pablo Carranza Velez]

v2.5.2 - 2016-10-07

  • Removed obsolete resolv.conf bind-mount [Petros Angelatos]
  • Updated to pinejs-client 2 [Pagan Gazzard]

v2.5.1 - 2016-10-06

  • Store config vars when there's nothing else to update [Pablo Carranza Velez]
  • Do not mark an update as failed if the hook failed [Pablo Carranza Velez]
  • When hitting the dependent devices hook, send appId as int [Pablo Carranza Velez]
  • Updated to lodash 4 [Pagan Gazzard]
  • Updated to coffeescript 1.11 [Pagan Gazzard]
  • In delete-then-download, only delete when a download is needed [Pablo Carranza Velez]
  • Compare config vars to trigger an app restart [Pablo Carranza Velez]
  • Fix disabling logs to display on newer OS with different service name [Pablo Carranza Velez]
  • In cleanup, normalize all image tags for comparison [Pablo Carranza Velez]
  • Use getRegistryAndName from docker-toolbelt 1.2.0 [Pablo Carranza Velez]

v2.5.0 - 2016-10-01

  • Switch to v2 api to be able to set is_online [Pagan Gazzard]
  • Implement proxyvisor API with dependent device handling [Pablo Carranza Velez]
  • Use the state endpoint from the API to get the full device state [Pablo Carranza Velez]
  • Add a deviceConfig db table to store host config separately, and allow deleting config.txt entries [Pablo Carranza Velez]
  • Expose RESIN_APP_NAME, RESIN_APP_RELEASE, RESIN_DEVICE_NAME_AT_INIT, RESIN_DEVICE_TYPE and RESIN_HOST_OS_VERSION env vars [Pablo Carranza Velez]
  • Add missing error handler on a stream in docker-utils [Pablo Carranza Velez]

v2.4.0 - 2016-09-30

  • On cleanup, force removal for images and containers, and remove container volumes [Pablo Carranza Velez]
  • Add system logs for Shutdown, Reboot and Purge [Pablo Carranza Velez]

v2.3.0 - 2016-09-26

  • Implement delete-then-download update strategy [Pablo Carranza Velez]
  • Bump node-docker-delta to 0.0.12 [Pablo, Kostas]

v2.2.1 - 2016-09-26

  • Fix ENV bug in build process [Petros Angelatos]

v2.2.0 - 2016-09-23

  • Add resin-vpn interface IP filtering to gosupervisor [Praneeth]
  • Compress go binary with upx [Petros Angelatos]
  • Switch to go version 1.6 [Petros Angelatos]
  • Print all logs to stdout of container instead of file [Petros Angelatos]
  • Upgrade nodejs to version 6.5 [Petros Angelatos]
  • Switch initsystem from supervisor to busybox init [Petros Angelatos]
  • Switch build to openembedded base images [Petros Angelatos]
  • DRY up calls to gosuper API, and use empty Host header [Pablo Carranza Velez]

v2.1.1 - 2016-09-09

  • Add iptables rules to allow resin-vpn named interface to be used by VPN [Praneeth]
  • Updated to coffee-script ~1.10.0 [Pagan Gazzard]
  • Catch exec format error and provide friendlier error message [Aleksis]

v2.1.0 - 2016-09-05

  • Pick up new variable from hostOS, pointing to the mount point of the hostOS's boot partition [Theodor Gherzan]

v2.0.0 - 2016-08-31

  • [Breaking] Change the logger to send at a specific interval and with a different message format [Pablo Carranza Velez]

v1.14.0 - 2016-08-16

  • Allow using an HTTP header for auth [Pablo Carranza Velez]
  • Add iptables rules to block requests to the supervisor API from all interfaces except vpn, docker and local [Pablo Carranza Velez]

v1.13.2 - 2016-08-09

  • bootstrap: if offlineMode is enabled, persist only the uuid [Petros Angelatos]

v1.13.1 - 2016-07-28

  • Using links in compose files is now allowed [Petros Angelatos]

v1.13.0 - 2016-07-27

  • Allow the supervisor to work in offline mode [Pablo Carranza Velez]
  • Fix duplicate logs issue [Kostas Lekkas]
  • [Breaking] Do not bind mount /run/dbus to /run/dbus [Pablo Carranza Velez]
  • Default to not bind mounting kmod if container distro can't be found [Pablo Carranza Velez]
  • Use log-timestamp to add timestamps to logs [Pablo Carranza Velez]

v1.12.2 - 2016-07-15

  • Bind mount kmod if the container is debian or raspbian [Pablo Carranza Velez]

v1.12.1 - 2016-07-08

  • Fix preloaded apps by passing appId to extendEnvVars

v1.12.0 - 2016-06-28

  • Add endpoints for docker-compose up and down [Pablo Carranza Velez]

v1.11.6 - 2016-06-23

  • Fixed deltas for older docker daemon versions [Petros Angelatos]

v1.11.5 - 2016-06-23

  • Fix entry.sh when DOCKER_ROOT isn't set [Pagan Gazzard]

v1.11.4 - 2016-06-17

  • Cleanup docker images if delta failed [Petros Angelatos]
  • Make the data path configurable [Pablo Carranza Velez]

v1.11.3 - 2016-06-11

  • Add listener for container events and reattach on restart [Pablo Carranza Velez]
  • fix deltas by not using the supervisor as source [Pablo Carranza Velez]

v1.11.2 - 2016-06-10

  • fix delta error handling by listening for the 'error' event [Petros Angelatos]

v1.11.1 - 2016-06-09

  • Use sh for postinstall as alpine has no bash [Pablo Carranza Velez]
  • update docker-delta to 0.0.8 [Petros Angelatos]
  • symlink docker root to default path if not already there [Petros Angelatos]

v1.11.0 - 2016-06-07

  • Add restart policies and change default to auto-restart [Aleksis]

v1.10.1 - 2016-06-07

  • Switch to docker-delta library to use deltas v2 [Petros Angelatos]
  • Correctly compare container image name on cleanup [Pablo Carranza Velez]
  • Log useful supervisor info to stdout/stderr [Kostas Lekkas]

v1.10.0 - 2016-05-26

  • Fix progress bars on docker version 1.10 [Aleksis]

v1.9.0 - 2016-05-24

  • Fix reporting of supervisor version for alpine supervisor [Pablo Carranza Velez]
  • Use rwlock to block when pulling images [Pablo Carranza Velez]
  • Increase API timeout to 15 minutes, and make it configurable [Pablo Carranza Velez]
  • Add endpoint to load images from a docker save tar [Pablo Carranza Velez]
  • Add alpine supervisor build information [Trong]
  • Add endpoints to manage images and containers locally [Pablo Carranza Velez]
  • Only use bodyParser for endpoints that need it [Pablo Carranza Velez]
  • Add RESIN_APP_ID variable [Pablo Carranza Velez]
  • Increase delta request timeout to 15 minutes [Pablo Carranza Velez]

v1.8.0 - 2016-04-25

  • Add endpoints to start, stop and get app [Pablo, Kostas]
  • Removed a bunch ofobsolete code for the old terminal, reducing the supervisor size considerably. [Pagan Gazzard]

v1.7.0 - 2016-03-28

  • Add RESIN_HOST_LOG_TO_DISPLAY variable [Pablo Carranza Velez]
  • Add system logs for special actions and host config [Pablo Carranza Velez]
  • Fix setting config.txt for RPi 3 [Pablo Carranza Velez]
  • Fix saving config vars to DB before reboot [Pablo Carranza Velez]
  • Bind mount host /var/lib/connman to application /host_var/lib/connman [Aleksis]
  • Add RESIN_SUPERVISOR_DELTA to special list so that app is not restarted when it changes [Pablo Carranza Velez]

v1.6.1 - 2016-03-08

  • Reduce noise in logs [Kostas Lekkas]

v1.6.0 - 2016-02-22

  • Add endpoint to get device state [Pablo Carranza Velez]
  • Check for valid strings or ints in all config values [Pablo Carranza Velez]
  • Remove quotes in OS version [Pablo Carranza Velez]

v1.5.0 - 2016-02-09

  • Add support for delta image download [petrosagg and Pablo]

v1.4.0 - 2016-01-28

  • Report Host OS version to the API [Pablo Carranza Velez]
  • Use _.defaults instead of _.extend to ensure internal env vars are not overwritten [Pablo Carranza Velez]
  • Expose resin API key to apps [Pablo Carranza Velez]
  • On download start, set download_progress to 0. On finish, set state to Idle [Pablo Carranza Velez]
  • Set GOARM separately for each architecture [Pablo Carranza Velez]
  • Add armv5 (armel) build [Trong]
  • Add OOM protection for the supervisor container, openvpn and connmand [Praneeth]

v1.3.2 - 2015-12-17

  • Do not report the tun addresses to API [Praneeth]

v1.3.1 - 2015-12-07

  • Only save the app if starting the container was successful [Pablo Carranza Velez]

v1.3.0 - 2015-12-01

  • Remove volumes when removing a container [Pablo Carranza Velez]
  • Refactor the still undocumented special env vars into RESIN_SUPERVISOR_ [Pablo Carranza Velez]
  • Implement several update strategies (kill before download, 0-downtime) [Pablo Carranza Velez]
  • Fix the error that comes up when no ip addresses are returned by gosuper [Praneeth]
  • Switched to docker-progress for pull progress. [Pagan Gazzard]
  • Fix semver versioning in tcp-ping endpoint. [Praneeth]

v1.2.1 - 2015-11-04

  • Use random name for PubNub channel and report to API [Pablo Carranza Velez]

v1.2.0 - 2015-10-16

  • Don't bind mount (the sometimes non-existent) docker.sock [Pablo Carranza Velez]
  • Expose a RESIN_SUPERVISOR_VERSION env var to app [Pablo Carranza Velez]

v1.1.1 - 2015-10-15

  • Prevent non-fatal errors from causing the supervisor to exit [Lorenzo]
  • Use buildtime env vars as the default Pubnub and Mixpanel keys [Pablo Carranza Velez]

v1.1.0 - 2015-10-09

  • Switch back to using arch-based node images [Pablo Carranza Velez]
  • Don't allow bootstrap to delete apiSecret from DB [Pablo Carranza Velez]
  • Add API endpoint to expire and create new API key [Pablo Carranza Velez]
  • Enable control of API poll interval through Device Variables [Praneeth]
  • Allow control of VPN + TCP check + Pub nub logs with Device Environment variables [Praneeth]
  • Add GO api for openvpn control [Praneeth]

v1.0.2 - 2015-10-08

  • Fix getting API key from DB by returning its .value [Pablo Carranza Velez]

v1.0.1 - 2015-10-07

  • Pass supervisor API key to app, don't regenerate the key, and authenticate ALL requests [Pablo Carranza Velez]
  • Use raspberrypi2 base image for armv7hf [Pablo Carranza Velez]
  • Bugfix: wrap all errors from update as Error objects - prevents image cleanup on download failures [Pablo Carranza Velez]
  • Wait 10 seconds after sending SIGTERM and before sending SIGKILL when stopping a container [Petros Angelatos]

v1.0.0 - 2015-10-02

  • Expose supervisor API to app by allowing all requests from 127.0.0.1 and passing address and port as env vars [Pablo Carranza Velez]
  • Only apply special actions / boot config on change, and always persist to DB [Pablo Carranza Velez]

v0.0.18 - 2015-10-01

  • Fix preloaded apps so that they have the complete environment [Pablo Carranza Velez]

v0.0.17 - 2015-09-29

  • Updated bases image to board-specific, and all node versions to 0.10.40-slim [Pablo Carranza Velez]
  • Allow changing RPi config.txt with environment variables [Pablo Carranza Velez]
  • Allow special env vars with a callback which don't cause an app restart [Pablo and Praneeth]
  • Remove unused config.supervisorContainer in config.coffee [Praneeth]
  • Implement and use golang endpoint for getting IPs of the device, also fixes duplicate IP reporting in the JS implementation [Praneeth]
  • Refactor bootstrapping to run in background [Pablo Carranza Velez]
  • Run preloaded app images [Pablo Carranza Velez]
  • Add API endpoints for device reboot and shutdown [Pablo Carranza Velez]
  • Add /restart endpoint to restart container [Pablo Carranza Velez]
  • Add additional mount point for the host dbus on host_run/dbus [Praneeth]
  • Switch to golang 1.5.1 for compiling [Praneeth]
  • Allow /purge to be called with appId as string or number [Pablo Carranza Velez]
  • Fetch containerId from DB within lock [Pablo Carranza Velez]
  • Change update cycle to map by appId [Pablo Carranza Velez]
  • Allow updates to be forced via an env var or an API call [Pablo Carranza Velez]
  • Use lockfile to lock updates per app [Pablo Carranza Velez]

v0.0.16 - 2015-09-07

  • Disabled the TCP ping whilst the VPN is connected. [Praneeth]
  • Added TCP ping enable/disable endpoints. [Praneeth]
  • Added initial go supervisor, using it to purge the /data directory of apps. [Pablo Carranza Velez]
  • Mounted /lib/firmware into the user container. [Pablo Carranza Velez]
  • Fixed spaces in env vars for web terminal. [Petros]
  • Added missing return when no app id specified. [Pablo Carranza Velez]
  • Try to populate the docker cache before building. [Pagan Gazzard]

v0.0.15 - 2015-07-23

  • Make resolv.conf writable from a user container. [Praneeth]
  • Updated pubnub (3.7.13 doesn't seem to have the heartbeat unnecessarily)
  • Fixed an issue where an image would not be cleaned up if it was tagged in multiple repos. [Pagan Gazzard]
  • Use JOBS=MAX for npm install. [Pagan Gazzard]
  • Updated pinejs-client so that valid ssl certificates are enforced by default. [Pagan Gazzard]
  • 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 [Pagan Gazzard]

v0.0.14 - 2015-05-12

  • Clean up tmp files left behind by npm [Pagan Gazzard]
  • Fix an error where mixpanel events would have the wrong uuid set on first provision. [Pagan Gazzard]
  • Update knexjs to ~0.8.3, which uses lodash 3 and means it will be deduplicated (reducing image size and runtime memory usage) [Pagan Gazzard]
  • Stop caching config.json, avoids a race that could cause getting stuck repeatedly trying to register [Pagan Gazzard]

v0.0.13 - 2015-05-05

  • Bind mount /etc/resolv.conf as ro for application containers and supervisor [Praneeth]

v0.0.12 - 2015-04-15

  • Stopped displaying an error message when trying to start a container that is already started.
  • Improved error messages reported to the user in the case of finding an empty string.
  • Switched to using the dockerode pull progress mechanism.
  • Fixed trying to delete supervisor container when it reports an alternate tag instead of the primary tag.
  • Switched to using the i386-node image as a base for the i386-supervisor
  • Fixed reporting error objects to mixpanel.