def __init__(self,parameters, container, proxyMan):
     AbstractRenewer.__init__(self, container)
     self.proxyMan = proxyMan
     
     endPoint = parameters.resourceURI[:string.find(parameters.resourceURI,'/')] 
     self.cmdPrefix = '%s -e %s %s ' % (cmdTable['proxy-renew'], endPoint, '%s')
     self.fString = 'DELEGID%d.%f'
     self.single = ( parameters.delegationType=='single' )
     
     if ProxyRenewer.logger == None:
         ProxyRenewer.logger = mainLogger.get_instance(classid='ProxyRenewer')
     
     if parameters.delegationType=='single':
         delegError = None
         delegCmd = '%s -e %s -t %d DELEGID%s' \
             % (cmdTable['delegate'], endPoint, parameters.sotimeout, applicationID) 
         ProxyRenewer.logger.debug("Delegate command: " + delegCmd)
         delegProc = popen2.Popen4(delegCmd)
         for line in delegProc.fromchild:
             if 'ERROR' in line or 'FATAL' in line:
                 delegError = line[24:]
         delegProc.fromchild.close()
         
         if delegError<>None:
             raise Exception, "Cannot delegate proxy DELEGID%s: %s" % (applicationID, delegError)
    def __init__(self, parameters, container):
        AbstractRenewer.__init__(self, container)

        endPoint = parameters.resourceURI[:string.find(parameters.resourceURI,'/')] 
        self.cmdPrefix = '%s -e %s -T %d -t %d %s ' % \
                 (cmdTable['lease'], endPoint, parameters.leaseTime, \
                  parameters.sotimeout, '%s')
        self.sleepTime = parameters.leaseTime
        self.fString = 'LEASEID%d.%f'
        if parameters.leaseType=='none':
            raise Exception, 'Cannot start lease renewer: lease is not enabled'
        self.single = ( parameters.leaseType=='single' )
        
        if LeaseRenewer.logger==None:
            LeaseRenewer.logger = mainLogger.get_instance(classid='LeaseRenewer')
        
        if parameters.leaseType=='single':
            cannotLease = False
            leaseCmd = '%s -e %s  -T %d -t %d LEASEID%s' \
                    % (cmdTable['lease'], endPoint, \
                       parameters.leaseTime, parameters.sotimeout, applicationID) 
            LeaseRenewer.logger.debug("Lease command: " + leaseCmd)
            leaseProc = popen2.Popen4(leaseCmd)
            for line in leaseProc.fromchild:
                if 'ERROR' in line or 'FATAL' in line:
                    cannotLease = True
            leaseProc.fromchild.close()
            
            if cannotLease:
                raise Exception, "Cannot register LEASEID" + applicationID
 def __init__(self, pool, scmd, dcmd, lcmd, tName):
     threading.Thread.__init__(self)
     self.setName(tName)
     self.pool = pool
     self.submitFStr = scmd
     self.delegFStr = dcmd
     self.leaseFStr = lcmd
     
     if SubmitterThread.logger==None:
         SubmitterThread.logger = mainLogger.get_instance(classid="SubmitterThread")
 def __init__(self, container):
     Thread.__init__(self)
     self.container = container
     self.running = True
     self.cond = Condition()
     #
     # TODO define a new parameter for attempts
     #
     self.attempts = 3
     if AbstractRenewer.logger==None:
         AbstractRenewer.logger = mainLogger.get_instance(classid='AbstractRenewer')
 def __init__(self, parameters, jobTable=None, pManager=None):
     self.jobTable = jobTable
     self.successes = 0
     self.failures = 0
     self.globalSem = threading.Semaphore(1)
     self.masterCond = threading.Condition()
     self.slaveCond = threading.Condition()
     self.running = True
     self.left = 0
     self.processed = 0
     
     if JobSubmitterPool.logger==None:
         JobSubmitterPool.logger = mainLogger.get_instance(classid="JobSubmitterPool")
     
     self.proxyMan = pManager
     
     if parameters.delegationType=='multiple':
         dcmd = '%s -e %s -t %d %s' % (cmdTable['delegate'], \
                                           parameters.resourceURI[:string.find(parameters.resourceURI,'/')],
                                           parameters.sotimeout,
                                           'DELEGID%d.%f')
         delegOpt = '-D DELEGID%d.%f'
     else:
         delegOpt = '-D DELEGID' + applicationID
         dcmd = None
         
     if not hasattr(parameters, 'leaseType') or parameters.leaseType=='none':
         leaseOpt = ''
         lcmd = None
     elif parameters.leaseType=='multiple':
             
         if hasattr(parameters, 'leaseTime'):
             lTime = parameters.leaseTime
         else:
             lTime = 60
             
         lcmd = '%s -e %s -T %d -t %d %s' % (cmdTable['lease'], \
                                   parameters.resourceURI[:string.find(parameters.resourceURI,'/')], \
                                   lTime, parameters.sotimeout, 'LEASEID%d.%f')
         leaseOpt = '-L LEASEID%d.%f'
     else:
         lcmd = None
         leaseOpt = '-L LEASEID' + applicationID
         
     scmd = '%s %s %s -r %s -t %d %s' % (cmdTable['submit'], delegOpt, leaseOpt, \
                                 parameters.resourceURI, parameters.sotimeout, parameters.jdl)
     
     for k in range(0,parameters.maxConcurrentSubmit):
         subThr = SubmitterThread(self, scmd, dcmd, lcmd, "Submitter"  + str(k))
         subThr.start()
    def __init__(self,parameters):
        Thread.__init__(self)

        if VOMSProxyManager.logger==None:
            VOMSProxyManager.logger = mainLogger.get_instance(classid='VOMSProxyManager')
#        if not hasattr(parameters, 'vo') or parameters.vo=='':
#            raise Exception, "Missing vo parameter"

        self.cert, self.key = getUserKeyAndCert()
        if self.cert==None:
            VOMSProxyManager.logger.debug("Using external proxy certificate")
            self.usingProxy = True
            self.proxyFile = getProxyFile()
            if int(self)==0:
                raise Exception, "Proxy %s is expired" % self.proxyFile
            return
        
        VOMSProxyManager.logger.debug("Enabled voms proxy management")
        self.usingProxy = False
        if checkEncryptedKey(self.key):
            self.password = getpass.getpass('Password for user key: ')
        else:
            self.password = ''
        
        self.proxyFile = '/tmp/x509up_u%d_%d' % (os.getuid(), os.getpid())
            
        if hasattr(parameters, 'valid') and parameters.valid<>'':
            tokens = string.split(parameters.valid, ':')
            self.interval = int(tokens[0])*3600 + int(tokens[1])*60
        else:
            self.interval = 600

        self.parameters = parameters
        self.running = True
        self.cond = Condition()
        self.pCond = Condition()
        self.wCheck = False
        self.rCheck = 0
        
        self.renewProxy()
        os.environ['X509_USER_PROXY'] = self.proxyFile