* Use new `/healthz` endpoint for checking API liveness
* Improved credential handling/retrying in failure scenarios
* Separate site (`vite`) logs with prefix and date, additionally this
method also disables the `vite` clearing of the screen
* Show all interfaces coder API is listening on (due to `0.0.0.0`)
* Improved shutdown procedure / interrupt handling
* fix: Fix ssh message/spinner in VSCode integrated terminal
The messages never show up in VSCode integrated terminal due to the
defer `fmt.Fprintf`. There could be a race in VSCode in handling the
terminal codes but ultimately, we can simplify our logic by just
stopping the spinner for the duration of the update.
* Avoid race in starting spinner after exit
The base ubuntu image lands the user as root, but the terraform tempalte
expected /home/coder to be used. This change adds a user with the same
name as the Coder users username and allows them to sudo.
The connection limit wasn't being applied to pubsub, which would
overload the server if a ton of logs were being published at once.
This should fix it, and improve scale a lot!
* feat: Add connection_timeout and troubleshooting_url to agent
This commit adds the connection timeout and troubleshooting url fields
to coder agents.
If an initial connection cannot be established within connection timeout
seconds, then the agent status will be marked as `"timeout"`.
The troubleshooting URL will be present, if configured in the Terraform
template, it can be presented to the user when the agent state is either
`"timeout"` or `"disconnected"`.
Fixes#4678
This feature is used by the coder agent to exchange a new token. By
protecting the SessionToken via mutex we ensure there are no data races
when accessing it.
Changes to terraform templates:
* Remove DNS (this can interfere with users running their own DNS
servers)
* Remove `lower()` restriction from hostnames so that it will show the
name set by the user, as-is (there is no restriction on upper case
letters in hostnames)
* Remove superfluous `trap` in entrypoints, this is already handled by
the init script
* Switch from `command` to `entrypoint` as the latter can support more
Docker images out-of-the-box
* Use empty page message on workspaces page
* Add prop for story
* AuditPage
* UsersPage
* Lint and format
* Fix tests
* Remove log
* Try to fix story
* Fix the right story
* Start on backend
* Hook up frontend
* Add to frontend test
* Add go test, wip
* Fix some test bugs
* Fix test
* Format
* Add to authorize.go
* copy user array into local variable
* Authorize route
* Log count error
* Authorize better
* Tweaks to authorization
* More authorization tweaks
* Make gen
* Fix test
Co-authored-by: Garrett <garrett@coder.com>
* chore: Separate the provisionerd server into it's own package
This code should be thoroughly tested now that we understand the abstraction.
I separated it to make our lives a bit easier for external provisioner daemons
as well!
* Add tests
* Add workspace builds
* Add test for workspace resources