From ebde5d1563bc4c34341cee0d46396285681751f3 Mon Sep 17 00:00:00 2001 From: Volodymyr Pankin Date: Sat, 20 Sep 2025 23:11:32 +0200 Subject: [PATCH] cmd: add auto completion for network create --interface-name Fixes: #27113 Signed-off-by: Volodymyr Pankin --- cmd/podman/common/completion.go | 15 +++++++++++++++ cmd/podman/networks/create.go | 2 +- test/system/600-completion.bats | 8 ++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/cmd/podman/common/completion.go b/cmd/podman/common/completion.go index ad2f6e5437..bcfc4d5736 100644 --- a/cmd/podman/common/completion.go +++ b/cmd/podman/common/completion.go @@ -4,6 +4,7 @@ import ( "bufio" "fmt" "io/fs" + "net" "os" "path" "path/filepath" @@ -1880,6 +1881,20 @@ func AutocompleteNetworkFilters(cmd *cobra.Command, args []string, toComplete st return completeKeyValues(toComplete, kv) } +// AutocompleteNetworkInterfaceNames - Autocomplete network create --interface-name options. +func AutocompleteNetworkInterfaceNames(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + interfaces, err := net.Interfaces() + if err != nil { + cobra.CompErrorln(err.Error()) + return nil, cobra.ShellCompDirectiveDefault + } + interfaceNames := make([]string, 0, len(interfaces)) + for _, iface := range interfaces { + interfaceNames = append(interfaceNames, iface.Name) + } + return interfaceNames, cobra.ShellCompDirectiveNoFileComp +} + // AutocompleteVolumeFilters - Autocomplete volume ls --filter options. func AutocompleteVolumeFilters(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { local := func(_ string) ([]string, cobra.ShellCompDirective) { diff --git a/cmd/podman/networks/create.go b/cmd/podman/networks/create.go index ef49c872c2..b3271722cf 100644 --- a/cmd/podman/networks/create.go +++ b/cmd/podman/networks/create.go @@ -85,7 +85,7 @@ func networkCreateFlags(cmd *cobra.Command) { interfaceFlagName := "interface-name" flags.StringVar(&networkCreateOptions.InterfaceName, interfaceFlagName, "", "interface name which is used by the driver") - _ = cmd.RegisterFlagCompletionFunc(interfaceFlagName, completion.AutocompleteNone) + _ = cmd.RegisterFlagCompletionFunc(interfaceFlagName, common.AutocompleteNetworkInterfaceNames) flags.BoolVar(&networkCreateOptions.DisableDNS, "disable-dns", false, "disable dns plugin") diff --git a/test/system/600-completion.bats b/test/system/600-completion.bats index 53a46fbe61..0afc166078 100644 --- a/test/system/600-completion.bats +++ b/test/system/600-completion.bats @@ -422,3 +422,11 @@ function _check_no_suggestions() { _check_completion_end NoFileComp } + +@test "podman network create --interface-name" { + run_completion network create --interface-name l + + assert "$output" =~ '.*lo.*' "Loopback interface should be present by default" + + _check_completion_end NoFileComp +}