From 3330383da2c082705077153a95f914d78b104b04 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jul 27 2016 07:46:53 +0000 Subject: Deactivate the 'Pagure CI' plugin if python-jenkins is not installed --- diff --git a/pagure/ui/plugins.py b/pagure/ui/plugins.py index c9d29d9..d7b0e56 100644 --- a/pagure/ui/plugins.py +++ b/pagure/ui/plugins.py @@ -21,7 +21,12 @@ from pagure import APP, SESSION, login_required, is_repo_admin from pagure.lib.model import BASE from pagure.exceptions import FileNotFoundException from pagure.hooks import jenkins_hook -from pagure.lib import model, pagure_ci +from pagure.lib import model + +try: + from pagure.lib import pagure_ci +except ImportError: + pagure_ci = None import json from kitchen.text.converters import to_bytes @@ -37,6 +42,10 @@ def get_plugin_names(blacklist=None): blacklist = [] elif not isinstance(blacklist, list): blacklist = [blacklist] + + if pagure_ci is None and 'Pagure CI' not in blacklist: + blacklist.append('Pagure CI') + output = [ plugin.name for plugin in plugins @@ -172,26 +181,26 @@ def view_plugin(repo, plugin, username=None, full=True): pagure_ci_token=pagure_ci_token, fields=fields) +if pagure_ci is not None: + @APP.route('/hooks//build-finished', methods=['POST']) + def hook_finished(pagure_ci_token): + """ Flags the Pull-request after getting notification from Jenkins + """ -@APP.route('/hooks//build-finished', methods=['POST']) -def hook_finished(pagure_ci_token): - """ Flags the Pull-request after getting notification from Jenkins - """ - - try: - data = json.loads(flask.request.get_data()) - cfg = jenkins_hook.get_configs( - data['name'], jenkins_hook.Service.JENKINS)[0] - build_id = data['build']['number'] - - if not constant_time.bytes_eq( - to_bytes(pagure_ci_token), to_bytes(cfg.pagure_ci_token)): - return ('Token mismatch', 401) - - except (TypeError, ValueError, KeyError, jenkins_hook.ConfigNotFound) as exc: - APP.logger.error('Error processing jenkins notification', exc_info=exc) - flask.abort(400, "Bad Request") - - APP.logger.info('Received jenkins notification') - pagure_ci.process_build(APP.logger, cfg, build_id) - return ('', 204) + try: + data = json.loads(flask.request.get_data()) + cfg = jenkins_hook.get_configs( + data['name'], jenkins_hook.Service.JENKINS)[0] + build_id = data['build']['number'] + + if not constant_time.bytes_eq( + to_bytes(pagure_ci_token), to_bytes(cfg.pagure_ci_token)): + return ('Token mismatch', 401) + + except (TypeError, ValueError, KeyError, jenkins_hook.ConfigNotFound) as exc: + APP.logger.error('Error processing jenkins notification', exc_info=exc) + flask.abort(400, "Bad Request") + + APP.logger.info('Received jenkins notification') + pagure_ci.process_build(APP.logger, cfg, build_id) + return ('', 204)