You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by kn...@apache.org on 2021/05/19 08:09:51 UTC
[flink-jira-bot] 29/47: [hotfix] pull up logic to handle stale
tickets
This is an automated email from the ASF dual-hosted git repository.
knaufk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-jira-bot.git
commit a6002490ef50be5f4b3c103ba80db0d90d307c97
Author: Konstantin Knauf <kn...@gmail.com>
AuthorDate: Wed Apr 21 14:42:06 2021 +0200
[hotfix] pull up logic to handle stale tickets
---
flink_jira_rule.py | 24 ++++++++++++++++++++++++
stale_assigned_rule.py | 33 ++++++---------------------------
stale_major_or_above_rule.py | 34 +++++++---------------------------
stale_minor_rule.py | 34 +++++++---------------------------
4 files changed, 44 insertions(+), 81 deletions(-)
diff --git a/flink_jira_rule.py b/flink_jira_rule.py
index ff32a1e..f11f275 100644
--- a/flink_jira_rule.py
+++ b/flink_jira_rule.py
@@ -114,6 +114,10 @@ class FlinkJiraRule:
def run(self):
return
+ @abc.abstractmethod
+ def handle_stale_ticket(self, key):
+ return
+
def mark_stale_tickets_stale(self, jql_query):
logging.info(f"Looking for stale tickets.")
@@ -141,3 +145,23 @@ class FlinkJiraRule:
f"Found https://issues.apache.org/jira/browse/{key}, but is has recently updated Subtasks. "
f"Ignoring for now."
)
+
+ def handle_tickets_marked_stale(self, jql_query):
+ logging.info(f"Looking for ticket previously marked as {self.warning_label}.")
+ issues = self.get_issues(jql_query)
+
+ for issue in issues:
+ key = issue["key"]
+ logging.info(
+ f"Found https://issues.apache.org/jira/browse/{key}. It is now processed as stale."
+ )
+
+ formatted_comment = self.done_comment.format(
+ warning_days=self.warning_days,
+ warning_label=self.warning_label,
+ done_label=self.done_label,
+ )
+
+ self.add_comment(key, formatted_comment)
+ self.replace_label(issue, self.warning_label, self.done_label)
+ self.handle_stale_ticket(key)
diff --git a/stale_assigned_rule.py b/stale_assigned_rule.py
index cb672d4..26c7b00 100644
--- a/stale_assigned_rule.py
+++ b/stale_assigned_rule.py
@@ -32,35 +32,14 @@ class StaleAssignedRule(FlinkJiraRule):
super().__init__(jira_client, config, is_dry_run)
def run(self):
- self.unassign_tickets_marked_stale()
- self.mark_stale_tickets_stale(
- f"project = FLINK AND resolution = Unresolved AND assignee is not EMPTY "
- f"AND updated < startOfDay(-{self.stale_days}d)"
- )
-
- def unassign_tickets_marked_stale(self):
-
- assigned_tickets_marked_stale = (
+ self.handle_tickets_marked_stale(
f"project=FLINK AND resolution = Unresolved AND labels in "
f'("{self.warning_label}") AND updated < startOfDay(-{self.warning_days}d)'
)
- logging.info(
- f"Looking for assigned tickets, which were previously marked as {self.warning_label}."
+ self.mark_stale_tickets_stale(
+ f"project = FLINK AND resolution = Unresolved AND assignee is not EMPTY "
+ f"AND updated < startOfDay(-{self.stale_days}d)"
)
- issues = self.get_issues(assigned_tickets_marked_stale)
-
- for issue in issues:
- key = issue["key"]
- logging.info(
- f"Found https://issues.apache.org/jira/browse/{key}. It is now unassigned due to inactivity."
- )
-
- formatted_comment = self.done_comment.format(
- warning_days=self.warning_days,
- warning_label=self.warning_label,
- done_label=self.done_label,
- )
- self.add_comment(key, formatted_comment)
- self.replace_label(issue, self.warning_label, self.done_label)
- self.unassign(key)
+ def handle_stale_ticket(self, key):
+ self.unassign(key)
diff --git a/stale_major_or_above_rule.py b/stale_major_or_above_rule.py
index e37c9d1..d5e5663 100644
--- a/stale_major_or_above_rule.py
+++ b/stale_major_or_above_rule.py
@@ -38,35 +38,15 @@ class StaleMajorOrAboveRule(FlinkJiraRule):
LOWER_PRIORITIES = {"Blocker": "Critical", "Critical": "Major", "Major": "Minor"}
def run(self):
- self.close_tickets_marked_stale()
+ self.handle_tickets_marked_stale(
+ f"project=FLINK AND Priority = {self.priority} AND resolution = Unresolved "
+ f'AND labels in ("{self.warning_label}") '
+ f"AND updated < startOfDay(-{self.warning_days}d)"
+ )
self.mark_stale_tickets_stale(
f"project=FLINK AND priority = {self.priority} AND resolution = Unresolved "
f"AND assignee is empty AND updated < startOfDay(-{self.stale_days}d)"
)
- def close_tickets_marked_stale(self):
-
- tickets_marked_stale = (
- f"project=FLINK AND Priority = {self.priority} AND resolution = Unresolved AND labels in "
- f'("{self.warning_label}") AND updated < startOfDay(-{self.warning_days}d)'
- )
- logging.info(
- f"Looking for {self.priority} tickets, which were previously marked as {self.warning_label}."
- )
- issues = self.get_issues(tickets_marked_stale)
-
- for issue in issues:
- key = issue["key"]
- logging.info(
- f"Found https://issues.apache.org/jira/browse/{key}. It is now deprioritized due to inactivity."
- )
-
- formatted_comment = self.done_comment.format(
- warning_days=self.warning_days,
- warning_label=self.warning_label,
- done_label=self.done_label,
- )
-
- self.add_comment(key, formatted_comment)
- self.replace_label(issue, self.warning_label, self.done_label)
- self.set_priority(key, self.LOWER_PRIORITIES[self.priority])
+ def handle_stale_ticket(self, key):
+ self.set_priority(key, self.LOWER_PRIORITIES[self.priority])
diff --git a/stale_minor_rule.py b/stale_minor_rule.py
index b06785b..0bef5d9 100644
--- a/stale_minor_rule.py
+++ b/stale_minor_rule.py
@@ -32,35 +32,15 @@ class StaleMinorRule(FlinkJiraRule):
super().__init__(jira_client, config, is_dry_run)
def run(self):
- self.close_tickets_marked_stale()
+ self.handle_tickets_marked_stale(
+ f"project=FLINK AND Priority = Minor AND resolution = Unresolved "
+ f'AND labels in ("{self.warning_label}") '
+ f"AND updated < startOfDay(-{self.warning_days}d)"
+ )
self.mark_stale_tickets_stale(
f"project = FLINK AND Priority = Minor AND resolution = Unresolved "
f"AND updated < startOfDay(-{self.stale_days}d)"
)
- def close_tickets_marked_stale(self):
-
- minor_tickets_marked_stale = (
- f"project=FLINK AND Priority = Minor AND resolution = Unresolved AND labels in "
- f'("{self.warning_label}") AND updated < startOfDay(-{self.warning_days}d)'
- )
- logging.info(
- f"Looking for minor tickets, which were previously marked as {self.warning_label}."
- )
- issues = self.get_issues(minor_tickets_marked_stale)
-
- for issue in issues:
- key = issue["key"]
- logging.info(
- f"Found https://issues.apache.org/jira/browse/{key}. It is now closed due to inactivity."
- )
-
- formatted_comment = self.done_comment.format(
- warning_days=self.warning_days,
- warning_label=self.warning_label,
- done_label=self.done_label,
- )
-
- self.add_comment(key, formatted_comment)
- self.replace_label(issue, self.warning_label, self.done_label)
- self.close_issue(key)
+ def handle_stale_ticket(self, key):
+ self.close_issue(key)