resource error logging that is easier to understand

Log what a suite requested, what it has reserved and the complete resource
state.

Change-Id: Ic6887bbe5fe74a73f0e344cd4078dd7ed989cc15
diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py
index e660066..ebc9457 100644
--- a/src/osmo_gsm_tester/resource.py
+++ b/src/osmo_gsm_tester/resource.py
@@ -463,8 +463,9 @@
         available = available_dict.get(kind)
         self.dbg(available=len(available))
         if not available:
-            raise NoResourceExn('No unused resource found: %r%s' %
+            raise NoResourceExn('When trying to reserve %r nr %d: No unused resource found%s' %
                                 (kind,
+                                 self.count(kind) + 1,
                                  (' matching %r' % specifics) if specifics else '')
                                )
         pick = available[0]
@@ -496,5 +497,13 @@
         self.resources_pool.free(self.origin, self.reserved)
         self.reserved = None
 
+    def counts(self):
+        counts = {}
+        for key in self.reserved.keys():
+            counts[key] = self.count(key)
+        return counts
+
+    def count(self, key):
+        return len(self.reserved.get(key) or [])
 
 # vim: expandtab tabstop=4 shiftwidth=4