You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2017/05/15 22:18:43 UTC

[1/2] brooklyn-server git commit: Adds JcloudsLocationCustomizer hook to allow node / config configuration

Repository: brooklyn-server
Updated Branches:
  refs/heads/master 15447e113 -> 52852b696


Adds JcloudsLocationCustomizer hook to allow node / config configuration


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/4b29d032
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/4b29d032
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/4b29d032

Branch: refs/heads/master
Commit: 4b29d0325a65eee23a30f3bd93aed6f3b6937da4
Parents: 15447e1
Author: Martin Harris <gi...@nakomis.com>
Authored: Mon May 15 10:34:32 2017 +0100
Committer: Martin Harris <gi...@nakomis.com>
Committed: Mon May 15 14:13:55 2017 +0100

----------------------------------------------------------------------
 .../util/core/internal/ssh/SshTool.java         |  4 ++++
 .../jclouds/BasicJcloudsLocationCustomizer.java |  6 ++++++
 .../location/jclouds/JcloudsLocation.java       |  4 ++++
 .../jclouds/JcloudsLocationCustomizer.java      |  9 +++++++++
 .../JcloudsSshMachineLocationStubbedTest.java   | 21 ++++++++++++++++++++
 .../util/core/internal/winrm/WinRmTool.java     |  4 ++++
 6 files changed, 48 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4b29d032/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/SshTool.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/SshTool.java b/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/SshTool.java
index 8906f1b..94c8609 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/SshTool.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/SshTool.java
@@ -86,6 +86,10 @@ public interface SshTool extends ShellTool {
     public static final ConfigKey<Long> PROP_LAST_MODIFICATION_DATE = newConfigKey("lastModificationDate", "Last-modification-date to be set on files copied/created (should be UTC/1000, ie seconds since 1970; default 0 usually means current)", 0L);
     public static final ConfigKey<Long> PROP_LAST_ACCESS_DATE = newConfigKey("lastAccessDate", "Last-access-date to be set on files copied/created (should be UTC/1000, ie seconds since 1970; default 0 usually means lastModificationDate)", 0L);
     public static final ConfigKey<Integer> PROP_OWNER_UID = newConfigKey("ownerUid", "Default owner UID (not username) for files created on remote machine; default is unset", -1);
+
+    ConfigKey<String> ADDITIONAL_CONNECTION_METADATA = newStringConfigKey("additional.connection.metadata",
+            "Can be used to pass additional custom data to the SshTool, which is especially useful " +
+                    "if writing a bespoke tool implementation");
     
     // TODO remove unnecessary "public static final" modifiers
     

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4b29d032/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/BasicJcloudsLocationCustomizer.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/BasicJcloudsLocationCustomizer.java b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/BasicJcloudsLocationCustomizer.java
index 93f53c0..c410e5c 100644
--- a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/BasicJcloudsLocationCustomizer.java
+++ b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/BasicJcloudsLocationCustomizer.java
@@ -34,6 +34,7 @@ import org.apache.brooklyn.core.objs.BasicConfigurableObject;
 import org.apache.brooklyn.util.core.config.ConfigBag;
 import org.apache.brooklyn.util.core.task.Tasks;
 import org.jclouds.compute.ComputeService;
+import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.compute.domain.Template;
 import org.jclouds.compute.domain.TemplateBuilder;
 import org.jclouds.compute.options.TemplateOptions;
@@ -104,6 +105,11 @@ public class BasicJcloudsLocationCustomizer extends BasicConfigurableObject impl
     }
 
     @Override
