Skip to content

Commit 0848ae1

Browse files
committed
NodeSet: fix fromall() to raise proper exception
fromall() should raise NodeSetExternalError in case of group resolution error. Closes #263. Change-Id: I5937d6acc85e8c5b8ad6c3a61e5da4e9e89310a0
1 parent 524a3a2 commit 0848ae1

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

lib/ClusterShell/NodeSet.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1246,10 +1246,16 @@ def fromall(cls, groupsource=None, autostep=None, resolver=None):
12461246
"""Class method that returns a new NodeSet with all nodes from optional
12471247
groupsource."""
12481248
inst = NodeSet(autostep=autostep, resolver=resolver)
1249-
if not inst._resolver:
1250-
raise NodeSetExternalError("No node group resolver")
1251-
# Fill this nodeset with all nodes found by resolver
1252-
inst.updaten(inst._parser.all_nodes(groupsource))
1249+
try:
1250+
if not inst._resolver:
1251+
raise NodeSetExternalError("Group resolver is not defined")
1252+
else:
1253+
# fill this nodeset with all nodes found by resolver
1254+
inst.updaten(inst._parser.all_nodes(groupsource))
1255+
except NodeUtils.GroupResolverError, exc:
1256+
errmsg = "Group source error (%s: %s)" % (exc.__class__.__name__,
1257+
exc)
1258+
raise NodeSetExternalError(errmsg)
12531259
return inst
12541260

12551261
def __getstate__(self):

tests/NodeSetGroupTest.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,10 @@ def testAllNoResolver(self):
192192
self.assertRaises(NodeSetExternalError, NodeSet.fromall,
193193
resolver=RESOLVER_NOGROUP)
194194

195+
# Also test with a nonfunctional resolver (#263)
196+
res = GroupResolver()
197+
self.assertRaises(NodeSetExternalError, NodeSet.fromall, resolver=res)
198+
195199
def testGroupsNoResolver(self):
196200
"""test NodeSet.groups() with no resolver"""
197201
nodeset = NodeSet("foo", resolver=RESOLVER_NOGROUP)

0 commit comments

Comments
 (0)