stateful deployments: fix missing prefix search in claim list CLI (#25297)

This commit is contained in:
Piotr Kazmierczak
2025-03-06 11:23:00 +01:00
committed by GitHub
parent 69c2ed55d5
commit 29c7b7ca44
2 changed files with 35 additions and 9 deletions

View File

@@ -30,7 +30,7 @@ type VolumeClaimListCommand struct {
func (c *VolumeClaimListCommand) Help() string { func (c *VolumeClaimListCommand) Help() string {
helpText := ` helpText := `
Usage: nomad volume claim list [options] Usage: nomad volume claim list [options] [claim_id]
volume claim list is used to list existing host volume claims. volume claim list is used to list existing host volume claims.
@@ -98,9 +98,10 @@ func (c *VolumeClaimListCommand) Run(args []string) int {
return 1 return 1
} }
// Check that we got no arguments // Check that we either got no arguments or exactly one
if len(flags.Args()) != 0 { args = flags.Args()
c.Ui.Error("This command takes no arguments") if len(args) > 1 {
c.Ui.Error("This command takes either no arguments or one: <id>")
c.Ui.Error(commandErrorText(c)) c.Ui.Error(commandErrorText(c))
return 1 return 1
} }
@@ -118,11 +119,20 @@ func (c *VolumeClaimListCommand) Run(args []string) int {
return 1 return 1
} }
claims, _, err := client.TaskGroupHostVolumeClaims().List(&api.TaskGroupHostVolumeClaimsListRequest{ id := ""
JobID: c.job, if len(args) == 1 {
TaskGroup: c.taskGroup, id = args[0]
VolumeName: c.volumeName, }
}, nil)
claims, _, err := client.TaskGroupHostVolumeClaims().List(
&api.TaskGroupHostVolumeClaimsListRequest{
JobID: c.job,
TaskGroup: c.taskGroup,
VolumeName: c.volumeName,
},
&api.QueryOptions{
Prefix: id,
})
if err != nil { if err != nil {
c.Ui.Error(fmt.Sprintf("Error listing task group host volume claims: %s", err)) c.Ui.Error(fmt.Sprintf("Error listing task group host volume claims: %s", err))
return 1 return 1

View File

@@ -127,4 +127,20 @@ func TestVolumeClaimListCommand_Run(t *testing.T) {
} }
ui.OutputWriter.Reset() ui.OutputWriter.Reset()
// Prefix list
must.Zero(t, cmd.Run([]string{
"-address=" + url,
"-token=" + token.SecretID,
"-verbose",
existingClaims[0].ID[0:2],
}))
out = ui.OutputWriter.String()
must.StrContains(t, out, existingClaims[0].ID)
for _, id := range []string{existingClaims[1].ID, existingClaims[2].ID, existingClaims[3].ID, existingClaims[4].ID} {
must.StrNotContains(t, out, id, must.Sprintf("did not expect to find %s in %s", id, out))
}
ui.OutputWriter.Reset()
} }