Feat(ogrepository): implement forgejo git repository deletion endpoint
ogrepository/pipeline/head This commit looks good
Details
ogrepository/pipeline/head This commit looks good
Details
parent
0267354899
commit
e6644191c1
|
|
@ -2288,6 +2288,31 @@ def git_forgejo_create_repo(repo):
|
|||
"private" : False
|
||||
})
|
||||
|
||||
def git_forgejo_delete_command(url):
|
||||
token = ""
|
||||
with open("/opt/opengnsys/etc/ogGitApiToken.cfg", "r", encoding='utf-8') as token_file:
|
||||
token = token_file.read().strip()
|
||||
|
||||
if url[0] == "/":
|
||||
url = url[1:]
|
||||
|
||||
url = f"http://localhost:{OGGIT_FORGEJO_PORT}/{url}"
|
||||
|
||||
journal.send(f"Executing forgejo DELETE to {url}...", PRIORITY=journal.LOG_DEBUG, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
|
||||
|
||||
r = requests.delete(
|
||||
url,
|
||||
headers = { 'Authorization' : f"token {token}" },
|
||||
timeout = 60
|
||||
)
|
||||
|
||||
journal.send(f"Request status was {r.status_code}, content {r.content}", PRIORITY=journal.LOG_DEBUG, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
|
||||
|
||||
return r.status_code, r.content.decode('utf-8')
|
||||
|
||||
def git_forgejo_delete_repo(repo):
|
||||
return git_forgejo_delete_command(f"/api/v1/repos/oggit/{repo}")
|
||||
|
||||
def git_forgejo_create_tag(repo,tag,msg,target):
|
||||
return git_forgejo_post_command(f"/api/v1/repos/oggit/{repo}/tags", {
|
||||
"message": msg,
|
||||
|
|
@ -2453,9 +2478,23 @@ def git_create_repository():
|
|||
|
||||
return jsonify({"status": "Repository created"}), 201
|
||||
|
||||
@app.route("/ogrepository/v1/git/repositories", methods=['DELETE'])
|
||||
def git_delete_repository():
|
||||
return jsonify({"error" : "Not implemented"}), 500
|
||||
@app.route("/ogrepository/v1/git/repositories/<string:repo>", methods=['DELETE'])
|
||||
def git_delete_repository(repo):
|
||||
repo_path = os.path.join(REPOSITORIES_BASE_PATH, OGGIT_USER, repo + ".git")
|
||||
|
||||
status, content = git_forgejo_delete_repo(repo)
|
||||
if status not in (204, 404):
|
||||
journal.send(f"Can't delete repository {repo} from forgejo: {content}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
|
||||
return jsonify({"error" : f"Failed to delete from forgejo: {content}"}), 500
|
||||
|
||||
if os.path.isdir(repo_path):
|
||||
import shutil
|
||||
shutil.rmtree(repo_path, ignore_errors=True)
|
||||
journal.send(f"Repository {repo} deleted", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
|
||||
return jsonify({"status": "Repository deleted"}), 200
|
||||
else:
|
||||
journal.send(f"Can't delete repository {repo}, not found at {repo_path}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
|
||||
return jsonify({"status": "Repository not found"}), 404
|
||||
|
||||
@app.route("/ogrepository/v1/git/repositories/<string:repo>/sync", methods=['POST'])
|
||||
def git_sync_repository(repo):
|
||||
|
|
|
|||
Loading…
Reference in New Issue