Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple nomad cli commands fail if there are multiple prefix matches #23236

Closed
henrikjohansen opened this issue Jun 6, 2024 · 6 comments · Fixed by #23502
Closed

Multiple nomad cli commands fail if there are multiple prefix matches #23236

henrikjohansen opened this issue Jun 6, 2024 · 6 comments · Fixed by #23502
Assignees
Labels
hcc/jira stage/accepted Confirmed, and intend to work on. No timeline committment though. theme/cli type/bug
Milestone

Comments

@henrikjohansen
Copy link

Nomad version

Nomad v1.7.8 (but 1.6.x had the same issues)

Issue

Multiple commands in the CLI fail when there are multiple prefixes - so far I have seen this with :

  • nomad quota status
  • nomad quota inspect
  • nomad service info
  • nomad volume deregister

.... but I suspect that there may be others.

Reproduction steps

Create a bunch of similarly named quotas / volumes / services and use the above mentioned commands.

Expected Result

The commands should work without giving a "Prefix matched multiple" error

Actual Result

The commands fail with a "Prefix matched multiple" error

@tgross
Copy link
Member

tgross commented Jun 6, 2024

@henrikjohansen can you clarify what you steps you're taking here? That is, suppose we have two quotas example1 and example2. If you nomad quota status example, you should get a "prefix matched multiple" error, because there's no way for Nomad to disambiguate these two.

@henrikjohansen
Copy link
Author

henrikjohansen commented Jun 6, 2024

@tgross ... an example with my v1.8.0 test cluster :

$ nomad quota list
Name           Description
default-quota  Limit the shared default namespace
namespace      Limit the shared default namespace
namespace-1    Limit the shared default namespace
namespace-2    Limit the shared default namespace

Now, looking at the namespace quota fails with :

$ nomad quota status namespace
Prefix matched multiple quotas

Name         Description
namespace    Limit the shared default namespace
namespace-1  Limit the shared default namespace
namespace-2  Limit the shared default namespace
$ nomad quota inspect namespace
Prefix matched multiple quotas

Name         Description
namespace    Limit the shared default namespace
namespace-1  Limit the shared default namespace
namespace-2  Limit the shared default namespace

@henrikjohansen
Copy link
Author

As I mentioned other commands have similar issues :

nomad service info seems to be just ... broken (it always gives me an error regardless of how specific I am) :

$ nomad service list | grep liverpro 
liverpro-core             []
$ nomad service info liverpro-core   
Prefix matched multiple services

Service Name              Tags
[... REMOVED ...]

nomad volume deregister shows the same behavior as nomad quota status/inspect demonstrated above - if you have volume, volume-1 and volume-2 it will fail on volume with "Prefix matched multiple" ...

@tgross
Copy link
Member

tgross commented Jun 6, 2024

Ok thanks @henrikjohansen. So the problem is when there is an exact match in addition to the multiple prefix matches. That issue was previously reported with CSI volumes #17132, but it looks like it's pervasive.

@tgross tgross added stage/accepted Confirmed, and intend to work on. No timeline committment though. and removed stage/waiting-reply labels Jun 6, 2024
@henrikjohansen
Copy link
Author

I just stumbled across #13920 so it might as well be mentioned here.

@tgross
Copy link
Member

tgross commented Jul 3, 2024

PR in progress here: #23502

@tgross tgross added this to the 1.8.2 milestone Jul 3, 2024
tgross added a commit that referenced this issue Jul 8, 2024
Several commands that inspect objects where the names are user-controlled share
a bug where the user cannot inspect the object if it has a name that is an exact
prefix of the name of another object (in the same namespace, where
applicable). For example, the object "test" can't be inspected if there's an
object with the name "testing".

Copy existing logic we have for jobs, node pools, etc. to the impacted commands:

* `plugin status`
* `quota inspect`
* `quota status`
* `scaling policy info`
* `service info`
* `volume deregister`
* `volume detach`
* `volume status`

If we get multiple objects for the prefix query, we check if any of them are an
exact match and use that object instead of returning an error. Where possible
because the prefix query signatures are the same, use a generic function that
can be shared across multiple commands.

Fixes: #13920
Fixes: #17132
Fixes: #23236
Ref: https://hashicorp.atlassian.net/browse/NET-10054
Ref: https://hashicorp.atlassian.net/browse/NET-10055
@tgross tgross closed this as completed in b09c114 Jul 10, 2024
@github-project-automation github-project-automation bot moved this from In Progress to Done in Nomad - Community Issues Triage Jul 10, 2024
@github-project-automation github-project-automation bot moved this from In Progress to Done in Nomad - Community Issues Triage Jul 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
hcc/jira stage/accepted Confirmed, and intend to work on. No timeline committment though. theme/cli type/bug
Projects
Development

Successfully merging a pull request may close this issue.

3 participants