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
0009 _logger = core_utils.setup_logger("proxy_cache_cred_manager")
0010
0011
0012
0013 class ProxyCacheCredManager(BaseCredManager):
0014
0015 def __init__(self, **kwarg):
0016 BaseCredManager.__init__(self, **kwarg)
0017
0018
0019 def check_credential(self):
0020
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
0035 def renew_credential(self):
0036
0037 mainLog = self.make_logger(_logger, method_name="renew_credential")
0038
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