From fced734be05eb823b50f19d5658a1a060bbb2a8c Mon Sep 17 00:00:00 2001 From: Clement Verna Date: Feb 21 2018 09:21:10 +0000 Subject: Make the hooks use the new architecture. Signed-off-by: Clement Verna --- diff --git a/pagure/hooks/files/default_hook.py b/pagure/hooks/files/default_hook.py index 5e5647a..e54c21e 100644 --- a/pagure/hooks/files/default_hook.py +++ b/pagure/hooks/files/default_hook.py @@ -22,7 +22,7 @@ if 'PAGURE_CONFIG' not in os.environ \ os.environ['PAGURE_CONFIG'] = '/etc/pagure/pagure.cfg' -_config = pagure.config.reload_config() +_config = pagure.config.config abspath = os.path.abspath(os.environ['GIT_DIR']) diff --git a/pagure/hooks/files/fedmsg_hook.py b/pagure/hooks/files/fedmsg_hook.py index a7fb01b..d17fb97 100755 --- a/pagure/hooks/files/fedmsg_hook.py +++ b/pagure/hooks/files/fedmsg_hook.py @@ -26,10 +26,12 @@ config['active'] = True config['endpoints']['relay_inbound'] = config['relay_inbound'] fedmsg.init(name='relay_inbound', **config) -_config = pagure.config.config.reload_config() +_config = pagure.config.config seen = [] +session = pagure.lib.create_session(_config['DB_URL']) + # Read in all the rev information git-receive-pack hands us. for line in sys.stdin.readlines(): (oldrev, newrev, refname) = line.strip().split(' ', 2) @@ -55,7 +57,7 @@ for line in sys.stdin.readlines(): username = pagure.lib.git.get_username(abspath) namespace = pagure.lib.git.get_repo_namespace(abspath) project = pagure.lib._get_project( - pagure.SESSION, project_name, username, namespace=namespace, + session, project_name, username, namespace=namespace, case=_config.get('CASE_SENSITIVE', False)) if not project: @@ -65,7 +67,7 @@ for line in sys.stdin.readlines(): for rev in revs: email = pagure.lib.git.get_author_email(rev, abspath) name = pagure.lib.git.get_author(rev, abspath) - author = pagure.lib.search_user(pagure.SESSION, email=email) or name + author = pagure.lib.search_user(session, email=email) or name auths.add(author) authors = [] @@ -95,3 +97,4 @@ for line in sys.stdin.readlines(): ), redis=pagure.lib.REDIS, ) +session.close() diff --git a/pagure/hooks/files/pagure_block_unsigned.py b/pagure/hooks/files/pagure_block_unsigned.py index f89e980..c5440d8 100755 --- a/pagure/hooks/files/pagure_block_unsigned.py +++ b/pagure/hooks/files/pagure_block_unsigned.py @@ -21,7 +21,7 @@ import pagure.exceptions # noqa: E402 import pagure.lib.link # noqa: E402 import pagure.ui.plugins # noqa: E402 -_config = pagure.config.config.reload_config() +_config = pagure.config.config abspath = os.path.abspath(os.environ['GIT_DIR']) diff --git a/pagure/hooks/files/pagure_force_commit_hook.py b/pagure/hooks/files/pagure_force_commit_hook.py index 6460b51..e5611eb 100755 --- a/pagure/hooks/files/pagure_force_commit_hook.py +++ b/pagure/hooks/files/pagure_force_commit_hook.py @@ -21,7 +21,7 @@ import pagure.lib.link # noqa: E402 import pagure.lib.plugins # noqa: E402 -_config = pagure.config.config.reload_config() +_config = pagure.config.config abspath = os.path.abspath(os.environ['GIT_DIR']) @@ -29,18 +29,20 @@ def run_as_pre_receive_hook(): reponame = pagure.lib.git.get_repo_name(abspath) namespace = pagure.lib.git.get_repo_namespace(abspath) username = pagure.lib.git.get_username(abspath) + session = pagure.lib.create_session(_config['DB_URL']) if _config.get('HOOK_DEBUG', False): print('repo: ', reponame) print('user: ', username) print('namspaces:', namespace) repo = pagure.lib._get_project( - pagure.SESSION, reponame, user=username, namespace=namespace, + session, reponame, user=username, namespace=namespace, case=_config.get('CASE_SENSITIVE', False)) if not repo: print('Unknown repo %s of username: %s in namespace %s' % ( reponame, username, namespace)) + session.close() sys.exit(1) plugin = pagure.lib.plugins.get_plugin('Block non fast-forward pushes') @@ -70,11 +72,15 @@ def run_as_pre_receive_hook(): if set(newrev) == set(['0']): print("Deletion is forbidden") + session.close() sys.exit(1) elif pagure.lib.git.is_forced_push(oldrev, newrev, abspath): print("Non fast-forward push are forbidden") + session.close() sys.exit(1) + session.close() + def main(args): run_as_pre_receive_hook() diff --git a/pagure/hooks/files/pagure_hook.py b/pagure/hooks/files/pagure_hook.py index 1487606..790db01 100755 --- a/pagure/hooks/files/pagure_hook.py +++ b/pagure/hooks/files/pagure_hook.py @@ -26,7 +26,7 @@ import pagure.lib.link # noqa: E402 _log = logging.getLogger(__name__) -_config = pagure.config.config.reload_config() +_config = pagure.config.config abspath = os.path.abspath(os.environ['GIT_DIR']) @@ -41,30 +41,32 @@ def generate_revision_change_log(new_commits_list): commitid = line.split('commit ')[-1] line = line.strip() - + session = pagure.lib.create_session(_config['DB_URL']) print('*', line) for relation in pagure.lib.link.get_relation( - pagure.SESSION, + session, pagure.lib.git.get_repo_name(abspath), pagure.lib.git.get_username(abspath), pagure.lib.git.get_repo_namespace(abspath), line, 'fixes', include_prs=True): - fixes_relation(commitid, relation, + fixes_relation(commitid, relation, session, _config.get('APP_URL')) for issue in pagure.lib.link.get_relation( - pagure.SESSION, + session, pagure.lib.git.get_repo_name(abspath), pagure.lib.git.get_username(abspath), pagure.lib.git.get_repo_namespace(abspath), line, 'relates'): - relates_commit(commitid, issue, _config.get('APP_URL')) + relates_commit(commitid, issue, session, _config.get('APP_URL')) + + session.close() -def relates_commit(commitid, issue, app_url=None): +def relates_commit(commitid, issue, session, app_url=None): ''' Add a comment to an issue that this commit relates to it. ''' url = '../%s' % commitid[:8] @@ -84,21 +86,21 @@ def relates_commit(commitid, issue, app_url=None): try: pagure.lib.add_issue_comment( - pagure.SESSION, + session, issue=issue, comment=comment, user=user, ticketfolder=_config['TICKETS_FOLDER'], ) - pagure.SESSION.commit() + session.commit() except pagure.exceptions.PagureException as err: print(err) except SQLAlchemyError as err: # pragma: no cover - pagure.SESSION.rollback() + session.rollback() _log.exception(err) -def fixes_relation(commitid, relation, app_url=None): +def fixes_relation(commitid, relation, session, app_url=None): ''' Add a comment to an issue or PR that this commit fixes it and update the status if the commit is in the master branch. ''' @@ -120,7 +122,7 @@ def fixes_relation(commitid, relation, app_url=None): try: if relation.isa == 'issue': pagure.lib.add_issue_comment( - pagure.SESSION, + session, issue=relation, comment=comment, user=user, @@ -128,7 +130,7 @@ def fixes_relation(commitid, relation, app_url=None): ) elif relation.isa == 'pull-request': pagure.lib.add_pull_request_comment( - pagure.SESSION, + session, request=relation, commit=None, tree_id=None, @@ -138,33 +140,33 @@ def fixes_relation(commitid, relation, app_url=None): user=user, requestfolder=_config['REQUESTS_FOLDER'], ) - pagure.SESSION.commit() + session.commit() except pagure.exceptions.PagureException as err: print(err) except SQLAlchemyError as err: # pragma: no cover - pagure.SESSION.rollback() + session.rollback() _log.exception(err) try: if relation.isa == 'issue': pagure.lib.edit_issue( - pagure.SESSION, + session, relation, ticketfolder=_config['TICKETS_FOLDER'], user=user, status='Closed', close_status='Fixed') elif relation.isa == 'pull-request': pagure.lib.close_pull_request( - pagure.SESSION, + session, relation, requestfolder=_config['REQUESTS_FOLDER'], user=user, merged=True) - pagure.SESSION.commit() + session.commit() except pagure.exceptions.PagureException as err: print(err) except SQLAlchemyError as err: # pragma: no cover - pagure.SESSION.rollback() + session.rollback() print('ERROR', err) _log.exception(err) diff --git a/pagure/hooks/files/pagure_hook_requests.py b/pagure/hooks/files/pagure_hook_requests.py index 8c25587..5d90779 100755 --- a/pagure/hooks/files/pagure_hook_requests.py +++ b/pagure/hooks/files/pagure_hook_requests.py @@ -21,7 +21,7 @@ if 'PAGURE_CONFIG' not in os.environ \ import pagure.lib.git # noqa: E402 -_config = pagure.config.config.reload_config() +_config = pagure.config.config abspath = os.path.abspath(os.environ['GIT_DIR']) @@ -84,8 +84,9 @@ def run_as_post_receive_hook(): except ValueError: pass if json_data: + session = pagure.lib.create_session(_config['DB_URL']) pagure.lib.git.update_request_from_git( - pagure.SESSION, + session, reponame=reponame, namespace=namespace, username=username, @@ -96,6 +97,7 @@ def run_as_post_receive_hook(): ticketfolder=_config['TICKETS_FOLDER'], requestfolder=_config['REQUESTS_FOLDER'], ) + session.close() def main(args): diff --git a/pagure/hooks/files/pagure_hook_tickets.py b/pagure/hooks/files/pagure_hook_tickets.py index 93d57cd..f38f41e 100755 --- a/pagure/hooks/files/pagure_hook_tickets.py +++ b/pagure/hooks/files/pagure_hook_tickets.py @@ -22,7 +22,7 @@ import pagure.lib.git # noqa: E402 from pagure.lib import REDIS # noqa: E402 -_config = pagure.config.config.reload_config() +_config = pagure.config.config abspath = os.path.abspath(os.environ['GIT_DIR']) @@ -37,8 +37,9 @@ def run_as_post_receive_hook(): print('user:', username) print('namespace:', namespace) + session = pagure.lib.create_session(_config['DB_URL']) project = pagure.lib._get_project( - pagure.SESSION, repo, user=username, namespace=namespace, + session, repo, user=username, namespace=namespace, case=_config.get('CASE_SENSITIVE', False)) for line in sys.stdin: @@ -80,6 +81,8 @@ def run_as_post_receive_hook(): print('Hook not configured to connect to pagure-loadjson') print('/!\ Your data will not be loaded into the database!') + session.close() + def main(args): run_as_post_receive_hook()