-func (pn *projectnode) load() {
- fs := pn.FS().(*customFileSystem)
-
- if pn.uuid == "" {
- var resp User
- pn.err = fs.RequestAndDecode(&resp, "GET", "arvados/v1/users/current", nil, nil)
- if pn.err != nil {
- return
- }
- pn.uuid = resp.UUID
- }
- // Note: the "filters" slice's backing array might be reused
- // by append(filters,...) below. This isn't goroutine safe,
- // but all accesses are in the same goroutine, so it's OK.
- filters := []Filter{{"owner_uuid", "=", pn.uuid}}
- params := ResourceListParams{
- Filters: filters,
- Order: "uuid",
- }
- for {
- var resp CollectionList
- pn.err = fs.RequestAndDecode(&resp, "GET", "arvados/v1/collections", nil, params)
- if pn.err != nil {
- return
- }
- if len(resp.Items) == 0 {
- break
- }
- for _, i := range resp.Items {
- coll := i
- if !permittedName(coll.Name) {
- continue
- }
- pn.inode.Child(coll.Name, func(inode) (inode, error) {
- return deferredCollectionFS(fs, pn, coll), nil
- })
- }
- params.Filters = append(filters, Filter{"uuid", ">", resp.Items[len(resp.Items)-1].UUID})
+// loadOneChild loads only the named child, if it exists.
+func (fs *customFileSystem) projectsLoadOne(parent inode, uuid, name string) (inode, error) {
+ uuid, err := fs.defaultUUID(uuid)
+ if err != nil {
+ return nil, err