示例#1
0
 def install(self):
     """ Fetches binary cache if possible.
 Installs from buildout otherwise.
 """
     self.logger.info("Installing software release %s..." % self.url)
     tarname = self.software_url_hash
     cache_dir = tempfile.mkdtemp()
     tarpath = os.path.join(cache_dir, tarname)
     # Check if we can download from cache
     if (not os.path.exists(self.software_path)) and download_network_cached(
         self.download_binary_cache_url,
         self.download_binary_dir_url,
         self.url,
         self.software_root,
         self.software_url_hash,
         tarpath,
         self.logger,
         self.signature_certificate_list,
         self.binary_cache_url_blacklist,
     ):
         tar = tarfile.open(tarpath)
         try:
             self.logger.info("Extracting archive of cached software release...")
             tar.extractall(path=self.software_root)
         finally:
             tar.close()
     else:
         self._install_from_buildout()
         if (
             self.software_root
             and self.url
             and self.software_url_hash
             and self.upload_binary_cache_url
             and self.upload_binary_dir_url
         ):
             self.logger.info("Creating archive of software release...")
             tar = tarfile.open(tarpath, "w:gz")
             try:
                 tar.add(self.software_path, arcname=self.software_url_hash)
             finally:
                 tar.close()
             self.logger.info("Trying to upload archive of software release...")
             upload_network_cached(
                 self.software_root,
                 self.url,
                 self.software_url_hash,
                 self.upload_binary_cache_url,
                 self.upload_binary_dir_url,
                 tarpath,
                 self.logger,
                 self.signature_private_key_file,
                 self.shacache_cert_file,
                 self.shacache_key_file,
                 self.shadir_cert_file,
                 self.shadir_key_file,
             )
     shutil.rmtree(cache_dir)
示例#2
0
 def install(self):
   """ Fetches binary cache if possible.
   Installs from buildout otherwise.
   """
   self.logger.info("Installing software release %s..." % self.url)
   cache_dir = tempfile.mkdtemp()
   try:
     tarpath = os.path.join(cache_dir, self.software_url_hash)
     # Check if we can download from cache
     if (not os.path.exists(self.software_path)) \
         and download_network_cached(
             self.download_binary_cache_url,
             self.download_binary_dir_url,
             self.url, self.software_root,
             self.software_url_hash,
             tarpath, self.logger,
             self.signature_certificate_list,
             self.download_from_binary_cache_url_blacklist):
       tar = tarfile.open(tarpath)
       try:
         self.logger.info("Extracting archive of cached software release...")
         tar.extractall(path=self.software_root)
       finally:
         tar.close()
     else:
       self._install_from_buildout()
       # Upload to binary cache if possible
       blacklisted = False
       for url in self.upload_to_binary_cache_url_blacklist:
         if self.url.startswith(url):
           blacklisted = True
           self.logger.debug("Can't upload from binary cache: "
               "Software Release URL is blacklisted.")
       if (self.software_root and self.url and self.software_url_hash \
                              and self.upload_binary_cache_url \
                              and self.upload_binary_dir_url \
                              and not blacklisted):
         self.uploadSoftwareRelease(tarpath)
   finally:
     shutil.rmtree(cache_dir)