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(+)
----------------------------------------------------------------------