File indexing completed on 2026-04-20 07:58:58
0001 import json
0002 import traceback
0003
0004 from pandaharvester.harvestercore import core_utils
0005 from pandaharvester.harvestermisc.info_utils_k8s import PandaQueuesDictK8s
0006 from pandaharvester.harvestermisc.k8s_utils import k8s_Client
0007
0008 from .base_cred_manager import BaseCredManager
0009
0010
0011 _logger = core_utils.setup_logger("k8s_secret_cred_manager")
0012
0013
0014
0015 class K8sSecretCredManager(BaseCredManager):
0016
0017 def __init__(self, **kwarg):
0018 BaseCredManager.__init__(self, **kwarg)
0019
0020 tmp_log = self.make_logger(_logger, method_name="__init__")
0021
0022 if hasattr(self, "inFile") or hasattr(self, "inCertFile"):
0023
0024 try:
0025 self.inFile
0026 except AttributeError:
0027 self.inFile = self.inCertFile
0028
0029 try:
0030 with open(self.inFile) as f:
0031 self.setupMap = json.load(f)
0032 except Exception as e:
0033 tmp_log.error(f"Error with inFile/inCertFile . {e.__class__.__name__}: {e}")
0034 self.setupMap = {}
0035 raise
0036 else:
0037
0038 self.setupMap = dict(vars(self))
0039
0040 try:
0041 self.k8s_config_file = self.setupMap["k8s_config_file"]
0042 self.proxy_files = self.setupMap["proxy_files"]
0043 self.secret_name = self.setupMap.get("secret_name", "proxy-secret")
0044 except KeyError as e:
0045 tmp_log.error(f"Missing attributes in setup. {e.__class__.__name__}: {e}")
0046 raise
0047
0048 try:
0049
0050 self.panda_queues_dict = PandaQueuesDictK8s()
0051 self.namespace = self.panda_queues_dict.get_k8s_namespace(self.queueName)
0052
0053 self.k8s_client = k8s_Client(namespace=self.namespace, queue_name=self.queueName, config_file=self.k8s_config_file)
0054 except Exception as e:
0055 tmp_log.error(f"Problem instantiating k8s client for {self.k8s_config_file}. {traceback.format_exc()}")
0056 raise
0057
0058
0059 def check_credential(self):
0060
0061
0062 return False
0063
0064
0065 def renew_credential(self):
0066
0067 tmp_log = self.make_logger(_logger, f"queueName={self.queueName}", method_name="renew_credential")
0068
0069 try:
0070 rsp = self.k8s_client.create_or_patch_secret(file_list=self.proxy_files, secret_name=self.secret_name)
0071 tmp_log.debug("done")
0072 except KeyError as e:
0073 errStr = f"Error when renew proxy secret . {e.__class__.__name__}: {e}"
0074 return False, errStr
0075 else:
0076 return True, ""