[ARVADOS] created: 1.1.4-134-ga93f2ef

Git user git at public.curoverse.com
Mon Apr 23 09:34:16 EDT 2018


        at  a93f2efa516c72475dd6f13872c0698c4c499aa9 (commit)


commit a93f2efa516c72475dd6f13872c0698c4c499aa9
Author: Tom Clegg <tclegg at veritasgenetics.com>
Date:   Mon Apr 23 09:05:39 2018 -0400

    13111: Access projects via /by_id/$uuid/.
    
    Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg at veritasgenetics.com>

diff --git a/sdk/go/arvados/fs_site.go b/sdk/go/arvados/fs_site.go
index b5daf7b..82114e2 100644
--- a/sdk/go/arvados/fs_site.go
+++ b/sdk/go/arvados/fs_site.go
@@ -6,6 +6,7 @@ package arvados
 
 import (
 	"os"
+	"strings"
 	"sync"
 	"time"
 )
@@ -60,7 +61,7 @@ func (fs *customFileSystem) MountByID(mount string) {
 					mode:    0755 | os.ModeDir,
 				},
 			},
-			create: fs.mountCollection,
+			create: fs.mountByID,
 		}, nil
 	})
 }
@@ -123,6 +124,16 @@ func (fs *customFileSystem) newNode(name string, perm os.FileMode, modTime time.
 	return nil, ErrInvalidOperation
 }
 
+func (fs *customFileSystem) mountByID(parent inode, id string) inode {
+	if strings.Contains(id, "-4zz18-") || pdhRegexp.MatchString(id) {
+		return fs.mountCollection(parent, id)
+	} else if strings.Contains(id, "-j7d0g-") {
+		return fs.newProjectNode(fs.root, id, id)
+	} else {
+		return nil
+	}
+}
+
 func (fs *customFileSystem) mountCollection(parent inode, id string) inode {
 	var coll Collection
 	err := fs.RequestAndDecode(&coll, "GET", "arvados/v1/collections/"+id, nil, nil)
diff --git a/sdk/go/arvados/fs_site_test.go b/sdk/go/arvados/fs_site_test.go
index e35ae48..371eab2 100644
--- a/sdk/go/arvados/fs_site_test.go
+++ b/sdk/go/arvados/fs_site_test.go
@@ -45,7 +45,7 @@ func (s *SiteFSSuite) TestByIDEmpty(c *check.C) {
 	c.Check(len(fis), check.Equals, 0)
 }
 
-func (s *SiteFSSuite) TestByUUID(c *check.C) {
+func (s *SiteFSSuite) TestByUUIDAndPDH(c *check.C) {
 	f, err := s.fs.Open("/by_id")
 	c.Assert(err, check.IsNil)
 	fis, err := f.Readdir(-1)
@@ -58,14 +58,29 @@ func (s *SiteFSSuite) TestByUUID(c *check.C) {
 	f, err = s.fs.Open("/by_id/" + arvadostest.NonexistentCollection)
 	c.Assert(err, check.Equals, os.ErrNotExist)
 
-	f, err = s.fs.Open("/by_id/" + arvadostest.FooCollection)
+	for _, path := range []string{
+		arvadostest.FooCollection,
+		arvadostest.FooPdh,
+		arvadostest.AProjectUUID + "/" + arvadostest.FooCollectionName,
+	} {
+		f, err = s.fs.Open("/by_id/" + path)
+		c.Assert(err, check.IsNil)
+		fis, err = f.Readdir(-1)
+		var names []string
+		for _, fi := range fis {
+			names = append(names, fi.Name())
+		}
+		c.Check(names, check.DeepEquals, []string{"foo"})
+	}
+
+	f, err = s.fs.Open("/by_id/" + arvadostest.AProjectUUID + "/A Subproject/baz_file")
 	c.Assert(err, check.IsNil)
 	fis, err = f.Readdir(-1)
 	var names []string
 	for _, fi := range fis {
 		names = append(names, fi.Name())
 	}
-	c.Check(names, check.DeepEquals, []string{"foo"})
+	c.Check(names, check.DeepEquals, []string{"baz"})
 
 	_, err = s.fs.OpenFile("/by_id/"+arvadostest.NonexistentCollection, os.O_RDWR|os.O_CREATE, 0755)
 	c.Check(err, check.Equals, ErrInvalidOperation)
diff --git a/sdk/go/arvadostest/fixtures.go b/sdk/go/arvadostest/fixtures.go
index 5fccfb3..a434690 100644
--- a/sdk/go/arvadostest/fixtures.go
+++ b/sdk/go/arvadostest/fixtures.go
@@ -16,6 +16,7 @@ const (
 	FederatedActiveUserUUID = "zbbbb-tpzed-xurymjxw79nv3jz"
 	SpectatorUserUUID       = "zzzzz-tpzed-l1s2piq4t4mps8r"
 	UserAgreementCollection = "zzzzz-4zz18-uukreo9rbgwsujr" // user_agreement_in_anonymously_accessible_project
+	FooCollectionName       = "zzzzz-4zz18-fy296fx3hot09f7 added sometime"
 	FooCollection           = "zzzzz-4zz18-fy296fx3hot09f7"
 	FooCollectionPDH        = "1f4b0bc7583c2a7f9102c395f4ffc5e3+45"
 	NonexistentCollection   = "zzzzz-4zz18-totallynotexist"

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list