From b80dc524b1c181f7c2f0b910c964cb42bb250d87 Mon Sep 17 00:00:00 2001 From: knQzx <75641500+knQzx@users.noreply.github.com> Date: Sun, 5 Apr 2026 00:59:02 +0200 Subject: [PATCH] show secrets and configs in service inspect --pretty Signed-off-by: knQzx <75641500+knQzx@users.noreply.github.com> --- cli/command/service/formatter.go | 16 +++++- cli/command/service/inspect_test.go | 54 +++++++++++++++++++ .../testdata/service-inspect-pretty.golden | 8 +++ 3 files changed, 76 insertions(+), 2 deletions(-) diff --git a/cli/command/service/formatter.go b/cli/command/service/formatter.go index 1ec5263debe8..4ce02eece131 100644 --- a/cli/command/service/formatter.go +++ b/cli/command/service/formatter.go @@ -129,14 +129,26 @@ Mounts: {{- if .Configs}} Configs: {{- range $config := .Configs }} - Target: {{$config.File.Name}} + Target: {{ if $config.File }}{{$config.File.Name}}{{ else }}[runtime]{{ end }} Source: {{$config.ConfigName}} + ID: {{$config.ConfigID}} +{{- if $config.File }} + UID: {{$config.File.UID}} + GID: {{$config.File.GID}} + Mode: {{$config.File.Mode}} +{{- end }} {{- end }}{{ end }} {{- if .Secrets }} Secrets: {{- range $secret := .Secrets }} - Target: {{$secret.File.Name}} + Target: {{ if $secret.File }}{{$secret.File.Name}}{{ else }}[runtime]{{ end }} Source: {{$secret.SecretName}} + ID: {{$secret.SecretID}} +{{- if $secret.File }} + UID: {{$secret.File.UID}} + GID: {{$secret.File.GID}} + Mode: {{$secret.File.Mode}} +{{- end }} {{- end }}{{ end }} {{- if .HasLogDriver }} Log Driver: diff --git a/cli/command/service/inspect_test.go b/cli/command/service/inspect_test.go index 24981ed2f4a1..ff885b84aae7 100644 --- a/cli/command/service/inspect_test.go +++ b/cli/command/service/inspect_test.go @@ -193,4 +193,58 @@ func TestPrettyPrintWithConfigsAndSecrets(t *testing.T) { assert.Check(t, is.Contains(s, "Configs:"), "Pretty print missing configs") assert.Check(t, is.Contains(s, "Secrets:"), "Pretty print missing secrets") assert.Check(t, is.Contains(s, "Healthcheck:"), "Pretty print missing healthcheck") + assert.Check(t, is.Contains(s, "configtest.conf"), "Pretty print missing config name") + assert.Check(t, is.Contains(s, "mtc3i44r1awdoziy2iceg73z8"), "Pretty print missing config ID") + assert.Check(t, is.Contains(s, "secrettest.conf"), "Pretty print missing secret name") + assert.Check(t, is.Contains(s, "3hv39ehbbb4hdozo7spod9ftn"), "Pretty print missing secret ID") +} + +func TestPrettyPrintWithRuntimeConfig(t *testing.T) { + b := new(bytes.Buffer) + endpointSpec := &swarm.EndpointSpec{Mode: "vip"} + two := uint64(2) + + s := swarm.Service{ + ID: "runtimeconfigservice", + Spec: swarm.ServiceSpec{ + Annotations: swarm.Annotations{Name: "runtime_svc"}, + TaskTemplate: swarm.TaskSpec{ + ContainerSpec: &swarm.ContainerSpec{ + Image: "foo/bar:latest", + Configs: []*swarm.ConfigReference{ + { + ConfigID: "abc123", + ConfigName: "my-runtime-config", + Runtime: &swarm.ConfigReferenceRuntimeTarget{}, + }, + }, + }, + }, + Mode: swarm.ServiceMode{ + Replicated: &swarm.ReplicatedService{Replicas: &two}, + }, + EndpointSpec: endpointSpec, + }, + Endpoint: swarm.Endpoint{Spec: *endpointSpec}, + } + + ctx := formatter.Context{ + Output: b, + Format: newFormat("pretty"), + } + + err := inspectFormatWrite(ctx, []string{"runtimeconfigservice"}, + func(ref string) (any, []byte, error) { + return s, nil, nil + }, + func(ref string) (any, []byte, error) { + return network.Summary{}, nil, nil + }, + ) + assert.NilError(t, err) + output := b.String() + assert.Check(t, is.Contains(output, "Configs:"), "Pretty print missing configs") + assert.Check(t, is.Contains(output, "[runtime]"), "Pretty print should show [runtime] for configs without File target") + assert.Check(t, is.Contains(output, "my-runtime-config"), "Pretty print missing runtime config name") + assert.Check(t, is.Contains(output, "abc123"), "Pretty print missing runtime config ID") } diff --git a/cli/command/service/testdata/service-inspect-pretty.golden b/cli/command/service/testdata/service-inspect-pretty.golden index f2dce2693b89..d6ef122bf655 100644 --- a/cli/command/service/testdata/service-inspect-pretty.golden +++ b/cli/command/service/testdata/service-inspect-pretty.golden @@ -11,9 +11,17 @@ ContainerSpec: Configs: Target: /configtest.conf Source: configtest.conf + ID: mtc3i44r1awdoziy2iceg73z8 + UID: + GID: + Mode: ---------- Secrets: Target: /secrettest.conf Source: secrettest.conf + ID: 3hv39ehbbb4hdozo7spod9ftn + UID: + GID: + Mode: ---------- Log Driver: Name: driver LogOpts: