Skip to content

Instantly share code, notes, and snippets.

@grafuls
Last active April 14, 2021 13:35
Show Gist options
  • Save grafuls/6f072bc41f7e3f30d3c344a450f30de0 to your computer and use it in GitHub Desktop.
Save grafuls/6f072bc41f7e3f30d3c344a450f30de0 to your computer and use it in GitHub Desktop.
watchers
#! /usr/bin/env python
import asyncio
from datetime import date, datetime, timedelta
from quads.config import conf
from quads.model import Cloud, CloudHistory, Schedule
from quads.tools.jira import Jira
async def main(loop):
jira = Jira(
conf["jira_url"],
conf["jira_username"],
conf["jira_password"],
loop=loop,
)
tickets = await jira.get_pending_tickets()
for ticket in tickets["issues"]:
ticket_key = ticket.get("key").split("-")[-1]
fields = ticket.get("fields")
if fields:
cloud = fields.get("description").split()[-1]
cloud_obj = Cloud.objects(name=cloud).first()
schedules = Schedule.current_schedule(cloud=cloud_obj)
conflict=False
for schedule in schedules:
end_date = schedule.end + timedelta(weeks=2)
available = Schedule.is_host_available(host=schedule.host.name,
start=schedule.end,
end=end_date)
if not available:
conflict = True
await jira.add_label(ticket_key, "CANNOT_EXTEND")
break
if not conflict:
await jira.add_label(ticket_key, "CAN_EXTEND")
parent = fields.get("parent")
if parent:
p_ticket_key = parent.get("key").split("-")[-1]
watchers = await jira.get_watchers(p_ticket_key)
for watcher in watchers["watchers"]:
await jira.add_watcher(ticket_key, watcher["key"])
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment