diff --git a/webhook_server_container/tests/test_pull_request_owners.py b/webhook_server_container/tests/test_pull_request_owners.py index 5fbc57ec..fcfe3c6a 100644 --- a/webhook_server_container/tests/test_pull_request_owners.py +++ b/webhook_server_container/tests/test_pull_request_owners.py @@ -1,6 +1,6 @@ -import pytest - import yaml + +import pytest from webhook_server_container.tests.conftest import ContentFile, Tree from webhook_server_container.utils.constants import APPROVED_BY_LABEL_PREFIX @@ -12,7 +12,7 @@ def __init__(self): def get_git_tree(self, sha: str, recursive: bool): return Tree("") - def get_contents(self, path: str): + def get_contents(self, path: str, ref): owners_data = yaml.dump({ "approvers": ["root_approver1", "root_approver2"], "reviewers": ["root_reviewer1", "root_reviewer2"], diff --git a/webhook_server_container/utils/github_repository_settings.py b/webhook_server_container/utils/github_repository_settings.py index d2391be8..c1cf2a7e 100644 --- a/webhook_server_container/utils/github_repository_settings.py +++ b/webhook_server_container/utils/github_repository_settings.py @@ -196,7 +196,7 @@ def get_repo_branch_protection_rules(config_data: dict[str, Any], repo_data: dic return repo_data -def set_repositories_settings(config_: Config, github_api: Github) -> None: +def set_repositories_settings(config_: Config) -> None: logger = get_logger_with_params(name="github-repository-settings") logger.info("Processing repositories") @@ -220,7 +220,6 @@ def set_repositories_settings(config_: Config, github_api: Github) -> None: set_repository, **{ "data": data, - "github_api": github_api, "default_status_checks": default_status_checks, }, ) @@ -229,15 +228,17 @@ def set_repositories_settings(config_: Config, github_api: Github) -> None: get_future_results(futures=futures) -def set_repository( - data: Dict[str, Any], github_api: Github, default_status_checks: List[str] -) -> Tuple[bool, str, Callable]: +def set_repository(data: Dict[str, Any], default_status_checks: List[str]) -> Tuple[bool, str, Callable]: logger = get_logger_with_params(name="github-repository-settings") repository: str = data["name"] logger.info(f"Processing repository {repository}") protected_branches: Dict[str, Any] = data.get("protected-branches", {}) repo_branch_protection_rules: Dict[str, Any] = data["branch_protection"] + github_api, _ = get_api_with_highest_rate_limit(config=config, repository_name=repository) + if not github_api: + return False, f"{repository}: Failed to get github api", logger.error + repo = _get_github_repo_api(github_api=github_api, repository=repository) if not repo: return False, f"{repository}: Failed to get repository", logger.error @@ -294,7 +295,7 @@ def set_repository( return True, f"{repository}: Setting repository settings is done", logger.info -def set_all_in_progress_check_runs_to_queued(config_: Config, github_api: Github) -> None: +def set_all_in_progress_check_runs_to_queued(config_: Config) -> None: check_runs = ( PYTHON_MODULE_INSTALL_STR, CAN_BE_MERGED_STR, @@ -306,6 +307,7 @@ def set_all_in_progress_check_runs_to_queued(config_: Config, github_api: Github with ThreadPoolExecutor() as executor: for _, data in config_.data["repositories"].items(): + github_api, _ = get_api_with_highest_rate_limit(config=config, repository_name=data["name"]) futures.append( executor.submit( set_repository_check_runs_to_queued, @@ -382,13 +384,7 @@ def get_repository_github_app_api(config_: Config, repository_name: str) -> Opti logger = get_logger_with_params(name="github-repository-settings") config = Config() - api, _ = get_api_with_highest_rate_limit(config=config) - if api: - set_repositories_settings(config_=config, github_api=api) - set_all_in_progress_check_runs_to_queued( - config_=config, - github_api=api, - ) - - else: - logger.error("Failed to get GitHub API") + set_repositories_settings(config_=config) + set_all_in_progress_check_runs_to_queued( + config_=config, + ) diff --git a/webhook_server_container/utils/webhook.py b/webhook_server_container/utils/webhook.py index 56615e00..162eaa40 100644 --- a/webhook_server_container/utils/webhook.py +++ b/webhook_server_container/utils/webhook.py @@ -1,8 +1,8 @@ from concurrent.futures import ThreadPoolExecutor from typing import Any, Callable, Dict, List, Tuple -from github.Hook import Hook from github import Github +from github.Hook import Hook from webhook_server_container.libs.config import Config from webhook_server_container.utils.helpers import ( @@ -12,7 +12,6 @@ get_logger_with_params, ) - LOGGER = get_logger_with_params(name="webhook") @@ -39,13 +38,14 @@ def process_github_webhook(data: Dict[str, Any], github_api: Github, webhook_ip: return True, f"{repository}: Create webhook is done", LOGGER.info -def create_webhook(config_: Config, github_api: Github) -> None: +def create_webhook(config_: Config) -> None: LOGGER.info("Preparing webhook configuration") webhook_ip = config_.data["webhook_ip"] futures = [] with ThreadPoolExecutor() as executor: for _, data in config_.data["repositories"].items(): + github_api, _ = get_api_with_highest_rate_limit(config=config, repository_name=data["name"]) futures.append( executor.submit( process_github_webhook, @@ -58,8 +58,4 @@ def create_webhook(config_: Config, github_api: Github) -> None: if __name__ == "__main__": config = Config() - api, _ = get_api_with_highest_rate_limit(config=config) - if api: - create_webhook(config_=config, github_api=api) - else: - LOGGER.error("Failed to get GitHub API") + create_webhook(config_=config)