MT#56231 gerrit: fixes

gerrit URL needs a/ as prefix for authenticate access
https: //gerrit-review.googlesource.com/Documentation/rest-api.html#authentication

remove info from db that is not in gerrit

Change-Id: Icb49e4244fb058db0bb87ff27e7c8d8fe55c94d7
master
Victor Seva 2 years ago
parent d2f948b1fe
commit 06b409b7ea

@ -15,6 +15,7 @@
from datetime import date from datetime import date
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from requests.exceptions import HTTPError
from gerrit.utils import get_change_info from gerrit.utils import get_change_info
from gerrit.utils import get_datetime from gerrit.utils import get_datetime
@ -30,12 +31,16 @@ class Command(BaseCommand):
def refresh(self, *args, **options): def refresh(self, *args, **options):
qs = GerritRepoInfo.objects.filter(created__date=date(1977, 1, 1)) qs = GerritRepoInfo.objects.filter(created__date=date(1977, 1, 1))
for gri in qs.iterator(): for gri in qs.iterator():
info = get_change_info(gri.gerrit_change) try:
gri.created = get_datetime(info["created"]) info = get_change_info(gri.gerrit_change)
gri.modified = get_datetime(info["updated"]) gri.created = get_datetime(info["created"])
# don't update modified field on save gri.modified = get_datetime(info["updated"])
gri.update_modified = False # don't update modified field on save
gri.save() gri.update_modified = False
gri.save()
except HTTPError:
self.stderr.write(f"{gri} not found, remove it from db")
gri.delete()
def handle(self, *args, **options): def handle(self, *args, **options):
action = getattr(self, options["action"]) action = getattr(self, options["action"])

@ -64,12 +64,12 @@ def get_gerrit_branches(project: str, regex=None):
def get_gerrit_change(id: str) -> str: def get_gerrit_change(id: str) -> str:
url = gerrit_settings.URL.format(f"changes/{id}/") url = gerrit_settings.URL.format(f"a/changes/{id}")
return get_gerrit_info(url) return get_gerrit_info(url)
def get_change_info(id: str): def get_change_info(id: str):
return get_filtered_json(get_gerrit_info(id)) return get_filtered_json(get_gerrit_change(id))
def get_datetime(val: str) -> datetime.datetime: def get_datetime(val: str) -> datetime.datetime:

Loading…
Cancel
Save