mirror of
https://github.com/juanfont/headscale.git
synced 2025-08-10 13:46:46 +02:00
hsic: more helper methods
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
parent
0d17cdd8cb
commit
a026a9a7fb
@ -21,6 +21,8 @@ type ControlServer interface {
|
|||||||
CreateUser(user string) (*v1.User, error)
|
CreateUser(user string) (*v1.User, error)
|
||||||
CreateAuthKey(user uint64, reusable bool, ephemeral bool) (*v1.PreAuthKey, error)
|
CreateAuthKey(user uint64, reusable bool, ephemeral bool) (*v1.PreAuthKey, error)
|
||||||
ListNodes(users ...string) ([]*v1.Node, error)
|
ListNodes(users ...string) ([]*v1.Node, error)
|
||||||
|
NodesByUser() (map[string][]*v1.Node, error)
|
||||||
|
NodesByName() (map[string]*v1.Node, error)
|
||||||
ListUsers() ([]*v1.User, error)
|
ListUsers() ([]*v1.User, error)
|
||||||
MapUsers() (map[string]*v1.User, error)
|
MapUsers() (map[string]*v1.User, error)
|
||||||
ApproveRoutes(uint64, []netip.Prefix) (*v1.Node, error)
|
ApproveRoutes(uint64, []netip.Prefix) (*v1.Node, error)
|
||||||
|
@ -819,6 +819,38 @@ func (t *HeadscaleInContainer) ListNodes(
|
|||||||
return ret, nil
|
return ret, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *HeadscaleInContainer) NodesByUser() (map[string][]*v1.Node, error) {
|
||||||
|
nodes, err := t.ListNodes()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var userMap map[string][]*v1.Node
|
||||||
|
for _, node := range nodes {
|
||||||
|
if _, ok := userMap[node.User.Name]; !ok {
|
||||||
|
mak.Set(&userMap, node.User.Name, []*v1.Node{node})
|
||||||
|
} else {
|
||||||
|
userMap[node.User.Name] = append(userMap[node.User.Name], node)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return userMap, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *HeadscaleInContainer) NodesByName() (map[string]*v1.Node, error) {
|
||||||
|
nodes, err := t.ListNodes()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var nameMap map[string]*v1.Node
|
||||||
|
for _, node := range nodes {
|
||||||
|
mak.Set(&nameMap, node.GetName(), node)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nameMap, nil
|
||||||
|
}
|
||||||
|
|
||||||
// ListUsers returns a list of users from Headscale.
|
// ListUsers returns a list of users from Headscale.
|
||||||
func (t *HeadscaleInContainer) ListUsers() ([]*v1.User, error) {
|
func (t *HeadscaleInContainer) ListUsers() ([]*v1.User, error) {
|
||||||
command := []string{"headscale", "users", "list", "--output", "json"}
|
command := []string{"headscale", "users", "list", "--output", "json"}
|
||||||
@ -973,7 +1005,7 @@ func (t *HeadscaleInContainer) ApproveRoutes(id uint64, routes []netip.Prefix) (
|
|||||||
"headscale", "nodes", "approve-routes",
|
"headscale", "nodes", "approve-routes",
|
||||||
"--output", "json",
|
"--output", "json",
|
||||||
"--identifier", strconv.FormatUint(id, 10),
|
"--identifier", strconv.FormatUint(id, 10),
|
||||||
fmt.Sprintf("--routes=%q", strings.Join(util.PrefixesToString(routes), ",")),
|
fmt.Sprintf("--routes=%s", strings.Join(util.PrefixesToString(routes), ",")),
|
||||||
}
|
}
|
||||||
|
|
||||||
result, _, err := dockertestutil.ExecuteCommand(
|
result, _, err := dockertestutil.ExecuteCommand(
|
||||||
|
Loading…
Reference in New Issue
Block a user