### <http://www.gnu.org/licenses/>.
import os as OS
+import syslog as L
import config as CONF; CFG = CONF.CFG
import util as U
"""A fake operation which just raises an exception."""
def __init__(me, svc, user, exc):
me.svc = svc
- me.uesr = user
+ me.user = user
me.exc = exc
def perform(me):
me.result = None
"""
return optype(svc, user, **kw)
+ def describe(me):
+ return me.OP
+
def perform(me):
"""
Perform the queued-up operations.
* a list of the individual operation objects.
"""
rq = getattr(CFG.RQCLASS, op)(accts, *args, **kw)
- rq.check()
+ desc = rq.describe()
+ try:
+ rq.check()
+ except U.ExpectedError, e:
+ L.syslog('REFUSE %s %s: %s' %
+ (desc,
+ ', '.join(['%s@%s' % (o.user, o.svc.name) for o in rq.ops]),
+ e))
+ raise
ops = rq.perform()
nwin = nlose = 0
for o in ops:
else:
if nlose: rc = outcome.FAIL
else: rc = outcome.NOTHING
+ L.syslog('%s %s: %s' % (['OK', 'PARTIAL', 'FAIL', 'NOTHING'][rc],
+ desc,
+ '; '.join(['%s@%s %s' % (o.user, o.svc.name,
+ not o.error and 'OK' or
+ 'ERR %s' % o.error)
+ for o in ops])))
ii = [info(v, getattr(rq, k)) for k, v in rq.INFO.iteritems()]
return outcome(rc, nwin, nlose), ii, rq, ops