コード例 #1
0
class MyProxyRenewalAgent(AgentModule):
    def initialize(self):

        requiredLifeTime = self.am_getOption("MinimumLifeTime", 3600)
        renewedLifeTime = self.am_getOption("RenewedLifeTime", 54000)
        mailFrom = self.am_getOption("MailFrom", DEFAULT_MAIL_FROM)
        self.proxyDB = ProxyDB(useMyProxy=True, mailFrom=mailFrom)

        gLogger.info("Minimum Life time      : %s" % requiredLifeTime)
        gLogger.info("Life time on renew     : %s" % renewedLifeTime)
        gLogger.info("MyProxy server         : %s" %
                     self.proxyDB.getMyProxyServer())
        gLogger.info("MyProxy max proxy time : %s" %
                     self.proxyDB.getMyProxyMaxLifeTime())

        return S_OK()

    def __renewProxyForCredentials(self, userDN, userGroup):
        lifeTime = self.am_getOption("RenewedLifeTime", 54000)
        gLogger.info("Renewing for %s@%s %s secs" %
                     (userDN, userGroup, lifeTime))
        retVal = self.proxyDB.renewFromMyProxy(userDN,
                                               userGroup,
                                               lifeTime=lifeTime)
        if not retVal["OK"]:
            gLogger.error(
                "Failed to renew proxy",
                "for %s@%s : %s" % (userDN, userGroup, retVal["Message"]))
        else:
            gLogger.info("Renewed proxy for %s@%s" % (userDN, userGroup))

    def __treatRenewalCallback(self, oTJ, exceptionList):
        gLogger.exception(lException=exceptionList)

    def execute(self):
        """The main agent execution method"""
        self.proxyDB.purgeLogs()
        gLogger.info("Purging expired requests")
        retVal = self.proxyDB.purgeExpiredRequests()
        if retVal["OK"]:
            gLogger.info(" purged %s requests" % retVal["Value"])
        gLogger.info("Purging expired proxies")
        retVal = self.proxyDB.purgeExpiredProxies()
        if retVal["OK"]:
            gLogger.info(" purged %s proxies" % retVal["Value"])
        retVal = self.proxyDB.getCredentialsAboutToExpire(
            self.am_getOption("MinimumLifeTime", 3600))
        if not retVal["OK"]:
            return retVal
        data = retVal["Value"]
        gLogger.info("Renewing %s proxies..." % len(data))
        with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
            futures = []
            for record in data:
                userDN = record[0]
                userGroup = record[1]
                futures.append(
                    executor.submit(self.__renewProxyForCredentials, userDN,
                                    userGroup))
        return S_OK()
コード例 #2
0
class MyProxyRenewalAgent(AgentModule):

  def initialize(self):

    requiredLifeTime = self.am_getOption( "MinimumLifeTime", 3600 )
    renewedLifeTime = self.am_getOption( "RenewedLifeTime", 54000 )
    myProxyServer = gConfig.getValue( "/DIRAC/VOPolicy/MyProxyServer" , "myproxy.cern.ch" )
    self.proxyDB = ProxyDB( requireVoms = True,
                            useMyProxy = True
                          )

    gLogger.info( "Minimum Life time      : %s" % requiredLifeTime )
    gLogger.info( "Life time on renew     : %s" % renewedLifeTime )
    gLogger.info( "MyProxy server         : %s" % self.proxyDB.getMyProxyServer() )
    gLogger.info( "MyProxy max proxy time : %s" % self.proxyDB.getMyProxyMaxLifeTime() )

    self.__threadPool = ThreadPool( 1, 10 )
    return S_OK()

  def __renewProxyForCredentials( self, userDN, userGroup ):
    lifeTime = self.am_getOption( "RenewedLifeTime", 54000 )
    gLogger.info( "Renewing for %s@%s %s secs" % ( userDN, userGroup, lifeTime ) )
    retVal = self.proxyDB.renewFromMyProxy( userDN,
                                            userGroup,
                                            lifeTime = lifeTime )
    if not retVal[ 'OK' ]:
      gLogger.error( "Failed to renew for %s@%s : %s" %( userDN, userGroup, retVal[ 'Message' ] ) )
    else:
      gLogger.info( "Renewed proxy for %s@%s" % ( userDN, userGroup ) )

  def __treatRenewalCallback( self, oTJ, exceptionList ):
    gLogger.exception( lException = exceptionList )

  def execute(self):
    """ The main agent execution method
    """
    self.proxyDB.purgeLogs()
    gLogger.info( "Purging expired requests" )
    retVal = self.proxyDB.purgeExpiredRequests()
    if retVal[ 'OK' ]:
      gLogger.info( " purged %s requests" % retVal[ 'Value' ] )
    gLogger.info( "Purging expired proxies" )
    retVal = self.proxyDB.purgeExpiredProxies()
    if retVal[ 'OK' ]:
      gLogger.info( " purged %s proxies" % retVal[ 'Value' ] )
    retVal = self.proxyDB.getCredentialsAboutToExpire( self.am_getOption( "MinimumLifeTime" , 3600 ) )
    if not retVal[ 'OK' ]:
      return retVal
    data = retVal[ 'Value' ]
    gLogger.info( "Renewing %s proxies..." % len( data ) )
    for record in data:
      userDN = record[0]
      userGroup = record[1]
      self.__threadPool.generateJobAndQueueIt( self.__renewProxyForCredentials,
                                               args = ( userDN, userGroup ),
                                               oExceptionCallback = self.__treatRenewalCallback )
    self.__threadPool.processAllResults()
    return S_OK()
