[NEW PATCH] Fix the storage exception check (via gerrit-bot)
Federico Simoncelli
fsimonce at redhat.com
Tue Aug 16 13:37:39 UTC 2011
New patch submitted by Federico Simoncelli (fsimonce at redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/812
commit 7a5a2d3b83cdd3043566d53dae5cb74bb301d27b
Author: Federico Simoncelli <fsimonce at redhat.com>
Date: Thu Aug 11 16:16:15 2011 +0000
Fix the storage exception check
Change-Id: I7df992f96522bb2989a5cd05b713f55e6dd6d48b
diff --git a/vdsm/storage/storage_exception.py b/vdsm/storage/storage_exception.py
index 1496bbc..997c9f3 100644
--- a/vdsm/storage/storage_exception.py
+++ b/vdsm/storage/storage_exception.py
@@ -1287,23 +1287,20 @@ class ResourceAcqusitionFailed(GeneralException):
message = "Could not acquire resource. Probably resource factory threw an exception."
if __name__ == "__main__":
- import sys
+ import types
codes = {}
- col = 0
- for name in dir():
- try:
- o = eval(name)
- if issubclass(o, GeneralException):
- if str(o.code) in codes:
- raise "Collision found: code %s o %s o %s" % (o.code, str(name), codes[str(o.code)])
- col += 1
- elif o.code >= 5000:
- raise "Collision with RHEVM found: %s code %s: between 5000 and 6000" % (name, o.code)
- else:
- codes[str(o.code)] = str(name)
- print '%s\t%s\t"%s"' % (o.code, name, o.message)
- else:
- print str(o) + " is not exception class:" + str(type(o))
- except TypeError, e:
- pass
- sys.exit(col)
+ for name, obj in globals().items():
+ if not isinstance(obj, types.TypeType):
+ continue
+
+ if not issubclass(obj, GeneralException):
+ raise NameError, "%s is not exception class: %s" % (name, obj)
+
+ if obj.code in codes:
+ raise NameError, "Collision found: code %s is used by %s and %s" \
+ % (obj.code, name, codes[obj.code])
+ if obj.code >= 5000:
+ raise NameError, "Collision with RHEVM found: %s code %s: " \
+ "between 5000 and 6000" % (name, obj.code)
+
+ codes[obj.code] = name
More information about the vdsm-patches
mailing list