From e9ae9f788bf2b7b0227082a1e223f46da0ec708a Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Thu, 24 Oct 2024 18:28:35 +0200 Subject: [PATCH] docker inspect: add support for swarm configs The docker inspect command did not inspect configs. This patch adds support for it, and while at it, also sorts the list of objects in runInspect. Before this patch: docker config create myconfig ./codecov.yml danpeyh8qzb30vgdj9fr665l1 docker inspect --format='{{.ID}}' myconfig [] Error: No such object: myconfig docker inspect --format='{{.ID}}' --type=config myconfig "config" is not a valid value for --type With this patch: docker inspect --format='{{.ID}}' myconfig danpeyh8qzb30vgdj9fr665l1 docker inspect --format='{{.ID}}' --type=config myconfig danpeyh8qzb30vgdj9fr665l1 Signed-off-by: Sebastiaan van Stijn --- cli/command/system/inspect.go | 13 ++++++++++++- docs/reference/commandline/inspect.md | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cli/command/system/inspect.go b/cli/command/system/inspect.go index d4aed789b1..e0133ba7a4 100644 --- a/cli/command/system/inspect.go +++ b/cli/command/system/inspect.go @@ -51,7 +51,7 @@ func NewInspectCommand(dockerCli command.Cli) *cobra.Command { func runInspect(ctx context.Context, dockerCli command.Cli, opts inspectOptions) error { var elementSearcher inspect.GetRefFunc switch opts.inspectType { - case "", "container", "image", "node", "network", "service", "volume", "task", "plugin", "secret": + case "", "config", "container", "image", "network", "node", "plugin", "secret", "service", "task", "volume": elementSearcher = inspectAll(ctx, dockerCli, opts.size, opts.inspectType) default: return errors.Errorf("%q is not a valid value for --type", opts.inspectType) @@ -114,6 +114,12 @@ func inspectSecret(ctx context.Context, dockerCli command.Cli) inspect.GetRefFun } } +func inspectConfig(ctx context.Context, dockerCLI command.Cli) inspect.GetRefFunc { + return func(ref string) (any, []byte, error) { + return dockerCLI.Client().ConfigInspectWithRaw(ctx, ref) + } +} + func inspectAll(ctx context.Context, dockerCli command.Cli, getSize bool, typeConstraint string) inspect.GetRefFunc { inspectAutodetect := []struct { objectType string @@ -162,6 +168,11 @@ func inspectAll(ctx context.Context, dockerCli command.Cli, getSize bool, typeCo isSwarmObject: true, objectInspector: inspectSecret(ctx, dockerCli), }, + { + objectType: "config", + isSwarmObject: true, + objectInspector: inspectConfig(ctx, dockerCli), + }, } // isSwarmManager does an Info API call to verify that the daemon is diff --git a/docs/reference/commandline/inspect.md b/docs/reference/commandline/inspect.md index 174c440e6c..b566c5ae4d 100644 --- a/docs/reference/commandline/inspect.md +++ b/docs/reference/commandline/inspect.md @@ -29,7 +29,7 @@ all the details of the format. ### Specify target type (--type) -`--type container|image|node|network|secret|service|volume|task|plugin` +`--type config|container|image|node|network|secret|service|volume|task|plugin` The `docker inspect` command matches any type of object by either ID or name. In some cases multiple type of objects (for example, a container and a volume)