aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rpkid/portal-gui/scripts/rpkigui-rcynic.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/rpkid/portal-gui/scripts/rpkigui-rcynic.py b/rpkid/portal-gui/scripts/rpkigui-rcynic.py
index be30ea72..e3d39ebc 100644
--- a/rpkid/portal-gui/scripts/rpkigui-rcynic.py
+++ b/rpkid/portal-gui/scripts/rpkigui-rcynic.py
@@ -117,6 +117,7 @@ def save_statuses(inst, statuses):
inst.statuses.create(generation=g, timestamp=timestamp, status=status)
+
@transaction.commit_on_success
def process_cache(root, xml_file):
dispatch = {
@@ -186,10 +187,17 @@ def process_cache(root, xml_file):
logger.warning('unable to find signing cert with ski=%s (%s)' % (obj.aki, obj.issuer))
continue
- # do object-specific tasks
- dispatch[vs.file_class.__name__](obj, inst)
-
- inst.save() # don't require a save in the dispatch methods
+ try:
+ # do object-specific tasks
+ dispatch[vs.file_class.__name__](obj, inst)
+
+ inst.save() # don't require a save in the dispatch methods
+ except:
+ logger.error('caught exception while processing rcynic_object:\n'
+ 'vs=' + repr(vs) + '\nobj=' + repr(obj))
+ # .show() writes to stdout
+ obj.show()
+ raise
else:
logger.debug('object is unchanged')
@@ -212,6 +220,7 @@ def process_cache(root, xml_file):
# Delete all objects that have zero validation status elements.
models.RepositoryObject.objects.annotate(num_statuses=django.db.models.Count('statuses')).filter(num_statuses=0).delete()
+
@transaction.commit_on_success
def process_labels(xml_file):
logger.info('updating labels...')