Merge "Enable direct use of github driver in debug tool" into feature/zuulv3
This commit is contained in:
commit
d4dab496e5
|
@ -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
|
||||
|
||||
|
||||
# Send the logs to stderr as well
|
||||
stream_handler = logging.StreamHandler()
|
||||
def configure_logging(context):
|
||||
stream_handler = logging.StreamHandler()
|
||||
logger = logging.getLogger(context)
|
||||
logger.addHandler(stream_handler)
|
||||
logger.setLevel(logging.DEBUG)
|
||||
|
||||
|
||||
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)
|
||||
# uncomment for more logging
|
||||
# configure_logging('urllib3')
|
||||
# configure_logging('github3')
|
||||
# configure_logging('cachecontrol')
|
||||
|
||||
|
||||
github = github3.GitHubEnterprise(url)
|
||||
# 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
|
||||
|
||||
|
||||
# This is the currently broken cache adapter, enable or replace it to debug
|
||||
# caching
|
||||
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)
|
||||
|
||||
# import cachecontrol
|
||||
# from cachecontrol.cache import DictCache
|
||||
# cache_adapter = cachecontrol.CacheControlAdapter(
|
||||
# DictCache(),
|
||||
# cache_etags=True)
|
||||
|
||||
# create github connection
|
||||
conn = create_connection(server, api_token)
|
||||
|
||||
|
||||
# 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'}))
|
||||
|
||||
|
||||
# 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())
|
||||
|
|
Loading…
Reference in New Issue