+    public void customize(JcloudsLocation location, NodeMetadata node, ConfigBag setup) {
+        // no-op
+    }
+
+    @Override
     public void customize(JcloudsLocation location, ComputeService computeService, JcloudsMachineLocation machine) {
         // no-op
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4b29d032/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
index 6eb7719..de71585 100644
--- a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
+++ b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
@@ -756,6 +756,10 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
             if (node == null)
                 throw new IllegalStateException("No nodes returned by jclouds create-nodes in " + getCreationString(setup));
 
+            for (JcloudsLocationCustomizer customizer : customizers) {
+                customizer.customize(this, node, setup);
+            }
+
             boolean windows = isWindows(node, setup);
 
             if (windows) {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4b29d032/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocationCustomizer.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocationCustomizer.java b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocationCustomizer.java
index 192077b..b61fce6 100644
--- a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocationCustomizer.java
+++ b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocationCustomizer.java
@@ -18,7 +18,9 @@
  */
 package org.apache.brooklyn.location.jclouds;
 
+import org.apache.brooklyn.util.core.config.ConfigBag;
 import org.jclouds.compute.ComputeService;
+import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.compute.domain.Template;
 import org.jclouds.compute.domain.TemplateBuilder;
 import org.jclouds.compute.options.TemplateOptions;
@@ -61,6 +63,13 @@ public interface JcloudsLocationCustomizer {
      */
     void customize(JcloudsLocation location, ComputeService computeService, TemplateOptions templateOptions);
 
+
+    /**
+     * Override to configure the {@link NodeMetadata}, and {@link ConfigBag} that will be used when
+     * connecting to the machine.
+     */
+    void customize(JcloudsLocation location, NodeMetadata node, ConfigBag setup);
+
     /**
      * Override to configure the given machine once it has been created and started by Jclouds.
      * <p>

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4b29d032/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsSshMachineLocationStubbedTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsSshMachineLocationStubbedTest.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsSshMachineLocationStubbedTest.java
index b61a53f..5c7647a 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsSshMachineLocationStubbedTest.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsSshMachineLocationStubbedTest.java
@@ -18,14 +18,20 @@
  */
 package org.apache.brooklyn.location.jclouds;
 
+import static org.apache.brooklyn.location.jclouds.JcloudsLocationConfig.JCLOUDS_LOCATION_CUSTOMIZERS;
+import static org.apache.brooklyn.util.core.internal.ssh.SshTool.ADDITIONAL_CONNECTION_METADATA;
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
 
 import java.util.List;
+import java.util.Map;
 
 import org.apache.brooklyn.location.jclouds.StubbedComputeServiceRegistry.AbstractNodeCreator;
 import org.apache.brooklyn.location.jclouds.StubbedComputeServiceRegistry.NodeCreator;
 import org.apache.brooklyn.location.ssh.SshMachineLocation;
 import org.apache.brooklyn.location.winrm.WinRmMachineLocation;
+import org.apache.brooklyn.util.core.config.ConfigBag;
+import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool;
 import org.apache.brooklyn.util.core.internal.ssh.SshTool;
 import org.apache.brooklyn.util.core.internal.winrm.WinRmTool;
 import org.jclouds.compute.domain.NodeMetadata;
@@ -118,4 +124,19 @@ public class JcloudsSshMachineLocationStubbedTest extends AbstractJcloudsStubbed
         assertEquals(machine.config().get(WinRmMachineLocation.COPY_FILE_CHUNK_SIZE_BYTES), Integer.valueOf(123));
         assertEquals(machine.config().get(WinRmTool.PROP_EXEC_TRIES), Integer.valueOf(456));
     }
+
+    @Test
+    public void testNodeSetupCustomizer() throws Exception {
+        final String testMetadata = "test-metadata";
+        obtainMachine(ImmutableMap.of(JCLOUDS_LOCATION_CUSTOMIZERS, ImmutableList.of(new BasicJcloudsLocationCustomizer(){
+            @Override
+            public void customize(JcloudsLocation location, NodeMetadata node, ConfigBag setup) {
+                assertNotNull(node, "node");
+                assertNotNull(location, "location");
+                setup.configure(ADDITIONAL_CONNECTION_METADATA, testMetadata);
+            }
+        })));
+        Map<?, ?> lastConstructorProps = RecordingSshTool.getLastConstructorProps();
+        assertEquals(lastConstructorProps.get(ADDITIONAL_CONNECTION_METADATA.getName()), testMetadata);
+    }
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4b29d032/software/winrm/src/main/java/org/apache/brooklyn/util/core/internal/winrm/WinRmTool.java
----------------------------------------------------------------------
diff --git a/software/winrm/src/main/java/org/apache/brooklyn/util/core/internal/winrm/WinRmTool.java b/software/winrm/src/main/java/org/apache/brooklyn/util/core/internal/winrm/WinRmTool.java
index 2cfb310..5706489 100644
--- a/software/winrm/src/main/java/org/apache/brooklyn/util/core/internal/winrm/WinRmTool.java
+++ b/software/winrm/src/main/java/org/apache/brooklyn/util/core/internal/winrm/WinRmTool.java
@@ -86,6 +86,10 @@ public interface WinRmTool {
             "Size of file chunks (in bytes) to be used when copying a file to the remote server", 
             1024);
 
+    ConfigKey<String> ADDITIONAL_CONNECTION_METADATA = newStringConfigKey("additional.connection.metadata",
+            "Can be used to pass additional custom data to the WinrmTool, which is especially useful " +
+                    "if writing a bespoke tool implementation");
+
     /**
      * @deprecated since 0.9.0; use {@link #executeCommand(List)} to avoid ambiguity between native command and power shell.
      */


[2/2] brooklyn-server git commit: This closes #680

Posted by al...@apache.org.
This closes #680


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/52852b69
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/52852b69
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/52852b69

Branch: refs/heads/master
Commit: 52852b696e7277a136bd2459c8b9585f75dec2c0
Parents: 15447e1 4b29d03
Author: Aled Sage <al...@gmail.com>
Authored: Mon May 15 23:18:28 2017 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Mon May 15 23:18:28 2017 +0100

----------------------------------------------------------------------
 .../util/core/internal/ssh/SshTool.java         |  4 ++++
 .../jclouds/BasicJcloudsLocationCustomizer.java |  6 ++++++
 .../location/jclouds/JcloudsLocation.java       |  4 ++++
 .../jclouds/JcloudsLocationCustomizer.java      |  9 +++++++++
 .../JcloudsSshMachineLocationStubbedTest.java   | 21 ++++++++++++++++++++
 .../util/core/internal/winrm/WinRmTool.java     |  4 ++++
 6 files changed, 48 insertions(+)
----------------------------------------------------------------------