Merge branch '13111-projects-by-id'
authorTom Clegg <tclegg@veritasgenetics.com>
Thu, 26 Apr 2018 15:42:28 +0000 (11:42 -0400)
committerTom Clegg <tclegg@veritasgenetics.com>
Thu, 26 Apr 2018 15:42:28 +0000 (11:42 -0400)
refs #13111

Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg@veritasgenetics.com>

build/package-build-dockerfiles/Makefile
build/package-build-dockerfiles/centos7/Dockerfile
build/package-build-dockerfiles/debian8/Dockerfile
build/package-build-dockerfiles/debian9/Dockerfile
build/package-build-dockerfiles/ubuntu1404/Dockerfile
build/package-build-dockerfiles/ubuntu1604/Dockerfile
build/run-tests.sh
sdk/go/arvados/fs_site.go
sdk/go/arvados/fs_site_test.go
sdk/go/arvadostest/fixtures.go
tools/arvbox/lib/arvbox/docker/Dockerfile.base

index 396370dad7c44d6a7393ab93ac8801d559ba34af..ab1ade14deababdcc76abd11d02a99968ac0dac1 100644 (file)
@@ -28,7 +28,7 @@ ubuntu1604/generated: common-generated-all
        test -d ubuntu1604/generated || mkdir ubuntu1604/generated
        cp -rlt ubuntu1604/generated common-generated/*
 
-GOTARBALL=go1.8.3.linux-amd64.tar.gz
+GOTARBALL=go1.10.1.linux-amd64.tar.gz
 NODETARBALL=node-v6.11.2-linux-x64.tar.xz
 
 common-generated-all: common-generated/$(GOTARBALL) common-generated/$(NODETARBALL)
index c2fdfeee559a66fdd82ac5595c2281da31089c53..3a8b03f190b420a69b673780a46d434c7dad8da1 100644 (file)
@@ -17,7 +17,7 @@ RUN gpg --keyserver pool.sks-keyservers.net --recv-keys D39DC0E3 && \
     /usr/local/rvm/bin/rvm-exec default gem install cure-fpm --version 1.6.0b
 
 # Install golang binary
-ADD generated/go1.8.3.linux-amd64.tar.gz /usr/local/
+ADD generated/go1.10.1.linux-amd64.tar.gz /usr/local/
 RUN ln -s /usr/local/go/bin/go /usr/local/bin/
 
 # Install nodejs and npm
index 739244d467e9b420296401888d4d1ba05ac9c9fb..54267d708e2cc2ce34c603bf5048cf816c31de86 100644 (file)
@@ -19,7 +19,7 @@ RUN gpg --keyserver pool.sks-keyservers.net --recv-keys D39DC0E3 && \
     /usr/local/rvm/bin/rvm-exec default gem install cure-fpm --version 1.6.0b
 
 # Install golang binary
-ADD generated/go1.8.3.linux-amd64.tar.gz /usr/local/
+ADD generated/go1.10.1.linux-amd64.tar.gz /usr/local/
 RUN ln -s /usr/local/go/bin/go /usr/local/bin/
 
 # Install nodejs and npm
index a6e5e88d14514aae04870e0927e62dbc6427b817..9ade5fa27232f6613fd07199a6c8a3d9f54565ca 100644 (file)
@@ -21,7 +21,7 @@ RUN gpg --import /tmp/D39DC0E3.asc && \
     /usr/local/rvm/bin/rvm-exec default gem install cure-fpm --version 1.6.0b
 
 # Install golang binary
-ADD generated/go1.8.3.linux-amd64.tar.gz /usr/local/
+ADD generated/go1.10.1.linux-amd64.tar.gz /usr/local/
 RUN ln -s /usr/local/go/bin/go /usr/local/bin/
 
 # Install nodejs and npm
index 6317731a1ad4e38a82ea2155420d38eb3ff8070f..4ff47ff315bee92d127814348f621a54f64e789a 100644 (file)
@@ -19,7 +19,7 @@ RUN gpg --keyserver pool.sks-keyservers.net --recv-keys D39DC0E3 && \
     /usr/local/rvm/bin/rvm-exec default gem install cure-fpm --version 1.6.0b
 
 # Install golang binary
-ADD generated/go1.8.3.linux-amd64.tar.gz /usr/local/
+ADD generated/go1.10.1.linux-amd64.tar.gz /usr/local/
 RUN ln -s /usr/local/go/bin/go /usr/local/bin/
 
 # Install nodejs and npm
index 92aee31b3604cbb235ccdce7c46156da3c1928d1..7e5701f871cb987dc581fe843b1b2f3c4a2d3b7c 100644 (file)
@@ -19,7 +19,7 @@ RUN gpg --keyserver pool.sks-keyservers.net --recv-keys D39DC0E3 && \
     /usr/local/rvm/bin/rvm-exec default gem install cure-fpm --version 1.6.0b
 
 # Install golang binary
-ADD generated/go1.8.3.linux-amd64.tar.gz /usr/local/
+ADD generated/go1.10.1.linux-amd64.tar.gz /usr/local/
 RUN ln -s /usr/local/go/bin/go /usr/local/bin/
 
 # Install nodejs and npm
index f567cf41d586bb24993b9543bb8ec814396ea169..a050d38db7a27992c34d3c5763c824c23ab9f176 100755 (executable)
@@ -182,8 +182,8 @@ sanity_checks() {
     echo -n 'go: '
     go version \
         || fatal "No go binary. See http://golang.org/doc/install"
-    [[ $(go version) =~ go1.([0-9]+) ]] && [[ ${BASH_REMATCH[1]} -ge 8 ]] \
-        || fatal "Go >= 1.8 required. See http://golang.org/doc/install"
+    [[ $(go version) =~ go1.([0-9]+) ]] && [[ ${BASH_REMATCH[1]} -ge 10 ]] \
+        || fatal "Go >= 1.10 required. See http://golang.org/doc/install"
     echo -n 'gcc: '
     gcc --version | egrep ^gcc \
         || fatal "No gcc. Try: apt-get install build-essential"
index b5daf7b88381f952caaffd4de186624e19dbeb73..82114e2ea9ed54ac89cc94dd387d73711efae561 100644 (file)
@@ -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)
index e35ae4897ea4a3378018c24d6521d0efbaee42ca..371eab27134dee360ba7ac9507b645cf3e86897d 100644 (file)
@@ -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)
index 5fccfb3aa21d5cd348b2ccf309639cd9789ac881..a434690775089c38a092499ae79f7fa0fcdec0e0 100644 (file)
@@ -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"
index 0cc36ebd2b92cb5ac2c3f35ec02d757adf11d4a9..1ac0e76c373cd3240175a5c3c81c00aeb44b138e 100644 (file)
@@ -39,7 +39,7 @@ ENV GEM_HOME /var/lib/gems
 ENV GEM_PATH /var/lib/gems
 ENV PATH $PATH:/var/lib/gems/bin
 
-ENV GOVERSION 1.8.3
+ENV GOVERSION 1.10.1
 
 # Install golang binary
 RUN curl -f http://storage.googleapis.com/golang/go${GOVERSION}.linux-amd64.tar.gz | \