Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9342807
D3124.id11099.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Subscribers
None
D3124.id11099.diff
View Options
diff --git a/swh/deposit/api/common.py b/swh/deposit/api/common.py
--- a/swh/deposit/api/common.py
+++ b/swh/deposit/api/common.py
@@ -31,7 +31,6 @@
STATE_IRI,
DEPOSIT_STATUS_DEPOSITED,
DEPOSIT_STATUS_PARTIAL,
- PRIVATE_CHECK_DEPOSIT,
DEPOSIT_STATUS_LOAD_SUCCESS,
ARCHIVE_TYPE,
METADATA_TYPE,
@@ -195,14 +194,12 @@
if self.config["checks"]:
deposit.save() # needed to have a deposit id
- args = [deposit.collection.name, deposit.id]
scheduler = self.scheduler
if deposit.status == DEPOSIT_STATUS_DEPOSITED and not deposit.check_task_id:
- check_url = request.build_absolute_uri(
- reverse(PRIVATE_CHECK_DEPOSIT, args=args)
- )
task = create_oneshot_task_dict(
- "check-deposit", deposit_check_url=check_url
+ "check-deposit",
+ collection=deposit.collection.name,
+ deposit_id=deposit.id,
)
check_task_id = scheduler.create_tasks([task])[0]["id"]
deposit.check_task_id = check_task_id
diff --git a/swh/deposit/loader/checker.py b/swh/deposit/loader/checker.py
--- a/swh/deposit/loader/checker.py
+++ b/swh/deposit/loader/checker.py
@@ -7,25 +7,38 @@
from typing import Mapping
+from swh.core.config import SWHConfig
+
from swh.deposit.client import PrivateApiDepositClient
logger = logging.getLogger(__name__)
-class DepositChecker:
+class DepositChecker(SWHConfig):
"""Deposit checker implementation.
Trigger deposit's checks through the private api.
"""
- def __init__(self, client=None):
+ CONFIG_BASE_FILENAME = "deposit/checker"
+
+ DEFAULT_CONFIG = {
+ "deposit": ("dict", {"url": "http://localhost:5006/1/private/", "auth": {},})
+ }
+
+ def __init__(self, config=None):
super().__init__()
- self.client = client if client else PrivateApiDepositClient()
+ if config is None:
+ self.config = self.parse_config_file()
+ else:
+ self.config = config
+ self.client = PrivateApiDepositClient(config=self.config["deposit"])
- def check(self, deposit_check_url: str) -> Mapping[str, str]:
+ def check(self, collection: str, deposit_id: str) -> Mapping[str, str]:
status = None
+ deposit_check_url = f"/{collection}/{deposit_id}/check/"
try:
r = self.client.check(deposit_check_url)
status = "eventful" if r == "verified" else "failed"
diff --git a/swh/deposit/tests/api/test_deposit_schedule.py b/swh/deposit/tests/api/test_deposit_schedule.py
--- a/swh/deposit/tests/api/test_deposit_schedule.py
+++ b/swh/deposit/tests/api/test_deposit_schedule.py
@@ -76,9 +76,11 @@
task = tasks[0]
assert timestamp_before_call <= task.pop("next_run") <= timestamp_after_call
- check_url = f"http://testserver/1/private/test/{deposit_id}/check/"
assert task == {
- "arguments": {"args": [], "kwargs": {"deposit_check_url": check_url,},},
+ "arguments": {
+ "args": [],
+ "kwargs": {"collection": "test", "deposit_id": int(deposit_id),},
+ },
"current_interval": datetime.timedelta(days=1),
"id": 1,
"policy": "oneshot",
diff --git a/swh/deposit/tests/loader/conftest.py b/swh/deposit/tests/loader/conftest.py
--- a/swh/deposit/tests/loader/conftest.py
+++ b/swh/deposit/tests/loader/conftest.py
@@ -44,8 +44,15 @@
@pytest.fixture
-def deposit_checker(swh_config):
- return DepositChecker()
+def deposit_checker():
+ return DepositChecker(
+ config={
+ "deposit": {
+ "url": "https://deposit.softwareheritage.org/1/private/",
+ "auth": {},
+ }
+ }
+ )
@pytest.fixture
diff --git a/swh/deposit/tests/loader/test_checker.py b/swh/deposit/tests/loader/test_checker.py
--- a/swh/deposit/tests/loader/test_checker.py
+++ b/swh/deposit/tests/loader/test_checker.py
@@ -3,18 +3,14 @@
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
-from django.urls import reverse
from unittest.mock import patch
-from swh.deposit.config import PRIVATE_CHECK_DEPOSIT
-
def test_check_deposit_ready(swh_config, requests_mock_datadir, deposit_checker):
"""Check on a valid 'deposited' deposit should result in 'verified'
"""
- deposit_check_url = reverse(PRIVATE_CHECK_DEPOSIT, args=["test", 1])
- actual_result = deposit_checker.check(deposit_check_url=deposit_check_url)
+ actual_result = deposit_checker.check(collection="test", deposit_id=1)
assert actual_result == {"status": "eventful"}
@@ -22,8 +18,7 @@
"""Check on invalid 'deposited' deposit should result in 'rejected'
"""
- deposit_check_url = reverse(PRIVATE_CHECK_DEPOSIT, args=["test", 2])
- actual_result = deposit_checker.check(deposit_check_url=deposit_check_url)
+ actual_result = deposit_checker.check(collection="test", deposit_id=2)
assert actual_result == {"status": "failed"}
@@ -33,6 +28,5 @@
"""
mock_requests.side_effect = ValueError("simulated problem when checking")
- deposit_check_url = reverse(PRIVATE_CHECK_DEPOSIT, args=["test", 3])
- actual_result = deposit_checker.check(deposit_check_url=deposit_check_url)
+ actual_result = deposit_checker.check(collection="test", deposit_id=3)
assert actual_result == {"status": "failed"}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jul 3, 1:01 PM (1 w, 3 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3216043
Attached To
D3124: Pass collection + id to the checker instead of an URL.
Event Timeline
Log In to Comment