* feat: Add `uc wg show` command to inspect a machine's uncloud wireguard network (draft / work in progress)
* Compile proto files with `make proto-mise`
* Fix lint errors
* Output peers in tabwriter table
* Lookup machine name for wireguard peer public key
* Add --machine flag to `uc wg show` to proxy call to specific machine
* Small refactor to move wg show logic out into a separate function
* 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>
* feat: Add `uc ps` command to list all containers in the cluster
* Fix indentation
* Improvements to the container state highlights code (use enum, better var naming)
* Add group/sort option by "health"
* Rename `uc ps --group-by` flag to `--sort`. Also, remove `--context` flag.
* Use huh.spinner with standard style/type
* Remove pointless TrimPrefix on container name
* Move machine lookup out of services loop
* Use more efficient `ListServiceContainers`
* Use consistent header other
* Use api.ProxyMachinesContext helper for context to query all machines for service containers
* Make errored MachineServiceContainer entries a warning, not return an error immediately, in `uc ps`
* Use lipgloss table instead of tabwriter for "uc ps" command
* Handle nil metadata in `uc ps` on container when cluster only has one machine
* fix: Store machine id on connection entries so it can be removed when machine is
* Add "GetContextOverrideOrCurrent" helper method to cli and use in `uc machine rm` to clean up connections
* Make `--context` flag a global option and remove duplication
* Remove unused dns showOptions struct
* First pass of refactoring "active context" determination and validation
* Undo some refactoring in cli.go to keep diff more focused
* feat: Interactive uc command to select preferred cluster connection
https://github.com/psviderski/uncloud/issues/125
* Simplify connection selection and reordering by using the index instead of a pointer
* Move connection reordering logic to a new SetDefaultConnection on context
* feat: Adding a "nearest.service.local" mode to internal DNS
* Pass listenAddr to internal DNS server (rather than calling into network.MachineIP)
Also adds an exact round-robin via "rr.{service}" mode. Not sure we want that over random or not, though.
* Remove the resolved count and rotating round-robin. "rr.name" mode is now the same as default with random shuffle.
* Add test on nearest internal DNS lookup
* Add docs on internal DNS order modes
* 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
* Set machine id in service container ENV
* Add machine id to clone of the container's env map to avoid exposing serialization format
* fix: panic on setting UNCLOUD_MACHINE_ID env var when Env is nil in the spec
---------
Co-authored-by: Pasha Sviderski <me@psviderski.name>