コード例 #3
0
class MyProxyRenewalAgent(AgentModule):

  def initialize(self):

    requiredLifeTime = self.am_getOption( "MinimumLifeTime", 3600 )
    renewedLifeTime = self.am_getOption( "RenewedLifeTime", 54000 )
    self.proxyDB = ProxyDB( useMyProxy = True )

    gLogger.info( "Minimum Life time      : %s" % requiredLifeTime )
    gLogger.info( "Life time on renew     : %s" % renewedLifeTime )
    gLogger.info( "MyProxy server         : %s" % self.proxyDB.getMyProxyServer() )
    gLogger.info( "MyProxy max proxy time : %s" % self.proxyDB.getMyProxyMaxLifeTime() )

    self.__threadPool = ThreadPool( 1, 10 )
    return S_OK()

  def __renewProxyForCredentials( self, userDN, userGroup ):
    lifeTime = self.am_getOption( "RenewedLifeTime", 54000 )
    gLogger.info( "Renewing for %s@%s %s secs" % ( userDN, userGroup, lifeTime ) )
    retVal = self.proxyDB.renewFromMyProxy( userDN,
                                            userGroup,
                                            lifeTime = lifeTime )
    if not retVal[ 'OK' ]:
      gLogger.error( "Failed to renew proxy", "for %s@%s : %s" %( userDN, userGroup, retVal[ 'Message' ] ) )
    else:
      gLogger.info( "Renewed proxy for %s@%s" % ( userDN, userGroup ) )

  def __treatRenewalCallback( self, oTJ, exceptionList ):
    gLogger.exception( lException = exceptionList )

  def execute(self):
    """ The main agent execution method
    """
    self.proxyDB.purgeLogs()
    gLogger.info( "Purging expired requests" )
    retVal = self.proxyDB.purgeExpiredRequests()
    if retVal[ 'OK' ]:
      gLogger.info( " purged %s requests" % retVal[ 'Value' ] )
    gLogger.info( "Purging expired proxies" )
    retVal = self.proxyDB.purgeExpiredProxies()
    if retVal[ 'OK' ]:
      gLogger.info( " purged %s proxies" % retVal[ 'Value' ] )
    retVal = self.proxyDB.getCredentialsAboutToExpire( self.am_getOption( "MinimumLifeTime" , 3600 ) )
    if not retVal[ 'OK' ]:
      return retVal
    data = retVal[ 'Value' ]
    gLogger.info( "Renewing %s proxies..." % len( data ) )
    for record in data:
      userDN = record[0]
      userGroup = record[1]
      self.__threadPool.generateJobAndQueueIt( self.__renewProxyForCredentials,
                                               args = ( userDN, userGroup ),
                                               oExceptionCallback = self.__treatRenewalCallback )
    self.__threadPool.processAllResults()
    return S_OK()
コード例 #4
0
ファイル: ProxyManagerHandler.py プロジェクト: vfalbor/DIRAC
def initializeProxyManagerHandler(serviceInfo):
    global gProxyDB

    serviceCS = serviceInfo['serviceSectionPath']
    requireVoms = gConfig.getValue("%s/RequireVOMS" % serviceCS,
                                   "no").lower() in ("yes", "y", "1")
    useMyProxy = gConfig.getValue("%s/UseMyProxy" % serviceCS,
                                  "no").lower() in ("yes", "y", "1")
    try:
        gProxyDB = ProxyDB(requireVoms=requireVoms, useMyProxy=useMyProxy)
    except:
        return S_ERROR("Can't initialize ProxyDB")
    gThreadScheduler.addPeriodicTask(900,
                                     gProxyDB.purgeExpiredTokens,
                                     elapsedTime=900)
    gThreadScheduler.addPeriodicTask(900,
                                     gProxyDB.purgeExpiredRequests,
                                     elapsedTime=900)
    gLogger.info("VOMS: %s\nMyProxy: %s\n MyProxy Server: %s" %
                 (requireVoms, useMyProxy, gProxyDB.getMyProxyServer()))
    return S_OK()
コード例 #5
0
def initializeProxyManagerHandler( serviceInfo ):
  global gProxyDB

  serviceCS = serviceInfo [ 'serviceSectionPath' ]
  requireVoms = gConfig.getValue( "%s/RequireVOMS" % serviceCS, "no" ).lower() in ( "yes", "y", "1" )
  useMyProxy = gConfig.getValue( "%s/UseMyProxy" % serviceCS, "no" ).lower() in ( "yes", "y", "1" )
  try:
    gProxyDB = ProxyDB( requireVoms = requireVoms,
                        useMyProxy = useMyProxy )
  except:
    return S_ERROR( "Can't initialize ProxyDB" )
  gThreadScheduler.addPeriodicTask( 900, gProxyDB.purgeExpiredTokens, elapsedTime = 900 )
  gThreadScheduler.addPeriodicTask( 900, gProxyDB.purgeExpiredRequests, elapsedTime = 900 )
  gThreadScheduler.addPeriodicTask( 3600, gProxyDB.purgeLogs )
  gThreadScheduler.addPeriodicTask( 3600, gProxyDB.purgeExpiredProxies )
  gLogger.info( "VOMS: %s\nMyProxy: %s\n MyProxy Server: %s" % ( requireVoms, useMyProxy, gProxyDB.getMyProxyServer() ) )
  return S_OK()