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)))
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)), )
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
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
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)
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