Skip to content

Commit

Permalink
Add yarn Nexus cleanup task
Browse files Browse the repository at this point in the history
Remove temporary Nexus data for stale or
failed requests that uses "yarn" as package manager.
  • Loading branch information
akhmanova committed Nov 25, 2020
1 parent 3466f3e commit 075b424
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 4 deletions.
7 changes: 3 additions & 4 deletions cachito/web/api_v1.py
Expand Up @@ -385,10 +385,9 @@ def patch_request(request_id):
new_state = payload["state"]
delete_bundle = new_state == "stale" and request.state.state_name != "failed"
if new_state in ("stale", "failed"):
if any(p.name == "npm" for p in request.pkg_managers):
cleanup_nexus.append("npm")
if any(p.name == "pip" for p in request.pkg_managers):
cleanup_nexus.append("pip")
for pkg_manager in ["npm", "pip", "yarn"]:
if any(p.name == pkg_manager for p in request.pkg_managers):
cleanup_nexus.append(pkg_manager)
delete_bundle_temp = new_state in ("complete", "failed")
delete_logs = new_state == "stale"
new_state_reason = payload["state_reason"]
Expand Down
19 changes: 19 additions & 0 deletions cachito/workers/tasks/yarn.py
@@ -0,0 +1,19 @@
# SPDX-License-Identifier: GPL-3.0-or-later
from cachito.workers import nexus
from cachito.workers.pkg_managers.yarn import (
get_yarn_proxy_repo_name,
get_yarn_proxy_repo_username,
)
from cachito.workers.tasks.celery import app

__all__ = ["cleanup_yarn_request"]


@app.task
def cleanup_yarn_request(request_id):
"""Clean up the Nexus yarn content for the Cachito request."""
payload = {
"repository_name": get_yarn_proxy_repo_name(request_id),
"username": get_yarn_proxy_repo_username(request_id),
}
nexus.execute_script("js_cleanup", payload)
15 changes: 15 additions & 0 deletions tests/test_workers/test_tasks/test_yarn.py
@@ -0,0 +1,15 @@
# SPDX-License-Identifier: GPL-3.0-or-later
from unittest import mock

from cachito.workers.tasks import yarn


@mock.patch("cachito.workers.tasks.yarn.nexus.execute_script")
def test_cleanup_yarn_request(mock_exec_script):
yarn.cleanup_yarn_request(42)

expected_payload = {
"repository_name": "cachito-yarn-42",
"username": "cachito-yarn-42",
}
mock_exec_script.assert_called_once_with("js_cleanup", expected_payload)

0 comments on commit 075b424

Please sign in to comment.