From 512349a28d7779649d32850b2938aa3ce2af3e72 Mon Sep 17 00:00:00 2001
From: Clark Boylan <clark.boylan@gmail.com>
Date: Wed, 30 Sep 2020 10:15:04 -0700
Subject: [PATCH] Make gitea description update failures nonfatal

There appears to be a gitea bug that causes PATCH updates to projects to
fail when the cache is in a bad state for that project. We use PATCH
updates to a project to set the project descriptions. Since project
descriptions are not critical to gitea functionality (we weren't
updating them until last week) we can treat this as best effort and
ignore these failures.

We'll log these cases to aid in further debugging but continue on. The
next pass can retry.

Change-Id: I625bdc0856caaccb6b55931b0cdc6cf11a0bf3e1
---
 .../library/gitea_create_repos.py             | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/playbooks/roles/gitea-git-repos/library/gitea_create_repos.py b/playbooks/roles/gitea-git-repos/library/gitea_create_repos.py
index 3936a442bc..fd5b697452 100755
--- a/playbooks/roles/gitea-git-repos/library/gitea_create_repos.py
+++ b/playbooks/roles/gitea-git-repos/library/gitea_create_repos.py
@@ -210,12 +210,19 @@ class Gitea(object):
             description_update = {
                 'description': description,
             }
-            resp = self.patch(
-                '/api/v1/repos/{org}/{repo}'.format(org=org, repo=repo),
-                json=description_update)
-            # Commented out as there is no good way to log only those projects
-            # which have an updated description and as a result this is noisy.
-            #self.log("Set description for:", project['project'])
+            try:
+                resp = self.patch(
+                    '/api/v1/repos/{org}/{repo}'.format(org=org, repo=repo),
+                    json=description_update)
+                # Commented out as there is no good way to log only those
+                # projects which have an updated description and as a result
+                # this is noisy.
+                #self.log("Set description for:", project['project'])
+            except Exception as e:
+                # Updating descriptions is best effort as we may fail due to
+                # gitea bugs, but such a failure isn't critical.
+                self.log("Failed to set desciption for:",
+                         project['project'], str(e))
 
     def make_projects(self, projects, gitea_repos, csrf_token,
                       settings_thread_pool, branches_thread_pool, futures):