Commit Graph

4500 Commits

Author SHA1 Message Date
Felipe Lalanne
4d74505087 Fix wait-for-it script to work with external signals
The wait-for-it script used during tests would setup a timer
that would send SIGUSR2 to the parent process after the timer ends.
Since node was ignoring additional signals, the timer ending would have
no effect after the node process had replaced the start script. However
when node has pid != 1, SIGUSR2 default behavior is to terminate the
process, meaning the tests would fail after 30 seconds.

The script is now updated so the timer is killed once the services are
ready for the tests.
2023-01-31 10:43:19 -03:00
Felipe Lalanne
6683bca07d Add SIGTERM listener on application start
As reported by issue , the supervisor was not correctly reacting to
`SIGTERM` sent by the engine when terminating the process (for instance
before a reboot). This would lead to the supervisor requiring an
additional 10 seconds to terminate (after which the engine will send a
`SIGKILL`).

The reason for this is explained by the following info coming from Node

> Node.js was not designed to run as PID 1 which leads to unexpected behaviour when running inside of Docker. For example, a Node.js process running as PID 1 will not respond to `SIGINT` (`CTRL-C`) and similar signals. [reference](https://github.com/nodejs/docker-node/blob/main/docs/BestPractices.md#handling-kernel-signals)

On internal testing, it was discovered that simply adding a listener for
the signal on the Node process was enough to handle the signal, even
when the process runs as PID 1.

This adds a listener for `SIGTERM` before starting the supervisor main
loop.

Closes: 
Change-type: patch
2023-01-31 10:43:19 -03:00
Balena CI
f663e38697
v14.6.3 2023-01-30 18:59:40 +00:00
Christina Wang
17a85973d8
Merge pull request from balena-os/update-deploy-to-balena-action-v0.26
Update deploy-to-balena action to 0.26.0
2023-01-30 10:58:10 -08:00
Christina Ying Wang
2bd2879cc5 Update deploy-to-balena action to 0.26.0
Change-type: patch
Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-30 12:27:53 -06:00
Balena CI
c833d016ff
v14.6.2 2023-01-26 20:58:35 +00:00
Christina Wang
5bf4ab297e
Merge pull request from balena-os/vipul/supervisor-docs
patch: Migrate Supervisor Debugging docs from masterclass
2023-01-26 12:57:19 -08:00
Christina Ying Wang
6d4f7cb32c Fix grammar and simplify some phrases
Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-25 13:45:15 -08:00
Vipul Gupta (@vipulgupta2048)
a9045d5eda patch: Migrate Supervisor Debugging docs from masterclass
Signed-off-by: Vipul Gupta (@vipulgupta2048) <vipul@balena.io>
2023-01-25 13:45:15 -08:00
Balena CI
f94f06c7ff
v14.6.1 2023-01-24 20:34:01 +00:00
Balena CI
cca1bba113
Merge pull request from balena-os/flowzone-allow-external-custom-workflows
Remove custom action restriction for external contributors
2023-01-24 22:32:37 +02:00
Christina Ying Wang
b945142caa Remove custom action restriction for external contributors
Change-type: patch
Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-24 10:58:41 -08:00
Balena CI
e715498ee7
v14.6.0 2023-01-20 20:51:25 +00:00
Balena CI
afc1372655
Merge pull request from balena-os/colon-config-vars
Allow using colon character in config vars
2023-01-20 22:49:53 +02:00
Felipe Lalanne
67d1503b54 Allow using colon character in config vars
The Raspberry Pi config.txt file defines the use of colon to configure
variables of the same name in different ports, for instance on those
devices with two hdmi ports. This syntax was previously not supported by
the supervisor. This change relaxes the syntax validation on config vars
to allow the use of the colon character.

Relates-to: , 
Change-type: minor
2023-01-20 15:48:32 -03:00
Balena CI
072a9f6755
v14.5.2 2023-01-19 19:40:04 +00:00
Balena CI
74ce15d4ff
Merge pull request from balena-os/kyle/external-contributors
Allow external contribtions to execute checks
2023-01-19 21:38:19 +02:00
Kyle Harding
b26d2e0e7c
Allow external contribtions to execute checks
Change-type: patch
Signed-off-by: Kyle Harding <kyle@balena.io>
2023-01-19 12:17:48 -05:00
Balena CI
cf7a865647
v14.5.1 2023-01-18 11:58:56 +00:00
Balena CI
7313c114c5
Merge pull request from balena-os/fix-got-extend
Correctly use the extended got instance for target-state
2023-01-18 13:57:29 +02:00
Pagan Gazzard
63cc4ad58c Correctly use the extended got instance for target-state
In practice this fixes the missing user-agent

Change-type: patch
2023-01-18 11:40:06 +00:00
Balena CI
6c7193e0c1
v14.5.0 2023-01-17 19:28:46 +00:00
Christina Wang
3142196202
Merge pull request from balena-os/separate-route-and-action-tests
Separate route and action tests for Supervisor v1 API
2023-01-17 11:27:20 -08:00
Christina Ying Wang
e1bacda580 Update host-config, route, and action tests for host config endpoints
Change-type: minor
Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-11 15:48:13 -08:00
Christina Ying Wang
250684d651 Use actions & write tests for GET /v1/device
Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-11 15:48:13 -08:00
Christina Ying Wang
72c683d5ff Use actions & write tests for GET /v1/apps/:appId
Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-11 15:48:13 -08:00
Christina Ying Wang
198d9ad638 Write update action and tests, remove isReadyForUpdate check
See: 
Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-11 15:48:13 -08:00
Christina Ying Wang
85392f2a85 Move reboot/shutdown to actions and related tests to integration
Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-11 15:48:13 -08:00
Christina Ying Wang
c6cf6a0136 Use executeServiceAction for v1/v2 service action endpoints
This includes:
- /v1/apps/:appId/(stop|start)
- /v2/applications/:appId/(restart|stop|start)-service

Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-09 18:20:24 -08:00
Christina Ying Wang
fcd28591c6 Add tests for doPurge action and v1/v2 app purge routes
Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-09 16:25:27 -08:00
Christina Ying Wang
a24d5acf7f Add tests for doRestart action and v1/v2 app restart routes
Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-09 16:25:27 -08:00
Christina Ying Wang
d6298b2643 Use regenerateKey action for POST /v1/regenerate-api-key
This also adds a 500 response with the old key if the API key
refresh was unsuccessful. Previously, if the key refresh was
unsuccessful, this would result in an UnhandledPromiseRejection.
This is a new interface.

Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-09 16:25:27 -08:00
Christina Ying Wang
c7db3189ad Use identify action for POST /v1/blink
Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-09 16:01:43 -08:00
Christina Ying Wang
e351ed9803 Use runHealthchecks action for GET /v1/healthy
Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-09 16:01:43 -08:00
Balena CI
62840c6bec
v14.4.10 2023-01-04 20:25:56 +00:00
Balena CI
0c2135355a
Merge pull request from balena-os/docs-nobody-lockfile-uid-for-supervisor-locks
Docs: clarify that Supervisor creates lockfiles as nobody UID
2023-01-04 22:24:15 +02:00
Christina Ying Wang
3a824448fa Docs: clarify that Supervisor creates lockfiles as nobody UID
Change-type: patch
Signed-off-by: Christina Ying Wang <christina@balena.io>
2023-01-04 11:24:20 -08:00
Balena CI
e0005c8307
v14.4.9 2022-12-19 14:26:00 +00:00
Page-
7438d30eba
Merge pull request from balena-os/got
Use `got` for fetching the target state in order to have brotli support
2022-12-19 14:24:33 +00:00
Balena CI
062078ab60
v14.4.8 2022-12-15 22:29:20 +00:00
Balena CI
f155672540
Merge pull request from balena-os/journalctl-persistent-logs
Fix journalctl to work with persistent logs
2022-12-15 17:27:42 -05:00
Felipe Lalanne
55594274f7 Fix journalctl to work with persistent logs
v14.4.5 introduced a new way to retrieve the host logs by symlinking the
log directories into the host /run/log/journal and using a local copy of
the journalctl binary instead of chrooting into the host. This failed to
account for the location of persistent logs when that option is turned
on (/var/log/journal instead of /run/log/journal). This fixes the checks
consider this case and also makes sure to remove the original symlink to
avoid having nested links `/run/log/journal/journal/journal`, which was a
bug in the previous implementation.

Change-type: patch
2022-12-15 19:01:44 -03:00
Pagan Gazzard
fd135214fe Use got for fetching the target state in order to have brotli support
Change-type: patch
2022-12-15 21:15:11 +00:00
Balena CI
ac3812aa9f
v14.4.7 2022-12-15 20:39:49 +00:00
Balena CI
a9d920c4c7
Merge pull request from balena-os/clarify-api-docs-for-api-key-regenerate-endpoint
patch: Update API.md
2022-12-15 15:38:03 -05:00
Christina Wang
24e5996b56 Update API.md
Clarify that only containers on a single device will be restarted following API key refresh,
not the whole fleet. Each device has its own distinct API key.

Change-type: patch
Signed-off-by: Christina Ying Wang <christina@balena.io>
2022-12-13 19:18:33 -08:00
Balena CI
a482174aa0
v14.4.6 2022-12-08 18:39:59 +00:00
Christina Wang
577fec7ef6
Merge pull request from balena-os/host-config
Make readFromBoot behave more like Node readFile
2022-12-08 10:38:27 -08:00
Balena CI
cb72b8337b
v14.4.5 2022-12-07 19:29:25 +00:00
Felipe Lalanne
5c9b896c82
Merge pull request from balena-os/local-journalctl
Stop using host journalctl
2022-12-07 16:28:02 -03:00