summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-01-17 00:36:44 +0000
committerGerrit Code Review <review@openstack.org>2018-01-17 00:36:45 +0000
commitd4dab496e5123a73df81b290cffe02732a2a00dd (patch)
tree45503dada8fcccd94091956621ae5c44e000cf37
parent1bd8cf06c0168a5545cbe68c19d7b834fe175d93 (diff)
parentac1763d9bdf08a7131a6c523c68fb6991ce1d40c (diff)
downloadzuul-d4dab496e5123a73df81b290cffe02732a2a00dd.tar.gz
Merge "Enable direct use of github driver in debug tool" into feature/zuulv3
-rwxr-xr-x[-rw-r--r--]tools/github-debugging.py92
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())