'''
Created on Oct 10, 2020
@author: esdev
'''
import pathlib
from ruamel.yaml import YAML
from slacm.exceptions import ParameterLoadError
[docs]
class Params(object):
'''
Parameters are stored as YAML files, of the following format:
hostname_or_host:
actor_name:
component_name:
param_name: param_value
'''
def __init__(self, param_file=None):
'''
Constructor for the parameter object.
Loads the parameter (YAML) file.
'''
self.param_file = param_file
if param_file == None: return
self.yaml = YAML()
self.params = None
try:
self.params = self.yaml.load(pathlib.Path(self.param_file))
except FileNotFoundError:
pass
except Exception as e:
raise ParameterLoadError(f"parameter loading of '{self.param_file}' failed: {e}") from e
[docs]
def is_host(self,host):
return host in self.params if self.params else None
[docs]
def get_host_params(self,host):
return (self.params.get(host,None) or \
self.params.get('host',None)) if self.params else None
[docs]
def get_actor_params(self,host,actor):
host_params = self.get_host_params(host)
return host_params.get(actor,None) if host_params else None
[docs]
def get_comp_params(self,host,actor,component):
actor_params = self.get_actor_params(host, actor)
return actor_params.get(component,None) if actor_params else None