Ejemplo n.º 1
0
 def engineList(self, targets):
     """Parse the targets argument into a list of valid engine objects.
     
     :Parameters:
         targets : int, list of ints or 'all'
             The targets argument to be parsed.
             
     :Returns: List of engine objects.
     
     :Exception:
         InvalidEngineID
             If targets is not valid or if an engine is not registered.
     """
     if isinstance(targets, int):
         if targets not in self.engines.keys():
             log.msg("Engine with id %i is not registered" % targets)
             raise error.InvalidEngineID("Engine with id %i is not registered" % targets)
         else: 
             return [self.engines[targets]]
     elif isinstance(targets, (list, tuple)):
         for id in targets:
             if id not in self.engines.keys():
                 log.msg("Engine with id %r is not registered" % id)
                 raise error.InvalidEngineID("Engine with id %r is not registered" % id)  
         return map(self.engines.get, targets)
     elif targets == 'all':
         eList = self.engines.values()
         if len(eList) == 0:
             msg = """There are no engines registered.
                  Check the logs in ~/.ipython/log if you think there should have been."""
             raise error.NoEnginesRegistered(msg)
         else:
             return eList
     else:
         raise error.InvalidEngineID("targets argument is not an int, list of ints or 'all': %r"%targets)
Ejemplo n.º 2
0
 def htmlTargetString(self, targets):
     if targets == 'all':
         return targets
     elif isinstance(targets, (tuple, list)):
         return ','.join(map(str, targets))
     elif isinstance(targets, int):
         return str(targets)
     raise error.InvalidEngineID(str(targets))
Ejemplo n.º 3
0
 def remote_queueStatus(self, targets):
     if not self.multiEngine.verifyTargets(targets):
         return defer.fail(error.InvalidEngineID(repr(targets)))
     else:
         deferredID = self._getNextDeferredID()
         d = self.multiEngine.queueStatus(targets)
         self.pendingDeferreds[deferredID] = d
         return defer.succeed(deferredID)
Ejemplo n.º 4
0
 def remote_kill(self, targets, controller=False):
     if not self.multiEngine.verifyTargets(targets):
         return defer.fail(error.InvalidEngineID(repr(targets)))
     else:
         deferredID = self._getNextDeferredID()
         d = self.multiEngine.kill(targets, controller)
         self.pendingDeferreds[deferredID] = d
         return defer.succeed(deferredID)
Ejemplo n.º 5
0
 def remote_gather(self, targets, key, style):
     if not self.multiEngine.verifyTargets(targets):
         return defer.fail(error.InvalidEngineID(repr(targets)))
     else:
         deferredID = self._getNextDeferredID()
         d = self.multiEngine.gather(targets, key, style)
         d.addCallback(pickle.dumps, 2)
         d.addCallback(checkMessageSize, repr(key))
         self.pendingDeferreds[deferredID] = d
         return defer.succeed(deferredID)
Ejemplo n.º 6
0
 def create_targets(ids):
     if isinstance(targets, int):
         engines = [targets]
     elif targets=='all':
         engines = ids
     elif isinstance(targets, (list, tuple)):
         engines = targets
     for t in engines:
         if not t in ids:
             raise error.InvalidEngineID("engine with id %r does not exist"%t)
     return engines
Ejemplo n.º 7
0
 def remote_scatter(self, targets, key, pseq, style, flatten):
     if not self.multiEngine.verifyTargets(targets):
         return defer.fail(error.InvalidEngineID(repr(targets)))
     else:
         try:
             seq = pickle.loads(pseq)
         except:
             return defer.fail(failure.Failure()).addErrback(packageFailure)
         else:
             deferredID = self._getNextDeferredID()
             d = self.multiEngine.scatter(targets, key, seq, style, flatten)
             self.pendingDeferreds[deferredID] = d
             return defer.succeed(deferredID)
Ejemplo n.º 8
0
 def remote_pushSerialized(self, targets, pNamespace):
     if not self.multiEngine.verifyTargets(targets):
         return defer.fail(error.InvalidEngineID(repr(targets)))
     else:
         try:
             namespace = pickle.loads(pNamespace)
         except:
             return defer.fail(failure.Failure()).addErrback(packageFailure)
         else:
             deferredID = self._getNextDeferredID()
             d = self.multiEngine.pushSerialized(targets, **namespace)
             self.pendingDeferreds[deferredID] = d
             return defer.succeed(deferredID)
