mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-26 09:01:17 +02:00
This returns list of all the services registered, with their current status, past events, health state, etc. New CLI is `osctl service [<id>]`: without `<id>` it prints list of all the services, with specific `<id>` it provides details for a service. I decided to create "parallel" data structures in protobuf as Go structures don't map nicely onto what protoc generates: pointers vs. values, additional fields like mutexes, etc. Probably there's a better approach, I'm open for it. For CLI, I tried to keep CLI stuff in `cmd/` package, and I also created simple wrapper to remove duplicated code which sets up client for each command. Examples: ``` $ osctl service SERVICE STATE HEALTH LAST CHANGE LAST EVENT containerd Running OK 21s ago Health check successful kubeadm Running ? 2s ago Started task kubeadm (PID 280) for container kubeadm kubelet Running ? 0s ago Started task kubelet (PID 383) for container kubelet ntpd Running ? 14s ago Started task ntpd (PID 129) for container ntpd osd Running ? 14s ago Started task osd (PID 126) for container osd proxyd Waiting ? 14s ago Waiting for conditions trustd Running ? 14s ago Started task trustd (PID 125) for container trustd udevd Running ? 14s ago Started task udevd (PID 130) for container udevd ``` ``` $ osctl service proxyd ID proxyd STATE Running HEALTH ? EVENTS [Preparing]: Running pre state (22s ago) [Waiting]: Waiting for conditions (22s ago) [Preparing]: Creating service runner (6s ago) [Running]: Started task proxyd (PID 461) for container proxyd (6s ago) ``` Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>