diff --git a/internal/kms/kes.go b/internal/kms/kes.go index 81ed1e4c2..fab5e3cbc 100644 --- a/internal/kms/kes.go +++ b/internal/kms/kes.go @@ -172,7 +172,11 @@ var _ KMS = (*kesClient)(nil) // compiler check // Stat returns the current KES status containing a // list of KES endpoints and the default key ID. func (c *kesClient) Stat(ctx context.Context) (Status, error) { - if _, err := c.client.Version(ctx); err != nil { + c.lock.RLock() + defer c.lock.RUnlock() + + st, err := c.client.Status(ctx) + if err != nil { return Status{}, err } endpoints := make([]string, len(c.client.Endpoints)) @@ -181,6 +185,7 @@ func (c *kesClient) Stat(ctx context.Context) (Status, error) { Name: "KES", Endpoints: endpoints, DefaultKey: c.defaultKeyID, + Details: st, }, nil } diff --git a/internal/kms/kms.go b/internal/kms/kms.go index a2efd64d6..71d220b5f 100644 --- a/internal/kms/kms.go +++ b/internal/kms/kms.go @@ -72,6 +72,11 @@ type Status struct { // is specified. It is empty if the KMS does not support // a default key. DefaultKey string + + // Details provides more details about the KMS endpoint status. + // including uptime, version and available CPUs. + // Could be more in future. + Details kes.State } // DEK is a data encryption key. It consists of a