From 4434bd22a5482071d18f97c000f292ef25190195 Mon Sep 17 00:00:00 2001
From: Jorrit Schaap <schaap@astron.nl>
Date: Tue, 12 Apr 2016 14:57:51 +0000
Subject: [PATCH] Task #8887: fix

---
 .../ResourceAssignmentDatabase/radb.py        | 38 +++++++++++--------
 1 file changed, 23 insertions(+), 15 deletions(-)

diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py
index a4515276793..7f700c44ef3 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py
+++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py
@@ -1334,22 +1334,30 @@ class RADatabase:
         resources = self.getResources(resource_ids=resource_ids, include_availability=True)
 
         for resource in resources:
-            resource_id = resource['id']
-            resource_usages = all_usages[resource_id]
-            # copy resource capacities
-            resource_usages['total_capacity'] = resource['total_capacity']
-            resource_usages['available_capacity'] = resource['available_capacity']
-            resource_usages['used_capacity'] = resource['used_capacity']
-            # and compute unaccounted-for usage,
-            # which is the actual used_capacity minus the currently allocated total claim size
-            utcnow = datetime.utcnow()
-            allocated_usages = resource_usages['usages'].get('allocated', [])
-            past_allocated_usages = sorted([au for au in allocated_usages if au['timestamp'] <= utcnow])
-            if past_allocated_usages:
-                currently_allocated_usage = past_allocated_usages[-1]
-                resource_usages['misc_used_capacity'] = resource['used_capacity'] - currently_allocated_usage['value']
-            else:
+            try:
+                resource_id = resource['id']
+                resource_usages = all_usages[resource_id]
+                # copy resource capacities
+                resource_usages['total_capacity'] = 0
+                resource_usages['available_capacity'] = 0
+                resource_usages['used_capacity'] = 0
                 resource_usages['misc_used_capacity'] = 0
+                if 'total_capacity' in resource:
+                    resource_usages['total_capacity'] = resource['total_capacity']
+                if 'available_capacity' in resource:
+                    resource_usages['available_capacity'] = resource['available_capacity']
+                if 'used_capacity' in resource:
+                    resource_usages['used_capacity'] = resource['used_capacity']
+                    # and compute unaccounted-for usage,
+                    # which is the actual used_capacity minus the currently allocated total claim size
+                    utcnow = datetime.utcnow()
+                    allocated_usages = resource_usages['usages'].get('allocated', [])
+                    past_allocated_usages = sorted([au for au in allocated_usages if au['timestamp'] <= utcnow])
+                    if past_allocated_usages:
+                        currently_allocated_usage = past_allocated_usages[-1]
+                        resource_usages['misc_used_capacity'] = resource['used_capacity'] - currently_allocated_usage['value']
+            except:
+                pass
 
         all_usages_list = all_usages.values()
         return all_usages_list
-- 
GitLab