From da5d6fd8c54fd3f2aeea2059118c452492ffd483 Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Date: Thu, 5 Jun 2025 09:47:59 +0200 Subject: [PATCH] Fix base path handling --- api/repo_api.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/api/repo_api.py b/api/repo_api.py index 19fd176..1cb115e 100644 --- a/api/repo_api.py +++ b/api/repo_api.py @@ -54,7 +54,8 @@ config_file = '/opt/opengnsys/ogrepository/etc/ogAdmRepo.cfg' # GIT # -------------------------------------------------------------------------------------------- -REPOSITORIES_BASE_PATH = "/opt/opengnsys/ogrepository/oggit/git/oggit/" +REPOSITORIES_BASE_PATH = "/opt/opengnsys/ogrepository/oggit/git/" +OGGIT_USER = "oggit" import sys import git @@ -2222,7 +2223,7 @@ def rename_image(): def git_compact_repository_task(repo, job_id): journal.send("Running function 'git_compact_repository_task'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") - git_repo_path = os.path.join(REPOSITORIES_BASE_PATH, repo + ".git") + git_repo_path = os.path.join(REPOSITORIES_BASE_PATH, OGGIT_USER, repo + ".git") git_repo = git.Repo(git_repo_path) git_repo.git.config('--global', '--add', 'safe.directory', git_repo_path) @@ -2239,7 +2240,7 @@ def git_compact_repository_task(repo, job_id): def git_sync_repository_task(repo, remote_repository, job_id): journal.send("Running function 'git_sync_repository_task'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") - git_repo_path = os.path.join(REPOSITORIES_BASE_PATH, repo + ".git") + git_repo_path = os.path.join(REPOSITORIES_BASE_PATH, OGGIT_USER, repo + ".git") git_repo = git.Repo(git_repo_path) git_repo.git.config('--global', '--add', 'safe.directory', git_repo_path) @@ -2267,7 +2268,7 @@ def git_sync_repository_task(repo, remote_repository, job_id): def git_backup_repository_task(repo, params, job_id): journal.send("Running function 'git_sync_repository_task'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") - git_repo_path = os.path.join(REPOSITORIES_BASE_PATH, repo + ".git") + git_repo_path = os.path.join(REPOSITORIES_BASE_PATH, OGGIT_USER, repo + ".git") git_repo = git.Repo(git_repo_path) git_repo.git.config('--global', '--add', 'safe.directory', git_repo_path) @@ -2317,7 +2318,7 @@ def git_list_repositories(): return jsonify({"error": "Repository storage not found, git functionality may not be installed."}), 500 repos = [] - for entry in os.scandir(REPOSITORIES_BASE_PATH): + for entry in os.scandir(os.path.join(REPOSITORIES_BASE_PATH, OGGIT_USER)): if entry.is_dir(follow_symlinks=False) and os.path.isfile(os.path.join(entry.path, "HEAD")): name = entry.name if name.endswith(".git"): @@ -2387,7 +2388,7 @@ def git_create_repository(): repo = data["name"] - repo_path = os.path.join(REPOSITORIES_BASE_PATH, repo + ".git") + repo_path = os.path.join(REPOSITORIES_BASE_PATH, OGGIT_USER, repo + ".git") if os.path.isdir(repo_path): journal.send(f"Can't create repository {repo}, already exists at {repo_path}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") return jsonify({"status": "Repository already exists"}), 409 @@ -2511,7 +2512,7 @@ def git_get_branches(repo): - 200: A JSON object with a "branches" key containing a list of branch names. - 404: A JSON object with an "error" key containing the message "Repository not found" if the repository does not exist. """ - repo_path = os.path.join(REPOSITORIES_BASE_PATH, repo + ".git") + repo_path = os.path.join(REPOSITORIES_BASE_PATH, OGGIT_USER, repo + ".git") if not os.path.isdir(repo_path): journal.send(f"Can't list repositories. Repository storage at {REPOSITORIES_BASE_PATH} not found", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") return jsonify({"error": "Repository not found"}), 404 @@ -2543,7 +2544,7 @@ def git_create_branch(repo): - 409: A JSON object with an "error" key containing the message "Branch already exists" """ - repo_path = os.path.join(REPOSITORIES_BASE_PATH, repo + ".git") + repo_path = os.path.join(REPOSITORIES_BASE_PATH, OGGIT_USER, repo + ".git") if not os.path.isdir(repo_path): journal.send(f"Can't create branch. Repository storage at {REPOSITORIES_BASE_PATH} not found", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") return jsonify({"error": "Repository not found"}), 404 @@ -2588,7 +2589,7 @@ def git_delete_branch(repo, branch): - 404: A JSON object with an "error" key containing the message "Repository not found" or "Branch not found" """ - repo_path = os.path.join(REPOSITORIES_BASE_PATH, repo + ".git") + repo_path = os.path.join(REPOSITORIES_BASE_PATH, OGGIT_USER, repo + ".git") if not os.path.isdir(repo_path): journal.send(f"Can't delete branch. Repository storage at {REPOSITORIES_BASE_PATH} not found", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") return {"error": "Repository not found"}, 404 @@ -2620,7 +2621,7 @@ def git_list_tags(repo): - 200: A JSON object with a "branches" key containing a list of tag names. - 404: A JSON object with an "error" key containing the message "Repository not found" if the repository does not exist. """ - repo_path = os.path.join(REPOSITORIES_BASE_PATH, repo + ".git") + repo_path = os.path.join(REPOSITORIES_BASE_PATH, OGGIT_USER, repo + ".git") if not os.path.isdir(repo_path): journal.send(f"Can't list repositories. Repository storage at {REPOSITORIES_BASE_PATH} not found", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") return jsonify({"error": "Repository not found"}), 404 @@ -2666,7 +2667,7 @@ def git_create_tag(repo): - 409: A JSON object with an "error" key containing the message "Tag already exists" """ - repo_path = os.path.join(REPOSITORIES_BASE_PATH, repo + ".git") + repo_path = os.path.join(REPOSITORIES_BASE_PATH, OGGIT_USER, repo + ".git") if not os.path.isdir(repo_path): journal.send(f"Can't create tag. Repository storage at {REPOSITORIES_BASE_PATH} not found", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") return jsonify({"error": "Repository not found"}), 404 @@ -2715,7 +2716,7 @@ def git_delete_tag(repo, tag): - 404: A JSON object with an "error" key containing the message "Repository not found" or "Tag not found" """ - repo_path = os.path.join(REPOSITORIES_BASE_PATH, repo + ".git") + repo_path = os.path.join(REPOSITORIES_BASE_PATH, OGGIT_USER, repo + ".git") if not os.path.isdir(repo_path): journal.send(f"Can't delete tag. Repository storage at {REPOSITORIES_BASE_PATH} not found", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG") return {"error": "Repository not found"}, 404