Exemple #1
0
class YouTrackUtils:
    def __init__(self):
        self.test_touchstone = "touchstone-task-runner-test"
        yt_token = os.environ["YOUTRACK_TOKEN"]
        self.yt = YTClient('https://mrc-ide.myjetbrains.com/youtrack/',
                           token=yt_token)

    def cleanup(self):
        issues = self.yt.get_issues("tag: {}".format(self.test_touchstone))
        if len(issues) > 0:
            self.yt.run_command(Command(issues, "delete"))

    def get_issues(self, query=None, fields=None):
        if query is None:
            query = "summary: {}".format(self.test_touchstone)
        if fields is None:
            fields = ["id"]
        return self.yt.get_issues(query, fields)
def create_ticket(group, disease, touchstone, scenario,
                  report: ReportConfig, version,
                  error,
                  yt: YTClient,
                  config: Config):
    try:
        report_success = version is not None
        summary = "Check & share diag report with {} ({}) {}" if \
            report_success else \
            "Run, check & share diag report with {} ({}) {}"
        result = get_version_url(report, version, config) if \
            report_success else \
            "Auto-run failed with error: {}".format(error)
        description = "Report run triggered by upload to scenario: {}. {}"\
            .format(scenario, result)
        create_tags(yt, group, disease, touchstone, report)
        query = "tag: {} AND tag: {} AND tag: {} AND tag: {} " \
                "AND state: Incoming"
        existing_issues = yt.get_issues(
            query.format(disease, touchstone, group, report.name),
            ["id", "summary", "description", "tags(name)"])
        summary = summary.format(group, disease, touchstone)
        if len(existing_issues) > 0:
            existing_issue = existing_issues[0]
            yt.update_issue(existing_issue, summary, description)
        else:
            issue = yt.create_issue(Project(vimc_project_id),
                                    summary,
                                    description)
            comm = "for {} implementer {} tag {} tag {} tag {} tag {}".format(
                report.assignee,
                report.assignee,
                group, disease,
                touchstone,
                report.name)
            yt.run_command(
                Command([issue], comm))
    except Exception as ex:
        logging.exception(ex)