Reviewed-by: Goncharov, Artem <artem.goncharov@t-systems.com> Co-authored-by: gtema <artem.goncharov@gmail.com> Co-committed-by: gtema <artem.goncharov@gmail.com>
74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
#!/usr/bin/env python
|
|
|
|
import argparse
|
|
# import re
|
|
import requests
|
|
# import sys
|
|
|
|
import otc_metadata.services
|
|
|
|
api_session = requests.Session()
|
|
|
|
|
|
def open_issue(args, repository, issue_data):
|
|
req = dict(
|
|
title=issue_data["title"], body=issue_data["body"].replace("\\n", "\n")
|
|
)
|
|
if "assignees" in issue_data:
|
|
req["assignees"] = issue_data["assignees"]
|
|
if "labels" in issue_data:
|
|
req["labels"] = issue_data["labels"]
|
|
print(req)
|
|
rsp = api_session.post(
|
|
f"{args.api_url}/repos/{repository}/issues", json=req
|
|
)
|
|
if rsp.status_code != 201:
|
|
print(rsp.text)
|
|
print(
|
|
f"Going to open issue with title {issue_data['title']} in {repository}"
|
|
)
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
description="Open Issue for every document."
|
|
)
|
|
parser.add_argument("token", metavar="token", help="API token")
|
|
parser.add_argument("--api-url", help="API base url of the Git hoster")
|
|
parser.add_argument("--environment", help="Environment for the repository")
|
|
parser.add_argument("--title", required=True, help="Issue title")
|
|
parser.add_argument("--body", required=True, help="Issue body")
|
|
parser.add_argument(
|
|
"--repo",
|
|
help="Repository to report issue in (instead of doc repository).",
|
|
)
|
|
parser.add_argument(
|
|
"--assignee",
|
|
help="Issue assignee to use instead of document service assignees.",
|
|
)
|
|
parser.add_argument(
|
|
"--labels",
|
|
help="Issue labels to use (comma separated list of label IDs).",
|
|
)
|
|
args = parser.parse_args()
|
|
data = otc_metadata.services.Services()
|
|
api_session.headers.update({"Authorization": f"token {args.token}"})
|
|
|
|
for doc in data.all_docs_full(environment=args.environment):
|
|
issue_data = dict(
|
|
title=args.title.format(**doc),
|
|
body=args.body.format(**doc),
|
|
repository=doc["repository"],
|
|
)
|
|
if "assignees" in doc:
|
|
issue_data["assignees"] = doc["assignees"]
|
|
if args.assignee:
|
|
issue_data["assignees"] = [args.assignee]
|
|
if args.labels:
|
|
issue_data["labels"] = [int(x) for x in args.labels.split(",")]
|
|
open_issue(args, args.repo or doc["repository"], issue_data)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|