Example #1
0
  def bintray_repo_delete_version(self, repo, package_name, repository,
                                  build_version=None):
    """Delete the given bintray repository version if it exsts."""
    try:
      bintray_url = self.__to_bintray_url(repo, package_name, repository,
                                          build_version)
      logging.debug('Checking for %s', bintray_url)
      request = Request(url=bintray_url)
      request.get_method = lambda: 'DELETE'
      self.__add_bintray_auth_header(request)

      labels = {
          'repo': repo,
          'repository': repository.name,
          'artifact': 'debian'
      }
      self.__metrics.count_call(
          'DeleteArtifact', labels, urlopen, request)
      return True
    except HTTPError as ex:
      if ex.code == 404:
        return True
      raise_and_log_error(
          ResponseError('Bintray failure: {}'.format(ex),
                        server='bintray.delete'),
          'Failed on url=%s: %s' % (bintray_url, exception_to_message(ex)))
Example #2
0
  def bintray_repo_delete_version(self, repo, package_name, repository,
                                  build_version=None):
    """Delete the given bintray repository version if it exsts."""
    try:
      bintray_url = self.__to_bintray_url(repo, package_name, repository,
                                          build_version)
      logging.debug('Checking for %s', bintray_url)
      request = Request(url=bintray_url)
      request.get_method = lambda: 'DELETE'
      self.__add_bintray_auth_header(request)

      labels = {
          'repo': repo,
          'repository': repository.name,
          'artifact': 'debian'
      }
      self.__metrics.count_call(
          'DeleteArtifact', labels, urlopen, request)
      return True
    except HTTPError as ex:
      if ex.code == 404:
        return True
      raise_and_log_error(
          ResponseError('Bintray failure: {}'.format(ex),
                        server='bintray.delete'),
          'Failed on url=%s: %s' % (bintray_url, exception_to_message(ex)))
Example #3
0
    def bintray_repo_delete_version(self,
                                    repo,
                                    package_name,
                                    repository,
                                    build_version=None):
        """Delete the given bintray repository version if it exsts."""
        try:
            bintray_url = self.__to_bintray_url(repo, package_name, repository,
                                                build_version)
            logging.debug("Checking for %s", bintray_url)
            request = Request(url=bintray_url)
            request.get_method = lambda: "DELETE"
            self.__add_bintray_auth_header(request)

            labels = {
                "repo": repo,
                "repository": repository.name,
                "artifact": "debian"
            }
            self.__metrics.count_call("DeleteArtifact", labels, urlopen,
                                      request)
            return True
        except HTTPError as ex:
            if ex.code == 404:
                return True
            raise_and_log_error(
                ResponseError("Bintray failure: {}".format(ex),
                              server="bintray.delete"),
                "Failed on url=%s: %s" %
                (bintray_url, exception_to_message(ex)),
            )
Example #4
0
 def load_bom_from_url(self, url):
   """Returns the bom specification dict from a gcs url."""
   logging.debug('Loading %s', url)
   try:
     text = check_subprocess('gsutil cat ' + url)
     return yaml.load(text)
   except Exception as ex:
     self.__bad_files[self.url_to_bom_name(url)] = exception_to_message(ex)
     maybe_log_exception('load_from_from_url', ex,
                         action_msg='Skipping %s' % url)
     return None
Example #5
0
 def fetch_bintray_url(self, bintray_url):
   request = Request(bintray_url)
   if self.__basic_auth:
     request.add_header('Authorization', self.__basic_auth)
   try:
     response = urlopen(request)
     headers = response.info()
     payload = response.read()
     content = json.JSONDecoder(encoding='utf-8').decode(payload)
   except HTTPError as ex:
     raise_and_log_error(
         ResponseError('Bintray failure: {}'.format(ex),
                       server='bintray.api'),
         'Failed on url=%s: %s' % (bintray_url, exception_to_message(ex)))
   except Exception as ex:
     raise
   return headers, content
Example #6
0
 def ingest_bom(self, line):
   """Function to ingest a single bom into the result map."""
   bom = self.load_bom_from_url(line)
   if not bom:
     return
   try:
     if bom['version'] + '.yml' != line[line.rfind('/') + 1:]:
       message = 'BOM version "%s" != filename "%s"' % (bom['version'], line)
       self.__bad_files[self.url_to_bom_name(line.strip())] = message
       logging.warning(message)
       raise_and_log_error(UnexpectedError(message))
     self.analyze_bom(bom)
   except Exception as ex:
     self.__bad_files[self.url_to_bom_name(line.strip())] = (
         exception_to_message(ex))
     maybe_log_exception('analyze_bom', ex,
                         action_msg='Skipping %s' % line)
Example #7
0
 def bintray_repo_has_version(self, repo, package_name, repository,
                              build_version):
   """See if the given bintray repository has the package version to build."""
   try:
     bintray_url = self.__to_bintray_url(repo, package_name, repository,
                                         build_version)
     logging.debug('Checking for %s', bintray_url)
     request = Request(url=bintray_url)
     self.__add_bintray_auth_header(request)
     urlopen(request)
     return True
   except HTTPError as ex:
     if ex.code == 404:
       return False
     raise_and_log_error(
         ResponseError('Bintray failure: {}'.format(ex),
                       server='bintray.check'),
         'Failed on url=%s: %s' % (bintray_url, exception_to_message(ex)))
   except Exception as ex:
     raise
Example #8
0
 def bintray_repo_has_version(self, repo, package_name, repository,
                              build_version):
   """See if the given bintray repository has the package version to build."""
   try:
     bintray_url = self.__to_bintray_url(repo, package_name, repository,
                                         build_version)
     logging.debug('Checking for %s', bintray_url)
     request = Request(url=bintray_url)
     self.__add_bintray_auth_header(request)
     urlopen(request)
     return True
   except HTTPError as ex:
     if ex.code == 404:
       return False
     raise_and_log_error(
         ResponseError('Bintray failure: {}'.format(ex),
                       server='bintray.check'),
         'Failed on url=%s: %s' % (bintray_url, exception_to_message(ex)))
   except Exception as ex:
     raise