Test and debug interactions
This commit is contained in:
parent
01403d9a85
commit
300ab3ee0d
@ -24,7 +24,7 @@ LOG = logging.getLogger(__name__)
|
|||||||
|
|
||||||
def validate(namespace: argparse.Namespace):
|
def validate(namespace: argparse.Namespace):
|
||||||
arg_dict = vars(namespace)
|
arg_dict = vars(namespace)
|
||||||
if not ((arg_dict['github_username'] and arg_dict['github_password']) or arg_dict['github_token']):
|
if not ((arg_dict['github_user'] and arg_dict['github_password']) or arg_dict['github_token']):
|
||||||
raise errors.GithubConfigurationError
|
raise errors.GithubConfigurationError
|
||||||
return arg_dict
|
return arg_dict
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ if __name__ == '__main__':
|
|||||||
)
|
)
|
||||||
parser.add_argument('-g', '--gerrit-url', action='store', required=True, type=str,
|
parser.add_argument('-g', '--gerrit-url', action='store', required=True, type=str,
|
||||||
default=os.getenv('GERRIT_URL', default=None), help='Target Gerrit URL.')
|
default=os.getenv('GERRIT_URL', default=None), help='Target Gerrit URL.')
|
||||||
parser.add_argument('-u', '--github-username', action='store', required=False, type=str,
|
parser.add_argument('-u', '--github-user', action='store', required=False, type=str,
|
||||||
default=os.getenv('GITHUB_USER', default=None),
|
default=os.getenv('GITHUB_USER', default=None),
|
||||||
help='Username to use for GitHub Issues integration. Defaults to GITHUB_USER in '
|
help='Username to use for GitHub Issues integration. Defaults to GITHUB_USER in '
|
||||||
'environmental variables. Must be used with a password.')
|
'environmental variables. Must be used with a password.')
|
||||||
@ -57,8 +57,15 @@ if __name__ == '__main__':
|
|||||||
default=os.getenv('GITHUB_TOKEN', default=None),
|
default=os.getenv('GITHUB_TOKEN', default=None),
|
||||||
help='Token to use for GitHub Issues integration. Defaults to GITHUB_TOKEN in '
|
help='Token to use for GitHub Issues integration. Defaults to GITHUB_TOKEN in '
|
||||||
'environmental variables. This will be preferred over a username/password.')
|
'environmental variables. This will be preferred over a username/password.')
|
||||||
|
parser.add_argument('-v', '--verbose', action='store_true', required=False,
|
||||||
|
default=False, help='Enabled DEBUG level logging.')
|
||||||
parser.add_argument('gerrit_project_name', action='store', type=str, help='Target Gerrit project.')
|
parser.add_argument('gerrit_project_name', action='store', type=str, help='Target Gerrit project.')
|
||||||
parser.add_argument('github_project_name', action='store', type=str, help='Target Github project.')
|
parser.add_argument('github_project_name', action='store', type=str, help='Target Github project.')
|
||||||
ns = parser.parse_args()
|
ns = parser.parse_args()
|
||||||
args = validate(ns)
|
args = validate(ns)
|
||||||
|
if args['verbose']:
|
||||||
|
logging.basicConfig(format=LOG_FORMAT, level=logging.DEBUG)
|
||||||
|
else:
|
||||||
|
logging.basicConfig(format=LOG_FORMAT, level=logging.INFO)
|
||||||
|
args.pop('verbose')
|
||||||
update(**args)
|
update(**args)
|
||||||
|
@ -20,11 +20,11 @@ import github_issues
|
|||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def update(gerrit_url: str, gerrit_project_name: str, github_project_name: str, github_user: str, github_pw: str,
|
def update(gerrit_url: str, gerrit_project_name: str, github_project_name: str, github_user: str, github_password: str,
|
||||||
github_token: str):
|
github_token: str):
|
||||||
repo = github_issues.get_repo(github_project_name, github_user, github_pw, github_token)
|
repo = github_issues.get_repo(github_project_name, github_user, github_password, github_token)
|
||||||
change_list = gerrit.get_changes(gerrit_url, gerrit_project_name)
|
change_list = gerrit.get_changes(gerrit_url, gerrit_project_name)
|
||||||
for change in change_list:
|
for change in change_list['data']:
|
||||||
if 'commitMessage' in change:
|
if 'commitMessage' in change:
|
||||||
process_change(change, repo, gerrit_url)
|
process_change(change, repo, gerrit_url)
|
||||||
|
|
||||||
@ -46,23 +46,25 @@ def process_change(change: dict, repo: Repository, gerrit_url: str):
|
|||||||
issue.edit(state='open')
|
issue.edit(state='open')
|
||||||
comment_msg += 'Issue reopened due to new activity on Gerrit.\n\n'
|
comment_msg += 'Issue reopened due to new activity on Gerrit.\n\n'
|
||||||
if 'WIP' in change['commitMessage'] or 'DNM' in change['commitMessage']:
|
if 'WIP' in change['commitMessage'] or 'DNM' in change['commitMessage']:
|
||||||
LOG.debug(f'add `wip` to {issue_number}')
|
LOG.debug(f'add `wip` to #{issue_number}')
|
||||||
#issue.add_to_labels('wip')
|
issue.add_to_labels('wip')
|
||||||
try:
|
try:
|
||||||
LOG.debug(f'rm `ready for review` to {issue_number}')
|
LOG.debug(f'rm `ready for review` to #{issue_number}')
|
||||||
#issue.remove_from_labels('ready for review')
|
issue.remove_from_labels('ready for review')
|
||||||
except github.GithubException:
|
except github.GithubException:
|
||||||
LOG.debug(f'`ready for review` tag does not exist on issue #{issue_number}')
|
LOG.debug(f'`ready for review` tag does not exist on issue #{issue_number}')
|
||||||
else:
|
else:
|
||||||
LOG.debug(f'add `ready for review` to {issue_number}')
|
LOG.debug(f'add `ready for review` to #{issue_number}')
|
||||||
#issue.add_to_labels('ready for review')
|
issue.add_to_labels('ready for review')
|
||||||
try:
|
try:
|
||||||
LOG.debug(f'rm `wip` to {issue_number}')
|
LOG.debug(f'rm `wip` to #{issue_number}')
|
||||||
#issue.remove_from_labels('wip')
|
issue.remove_from_labels('wip')
|
||||||
except github.GithubException:
|
except github.GithubException:
|
||||||
LOG.debug(f'`wip` tag does not exist on issue #{issue_number}')
|
LOG.debug(f'`wip` tag does not exist on issue #{issue_number}')
|
||||||
if not link_exists:
|
if not link_exists:
|
||||||
comment_msg += f'New Related Change: {gerrit_url}'
|
comment_msg += f'New Related Change: {change_url}\n' \
|
||||||
|
f'Authored By: {change["owner"]["name"]} ({change["owner"]["email"]})'
|
||||||
if comment_msg:
|
if comment_msg:
|
||||||
#issue.create_comment(comment_msg)
|
issue.create_comment(comment_msg)
|
||||||
LOG.info(f'Comment posted to issue #{gerrit_url}')
|
LOG.debug(f'Comment to post on #{issue_number}: {comment_msg}')
|
||||||
|
LOG.info(f'Comment posted to issue #{issue_number}')
|
||||||
|
@ -14,7 +14,7 @@ import json
|
|||||||
from fabric import Connection
|
from fabric import Connection
|
||||||
|
|
||||||
|
|
||||||
def get_changes(gerrit_url: str, project_name: str, port: int = 29418) -> list:
|
def get_changes(gerrit_url: str, project_name: str, port: int = 29418) -> dict:
|
||||||
cmd = f'gerrit query --format=JSON status:open project:{project_name}'
|
cmd = f'gerrit query --format=JSON status:open project:{project_name}'
|
||||||
result = Connection(gerrit_url, port=port).run(cmd)
|
result = Connection(gerrit_url, port=port).run(cmd)
|
||||||
processed_stdout = '{"data":[%s]}' % ','.join(list(filter(None, result.stdout.split('\n'))))
|
processed_stdout = '{"data":[%s]}' % ','.join(list(filter(None, result.stdout.split('\n'))))
|
||||||
|
Loading…
Reference in New Issue
Block a user