From 420316ef6ed84ac305932d05ac2fe9b543f3d5be Mon Sep 17 00:00:00 2001 From: Daniel J Walsh Date: Thu, 2 Nov 2023 18:16:45 -0400 Subject: [PATCH] Podman push --help should reveal default compression When using the local client, we should display the compression algorithm. If the compression level is set, then show this also. Signed-off-by: Daniel J Walsh --- cmd/podman/images/push.go | 28 ++++++++++++++++++++++------ test/system/800-config.bats | 18 ++++++++++++++++++ 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/cmd/podman/images/push.go b/cmd/podman/images/push.go index 2cb721b2a7..6d22a61032 100644 --- a/cmd/podman/images/push.go +++ b/cmd/podman/images/push.go @@ -129,13 +129,13 @@ func pushFlags(cmd *cobra.Command) { flags.BoolVar(&pushOptions.TLSVerifyCLI, "tls-verify", true, "Require HTTPS and verify certificates when contacting registries") - compressionFormat := "compression-format" - flags.StringVar(&pushOptions.CompressionFormat, compressionFormat, "", "compression format to use") - _ = cmd.RegisterFlagCompletionFunc(compressionFormat, common.AutocompleteCompressionFormat) + compFormat := "compression-format" + flags.StringVar(&pushOptions.CompressionFormat, compFormat, compressionFormat(), "compression format to use") + _ = cmd.RegisterFlagCompletionFunc(compFormat, common.AutocompleteCompressionFormat) - compressionLevel := "compression-level" - flags.Int(compressionLevel, 0, "compression level to use") - _ = cmd.RegisterFlagCompletionFunc(compressionLevel, completion.AutocompleteNone) + compLevel := "compression-level" + flags.Int(compLevel, compressionLevel(), "compression level to use") + _ = cmd.RegisterFlagCompletionFunc(compLevel, completion.AutocompleteNone) encryptionKeysFlagName := "encryption-key" flags.StringSliceVar(&pushOptions.EncryptionKeys, encryptionKeysFlagName, nil, "Key with the encryption protocol to use to encrypt the image (e.g. jwe:/path/to/key.pem)") @@ -239,3 +239,19 @@ func imagePush(cmd *cobra.Command, args []string) error { return nil } + +func compressionFormat() string { + if registry.IsRemote() { + return "" + } + + return containerConfig.ContainersConfDefaultsRO.Engine.CompressionFormat +} + +func compressionLevel() int { + if registry.IsRemote() || containerConfig.ContainersConfDefaultsRO.Engine.CompressionLevel == nil { + return 0 + } + + return *containerConfig.ContainersConfDefaultsRO.Engine.CompressionLevel +} diff --git a/test/system/800-config.bats b/test/system/800-config.bats index 0a304569f8..db50a0dd50 100644 --- a/test/system/800-config.bats +++ b/test/system/800-config.bats @@ -249,4 +249,22 @@ EOF run_podman rm -f -t0 $cname } +@test "podman push CONTAINERS_CONF" { + skip_if_remote "containers.conf does not effect client side of --remote" + + CONTAINERS_CONF=/dev/null run_podman push --help + assert "$output" =~ "--compression-format string.*compression format to use \(default \"gzip\"\)" "containers.conf should set default to gzip" + assert "$output" !~ "compression level to use \(default" "containers.conf should not set default compressionlevel" + + conf_tmp="$PODMAN_TMPDIR/containers.conf" + cat >$conf_tmp <