in src/core/src/bootstrap/EnvLayer.py [0:0]
def set_env_var(self, var_name, var_value=str(), raise_if_not_success=False):
# type: (str, str, bool) -> None
""" Sets an environment variable with var_name and var_value in /etc/environment. If it already exists, it is overwritten. """
try:
environment_vars = self.file_system.read_with_retry(self.etc_environment_file_path)
if environment_vars is None:
print("Error occurred while setting environment variable: File not found. [Variable={0}][Value={1}][Path={2}]".format(str(var_name), str(var_value), self.etc_environment_file_path))
return
environment_vars_lines = environment_vars.strip().split("\n")
if var_value is None or var_value == str():
# remove environment variable
regex = re.compile('{0}=.+'.format(var_name))
search = regex.search(environment_vars)
if search is None:
return
group = search.group()
environment_vars = environment_vars.replace(group, '').replace("\n\n", "\n")
self.file_system.write_with_retry(self.etc_environment_file_path, environment_vars, "w")
return
formatted_env_var = "{0}={1}".format(var_name, str(var_value))
if var_name not in environment_vars:
self.file_system.write_with_retry(self.etc_environment_file_path, "\n" + formatted_env_var)
else:
# Update the value of the existing setting
for env_var in environment_vars_lines:
if var_name not in str(env_var):
continue
environment_vars = environment_vars.replace(str(env_var), formatted_env_var)
break
self.file_system.write_with_retry(self.etc_environment_file_path, environment_vars, 'w')
except Exception as error:
print("Error occurred while setting environment variable [Variable={0}][Value={1}][Exception={2}]".format(str(var_name), str(var_value), repr(error)))
if raise_if_not_success:
raise