Merge branch '21666-provision-test-improvement'
[arvados.git] / sdk / go / arvados / fs_deferred.go
index 254b90c812a337de96cb34da01b767dbe7adcc5a..e85446098f8c9b68120bacd42e5ece6c2a1f08b0 100644 (file)
@@ -5,44 +5,10 @@
 package arvados
 
 import (
-       "log"
        "os"
        "sync"
-       "time"
 )
 
-func deferredCollectionFS(fs FileSystem, parent inode, coll Collection) inode {
-       modTime := coll.ModifiedAt
-       if modTime.IsZero() {
-               modTime = time.Now()
-       }
-       placeholder := &treenode{
-               fs:     fs,
-               parent: parent,
-               inodes: nil,
-               fileinfo: fileinfo{
-                       name:    coll.Name,
-                       modTime: modTime,
-                       mode:    0755 | os.ModeDir,
-               },
-       }
-       return &deferrednode{wrapped: placeholder, create: func() inode {
-               err := fs.RequestAndDecode(&coll, "GET", "arvados/v1/collections/"+coll.UUID, nil, nil)
-               if err != nil {
-                       log.Printf("BUG: unhandled error: %s", err)
-                       return placeholder
-               }
-               newfs, err := coll.FileSystem(fs, fs)
-               if err != nil {
-                       log.Printf("BUG: unhandled error: %s", err)
-                       return placeholder
-               }
-               cfs := newfs.(*collectionFileSystem)
-               cfs.SetParent(parent, coll.Name)
-               return cfs
-       }}
-}
-
 // A deferrednode wraps an inode that's expensive to build. Initially,
 // it responds to basic directory functions by proxying to the given
 // placeholder. If a caller uses a read/write/lock operation,
@@ -112,3 +78,6 @@ func (dn *deferrednode) RLock()                          { dn.realinode().RLock(
 func (dn *deferrednode) RUnlock()                        { dn.realinode().RUnlock() }
 func (dn *deferrednode) FS() FileSystem                  { return dn.currentinode().FS() }
 func (dn *deferrednode) Parent() inode                   { return dn.currentinode().Parent() }
+func (dn *deferrednode) MemorySize() int64               { return dn.currentinode().MemorySize() }
+func (dn *deferrednode) Snapshot() (inode, error)        { return dn.realinode().Snapshot() }
+func (dn *deferrednode) Splice(repl inode) error         { return dn.realinode().Splice(repl) }