You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2022/08/29 09:24:03 UTC
[brooklyn-server] branch master updated: tidies for ssh sensors/effectors and proxy effector
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 <al...@cloudsoft.io>
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;
+ }
}
}