This is an automated email from the ASF dual-hosted git repository.
heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
The following commit(s) were added to refs/heads/master by this push:
new 1347fc57ee tidies for ssh sensors/effectors and proxy effector
1347fc57ee is described below
commit 1347fc57eef03c28af6f3243c5e1c8e7c29458e7
Author: Alex Heneveld <[email protected]>
AuthorDate: Mon Aug 29 10:21:07 2022 +0100
tidies for ssh sensors/effectors and proxy effector
---
.../java/org/apache/brooklyn/core/effector/ProxyEffector.java | 6 ++++--
.../apache/brooklyn/core/effector/ssh/SshCommandEffector.java | 7 +++++--
.../org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java | 10 ++++++++--
3 files changed, 17 insertions(+), 6 deletions(-)
diff --git
a/core/src/main/java/org/apache/brooklyn/core/effector/ProxyEffector.java
b/core/src/main/java/org/apache/brooklyn/core/effector/ProxyEffector.java
index 48d1a4643b..f4a7183140 100644
--- a/core/src/main/java/org/apache/brooklyn/core/effector/ProxyEffector.java
+++ b/core/src/main/java/org/apache/brooklyn/core/effector/ProxyEffector.java
@@ -65,11 +65,13 @@ public class ProxyEffector extends
AddEffectorInitializerAbstract {
private final String effectorName;
public Body(Effector<?> eff, ConfigBag params) {
- // Don't use getConfig(TARGET_ENTITY) because DslComponents can't
be
- // coerced to entities at this point.
+ // delay resolution of TARGET_ENTITY in case it is a DSL
expression which might change
this.target =
Preconditions.checkNotNull(params.getAllConfigRaw().get(TARGET_ENTITY.getName()),
"Target entity must be supplied when defining this
effector");
this.effectorName =
Preconditions.checkNotNull(params.get(TARGET_EFFECTOR_NAME), "Target effector
name must be supplied when defining this effector");
+
+ // all other effector-level parameters are just ignored. we could
pass them through, or have a parameter where user can specifiy parameters to
pass through;
+ // left as an enhancement
}
@Override
diff --git
a/core/src/main/java/org/apache/brooklyn/core/effector/ssh/SshCommandEffector.java
b/core/src/main/java/org/apache/brooklyn/core/effector/ssh/SshCommandEffector.java
index 2229a1eae6..b45d50c8e1 100644
---
a/core/src/main/java/org/apache/brooklyn/core/effector/ssh/SshCommandEffector.java
+++
b/core/src/main/java/org/apache/brooklyn/core/effector/ssh/SshCommandEffector.java
@@ -20,6 +20,7 @@ package org.apache.brooklyn.core.effector.ssh;
import java.util.Collection;
import java.util.Map;
+import java.util.Objects;
import java.util.concurrent.ExecutionException;
import org.apache.brooklyn.api.effector.Effector;
@@ -143,9 +144,11 @@ public final class SshCommandEffector extends
AddEffectorInitializerAbstract {
MutableMap<String, Object> env = MutableMap.of();
- // Set all declared parameters, including default values
+ // Set all declared parameters, including default values,
excluding shell.env
for (ParameterType<?> param : effector.getParameters()) {
- env.addIfNotNull(param.getName(),
params.get(Effectors.asConfigKey(param)));
+ if (!Objects.equals(param.getName(),
EFFECTOR_SHELL_ENVIRONMENT.getName())) {
+ env.addIfNotNull(param.getName(),
params.get(Effectors.asConfigKey(param)));
+ }
}
// Set things from the entity's defined shell environment, if
applicable
diff --git
a/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
b/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
index 9331c5cbdd..fb8ad88bb9 100644
---
a/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
+++
b/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
@@ -219,9 +219,15 @@ public final class SshCommandSensor<T> extends
AbstractAddTriggerableSensor<T> {
boolean doString = !"yaml".equalsIgnoreCase(format);
if ("auto".equalsIgnoreCase(format)) {
- if (String.class.equals(typeToken.getRawType()) ||
Boxing.isPrimitiveOrBoxedClass(typeToken.getRawType())) {
- // don't do yaml if we want a string or a primitive
+ if (String.class.equals(typeToken.getRawType())) {
+ // don't do yaml if we want a string
doYaml = false;
+ } else if
(Boxing.isPrimitiveOrBoxedClass(typeToken.getRawType())) {
+ if (Boolean.FALSE.equals(useLastYamlDocument) || input ==
null || !input.contains("---")) {
+ // if we want a primitive, only do yaml if allowed to
take last and document contains ---
+ // (do simple coercion normally)
+ doYaml = false;
+ }
}
}