You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2020/12/03 11:20:45 UTC
[pulsar] branch branch-2.6 updated: Issue 8704: improve env config
handling (#8709)
This is an automated email from the ASF dual-hosted git repository.
penghui pushed a commit to branch branch-2.6
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-2.6 by this push:
new 06cb008 Issue 8704: improve env config handling (#8709)
06cb008 is described below
commit 06cb00823d30cd6b3067a7387cc04dff4c951bbd
Author: Kevin Wilson <kl...@comcast.net>
AuthorDate: Thu Dec 3 02:11:00 2020 -0700
Issue 8704: improve env config handling (#8709)
There are three issues addressed in this PR.
1) script files that contain lines other than comments and value
assignments cause the script to abort not re-writing the file at all.
These lines should be tolerated if they cannot be parsed as value
assignments and flow through to the edited results.
2) Redaction of passwords in environment variables. Environment
variables with a name containing password will automatically be
redacted and not printed in the log messages.
3) values that contain spaces as in many java args that contain
stringed together options like "-Xmx ... -Xmn ..." are read from the
environment without the quotes. These quotes need to be added back
when writing back to the shell script to ensure that these values are
processed as a group.
(cherry picked from commit c02e8802253e38d07c87f2ff93a88172e2721af8)
---
docker/pulsar/scripts/apply-config-from-env.py | 39 ++++++++++++++++++++++----
1 file changed, 33 insertions(+), 6 deletions(-)
diff --git a/docker/pulsar/scripts/apply-config-from-env.py b/docker/pulsar/scripts/apply-config-from-env.py
index 23d3d0f..948254b 100755
--- a/docker/pulsar/scripts/apply-config-from-env.py
+++ b/docker/pulsar/scripts/apply-config-from-env.py
@@ -47,16 +47,30 @@ for conf_filename in conf_files:
if not line or line.startswith('#'):
continue
- k,v = line.split('=', 1)
- keys[k] = len(lines) - 1
+ try:
+ k,v = line.split('=', 1)
+ keys[k] = len(lines) - 1
+ except:
+ print("[%s] skip Processing %s" % (conf_filename, line))
# Update values from Env
for k in sorted(os.environ.keys()):
- v = os.environ[k]
+ v = os.environ[k].strip()
+
+ # Quote the value if it contains a space.
+ if v.find(" ") >= 0:
+ v = '\"%s\"' % v
+
+ # Hide the value in logs if is password.
+ if "password" in k:
+ displayValue = "********"
+ else:
+ displayValue = v
+
if k.startswith(PF_ENV_PREFIX):
k = k[len(PF_ENV_PREFIX):]
if k in keys:
- print('[%s] Applying config %s = %s' % (conf_filename, k, v))
+ print('[%s] Applying config %s = %s' % (conf_filename, k, displayValue))
idx = keys[k]
lines[idx] = '%s=%s\n' % (k, v)
@@ -66,16 +80,29 @@ for conf_filename in conf_files:
v = os.environ[k]
if not k.startswith(PF_ENV_PREFIX):
continue
+
+ # Quote the value if it contains a space.
+ if v.find(" ") >= 0:
+ v = '\"%s\"' % v
+
+ # Hide the value in logs if is password.
+ if "password" in k:
+ displayValue = "********"
+ else:
+ displayValue = v
+
k = k[len(PF_ENV_PREFIX):]
if k not in keys:
- print('[%s] Adding config %s = %s' % (conf_filename, k, v))
+ print('[%s] Adding config %s = %s' % (conf_filename, k, displayValue))
lines.append('%s=%s\n' % (k, v))
else:
- print('[%s] Updating config %s = %s' %(conf_filename, k, v))
+ print('[%s] Updating config %s = %s' % (conf_filename, k, displayValue))
lines[keys[k]] = '%s=%s\n' % (k, v)
+
# Store back the updated config in the same file
f = open(conf_filename, 'w')
for line in lines:
f.write(line)
f.close()
+