Ejemplo n.º 9
0
 def renderHTTP(self, request):
     try:
         targetsString = request.prepath[1]
         clientID = int(request.args['clientID'][0])
         block = int(request.args['block'][0])
     except:
         return self._badRequest(request)
     targetsArg = self.parseTargets(targetsString)
     if targetsArg is not False:
         d = self.smultiengine.clear_queue(clientID, True, targetsArg)
         d.addCallbacks(self.packageSuccess, self.packageFailure)
         return d
     else:
         return self.packageFailure(failure.Failure(
             error.InvalidEngineID()))
Ejemplo n.º 10
0
 def renderHTTP(self, request):
     try:
         targetsString = request.prepath[1]
         clientID = int(request.args['clientID'][0])
         block = int(request.args['block'][0])
         # keys = pickle.loads(request.args['keys'][0])
     except:
         return self._badRequest(request)
     targetsArg = self.parseTargets(targetsString)
     if targetsArg is not False:
         d = self.smultiengine.clear_properties(clientID, block, targetsArg)
         # d.addBoth(_printer)
         d.addCallbacks(self.packageSuccess, self.packageFailure)
         return d
     else:
         return self.packageFailure(failure.Failure(
             error.InvalidEngineID()))
Ejemplo n.º 11
0
 def renderHTTP(self, request):
     try:
         targetsString = request.prepath[1]
         clientID = int(request.args['clientID'][0])
         block = int(request.args['block'][0])
         pns = request.args['namespace'][0]
         ns = pickle.loads(pns)
     except:
         return self._badRequest(request)
     targetsArg = self.parseTargets(targetsString)
     if targetsArg is not False:
         d = self.smultiengine.push(clientID, block, targetsArg, **ns)
         d.addCallbacks(self.packageSuccess, self.packageFailure)
         return d
     else:
         return self.packageFailure(failure.Failure(
             error.InvalidEngineID()))
Ejemplo n.º 12
0
 def renderHTTP(self, request):
     try:
         targetsString = request.prepath[1]
         clientID = int(request.args['clientID'][0])
         block = int(request.args['block'][0])
         key = request.args['key'][0]
         style = request.args['style'][0]
     except:
         return self._badRequest(request)
     targetsArg = self.parseTargets(targetsString)
     if targetsArg is not False:
         d = self.smultiengine.gather(clientID, block, targetsArg, key,
                                      style)
         d.addBoth(_printer)
         d.addCallbacks(self.packageSuccess, self.packageFailure)
         return d
     else:
         return self.packageFailure(failure.Failure(
             error.InvalidEngineID()))
Ejemplo n.º 13
0
 def renderHTTP(self, request):
     try:
         targetsString = request.prepath[1]
         clientID = int(request.args['clientID'][0])
         block = int(request.args['block'][0])
         ids = request.args['id'][0]
         if ids == 'None':
             id = None
         else:
             id = int(ids)
     except:
         return self._badRequest(request)
     targetsArg = self.parseTargets(targetsString)
     if targetsArg is not False:
         d = self.smultiengine.get_result(clientID, block, targetsArg, id)
         d.addCallbacks(self.packageSuccess, self.packageFailure)
         return d
     else:
         return self.packageFailure(failure.Failure(
             error.InvalidEngineID()))
Ejemplo n.º 14
0
 def renderHTTP(self, request):
     try:
         targetsString = request.prepath[1]
         clientID = int(request.args['clientID'][0])
         block = int(request.args['block'][0])
         key = request.args['key'][0]
         seq = pickle.loads(request.args['seq'][0])
         style = request.args['style'][0]
         flatten = bool(int(request.args['flatten'][0]))
     except:
         return self._badRequest(request)
     targetsArg = self.parseTargets(targetsString)
     if targetsArg is not False:
         d = self.smultiengine.scatter(clientID, block, targetsArg, key,
                                       seq, style, flatten)
         d.addCallbacks(self.packageSuccess, self.packageFailure)
         return d
     else:
         return self.packageFailure(failure.Failure(
             error.InvalidEngineID()))
Ejemplo n.º 15
0
 def remote_execute(self, clientID, block, targets, lines):
     if not self.multiEngine.verifyTargets(targets):
         return defer.fail(error.InvalidEngineID(
             repr(targets))).addErrback(packageFailure)
     else:
         return self.multiEngine.execute(clientID, block, targets, lines)