72a515f5ec
Highlights: - add new endpoint to query for intentions by exact match - using this endpoint from the CLI instead of the dump+filter approach - enforcing that OSS can only read/write intentions with a SourceNS or DestinationNS field of "default". - preexisting OSS intentions with now-invalid namespace fields will delete those intentions on initial election or for wildcard namespaces an attempt will be made to downgrade them to "default" unless one exists. - also allow the '-namespace' CLI arg on all of the intention subcommands - update lots of docs
35 lines
682 B
Go
35 lines
682 B
Go
package finder
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/hashicorp/consul/api"
|
|
)
|
|
|
|
// IDFromArgs returns the intention ID for the given CLI args. An error is returned
|
|
// if args is not 1 or 2 elements.
|
|
func IDFromArgs(client *api.Client, args []string) (string, error) {
|
|
switch len(args) {
|
|
case 1:
|
|
return args[0], nil
|
|
|
|
case 2:
|
|
ixn, _, err := client.Connect().IntentionGetExact(
|
|
args[0], args[1], nil,
|
|
)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
if ixn == nil {
|
|
return "", fmt.Errorf(
|
|
"Intention with source %q and destination %q not found.",
|
|
args[0], args[1])
|
|
}
|
|
|
|
return ixn.ID, nil
|
|
|
|
default:
|
|
return "", fmt.Errorf("command requires exactly 1 or 2 arguments")
|
|
}
|
|
}
|