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;
+                    }
                 }
             }
 

Reply via email to