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