Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
 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}
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
        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:
Ejemplo n.º 9
0
        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)
Ejemplo n.º 10
0
        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)

Ejemplo n.º 11
0
    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