Ejemplo n.º 1
0
  def use_cached_files(self, cache_key):
    # This implementation fetches the appropriate tarball and extracts it.
    remote_path = self._remote_path_for_key(cache_key)
    try:
      # Send an HTTP request for the tarball.
      response = self._request('GET', remote_path)
      if response is None:
        return None

      done = False
      with temporary_file() as outfile:
        total_bytes = 0
        # Read the data in a loop.
        while not done:
          data = response.read(self.READ_SIZE)
          outfile.write(data)
          if len(data) < self.READ_SIZE:
            done = True
          total_bytes += len(data)
        outfile.close()
        self.log.debug('Read %d bytes from artifact cache at %s' %
                       (total_bytes,self._url_string(remote_path)))

        # Extract the tarfile.
        artifact = TarballArtifact(self.artifact_root, outfile.name, self.compress)
        artifact.extract()
        return artifact
    except Exception as e:
      self.log.warn('Error while reading from remote artifact cache: %s' % e)
      return None
Ejemplo n.º 2
0
    def use_cached_files(self, cache_key):
        # This implementation fetches the appropriate tarball and extracts it.
        remote_path = self._remote_path_for_key(cache_key)
        try:
            # Send an HTTP request for the tarball.
            response = self._request('GET', remote_path)
            if response is None:
                return None

            with temporary_file() as outfile:
                total_bytes = 0
                # Read the data in a loop.
                for chunk in response.iter_content(self.READ_SIZE):
                    outfile.write(chunk)
                    total_bytes += len(chunk)

                outfile.close()
                self.log.debug('Read %d bytes from artifact cache at %s' %
                               (total_bytes, self._url_string(remote_path)))

                # Extract the tarfile.
                artifact = TarballArtifact(self.artifact_root, outfile.name,
                                           self.compress)
                artifact.extract()
                return artifact
        except Exception as e:
            self.log.warn(
                'Error while reading from remote artifact cache: %s' % e)
            return None
Ejemplo n.º 3
0
 def test_non_existent_tarball_extraction(self):
     with temporary_dir() as tmpdir:
         artifact = TarballArtifact(artifact_root=tmpdir,
                                    artifact_extraction_root=tmpdir,
                                    tarfile_="vapor.tar")
         with self.assertRaises(ArtifactError):
             artifact.extract()
Ejemplo n.º 4
0
 def test_corrupt_tarball_extraction(self):
     with temporary_dir() as tmpdir:
         path = self.touch_file_in(tmpdir, content="invalid")
         artifact = TarballArtifact(artifact_root=tmpdir,
                                    artifact_extraction_root=tmpdir,
                                    tarfile_=path)
         with self.assertRaises(ArtifactError):
             artifact.extract()
Ejemplo n.º 5
0
 def use_cached_files(self, cache_key):
   try:
     tarfile = self._cache_file_for_key(cache_key)
     if os.path.exists(tarfile):
       artifact = TarballArtifact(self.artifact_root, tarfile, self._compress)
       artifact.extract()
       return artifact
     else:
       return None
   except Exception as e:
     self.log.warn('Error while reading from local artifact cache: %s' % e)
     return None
Ejemplo n.º 6
0
 def use_cached_files(self, cache_key):
     try:
         tarfile = self._cache_file_for_key(cache_key)
         if os.path.exists(tarfile):
             artifact = TarballArtifact(self.artifact_root, tarfile,
                                        self._compress)
             artifact.extract()
             return artifact
         else:
             return None
     except Exception as e:
         self.log.warn('Error while reading from local artifact cache: %s' %
                       e)
         return None
Ejemplo n.º 7
0
 def test_corrupt_tarball_extraction(self):
   with temporary_dir() as tmpdir:
     path = self.touch_file_in(tmpdir, content='invalid')
     artifact = TarballArtifact(artifact_root=tmpdir, tarfile_=path)
     with self.assertRaises(ArtifactError):
       artifact.extract()
Ejemplo n.º 8
0
 def test_non_existent_tarball_extraction(self):
   with temporary_dir() as tmpdir:
     artifact = TarballArtifact(artifact_root=tmpdir, tarfile_='vapor.tar')
     with self.assertRaises(ArtifactError):
       artifact.extract()