Merge pull request #27193 from shiavm006/fix-secret-ls-format-docs

secrets: align 'secret ls' format docs and completion
This commit is contained in:
openshift-merge-bot[bot]
2025-10-02 19:40:20 +00:00
committed by GitHub
3 changed files with 35 additions and 11 deletions

View File

@ -46,8 +46,8 @@ func init() {
flags := lsCmd.Flags()
formatFlagName := "format"
flags.StringVar(&listFlag.format, formatFlagName, "{{range .}}{{.ID}}\t{{.Name}}\t{{.Driver}}\t{{.CreatedAt}}\t{{.UpdatedAt}}\n{{end -}}", "Format volume output using Go template")
_ = lsCmd.RegisterFlagCompletionFunc(formatFlagName, common.AutocompleteFormat(&entities.SecretInfoReport{}))
flags.StringVar(&listFlag.format, formatFlagName, "{{range .}}{{.ID}}\t{{.Name}}\t{{.Driver}}\t{{.CreatedAt}}\t{{.UpdatedAt}}\n{{end -}}", "Format secret output using Go template")
_ = lsCmd.RegisterFlagCompletionFunc(formatFlagName, common.AutocompleteFormat(&entities.SecretListReport{}))
filterFlagName := "filter"
flags.StringArrayVarP(&listFlag.filter, filterFlagName, "f", []string{}, "Filter secret output")

View File

@ -32,16 +32,11 @@ Valid placeholders for the Go template are listed below:
| **Placeholder** | **Description** |
| ------------------------ | ----------------------------------------------------------------- |
| .CreatedAt ... | When secret was created (relative timestamp, human-readable) |
| .CreatedAt | When secret was created (relative timestamp, human-readable) |
| .Driver | Driver name (string) |
| .ID | ID of secret |
| .SecretData | Secret Data (Displayed only with --showsecret option) |
| .Spec ... | Details of secret |
| .Spec.Driver ... | Driver info |
| .Spec.Driver.Name | Driver name (string) |
| .Spec.Driver.Options ... | Driver options (map of driver-specific options) |
| .Spec.Labels ... | Labels for this secret |
| .Spec.Name | Name of secret |
| .UpdatedAt ... | When secret was last updated (relative timestamp, human-readable) |
| .Name | Name of secret |
| .UpdatedAt | When secret was last updated (relative timestamp, human-readable) |
@@option noheading

View File

@ -325,6 +325,35 @@ var _ = Describe("Podman secret", func() {
Expect(list.OutputToStringArray()).To(HaveLen(2), list.OutputToString())
})
It("podman secret ls with valid format fields Driver/CreatedAt", func() {
secretFilePath := filepath.Join(podmanTest.TempDir, "secret")
err := os.WriteFile(secretFilePath, []byte("mysecret"), 0755)
Expect(err).ToNot(HaveOccurred())
podmanTest.PodmanExitCleanly("secret", "create", "fmt", secretFilePath)
// .Driver should be available on SecretListReport
list := podmanTest.PodmanExitCleanly("secret", "ls", "--format", "{{.Driver}}")
Expect(list.OutputToString()).ToNot(BeEmpty())
// .CreatedAt should be available and human-readable (e.g., "X ago")
list = podmanTest.PodmanExitCleanly("secret", "ls", "--format", "{{.CreatedAt}}")
Expect(list.OutputToString()).To(ContainSubstring("ago"))
})
It("podman secret ls with invalid Spec.* format should error", func() {
secretFilePath := filepath.Join(podmanTest.TempDir, "secret")
err := os.WriteFile(secretFilePath, []byte("mysecret"), 0755)
Expect(err).ToNot(HaveOccurred())
podmanTest.PodmanExitCleanly("secret", "create", "fmt2", secretFilePath)
bad := podmanTest.Podman([]string{"secret", "ls", "--format", "{{.Spec.Name}}"})
bad.WaitWithDefaultTimeout()
Expect(bad).To(Not(ExitCleanly()))
Expect(bad.ErrorToString()).To(ContainSubstring("can't evaluate field Spec"))
})
It("podman secret rm", func() {
secretFilePath := filepath.Join(podmanTest.TempDir, "secret")
err := os.WriteFile(secretFilePath, []byte("mysecret"), 0755)