diff options
Diffstat (limited to 'tools/github-debugging.py')
-rwxr-xr-x[-rw-r--r--] | tools/github-debugging.py | 92 |
1 files changed, 54 insertions, 38 deletions
diff --git a/tools/github-debugging.py b/tools/github-debugging.py index 171627ab9..101fd1118 100644..100755 --- a/tools/github-debugging.py +++ b/tools/github-debugging.py @@ -1,55 +1,71 @@ -import github3 +#!/usr/bin/env python3 + import logging -import time + +from zuul.driver.github.githubconnection import GithubConnection +from zuul.driver.github import GithubDriver +from zuul.model import Change, Project # This is a template with boilerplate code for debugging github issues # TODO: for real use override the following variables -url = 'https://example.com' +server = 'github.com' api_token = 'xxxx' -org = 'org' -project = 'project' -pull_nr = 3 +org = 'example' +repo = 'sandbox' +pull_nr = 8 + + +def configure_logging(context): + stream_handler = logging.StreamHandler() + logger = logging.getLogger(context) + logger.addHandler(stream_handler) + logger.setLevel(logging.DEBUG) + + +# uncomment for more logging +# configure_logging('urllib3') +# configure_logging('github3') +# configure_logging('cachecontrol') + + +# This is all that's needed for getting a usable github connection +def create_connection(server, api_token): + driver = GithubDriver() + connection_config = { + 'server': server, + 'api_token': api_token, + } + conn = GithubConnection(driver, 'github', connection_config) + conn._authenticateGithubAPI() + return conn -# Send the logs to stderr as well -stream_handler = logging.StreamHandler() +def get_change(connection: GithubConnection, + org: str, + repo: str, + pull: int) -> Change: + p = Project("%s/%s" % (org, repo), connection.source) + github = connection.getGithubClient(p) + pr = github.pull_request(org, repo, pull) + sha = pr.head.sha + return conn._getChange(p, pull, sha, True) -logger_urllib3 = logging.getLogger('requests.packages.logger_urllib3') -# logger_urllib3.addHandler(stream_handler) -logger_urllib3.setLevel(logging.DEBUG) -logger = logging.getLogger('github3') -# logger.addHandler(stream_handler) -logger.setLevel(logging.DEBUG) +# create github connection +conn = create_connection(server, api_token) -github = github3.GitHubEnterprise(url) +# Now we can do anything we want with the connection, e.g. check canMerge for +# a pull request. +change = get_change(conn, org, repo, pull_nr) +print(conn.canMerge(change, {'cc/gate2'})) -# This is the currently broken cache adapter, enable or replace it to debug -# caching -# import cachecontrol -# from cachecontrol.cache import DictCache -# cache_adapter = cachecontrol.CacheControlAdapter( -# DictCache(), -# cache_etags=True) +# Or just use the github object. +# github = conn.getGithubClient() # -# github.session.mount('http://', cache_adapter) -# github.session.mount('https://', cache_adapter) - - -github.login(token=api_token) - -i = 0 -while True: - pr = github.pull_request(org, project, pull_nr) - prdict = pr.as_dict() - issue = pr.issue() - labels = list(issue.labels()) - print(labels) - i += 1 - print(i) - time.sleep(1) +# repository = github.repository(org, repo) +# print(repository.as_dict()) |