1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: Apache-2.0
11 // usersnode is a virtual directory with an entry for each visible
12 // Arvados username, each showing the respective user's "home
14 type usersnode struct {
20 func (un *usersnode) load() {
21 fs := un.FS().(*customFileSystem)
23 params := ResourceListParams{
28 un.err = fs.RequestAndDecode(&resp, "GET", "arvados/v1/users", nil, params)
32 if len(resp.Items) == 0 {
35 for _, user := range resp.Items {
36 if user.Username == "" {
39 un.inode.Child(user.Username, func(inode) (inode, error) {
40 return fs.newProjectNode(un, user.Username, user.UUID), nil
43 params.Filters = []Filter{{"uuid", ">", resp.Items[len(resp.Items)-1].UUID}}
48 func (un *usersnode) Readdir() ([]os.FileInfo, error) {
49 un.staleChecker.DoIfStale(un.load, un.FS().(*customFileSystem).Stale)
53 return un.inode.Readdir()
56 func (un *usersnode) Child(name string, _ func(inode) (inode, error)) (inode, error) {
57 un.staleChecker.DoIfStale(un.load, un.FS().(*customFileSystem).Stale)
61 return un.inode.Child(name, nil)