@SuppressWarnings({ "rawtypes", "unchecked" }) @Override public int execute(Map flags2, List<String> script, String summaryForLogging) { Map flags = new LinkedHashMap(); if (!flags2.containsKey(IGNORE_ENTITY_SSH_FLAGS)) flags.putAll(getSshFlags()); flags.putAll(flags2); Map<String, String> environment = (Map<String, String>) ((flags.get("env") != null) ? flags.get("env") : getShellEnvironment()); if (!flags.containsKey("logPrefix")) flags.put("logPrefix", ""+entity.getId()+"@"+getLocation().getDisplayName()); return getMachine().execScript(flags, summaryForLogging, script, environment); }
/** * Sets all JVM options (-X.. -D..) in an environment var JAVA_OPTS. * <p> * That variable is constructed from getJavaOpts(), then wrapped _unescaped_ in double quotes. An * error is thrown if there is an unescaped double quote in the string. All other unescaped * characters are permitted, but unless $var expansion or `command` execution is desired (although * this is not confirmed as supported) the generally caller should escape any such characters, for * example using {@link BashStringEscapes#escapeLiteralForDoubleQuotedBash(String)}. */ @Override public Map<String, String> getShellEnvironment() { for (String it : getJavaOpts()) { BashStringEscapes.assertValidForDoubleQuotingInBash(it); } // do not double quote here; the env var is double quoted subsequently; // spaces should be preceded by double-quote // (if dbl quotes are needed we could pass on the command-line instead of in an env var) String sJavaOpts = Joiner.on(" ").join(getJavaOpts()); // println "using java opts: $sJavaOpts" return MutableMap.<String, String> builder().putAll(super.getShellEnvironment()).put("JAVA_OPTS", sJavaOpts).build(); }
@Override public Map<String, String> getShellEnvironment() { return MutableMap.<String, String>builder() .putAll(super.getShellEnvironment()) .put("RABBITMQ_HOME", getRunDir()) .put("RABBITMQ_LOG_BASE", getRunDir()) .put("RABBITMQ_NODENAME", getEntity().getId()) .put("RABBITMQ_NODE_PORT", getAmqpPort().toString()) .put("RABBITMQ_PID_FILE", getRunDir()+"/"+getPidFile()) .build(); } }