diff --git a/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java b/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java index 6126b50101d..abc9e6681ce 100644 --- a/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java +++ b/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java @@ -104,6 +104,7 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, private static final ConfigKey VmJobLockTimeout = new ConfigKey("Advanced", Integer.class, "vm.job.lock.timeout", "1800", "Time in seconds to wait in acquiring lock to submit a vm worker job", false); + private static final ConfigKey HidePassword = new ConfigKey("Advanced", Boolean.class, "log.hide.password", "true", "If set to true, the password is hidden", true, ConfigKey.Scope.Global); private static final Logger s_logger = Logger.getLogger(AsyncJobManagerImpl.class); @@ -159,7 +160,7 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, @Override public ConfigKey[] getConfigKeys() { - return new ConfigKey[] {JobExpireMinutes, JobCancelThresholdMinutes, VmJobLockTimeout}; + return new ConfigKey[] {JobExpireMinutes, JobCancelThresholdMinutes, VmJobLockTimeout, HidePassword}; } @Override @@ -255,9 +256,11 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, @DB public void completeAsyncJob(final long jobId, final Status jobStatus, final int resultCode, final String resultObject) { if (s_logger.isDebugEnabled()) { - s_logger.debug("Complete async job-" + jobId + ", jobStatus: " + jobStatus + ", resultCode: " + resultCode + ", result: " + resultObject); + String resultObj = obfuscatePassword(resultObject, HidePassword.value()); + s_logger.debug("Complete async job-" + jobId + ", jobStatus: " + jobStatus + ", resultCode: " + resultCode + ", result: " + resultObj); } + final AsyncJobVO job = _jobDao.findById(jobId); if (job == null) { if (s_logger.isDebugEnabled()) { @@ -460,6 +463,20 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, return job; } + private String obfuscatePassword(String result, boolean hidePassword) { + if (hidePassword) { + String pattern = "\"password\":"; + if (result != null) { + if (result.contains(pattern)) { + String[] resp = result.split(pattern); + String psswd = resp[1].toString().split(",")[0]; + result = resp[0] + pattern + psswd.replace(psswd.substring(2, psswd.length() - 1), "*****") + "," + resp[1].split(",", 2)[1]; + } + } + } + return result; + } + private void scheduleExecution(final AsyncJobVO job) { scheduleExecution(job, false); }