From bddb70e7c1cd298cebc7cfd26d18a929952d8b24 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Nov 27 2019 14:13:00 +0000 Subject: [PATCH 1/3] Move setting the monitoring status to dist-git Instead of keeping relying on a yaml file in fedora-scm-requests, we will directly set the monitoring status in dist-git. Signed-off-by: Pierre-Yves Chibon --- diff --git a/fedscm_admin/git.py b/fedscm_admin/git.py index 9fe7574..7913535 100644 --- a/fedscm_admin/git.py +++ b/fedscm_admin/git.py @@ -21,7 +21,6 @@ import tempfile import shutil import os import sys -import yaml import click @@ -230,43 +229,6 @@ class GitRepo(object): push_cmd = ['git', 'fetch'] self._run_git_cmd(push_cmd) - def set_monitoring_on_repo(self, namespace, repo, monitoring_level): - """ - Set the monitoring level of a repo in config.yml - :param namespace: the dist-git namespace of the package in question. - :param repo: the name of the dist-git repo in question. - :param monitoring_level: a string representing the desired monitoring - level - :return: None or GitException - """ - self._assert_cloned() - - if self.current_branch != 'master': - self.checkout_branch('master') - - config_yml_dir = os.path.join(self.clone_dir, namespace) - if not os.path.exists(config_yml_dir): - os.makedirs(config_yml_dir) - - config_yml_path = os.path.join(config_yml_dir, repo) - config_yml_file = {} - if os.path.exists(config_yml_path): - with open(config_yml_path, 'r') as config_yml_stream: - config_yml_file = yaml.load(config_yml_stream) - - # Cast it as a string to make sure it outputs correctly in the yml - # output. If it's unicode, then it will output with "!!python-unicode" - # in front of it. - config_yml_file['monitoring'] = str(monitoring_level) - - with open(config_yml_path, 'w') as config_yml_stream: - yaml.dump(config_yml_file, config_yml_stream, - default_flow_style=False) - - self.add(config_yml_path) - self.commit('Adding monitoring for {0}/{1}'.format(namespace, repo)) - self.push() - def create_epel_package_cfg(self, namespace, repo, branch): """ Create package.cfg file in epel branch diff --git a/fedscm_admin/pagure.py b/fedscm_admin/pagure.py index dc11343..f8be12b 100644 --- a/fedscm_admin/pagure.py +++ b/fedscm_admin/pagure.py @@ -342,3 +342,34 @@ def new_branch(namespace, repo, branch, from_commit=None, from_branch=None): http_verb='post', service_name='Pagure') get_request_json(rv, 'create a git branch on a project in Pagure') return None + + +def set_monitoring_status(namespace, repo, monitoring_level): + """ + Set the monitoring level of the specified project + :param namespace: a string representing the namespace to create the project + in + :param repo: a string of the project/repo name + :param monitoring_level: a string of the monitoring level to give to the + project + :return: None + """ + pagure_url = get_config_item(CONFIG, 'pagure_dist_git_url') + pagure_anitya_status_url = '{0}/_dg/anitya/{1}/{2}'.format( + pagure_url.rstrip('/'), namespace, repo) + + headers = get_pagure_auth_header('global') + payload = { + 'anitya_status': monitoring_level, + } + click.echo( + '- Setting the monitoring status for project {0}/{1}'.format( + namespace, repo) + ) + rv = requests_wrapper( + pagure_anitya_status_url, data=payload, headers=headers, timeout=90, + http_verb='post', service_name='Pagure') + # We won't actually use the returned output from this function call but + # it does error checking for us + get_request_json(rv, 'setting monitoring stastus on project in Pagure') + return None diff --git a/fedscm_admin/utils.py b/fedscm_admin/utils.py index 25f18ea..57d8b7f 100644 --- a/fedscm_admin/utils.py +++ b/fedscm_admin/utils.py @@ -458,7 +458,8 @@ def prompt_for_new_repo(issue_json, issue_body_json, force=False, username=FAS_CLIENT.client.username) scm_req_git_obj = fedscm_admin.git.GitRepo(scm_req_git_url) scm_req_git_obj.clone_repo() - scm_req_git_obj.set_monitoring_on_repo( + + fedscm_admin.pagure.set_monitoring_status( namespace, repo, issue_body_json['monitor'].strip()) fedscm_admin.pagure.change_project_main_admin( namespace, repo, issue_owner) diff --git a/tests/test_admin.py b/tests/test_admin.py index 670770e..8bad177 100644 --- a/tests/test_admin.py +++ b/tests/test_admin.py @@ -158,7 +158,6 @@ class FedScmAdmin(TestCase): assert output in result.output # One for fedora-scm-requests assert self.mock_git_obj.clone_repo.call_count == 1 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 1 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -207,7 +206,6 @@ class FedScmAdmin(TestCase): assert output in result.output # One for fedora-scm-requests assert self.mock_git_obj.clone_repo.call_count == 1 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 1 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -257,7 +255,6 @@ class FedScmAdmin(TestCase): assert output in result.output # One for fedora-scm-requests assert self.mock_git_obj.clone_repo.call_count == 1 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 1 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -294,7 +291,6 @@ class FedScmAdmin(TestCase): assert 'You may create the branch' not in result.output # One for fedora-scm-requests assert self.mock_git_obj.clone_repo.call_count == 1 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 1 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -341,7 +337,6 @@ class FedScmAdmin(TestCase): result.output # One for fedora-scm-requests assert self.mock_git_obj.clone_repo.call_count == 1 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 1 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -384,7 +379,6 @@ class FedScmAdmin(TestCase): assert 'The Pagure repository was created' in result.output # One for fedora-scm-requests assert self.mock_git_obj.clone_repo.call_count == 1 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 1 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -415,7 +409,6 @@ class FedScmAdmin(TestCase): assert 'New Repo for "rpms/nethack"' in result.output assert 'Please enter a comment explaining the denial' in result.output assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -443,7 +436,6 @@ class FedScmAdmin(TestCase): assert 'The Pagure repository was created' not in result.output assert 'You may create the branch' not in result.output assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -475,7 +467,6 @@ class FedScmAdmin(TestCase): assert 'New Branch "master" for "rpms/nethack"' in result.output assert 'Please enter a comment explaining the denial' in result.output assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -504,7 +495,6 @@ class FedScmAdmin(TestCase): assert 'The Pagure repository was created' not in result.output assert 'You may create the branch' not in result.output assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas') @patch('fedscm_admin.request_utils.retry_session') @@ -535,7 +525,6 @@ class FedScmAdmin(TestCase): assert 'Error: Invalid SLAs' in result.output assert 'Would you like to close the ticket as invalid' in result.output assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -572,7 +561,6 @@ class FedScmAdmin(TestCase): assert error in result.output assert 'Would you like to close the ticket as invalid' in result.output assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -606,7 +594,6 @@ class FedScmAdmin(TestCase): assert error in result.output assert 'Would you like to close the ticket as invalid' in result.output assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -634,7 +621,6 @@ class FedScmAdmin(TestCase): assert 'Error: Invalid or missing action field' in result.output assert 'Would you like to close the ticket as invalid' in result.output assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -665,7 +651,6 @@ class FedScmAdmin(TestCase): result.output assert result.exit_code == 0 assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -697,7 +682,6 @@ class FedScmAdmin(TestCase): assert 'Would you like to close the ticket as invalid' in result.output assert result.exit_code == 0 assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -748,7 +732,6 @@ class FedScmAdmin(TestCase): assert 'All done!' in result.output # One for fedora-scm-requests and one for getting the inital commit assert self.mock_git_obj.clone_repo.call_count == 2 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 1 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -796,7 +779,6 @@ class FedScmAdmin(TestCase): assert 'Closing Pagure issue 2' in result.output # One for getting the inital commit assert self.mock_git_obj.clone_repo.call_count == 1 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.pagure.get_request_json') @patch('fedscm_admin.pagure.requests_wrapper') @@ -880,7 +862,6 @@ class FedScmAdmin(TestCase): 'requested branch is an EPEL branch') assert error in result.output assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -913,7 +894,6 @@ class FedScmAdmin(TestCase): 'requested branch is "{0}"'.format(chosen_branch)) assert error in result.output assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -942,7 +922,6 @@ class FedScmAdmin(TestCase): 'the requester in Pagure.') assert error in result.output assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -970,4 +949,3 @@ class FedScmAdmin(TestCase): 'sign.') assert error in result.output assert self.mock_git_obj.clone_repo.call_count == 0 - assert self.mock_git_obj.set_monitoring_on_repo.call_count == 0 From ee7b88064e78a1e750d6f0803fbf8228dfa09855 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Nov 27 2019 14:23:52 +0000 Subject: [PATCH 2/3] Make flake8 happy and thus the test suite pass Turns out we had a variable that was never used `auto_approved` and were doing some incorrect comparison to True/False. Signed-off-by: Pierre-Yves Chibon --- diff --git a/fedscm_admin/utils.py b/fedscm_admin/utils.py index 57d8b7f..eeff51b 100644 --- a/fedscm_admin/utils.py +++ b/fedscm_admin/utils.py @@ -50,7 +50,7 @@ def login_to_bugzilla_with_user_input(): except xmlrpc_client.Error: pass - if logged_in is False: + if not logged_in: username = click.prompt('Please enter your Bugzilla username') password = click.prompt( 'Please enter your Bugzilla password', hide_input=True) @@ -419,7 +419,7 @@ def prompt_for_new_repo(issue_json, issue_body_json, force=False, 'manually verify it.') click.secho(msg, fg='yellow') - if auto_approve == False: + if not auto_approve: action = prompt_for_ticket_action() else: action = 'approve' @@ -553,12 +553,10 @@ def prompt_for_new_branch(issue_json, issue_body_json, auto_approve=False): issue_owner = issue_json['user']['name'] issue_ui_url = fedscm_admin.pagure.get_pagure_issue_url(issue_id) - auto_approved = False if auto_approve and \ not ticket_requires_approval('new_branch', issue_body_json): click.echo('- Auto-approving the new branch request for "{0}" on ' '{1}/{2}'.format(branch_name, namespace, repo)) - auto_approved = True action = 'approve' else: click.echo('\nTicket #{0}'.format(issue_id)) @@ -573,7 +571,7 @@ def prompt_for_new_branch(issue_json, issue_body_json, auto_approve=False): click.echo(' Git Branch: {0}'.format(bool_to_word( create_git_branch))) - if auto_approve == False: + if not auto_approve: action = prompt_for_ticket_action() else: action = 'approve' From 987e1192a2fec884417e6ef15b70c0f18c46bb06 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Nov 27 2019 15:44:31 +0000 Subject: [PATCH 3/3] Drop cloning the fedora-scm-requests git repo Now that monitoring status aren't set in this repo there is no need to have it or interact with it locally anymore. Signed-off-by: Pierre-Yves Chibon --- diff --git a/fedscm_admin/utils.py b/fedscm_admin/utils.py index eeff51b..f9a8a22 100644 --- a/fedscm_admin/utils.py +++ b/fedscm_admin/utils.py @@ -454,10 +454,6 @@ def prompt_for_new_repo(issue_json, issue_body_json, force=False, # master branch is already created at this point. if branch_name != 'master': new_git_branch(namespace, repo, branch_name, use_master=True) - scm_req_git_url = fedscm_admin.pagure.get_scm_requests_git_url( - username=FAS_CLIENT.client.username) - scm_req_git_obj = fedscm_admin.git.GitRepo(scm_req_git_url) - scm_req_git_obj.clone_repo() fedscm_admin.pagure.set_monitoring_status( namespace, repo, issue_body_json['monitor'].strip()) diff --git a/tests/test_admin.py b/tests/test_admin.py index 8bad177..48610ce 100644 --- a/tests/test_admin.py +++ b/tests/test_admin.py @@ -156,8 +156,7 @@ class FedScmAdmin(TestCase): ] for output in outputs: assert output in result.output - # One for fedora-scm-requests - assert self.mock_git_obj.clone_repo.call_count == 1 + assert self.mock_git_obj.clone_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -204,8 +203,7 @@ class FedScmAdmin(TestCase): ] for output in outputs: assert output in result.output - # One for fedora-scm-requests - assert self.mock_git_obj.clone_repo.call_count == 1 + assert self.mock_git_obj.clone_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -253,8 +251,7 @@ class FedScmAdmin(TestCase): ] for output in outputs: assert output in result.output - # One for fedora-scm-requests - assert self.mock_git_obj.clone_repo.call_count == 1 + assert self.mock_git_obj.clone_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -289,8 +286,7 @@ class FedScmAdmin(TestCase): assert 'New Repo for "rpms/nethack"' in result.output assert 'The Pagure repository was created' in result.output assert 'You may create the branch' not in result.output - # One for fedora-scm-requests - assert self.mock_git_obj.clone_repo.call_count == 1 + assert self.mock_git_obj.clone_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -335,8 +331,7 @@ class FedScmAdmin(TestCase): assert 'The Pagure repository was created' in result.output assert 'You may commit to the branch "epel7" in about 10 minutes.' in \ result.output - # One for fedora-scm-requests - assert self.mock_git_obj.clone_repo.call_count == 1 + assert self.mock_git_obj.clone_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -377,8 +372,7 @@ class FedScmAdmin(TestCase): assert result.exit_code == 0 assert 'New Repo for "rpms/nethack"' in result.output assert 'The Pagure repository was created' in result.output - # One for fedora-scm-requests - assert self.mock_git_obj.clone_repo.call_count == 1 + assert self.mock_git_obj.clone_repo.call_count == 0 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session') @@ -711,7 +705,6 @@ class FedScmAdmin(TestCase): mock_values.get_mock_pdc_branch('master', exists=False), mock_values.get_mock_pdc_global_component(exists=True), mock_values.get_mock_pdc_branch(None, exists=False), - mock_values.get_mock_pagure_git_urls(), mock_values.get_mock_pagure_project(exists=True), mock_values.get_mock_pagure_git_urls(is_project=True), mock_values.get_mock_pdc_branch(None, exists=False), @@ -730,8 +723,8 @@ class FedScmAdmin(TestCase): assert 'New Branch "abc" for "rpms/nethack"' in result.output assert 'New Repo for "rpms/nethack"' in result.output assert 'All done!' in result.output - # One for fedora-scm-requests and one for getting the inital commit - assert self.mock_git_obj.clone_repo.call_count == 2 + # One for getting the inital commit + assert self.mock_git_obj.clone_repo.call_count == 1 @patch('fedscm_admin.utils.verify_slas', return_value=None) @patch('fedscm_admin.request_utils.retry_session')