From d4bae30fb3b993a142d0be2655b08c50031b6e09 Mon Sep 17 00:00:00 2001
From: "siraj.yasin" <sirajudeen.yasin@gmail.com>
Date: Fri, 16 Apr 2021 17:48:46 +0000
Subject: [PATCH] Disable the redundant github issue update job

* airship-airshipctl-update-github-issues job adds comments
  to related github issue on PS merge based on the tag(Realtes-To/Closes)
  in commit message.
* airshipbot is already doing the job of adding comments to issues on new PSs
  and updating the status (closed, reopen) as applicable.
* So the job airship-airshipctl-update-github-issues is redundant when airshipbot
  is running.

Change-Id: I2c6fa748d3334384bf5b31c87d9501a006a153c1
Relates-To: #502
---
 ...rship-airshipctl-update-github-issues.yaml | 34 --------
 playbooks/files/update_github_issues.py       | 82 -------------------
 zuul.d/jobs.yaml                              |  9 --
 zuul.d/projects.yaml                          |  1 -
 4 files changed, 126 deletions(-)
 delete mode 100644 playbooks/airship-airshipctl-update-github-issues.yaml
 delete mode 100755 playbooks/files/update_github_issues.py

diff --git a/playbooks/airship-airshipctl-update-github-issues.yaml b/playbooks/airship-airshipctl-update-github-issues.yaml
deleted file mode 100644
index 7b8fd1593..000000000
--- a/playbooks/airship-airshipctl-update-github-issues.yaml
+++ /dev/null
@@ -1,34 +0,0 @@
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-- hosts: primary
-  tasks:
-    - name: Install python setuptools
-      package:
-        name:
-        - python3-pip
-        - python3-setuptools
-        state: present
-      become: yes
-
-    - name: Install script dependencies
-      pip:
-        name:
-          - PyGithub==1.46
-        executable: pip3
-    - name: Run python script
-      script: >
-        update_github_issues.py "{{ github_credentials.token }}" \
-          "{{ zuul.message | b64decode }}" \
-          "{{ zuul.change_url }}"
-      args:
-        executable: python3
diff --git a/playbooks/files/update_github_issues.py b/playbooks/files/update_github_issues.py
deleted file mode 100755
index cde7e0d4b..000000000
--- a/playbooks/files/update_github_issues.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-import logging
-import re
-import sys
-
-import github
-
-GH_TOKEN = sys.argv[1]
-ZUUL_MESSAGE = sys.argv[2]
-GERRIT_URL = sys.argv[3]
-REPO_NAME = 'airshipit/airshipctl'
-PROCESS_LABELS = ['wip', 'ready for review', 'triage', 'blocked']
-
-
-def construct_issue_list(match_list: list) -> set:
-    new_list = []
-    for _issue in match_list:
-        try:
-            new_list.append(int(_issue))
-        except ValueError:
-            logging.warning(f'Value {_issue} could not be converted to `int` type')
-    return set(new_list)
-
-
-def parse_issue_number(commit_msg: str) -> dict:
-    # Searches for Relates-To or Closes tags first to match and return
-    logging.debug(f'Parsing commit message: {commit_msg}')
-    related = re.findall(r'(?<=Relates-To: #)([0-9]+?)(?=\n)', commit_msg)
-    logging.debug(f'Captured related issues: {related}')
-    closes = re.findall(r'(?<=Closes: #)([0-9]+?)(?=\n)', commit_msg)
-    logging.debug(f'Captured closes issues: {closes}')
-    if related or closes:
-        return {
-            'related': construct_issue_list(related),
-            'closes': construct_issue_list(closes)
-        }
-    # If no Relates-To or Closes tags are defined, find legacy [#X] style tags
-    logging.debug('Falling back to legacy tags')
-    legacy_matches = re.findall(r'(?<=\[#)([0-9]+?)(?=\])', commit_msg)
-    logging.debug(f'Captured legacy issues: {legacy_matches}')
-    if not legacy_matches:
-        return {}
-    return {
-        'related': construct_issue_list(legacy_matches)
-    }
-
-
-def remove_duplicated_issue_numbers(issue_dict: dict) -> dict:
-    if 'closes' in issue_dict:
-        issue_dict['related'] = [x for x in issue_dict.get('related', []) if x not in issue_dict['closes']]
-    return issue_dict
-
-
-if __name__ == '__main__':
-    issue_number_dict = parse_issue_number(ZUUL_MESSAGE)
-    issue_number_dict = remove_duplicated_issue_numbers(issue_number_dict)
-    gh = github.Github(GH_TOKEN)
-    repo = gh.get_repo(REPO_NAME)
-    for key, issue_list in issue_number_dict.items():
-        for issue_number in issue_list:
-            issue = repo.get_issue(number=issue_number)
-            comment_msg = ''
-            link_exists = False
-            if key == 'closes':
-                issue.create_comment(f'The [Change]({GERRIT_URL}) that closes this issue was merged.')
-                for label in PROCESS_LABELS:
-                    try:
-                        issue.remove_from_labels(label)
-                    except github.GithubException:
-                        pass
-            else:
-                issue.create_comment(f'A [Related Change]({GERRIT_URL} was merged. This issue may be ready to close.')
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index 5b19182eb..ac502f076 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -49,15 +49,6 @@
     nodeset: airship-airshipctl-single-node
     voting: false
 
-- job:
-    name: airship-airshipctl-update-github-issues
-    description: Updates and/or closes related issues on Github on merge
-    run: playbooks/airship-airshipctl-update-github-issues.yaml
-    nodeset: airship-airshipctl-single-node
-    secrets:
-      - name: github_credentials
-        secret: airship_airshipctl_airshipit_github_token
-
 - job:
     name: airship-airshipctl-build-image
     nodeset: airship-airshipctl-single-node
diff --git a/zuul.d/projects.yaml b/zuul.d/projects.yaml
index 1e9ac0823..fc4527d81 100644
--- a/zuul.d/projects.yaml
+++ b/zuul.d/projects.yaml
@@ -61,7 +61,6 @@
     promote:
       jobs:
         - promote-airship-project-docs: *docs
-        - airship-airshipctl-update-github-issues
     tag:
       jobs:
         - airship-airshipctl-upload-git-mirror