* feat: support stdin_open and tty
This can be useful to leave a container running without specifying a
command like `sleep`, and probably in other situations as well.
Signed-off-by: Miek Gieben <miek@miek.nl>
* Complete full spec test case
Signed-off-by: Miek Gieben <miek@miek.nl>
* fix container log streaming for containers with TTY
---------
Signed-off-by: Miek Gieben <miek@miek.nl>
Co-authored-by: Pasha Sviderski <me@psviderski.name>
* Add server side of journal logs
This add the server side and grpc methods to get a journal logs from a
machine. It repurposes ServiceLogEntry for these logs to keep the
changes somewhat to a minimum. And it lets us re-use the merging of the
various logs. In the protobufs ContainerLog has been renamed to just Log
and LogEntry, as these are now also used for journal logs.
It does api.LogOptions in more places to reduce the various logOpts that
were used.
It does not yet plumb it through to the uc client, that needs a follow
up pr. Following logs is also not yet implemented.
Signed-off-by: Miek Gieben <miek@miek.nl>
* Fix test too
Signed-off-by: Miek Gieben <miek@miek.nl>
* remove entire comment
Signed-off-by: Miek Gieben <miek@miek.nl>
* Implement the follow option, untested mind you
Signed-off-by: Miek Gieben <miek@miek.nl>
* update debug line
Signed-off-by: Miek Gieben <miek@miek.nl>
* internal/jounal: First batch of PR comments
Signed-off-by: Miek Gieben <miek@miek.nl>
* internal/journal: code review comments
Signed-off-by: Miek Gieben <miek@miek.nl>
* Manually apply suggestion
Signed-off-by: Miek Gieben <miek@miek.nl>
* apply comment manually
Signed-off-by: Miek Gieben <miek@miek.nl>
* internal/journal: add unit test
Signed-off-by: Miek Gieben <miek@miek.nl>
* Use testify
Signed-off-by: Miek Gieben <miek@miek.nl>
* -amFix scanner.Err checking
Signed-off-by: Miek Gieben <miek@miek.nl>
* Implement code review comments
Signed-off-by: Miek Gieben <miek@miek.nl>
---------
Signed-off-by: Miek Gieben <miek@miek.nl>
This runs:
```
go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix ./...
```
over the codebase, as this is using go 1.26, it can also use the new
new() functionallity so AsPtr and boolPtr is are needed anymore.
Signed-off-by: Miek Gieben <miek@miek.nl>
* feat: Add `uc service start/stop` commands
* Add nolint:dupl for service start/stop commands
Co-authored-by: Pasha Sviderski <me@psviderski.name>
* Add --signal and --timeout options to uc service stop
* Check whether service stop --timeout flag was used to set options properly
---------
Co-authored-by: Pasha Sviderski <me@psviderski.name>
* chore: fix landing logo shadow
* feat: implement service logs command with colored output and strict ordering
* revert Makefile
* fix after rebase
* move logs command under services with root shortcut
* simplify server options for streaming logs and CLI flags
* refactor ContainerLogs grpc server
* update --tail flag
* minor docker.proto
* refactor client ServiceLogs and ContainerLogs
* move ProxyMachinesContext from api to client pkg
* minor refactor proto Stream
* add api/logs
* implement LogMerger
* fix LogMerger to correctly use semaphore
* increate inflish entries to 100 per stream
* send heartbeats
* refactor ContainerLogs to synchronise Send of entries and heartbeats to the steram
* minor logmerege
* remove ContainerName form ServiceLogEntryMetadata
* refactor ContainerLogs into docker.Service
* detect stalled container logs streams
* update logmerger tests
* fix comment in test
* refactor LogMerger with options
* uc logs: format one or multiple services
* make LogMerger emit heartbeats, emit entries <= watermark, rewrite tests
* update uc logs with new LogMerger
* go mod tidy
* fix after merge
---------
Co-authored-by: Evgenii Orlov <evgenii.orlov@semrush.com>
* feat: support compose.yaml `service.gpus` and `service.deploy.resources.reservations.devices` DeviceRequests to Docker container
* Fix lint error
* Adjust test comments to work with linter
* Rename DeviceRequests to DeviceReservations to be more consistent with compose nomenclature
* Device reservation changes are immutable and should trigger a container recreate rather than update