Merge branch '1965-fuse-support-directories'
authorPeter Amstutz <peter.amstutz@curoverse.com>
Fri, 21 Feb 2014 18:23:19 +0000 (13:23 -0500)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Fri, 21 Feb 2014 18:23:19 +0000 (13:23 -0500)
Conflicts:
sdk/python/arvados/keep.py

1  2 
sdk/cli/bin/crunch-job
sdk/python/arvados/keep.py
sdk/python/setup.py.src
services/api/app/models/collection.rb

index 97a4bbb804213e657ec1ececdcd11cf0414ef77c,a7b88c9129f7811444fe27fd38c95772a4cdc4c9..eb6b43eb03788d9d646323929636b72014bd989c
@@@ -571,10 -572,9 +572,10 @@@ for (my $todo_ptr = 0; $todo_ptr <= $#j
      }
      $ENV{"PYTHONPATH"} =~ s{^}{:} if $ENV{"PYTHONPATH"};
      $ENV{"PYTHONPATH"} =~ s{^}{$ENV{CRUNCH_SRC}/sdk/python}; # xxx hack
 +    $ENV{"PYTHONPATH"} =~ s{^}{$ENV{CRUNCH_SRC}/arvados/sdk/python:}; # xxx hack
      $ENV{"PYTHONPATH"} =~ s{$}{:/usr/local/arvados/src/sdk/python}; # xxx hack
      $command .=
-         "&& exec $ENV{CRUNCH_SRC}/crunch_scripts/" . $Job->{"script"};
+         "&& exec arv-mount $ENV{TASK_KEEPMOUNT} --exec $ENV{CRUNCH_SRC}/crunch_scripts/" . $Job->{"script"};
      my @execargs = ('bash', '-c', $command);
      srun (\@srunargs, \@execargs, undef, $build_script_to_send);
      exit (111);
index e8be158c4fff2b00b509cb566cf640d3ee4ac344,f68b11cd4ad9a1e1cfcf98b99362887977cef44a..88487ae96e672726cfa5dbb3142dcfdeafcbec94
@@@ -142,15 -147,17 +147,18 @@@ class KeepClient(object)
      def shuffled_service_roots(self, hash):
          if self.service_roots == None:
              self.lock.acquire()
-             keep_disks = arvados.api().keep_disks().list().execute()['items']
-             roots = (("http%s://%s:%d/" %
-                       ('s' if f['service_ssl_flag'] else '',
-                        f['service_host'],
-                        f['service_port']))
-                      for f in keep_disks)
-             self.service_roots = sorted(set(roots))
-             logging.debug(str(self.service_roots))
-             self.lock.release()
+             try:
 -                keep_disks = api().keep_disks().list().execute()['items']
++                keep_disks = arvados.api().keep_disks().list().execute()['items']
+                 roots = (("http%s://%s:%d/" %
+                           ('s' if f['service_ssl_flag'] else '',
+                            f['service_host'],
+                            f['service_port']))
+                          for f in keep_disks)
+                 self.service_roots = sorted(set(roots))
+                 logging.debug(str(self.service_roots))
+             finally:
+                 self.lock.release()
++
          seed = hash
          pool = self.service_roots[:]
          pseq = []
Simple merge
index f6c8b26598ed78b99ac16a3b20d11c73692b0546,ea18789600844863dd6e1b6ff30ae9b2c0c7fdd5..495b9fefe316339864d6c35dfd2cb18e74a3d20b
@@@ -102,22 -115,12 +119,28 @@@ class Collection < ArvadosMode
            end
          end
        end
+       @files = []
+       tmp.each do |k, v|
+         re = k.match(/^(.+)\/(.+)/)
+         @files << [re[1], re[2], v]
+       end
      end
    end
 +
 +  def self.normalize_uuid uuid
 +    hash_part = nil
 +    size_part = nil
 +    uuid.split('+').each do |token|
 +      if token.match /^[0-9a-f]{32,}$/
 +        raise "uuid #{uuid} has multiple hash parts" if hash_part
 +        hash_part = token
 +      elsif token.match /^\d+$/
 +        raise "uuid #{uuid} has multiple size parts" if size_part
 +        size_part = token
 +      end
 +    end
 +    raise "uuid #{uuid} has no hash part" if !hash_part
 +    [hash_part, size_part].compact.join '+'
 +  end
  end