Try to fetch the element as deleted if initial access failed

The reference to the object might be already deleted by when the
request is failing. plus setting deleted=0 is rejected by the API.
So try with deleted=1 if and only if the previous access failed.
This commit is contained in:
Dirk Müller 2023-12-07 18:30:36 +01:00
parent dc0f33354e
commit c9e07e536f
No known key found for this signature in database

View File

@ -148,12 +148,28 @@ class OBS:
] ]
def _download(self, project, package, name, revision): def _download(self, project, package, name, revision):
# the object might be deleted but we can only pass deleted=1
# if it is actually deleted
deleted = 0
while deleted < 2:
url = osc.core.makeurl(
self.url,
["source", project, package, urllib.parse.quote(name)],
{"rev": revision, "expand": 1, "deleted": deleted if deleted else ()},
)
try:
osc.core.http_request("HEAD", url)
break
except Exception:
pass
deleted += 1
url = osc.core.makeurl( url = osc.core.makeurl(
self.url, self.url,
["source", project, package, urllib.parse.quote(name)], ["source", project, package, urllib.parse.quote(name)],
{"rev": revision, "expand": 1}, {"rev": revision, "expand": 1, "deleted": 1 if deleted else ()},
) )
return osc.core.http_GET(url) return osc.core.http_request("GET", url)
def download( def download(
self, self,