Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-20 07:58:58

0001 import subprocess
0002 
0003 from pandaharvester.harvestercore import core_utils
0004 from pandaharvester.harvestercore.communicator_pool import CommunicatorPool
0005 
0006 from .base_cred_manager import BaseCredManager
0007 
0008 # logger
0009 _logger = core_utils.setup_logger("proxy_cache_cred_manager")
0010 
0011 
0012 # credential manager with proxy cache
0013 class ProxyCacheCredManager(BaseCredManager):
0014     # constructor
0015     def __init__(self, **kwarg):
0016         BaseCredManager.__init__(self, **kwarg)
0017 
0018     # check proxy
0019     def check_credential(self):
0020         # make logger
0021         mainLog = self.make_logger(_logger, method_name="check_credential")
0022         comStr = f"voms-proxy-info -exists -hours 72 -file {self.outCertFile}"
0023         mainLog.debug(comStr)
0024         try:
0025             p = subprocess.Popen(comStr.split(), shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
0026             stdOut, stdErr = p.communicate()
0027             retCode = p.returncode
0028         except Exception:
0029             core_utils.dump_error_message(mainLog)
0030             return False
0031         mainLog.debug(f"retCode={retCode} stdOut={stdOut} stdErr={stdErr}")
0032         return retCode == 0
0033 
0034     # renew proxy
0035     def renew_credential(self):
0036         # make logger
0037         mainLog = self.make_logger(_logger, method_name="renew_credential")
0038         # make communication channel to PanDA
0039         com = CommunicatorPool()
0040         proxy, msg = com.get_proxy(self.voms, (self.inCertFile, self.inCertFile))
0041         if proxy is not None:
0042             pFile = open(self.outCertFile, "w")
0043             pFile.write(proxy)
0044             pFile.close()
0045         else:
0046             mainLog.error(f"failed to renew credential with a server message : {msg}")
0047         return proxy is not None, msg