From e738c76bc2fe0d040258cb01aeff2d067be1c177 Mon Sep 17 00:00:00 2001
From: Tim Kreuzer <t.kreuzer@fz-juelich.de>
Date: Thu, 14 Nov 2024 12:29:17 +0100
Subject: [PATCH] improved exception handling when collecting user specific
 flavors

---
 outpostspawner/api_flavors_update.py | 36 ++++++++++++++++------------
 1 file changed, 21 insertions(+), 15 deletions(-)

diff --git a/outpostspawner/api_flavors_update.py b/outpostspawner/api_flavors_update.py
index cb92cd3..da84c16 100644
--- a/outpostspawner/api_flavors_update.py
+++ b/outpostspawner/api_flavors_update.py
@@ -60,24 +60,30 @@ async def async_get_flavors(log, user=None):
                     req = HTTPRequest(
                         url_token[0],
                         headers={"Authorization": f"Basic {url_token[1]}"},
+                        request_timeout=1,
                     )
                     tasks.append(http_client.fetch(req, raise_error=False))
-                results = await asyncio.gather(*tasks)
-                names_results = list(zip(initial_system_names_list, results))
-                for name_result in names_results:
-                    if name_result[1].code == 200:
-                        try:
-                            log.info(f"OutpostFlavors - {name_result[0]} successful")
-                            result_json = json.loads(name_result[1].body)
-                            _outpost_flavors_cache[name_result[0]] = result_json
-                        except:
-                            log.exception(
-                                f"OutpostFlavors - {name_result[0]} Could not load result into json"
+                try:
+                    results = await asyncio.gather(*tasks, return_exceptions=True)
+                    names_results = list(zip(initial_system_names_list, results))
+                    for name_result in names_results:
+                        if name_result[1].code == 200:
+                            try:
+                                log.info(
+                                    f"OutpostFlavors - {name_result[0]} successful"
+                                )
+                                result_json = json.loads(name_result[1].body)
+                                _outpost_flavors_cache[name_result[0]] = result_json
+                            except:
+                                log.exception(
+                                    f"OutpostFlavors - {name_result[0]} Could not load result into json"
+                                )
+                        else:
+                            log.warning(
+                                f"OutpostFlavors - {name_result[0]} - Answered with {name_result[1].code}"
                             )
-                    else:
-                        log.warning(
-                            f"OutpostFlavors - {name_result[0]} - Answered with {name_result[1].code}"
-                        )
+                except:
+                    log.exception("OutpostFlavors failed, return empty dict")
     except:
         log.exception("OutpostFlavors failed, return empty dict")
 
-- 
GitLab