From f9ca3d02a7ea8bcf1253cec9b4be0e65b4d21a58 Mon Sep 17 00:00:00 2001 From: "Gode, Sebastian" Date: Wed, 30 Oct 2024 10:55:12 +0000 Subject: [PATCH] Fix error handling on confpy script Reviewed-by: tischrei Co-authored-by: Gode, Sebastian Co-committed-by: Gode, Sebastian --- tools/generate_doc_confpy.py | 55 ++++++++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 5 deletions(-) diff --git a/tools/generate_doc_confpy.py b/tools/generate_doc_confpy.py index ea4562e6..bada749d 100644 --- a/tools/generate_doc_confpy.py +++ b/tools/generate_doc_confpy.py @@ -44,6 +44,7 @@ def process_repositories(args, service): url_to = None target_repo = None git_fqdn = None + error_list = [] env = Environment( loader=PackageLoader("otc_metadata"), autoescape=select_autoescape() @@ -75,7 +76,11 @@ def process_repositories(args, service): repo_url = f"git@github.com:/{repo['repo']}" else: logging.error(f"Repository type {repo['type']} is not supported") - exit(1) + error_list.append({ + "error": f"Repository type {repo['type']} is not supported", + "repo": repo['repo'] + }) + continue if repo_dir.exists(): logging.debug(f"Repository {repo} already checked out") @@ -87,13 +92,22 @@ def process_repositories(args, service): except exc.InvalidGitRepositoryError: logging.error("Existing repository checkout is bad") repo_dir.rmdir() + except Exception as e: + error_list.append({ + "error": e, + "repo": repo['repo'] + }) if not repo_dir.exists(): try: git_repo = Repo.clone_from(repo_url, repo_dir, branch="main") except Exception: logging.error(f"Error cloning repository {repo_url}") - return + error_list.append({ + "error": f"Error cloning repository {repo_url}", + "repo": repo['repo'] + }) + continue if repo["environment"] == args.target_environment: url_to = repo_url @@ -116,11 +130,19 @@ def process_repositories(args, service): repo_to.delete_head(f"refs/heads/{args.branch_name}", force=True) except exc.GitCommandError as e: print(e) + error_list.append({ + "error": e, + "repo": target_repo['repo'] + }) pass try: new_branch = repo_to.create_head(branch_name, "main") except Exception as e: logging.warning(f"Skipping service {service} due to {e}") + error_list.append({ + "error": e, + "repo": target_repo['repo'] + }) return new_branch.checkout() @@ -145,7 +167,14 @@ def process_repositories(args, service): context["git_fqdn"] = git_fqdn if target_repo.get("type") != "github": context["git_type"] = target_repo["type"] - if args.target_environment == "internal": + if (args.target_environment == "internal" + and target_repo["repo"].split("/")[0] == "docs-swiss"): + context["html_options"] = dict( + disable_search=True, + site_name="Internal Documentation Portal", + logo_url="https://docs-swiss-int.otc-service.com", + ) + elif args.target_environment == "internal": context["html_options"] = dict( disable_search=True, site_name="Internal Documentation Portal", @@ -195,7 +224,14 @@ def process_repositories(args, service): context["git_fqdn"] = git_fqdn if target_repo.get("type") != "github": context["git_type"] = target_repo["type"] - if args.target_environment == "internal": + if (args.target_environment == "internal" + and target_repo["repo"].split("/")[0] == "docs-swiss"): + context["html_options"] = dict( + disable_search=True, + site_name="Internal Documentation Portal", + logo_url="https://docs-swiss-int.otc-service.com", + ) + elif args.target_environment == "internal": context["html_options"] = dict( disable_search=True, site_name="Internal Documentation Portal", @@ -283,7 +319,13 @@ def process_repositories(args, service): push_args = ["--set-upstream", "origin", branch_name] if args.force_push: push_args.append("--force") - repo_to.git.push(*push_args) + try: + repo_to.git.push(*push_args) + except Exception as e: + error_list.append({ + "error": e, + "repo": repo['repo'] + }) if "github" in url_to: subprocess.run( args=["gh", "pr", "create", "-f"], cwd=copy_to, check=False @@ -297,6 +339,9 @@ def process_repositories(args, service): head=branch_name, ), ) + if len(error_list) != 0: + logging.error("The following errors have happened:") + logging.error(error_list) def open_pr(args, repository, pr_data):