Hotfix for settings and SSH shell routine
Related-PROD: PROD-36588
Change-Id: I63d6ae4a888dad81ae886c9b1e2bb5ea41139772
diff --git a/cfg_checker/common/settings.py b/cfg_checker/common/settings.py
index eac81c1..993f92f 100644
--- a/cfg_checker/common/settings.py
+++ b/cfg_checker/common/settings.py
@@ -40,14 +40,20 @@
return _json
+def _get_env_value(_key, _default):
+ _value = os.environ.get(_key, _default)
+ logger_cli.debug("... shell env: {}={}".format(_key, _value))
+ return _value
+
+
class CheckerConfiguration(object):
@staticmethod
def load_nodes_list():
- _file = os.environ.get('SALT_NODE_LIST_FILE', None)
+ _file = _get_env_value('SALT_NODE_LIST_FILE', None)
if _file:
_v, _ = utils.get_nodes_list(
os.path.join(pkg_dir, _file),
- env_sting=os.environ.get('CFG_ALL_NODES', None)
+ env_sting=_get_env_value('CFG_ALL_NODES', None)
)
return _v
else:
@@ -181,7 +187,7 @@
)
)
self.name = "CheckerConfig"
- self.working_folder = os.environ.get(
+ self.working_folder = _get_env_value(
'CFG_TESTS_WORK_DIR',
_default_work_folder
)
@@ -191,21 +197,21 @@
self.pkg_versions_map = 'versions_map.csv'
# self.ssh_uses_sudo = False
- self.ssh_key = os.environ.get('MCP_SSH_KEY', None)
- self.ssh_user = os.environ.get('MCP_SSH_USER', None)
- self.ssh_host = os.environ.get('MCP_SSH_HOST', None)
+ self.ssh_key = _get_env_value('MCP_SSH_KEY', None)
+ self.ssh_user = _get_env_value('MCP_SSH_USER', None)
+ self.ssh_host = _get_env_value('MCP_SSH_HOST', None)
self.ssh_connect_timeout = int(
- os.environ.get('MCP_SSH_TIMEOUT', "15")
+ _get_env_value('MCP_SSH_TIMEOUT', "15")
)
- self.mcp_host = os.environ.get('MCP_ENV_HOST', None)
- self.salt_port = os.environ.get('MCP_SALT_PORT', '6969')
- self.threads = int(os.environ.get('MCP_THREADS', "5"))
+ self.mcp_host = _get_env_value('MCP_ENV_HOST', None)
+ self.salt_port = _get_env_value('MCP_SALT_PORT', '6969')
+ self.threads = int(_get_env_value('MCP_THREADS', "5"))
self.script_execution_timeout = int(
- os.environ.get('MCP_SCRIPT_RUN_TIMEOUT', "300")
+ _get_env_value('MCP_SCRIPT_RUN_TIMEOUT', "300")
)
- self.skip_nodes = utils.node_string_to_list(os.environ.get(
+ self.skip_nodes = utils.node_string_to_list(_get_env_value(
'CFG_SKIP_NODES',
None
))
@@ -226,13 +232,13 @@
if _key not in os.environ:
os.environ[_key] = _value
- self.salt_user = os.environ.get('SALT_USER', 'salt')
- self.salt_timeout = os.environ.get('SALT_TIMEOUT', 30)
- self.salt_file_root = os.environ.get(
+ self.salt_user = _get_env_value('SALT_USER', 'salt')
+ self.salt_timeout = _get_env_value('SALT_TIMEOUT', 30)
+ self.salt_file_root = _get_env_value(
'SALT_FILE_ROOT',
"/usr/share/salt-formulas/env/"
)
- self.salt_scripts_folder = os.environ.get(
+ self.salt_scripts_folder = _get_env_value(
'SALT_SCRIPTS_FOLDER',
'cfg_checker_scripts'
)
@@ -241,16 +247,16 @@
if _key not in os.environ:
os.environ[_key] = _value
- self.kube_config_root = os.environ.get('KUBE_CONFIG_ROOT', "/root")
- self.kube_scripts_folder = os.environ.get(
+ self.kube_config_root = _get_env_value('KUBE_CONFIG_ROOT', "/root")
+ self.kube_scripts_folder = _get_env_value(
'KUBE_SCRIPTS_FOLDER',
"cfg-checker-scripts"
)
- self.kube_node_user = os.environ.get(
+ self.kube_node_user = _get_env_value(
'KUBE_NODE_USER',
'ubuntu'
)
- self.kube_node_keypath = os.environ.get(
+ self.kube_node_keypath = _get_env_value(
'KUBE_NODE_KEYPATH',
None
)
@@ -302,7 +308,7 @@
ConfigException -- on env file failed validation
"""
# detect kubeconfig placement
- _env_kubeconf_path = os.environ.get('KUBECONFIG', None)
+ _env_kubeconf_path = _get_env_value('KUBECONFIG', None)
if not os.path.exists(self.kube_config_path):
logger_cli.debug(
"... kubeconfig not detected at '{}'".format(
@@ -419,21 +425,32 @@
# if env name is default, check var too
if args.env_name == ENV_LOCAL:
- _env = os.getenv('MCP_ENV', None)
+ _env = _get_env_value('MCP_ENV', None)
_env = _env if _env else args.env_name
_env_config_path = os.path.join(pkg_dir, 'etc', _env + '.env')
else:
_env = args.env_name
_env_config_path = args.env_config
+ logger_cli.debug(
+ "... env is '{}', config path is '{}'".format(
+ _env,
+ _env_config_path
+ )
+ )
# Init environment variables from file, validate
+ logger_cli.debug(
+ "... init environment values from '{}'".format(_env_config_path)
+ )
self._init_env(_env_config_path, env_name=_env)
# Load Common vars for any type of the env
+ logger_cli.debug("... loading common variables")
self._init_mcp_values()
# Detect env types present
self._detect_types()
# handle forced env type var
- _forced_type = os.getenv('MCP_TYPE_FORCE', None)
+ logger_cli.debug("... handling forced env types")
+ _forced_type = _get_env_value('MCP_TYPE_FORCE', None)
if _forced_type in supported_envs:
self.detected_envs.append(_forced_type)
elif _forced_type is not None:
@@ -461,6 +478,9 @@
# names and folders in case of remote env
self.user = self.ssh_user
self.homepath = os.path.join('/home', self.ssh_user)
+ logger_cli.debug("... system user for ssh is '{}'".format(self.user))
+ logger_cli.debug("... system home path is '{}'".format(self.homepath))
# Init vars that is specific to detected envs only
+ logger_cli.debug("... loading detected environment type vars")
self._init_env_values()
diff --git a/cfg_checker/nodes.py b/cfg_checker/nodes.py
index 0559132..cf2bdf7 100644
--- a/cfg_checker/nodes.py
+++ b/cfg_checker/nodes.py
@@ -694,12 +694,13 @@
_h = self.nodes[node]['internalip']
_p = 22
if self.kube.is_local or self.kube.config.ssh_direct:
- return None,
- self._get_ssh_shell(
+ logger.debug("Getting shell with no port forward")
+ return [None, self._get_ssh_shell(
_h, _u, _k, _p, silent, piped,
timeout=self.kube.config.ssh_connect_timeout
- )
+ )]
else:
+ logger.debug("Getting shell with with forward")
_fh = "localhost"
_p = 10022 if not fport else fport
_pfwd = PortForward(
@@ -720,7 +721,7 @@
piped,
timeout=self.kube.config.ssh_connect_timeout
)
- return _pfwd, _ssh
+ return [_pfwd, _ssh]
def execute_script_on_node(self, node, script_filename, args=[]):
# Prepare path