def create(ns, site, nodes): jslist = [] if not (site.not_before and site.not_after): logger.warn('not_after or not_before not set, passing %s' % site.name) return None for node in nodes: uri = ns.resolve('%s.%s.jobservice' % (domain, node)) js = Pyro.core.getProxyForURI(uri) jslist.append((js, js.list())) # en az ise gore siralyoruz jslist.sort(cmp=cmp) js = jslist[0][0] options1,options2 = site.options.split('{', 1) options = options1 + "{'not_after':'%s','not_before':'%s'," % \ (site.not_after, site.not_before) + options2 try: print options status, name = js.create(options, site.plugins) if not status: logger.error('Could not create worker for %s error was "%s"' % (site.name, name)) return None except Exception, e: logger.error('Could not create worker for %s error was "%s"' % (site.name, pprint(getPyroTraceback(e)))) return None
def create(ns, site, nodes): jslist = [] if not (site.not_before and site.not_after): logger.warn('not_after or not_before not set, passing %s' % site.name) return None for node in nodes: uri = ns.resolve('%s.%s.jobservice' % (domain, node)) js = Pyro.core.getProxyForURI(uri) jslist.append((js, js.list())) # en az ise gore siralyoruz jslist.sort(cmp=cmp) js = jslist[0][0] options1, options2 = site.options.split('{', 1) options = options1 + "{'not_after':'%s','not_before':'%s'," % \ (site.not_after, site.not_before) + options2 try: print options status, name = js.create(options, site.plugins) if not status: logger.error('Could not create worker for %s error was "%s"' % (site.name, name)) return None except Exception, e: logger.error('Could not create worker for %s error was "%s"' % (site.name, pprint(getPyroTraceback(e)))) return None
def _dispatch(self, request, params): # this dispatcher expects methods names like # ClassName.instance_name.method if self._ctrl['debug']: self._ctrl.log.debug( 'XML Request for %s : %s' % (str(request), str(params))) try: cls, instance, method = request.split(".") except ValueError: if self._ctrl['debug']: self._ctrl.log.debug('ValueError:Invalid Request') raise ValueError("Invalid Request") loc = Location(cls=cls, name=instance) if loc not in self._proxyCache: try: obj = self._ctrl.getManager().getProxy(loc) self._proxyCache[loc] = obj except ObjectNotFoundException: if self._ctrl['debug']: self._ctrl.log.debug( 'ObjectNotFoundException:Object Not Found') raise ValueError("Object Not Found") else: try: obj = self._proxyCache[loc] obj._transferThread() if not obj.ping(): raise Exception() # We need to remake the proxy except: try: obj = self._ctrl.getManager().getProxy(loc) self._proxyCache[loc] = obj except ObjectNotFoundException: if self._ctrl['debug']: self._ctrl.log.debug( 'ObjectNotFoundException:Object Not Found') raise ValueError("Object Not Found") handle = getattr(obj, method) obj._release() try: ret = handle(*params) except AttributeError: if self._ctrl['debug']: self._ctrl.log.debug('AttributeError:Method not found') raise ValueError("Method not found") except Exception, e: if self._ctrl['debug']: print ''.join(getPyroTraceback(e)) self._ctrl.log.debug( 'Other Error <%s>: %s' % (type(e), str(e))) raise
def _dispatch(self, request, params): # this dispatcher expects methods names like # ClassName.instance_name.method if self._ctrl['debug']: self._ctrl.log.debug('XML Request for %s : %s' % (str(request), str(params))) try: cls, instance, method = request.split(".") except ValueError: if self._ctrl['debug']: self._ctrl.log.debug('ValueError:Invalid Request') raise ValueError("Invalid Request") loc = Location(cls=cls, name=instance) if loc not in self._proxyCache: try: obj = self._ctrl.getManager().getProxy(loc) self._proxyCache[loc] = obj except ObjectNotFoundException: if self._ctrl['debug']: self._ctrl.log.debug( 'ObjectNotFoundException:Object Not Found') raise ValueError("Object Not Found") else: try: obj = self._proxyCache[loc] obj._transferThread() if not obj.ping(): raise Exception() # We need to remake the proxy except: try: obj = self._ctrl.getManager().getProxy(loc) self._proxyCache[loc] = obj except ObjectNotFoundException: if self._ctrl['debug']: self._ctrl.log.debug( 'ObjectNotFoundException:Object Not Found') raise ValueError("Object Not Found") handle = getattr(obj, method) obj._release() try: ret = handle(*params) except AttributeError: if self._ctrl['debug']: self._ctrl.log.debug('AttributeError:Method not found') raise ValueError("Method not found") except Exception, e: if self._ctrl['debug']: print ''.join(getPyroTraceback(e)) self._ctrl.log.debug('Other Error <%s>: %s' % (type(e), str(e))) raise
def dump_exception(cls, request, exception): "Pretty print an exception" exc = StringIO.StringIO() traceback.print_exc(file=exc) exc.seek(0) data = exc.read() #traceback_data = [] #for line in data.split('\n'): #traceback_data.append(line) #ermsg = "%% %s" % line #print "%s : %s " % (request.user, ermsg) traceback_data = getPyroTraceback(exception) formatted_data = [ x.replace('\n', '') for x in traceback_data ] return {"status": FAIL, "traceback": formatted_data}
def runcommand(options, parser): logger = get_logger('RunCommand') if not options.command or not options.node: return parser.print_help() #ns = Pyro.naming.NameServerLocator().getNS() #uri = ns.resolve('%s.%s.jobservice' % (domain, options.node)) #js = Pyro.core.getProxyForURI(uri) js = Pyro.core.getProxyForURI("PYROLOC://localhost:7766/jobservice") if options.command == 'create': if not options.profile: return logger.error( 'crate should be called with profile name: -n nodename -c create -p profile' ) sess = Session() try: pf = sess.query(Profile).filter( profile.c.name == options.profile).first() status, workername = js.create(pf.configuration) except Exception, e: logger.error('No profile found with name: %s' % options.profile) logger.error("".join(getPyroTraceback(e))) return -1 if status: j = Job(workername, 'paused') pf.jobs.append(j) #sess.save(j) sess.add(j) sess.commit() sess.close() logger.info("worker with name %s created" % workername) return 0 logger.error('no worker created: %s' % workername) return -1
def runcommand(options, parser): logger = get_logger('RunCommand') if not options.command or not options.node: return parser.print_help() #ns = Pyro.naming.NameServerLocator().getNS() #uri = ns.resolve('%s.%s.jobservice' % (domain, options.node)) #js = Pyro.core.getProxyForURI(uri) js = Pyro.core.getProxyForURI("PYROLOC://localhost:7766/jobservice") if options.command == 'create': if not options.profile: return logger.error('crate should be called with profile name: -n nodename -c create -p profile') sess = Session() try: pf = sess.query(Profile).filter(profile.c.name==options.profile).first() status, workername = js.create(pf.configuration) except Exception, e: logger.error( 'No profile found with name: %s' % options.profile) logger.error("".join(getPyroTraceback(e))) return -1 if status: j = Job(workername, 'paused') pf.jobs.append(j) #sess.save(j) sess.add(j) sess.commit() sess.close() logger.info ("worker with name %s created" % workername) return 0 logger.error('no worker created: %s' % workername) return -1
print options status, name = js.create(options, site.plugins) if not status: logger.error('Could not create worker for %s error was "%s"' % (site.name, name)) return None except Exception, e: logger.error('Could not create worker for %s error was "%s"' % (site.name, pprint(getPyroTraceback(e)))) return None try: status, mesg = js.start(name) except Exception, e: logger.error('Could not start worker %s error was "%s"' % (name, getPyroTraceback(e))) return None try: sess = makelogsession()() job = Job(name=name, status='running') job.not_before = site.not_before job.not_after = site.not_after job.site = site.id #sess.save(job) sess.add(job) sess.commit() logger.info('Created job %s for site %s' % (name, site.name)) return True except:
l = js.list() for worker, status in l: logger.info('%s: %s' % (worker, status)) elif options.command == 'listjobs': s, l = js.listjobs() logger.info('%s' % l) else: if not options.worker: logger.error('%s should be called with a worker name: -n nodename -c %s -w workername' % \ (options.command, options.command)) return -1 try: status, retval = getattr(js, options.command)(options.worker) except Exception, e: logger.error("".join(getPyroTraceback(e))) d = {'kill':'killed', 'pause':'paused', 'resume':'running'} if options.command in d: s = Session() j = s.query(Job).filter(job.c.name==options.worker).one() j.status = d.get(options.command) if options.command == 'kill': j.end_date = datetime.now() s.commit() s.close() else: logger.info(retval)
l = js.list() for worker, status in l: logger.info('%s: %s' % (worker, status)) elif options.command == 'listjobs': s, l = js.listjobs() logger.info('%s' % l) else: if not options.worker: logger.error('%s should be called with a worker name: -n nodename -c %s -w workername' % \ (options.command, options.command)) return -1 try: status, retval = getattr(js, options.command)(options.worker) except Exception, e: logger.error("".join(getPyroTraceback(e))) d = {'kill': 'killed', 'pause': 'paused', 'resume': 'running'} if options.command in d: s = Session() j = s.query(Job).filter(job.c.name == options.worker).one() j.status = d.get(options.command) if options.command == 'kill': j.end_date = datetime.now() s.commit() s.close() else: logger.info(retval)
try: print options status, name = js.create(options, site.plugins) if not status: logger.error('Could not create worker for %s error was "%s"' % (site.name, name)) return None except Exception, e: logger.error('Could not create worker for %s error was "%s"' % (site.name, pprint(getPyroTraceback(e)))) return None try: status, mesg = js.start(name) except Exception, e: logger.error('Could not start worker %s error was "%s"' % (name, getPyroTraceback(e))) return None try: sess = makelogsession()() job = Job(name=name, status='running') job.not_before = site.not_before job.not_after = site.not_after job.site = site.id #sess.save(job) sess.add(job) sess.commit() logger.info('Created job %s for site %s' % (name, site.name)) return True