Cleanup the asset upload code

This commit is contained in:
Kovid Goyal 2022-11-19 11:23:31 +05:30
parent bdb25831a7
commit b91eaa3b2a
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -285,12 +285,16 @@ class GitHub(Base): # {{{
upload_url = release['upload_url'].partition('{')[0] upload_url = release['upload_url'].partition('{')[0]
asset_url = f'{self.url_base}/assets/{{}}' asset_url = f'{self.url_base}/assets/{{}}'
existing_assets = self.existing_assets(release['id']) existing_assets = self.existing_assets(release['id'])
if self.is_nightly:
for fname in existing_assets: def delete_asset(asset_id: str) -> None:
self.info(f'Deleting {fname} from GitHub') r = self.requests.delete(asset_url.format(asset_id))
r = self.requests.delete(asset_url.format(existing_assets[fname]))
if r.status_code not in (204, 404): if r.status_code not in (204, 404):
self.fail(r, f'Failed to delete {fname} from GitHub') self.fail(r, f'Failed to delete {fname} from GitHub')
if self.is_nightly:
for fname in existing_assets:
self.info(f'Deleting {fname} from GitHub with id: {existing_assets[fname]}')
delete_asset(existing_assets[fname])
self.update_nightly_description(release['id']) self.update_nightly_description(release['id'])
for path, desc in self.files.items(): for path, desc in self.files.items():
self.info('') self.info('')
@ -299,9 +303,7 @@ class GitHub(Base): # {{{
fname = fname.replace(version, 'nightly') fname = fname.replace(version, 'nightly')
if fname in existing_assets: if fname in existing_assets:
self.info(f'Deleting {fname} from GitHub with id: {existing_assets[fname]}') self.info(f'Deleting {fname} from GitHub with id: {existing_assets[fname]}')
r = self.requests.delete(asset_url.format(existing_assets[fname])) delete_asset(existing_assets[fname])
if r.status_code not in (204, 404):
self.fail(r, f'Failed to delete {fname} from GitHub')
num_tries = 4 num_tries = 4
for i in range(1, num_tries+1): for i in range(1, num_tries+1):
try: try:
@ -309,17 +311,19 @@ class GitHub(Base): # {{{
except Exception: except Exception:
if i >= num_tries: if i >= num_tries:
raise raise
import traceback
traceback.print_exc()
print('Failed to upload retrying in a short while...', file=sys.stderr)
else: else:
if r.status_code == 201: if r.status_code == 201:
break break
if i >= num_tries: if i >= num_tries:
self.fail(r, f'Failed to upload file: {fname}') self.fail(r, f'Failed to upload file: {fname}')
self.print_failed_response_details(r, 'Failed to upload retrying in a short while...') self.print_failed_response_details(r, 'Failed to upload retrying in a short while...')
if r.status_code == 502: asset_id = r.json()['id']
dr = self.requests.delete(asset_url.format(r.json()['id'])) self.info(f'Deleting {fname} from GitHub with id: {asset_id}')
if r.status_code not in (204, 404): delete_asset(asset_id)
self.fail(dr, 'Failed to delete partial upload') time.sleep(5)
time.sleep(1)
def clean_older_releases(self, releases: Iterable[Dict[str, Any]]) -> None: def clean_older_releases(self, releases: Iterable[Dict[str, Any]]) -> None:
for release in releases: for release in releases: