in src/slurm_plugin/computemgtd.py [0:0]
def _get_config(self, config_file_path):
"""Get computemgtd configuration."""
log.info("Reading %s", config_file_path)
config = ConfigParser()
try:
# Validation to sanitize the input argument and make it safe to use the function affected by B604
validate_absolute_path(config_file_path)
# Use subprocess based method to copy shared file to local to prevent hanging when NFS is down
config_str = check_command_output(
f"cat {config_file_path}",
timeout=DEFAULT_COMMAND_TIMEOUT,
shell=True, # nosec B604
)
config.read_file(StringIO(config_str))
except Exception:
log.error("Cannot read computemgtd configuration file: %s", config_file_path)
raise
# Get config settings
self.region = config.get("computemgtd", "region")
self.cluster_name = config.get("computemgtd", "cluster_name")
# Configure boto3 to retry 1 times by default
self._boto3_retry = config.getint("clustermgtd", "boto3_retry", fallback=self.DEFAULTS.get("max_retry"))
self._boto3_config = {"retries": {"max_attempts": self._boto3_retry, "mode": "standard"}}
self.loop_time = config.getint("computemgtd", "loop_time", fallback=self.DEFAULTS.get("loop_time"))
self.clustermgtd_timeout = config.getint(
"computemgtd",
"clustermgtd_timeout",
fallback=self.DEFAULTS.get("clustermgtd_timeout"),
)
self.disable_computemgtd_actions = config.getboolean(
"computemgtd",
"disable_computemgtd_actions",
fallback=self.DEFAULTS.get("disable_computemgtd_actions"),
)
self.clustermgtd_heartbeat_file_path = config.get("computemgtd", "clustermgtd_heartbeat_file_path")
self._slurm_nodename_file = config.get(
"computemgtd", "slurm_nodename_file", fallback=self.DEFAULTS.get("slurm_nodename_file")
)
self.nodename = ComputemgtdConfig._read_nodename_from_file(self._slurm_nodename_file)
proxy = config.get("computemgtd", "proxy", fallback=self.DEFAULTS.get("proxy"))
if proxy != "NONE":
self._boto3_config["proxies"] = {"https": proxy}
self.boto3_config = Config(**self._boto3_config)
self.logging_config = config.get("computemgtd", "logging_config", fallback=self.DEFAULTS.get("logging_config"))
# Log configuration
log.info(self.__repr__())