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 2016/12/13 15:58:55 UTC
[01/13] brooklyn-server git commit: fix SshjToolIntegrationTest
Repository: brooklyn-server
Updated Branches:
refs/heads/master 7f1846c0f -> b034a2727
fix SshjToolIntegrationTest
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/1a279401
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/1a279401
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/1a279401
Branch: refs/heads/master
Commit: 1a279401aaf68a6970f96950fe45e0e72581680b
Parents: 16d4e8b
Author: Andrea Turli <an...@gmail.com>
Authored: Mon Nov 7 11:24:26 2016 +0100
Committer: Andrea Turli <an...@gmail.com>
Committed: Tue Dec 6 15:29:57 2016 +0100
----------------------------------------------------------------------
.../brooklyn/util/core/internal/ssh/sshj/SshjTool.java | 9 ++++++---
.../core/internal/ssh/sshj/SshjToolIntegrationTest.java | 7 +++----
.../test/java/org/apache/brooklyn/util/osgi/OsgisTest.java | 2 --
3 files changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/1a279401/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjTool.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjTool.java b/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjTool.java
index 1ee02da..328f66d 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjTool.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjTool.java
@@ -273,7 +273,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
@Override
public int copyFromServer(Map<String,?> props, String pathAndFileOnRemoteServer, File localFile) {
- LocalDestFile localDestFile = acquire(new GetFileAction(pathAndFileOnRemoteServer));
+ LocalDestFile localDestFile = acquire(new GetFileAction(pathAndFileOnRemoteServer, localFile));
return 0;
}
@@ -697,10 +697,13 @@ public class SshjTool extends SshAbstractTool implements SshTool {
private class GetFileAction implements SshAction<LocalDestFile> {
private final String path;
+ private final File localFile;
private SFTPClient sftp;
- GetFileAction(String path) {
+
+ public GetFileAction(String path, File localFile) {
this.path = checkNotNull(path, "path");
+ this.localFile = checkNotNull(localFile, "localFile");
}
@Override
@@ -712,7 +715,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
@Override
public LocalDestFile create() throws Exception {
sftp = acquire(sftpConnection);
- LocalDestFile localDestFile = new FileSystemFile(path);
+ LocalDestFile localDestFile = new FileSystemFile(localFile);
sftp.get(path, localDestFile);
return localDestFile;
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/1a279401/core/src/test/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjToolIntegrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjToolIntegrationTest.java b/core/src/test/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjToolIntegrationTest.java
index fd3fa1a..093835e 100644
--- a/core/src/test/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjToolIntegrationTest.java
+++ b/core/src/test/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjToolIntegrationTest.java
@@ -34,14 +34,11 @@ import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
-import net.schmizz.sshj.connection.channel.direct.Session;
-
import org.apache.brooklyn.core.BrooklynFeatureEnablement;
import org.apache.brooklyn.test.Asserts;
import org.apache.brooklyn.util.core.internal.ssh.SshException;
import org.apache.brooklyn.util.core.internal.ssh.SshTool;
import org.apache.brooklyn.util.core.internal.ssh.SshToolAbstractIntegrationTest;
-import org.apache.brooklyn.util.core.internal.ssh.sshj.SshjTool;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.exceptions.RuntimeTimeoutException;
import org.apache.brooklyn.util.os.Os;
@@ -52,8 +49,10 @@ import com.google.common.base.Stopwatch;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import net.schmizz.sshj.connection.channel.direct.Session;
+
/**
- * Test the operation of the {@link SshJschTool} utility class.
+ * Test the operation of the {@link SshjTool} utility class.
*/
public class SshjToolIntegrationTest extends SshToolAbstractIntegrationTest {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/1a279401/utils/common/src/test/java/org/apache/brooklyn/util/osgi/OsgisTest.java
----------------------------------------------------------------------
diff --git a/utils/common/src/test/java/org/apache/brooklyn/util/osgi/OsgisTest.java b/utils/common/src/test/java/org/apache/brooklyn/util/osgi/OsgisTest.java
index c23c185..c86670a 100644
--- a/utils/common/src/test/java/org/apache/brooklyn/util/osgi/OsgisTest.java
+++ b/utils/common/src/test/java/org/apache/brooklyn/util/osgi/OsgisTest.java
@@ -18,8 +18,6 @@
*/
package org.apache.brooklyn.util.osgi;
-import org.apache.brooklyn.util.osgi.OsgiUtils;
-import org.apache.brooklyn.util.osgi.VersionedName;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
[11/13] brooklyn-server git commit: Fix sshj async-exec
Posted by al...@apache.org.
Fix sshj async-exec
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/f8c76460
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/f8c76460
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/f8c76460
Branch: refs/heads/master
Commit: f8c764605f3e7054d33c5278bf25e735a4e1e9d8
Parents: eef749c
Author: Aled Sage <al...@gmail.com>
Authored: Tue Dec 13 14:41:39 2016 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Tue Dec 13 14:41:39 2016 +0000
----------------------------------------------------------------------
.../apache/brooklyn/util/core/internal/ssh/ShellAbstractTool.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/f8c76460/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/ShellAbstractTool.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/ShellAbstractTool.java b/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/ShellAbstractTool.java
index de94c98..d641478 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/ShellAbstractTool.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/ShellAbstractTool.java
@@ -428,7 +428,8 @@ public abstract class ShellAbstractTool implements ShellTool {
cmdParts.add(
//ignore error output for the case where there are no running processes and kill is called without arguments
"ps aux | grep \"tail -c\" | grep \""+stdoutPath+"\" | grep -v grep | awk '{ printf $2 }' | xargs kill 2> /dev/null",
- "ps aux | grep \"tail -c\" | grep \""+stderrPath+"\" | grep -v grep | awk '{ printf $2 }' | xargs kill 2> /dev/null");
+ "ps aux | grep \"tail -c\" | grep \""+stderrPath+"\" | grep -v grep | awk '{ printf $2 }' | xargs kill 2> /dev/null",
+ "exit 0");
String cmd = Joiner.on("\n").join(cmdParts.build());
[07/13] brooklyn-server git commit: update jclouds version
Posted by al...@apache.org.
update jclouds version
- adapt brooklyn code to recent jclouds api
- add jclouds snapshot repo to pom.xml to be removed
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/2a0f3e56
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/2a0f3e56
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/2a0f3e56
Branch: refs/heads/master
Commit: 2a0f3e568bd3e8119291446aa11057933159f9b6
Parents: 1a27940
Author: Andrea Turli <an...@gmail.com>
Authored: Tue Nov 8 11:45:52 2016 +0100
Committer: Andrea Turli <an...@gmail.com>
Committed: Tue Dec 6 15:30:45 2016 +0100
----------------------------------------------------------------------
.../location/jclouds/JcloudsLocation.java | 2 +-
.../AbstractPortableTemplateBuilder.java | 3 ++
.../templates/PortableTemplateBuilder.java | 10 ++++-
.../persist/jclouds/BlobStoreExpiryTest.java | 44 +++++++-------------
.../jclouds/DelegatingComputeService.java | 24 +++++------
...dsByonLocationResolverStubbedRebindTest.java | 3 +-
.../JcloudsByonLocationResolverStubbedTest.java | 3 +-
.../jclouds/StubbedComputeServiceRegistry.java | 9 ++--
pom.xml | 12 +++++-
9 files changed, 53 insertions(+), 57 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a0f3e56/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 08ddad9..8a95ca0 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
@@ -2208,7 +2208,7 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
if (useKey) {
// NB: further keys are added from config *after* user creation
- statements.add(new AuthorizeRSAPublicKeys("~"+user+"/.ssh", ImmutableList.of(credential.getPublicKeyData())));
+ statements.add(new AuthorizeRSAPublicKeys("~"+user+"/.ssh", ImmutableList.of(credential.getPublicKeyData()), null));
if (Strings.isNonBlank(credential.getPrivateKeyData())) {
createdUserCreds = LoginCredentials.builder().user(user).privateKey(credential.getPrivateKeyData()).build();
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a0f3e56/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/AbstractPortableTemplateBuilder.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/AbstractPortableTemplateBuilder.java b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/AbstractPortableTemplateBuilder.java
index c935ea8..f159834 100644
--- a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/AbstractPortableTemplateBuilder.java
+++ b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/AbstractPortableTemplateBuilder.java
@@ -28,6 +28,7 @@ import org.jclouds.compute.domain.Template;
import org.jclouds.compute.domain.TemplateBuilder;
import org.jclouds.compute.options.TemplateOptions;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Function;
import com.google.common.base.Objects;
import com.google.common.base.Predicate;
@@ -63,6 +64,8 @@ public abstract class AbstractPortableTemplateBuilder<T extends AbstractPortable
private TemplateOptions options;
/** these are extra options that we want _added_, in order, on top of the last options set */
private List<TemplateOptions> additionalOptions = new ArrayList<TemplateOptions>();
+ @VisibleForTesting
+ protected Boolean forceCacheReload;
@Override
public T any() {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a0f3e56/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/PortableTemplateBuilder.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/PortableTemplateBuilder.java b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/PortableTemplateBuilder.java
index eaea03b..8d33921 100644
--- a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/PortableTemplateBuilder.java
+++ b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/PortableTemplateBuilder.java
@@ -42,13 +42,19 @@ public class PortableTemplateBuilder<T extends PortableTemplateBuilder<?>> exten
ComputeService svc;
List<TemplateOptions> additionalOptionalOptions = new ArrayList<TemplateOptions>();
-
+
@Override
public synchronized Template build() {
if (svc!=null) return newJcloudsTemplate(svc);
throw new IllegalStateException("Cannot build a portable template until a compute service is attached");
}
-
+
+ @Override
+ public TemplateBuilder forceCacheReload() {
+ this.forceCacheReload = true;
+ return this;
+ }
+
public synchronized ComputeService attachComputeService(ComputeService svc) {
ComputeService old = this.svc;
this.svc = svc;
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a0f3e56/locations/jclouds/src/test/java/org/apache/brooklyn/core/mgmt/persist/jclouds/BlobStoreExpiryTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/core/mgmt/persist/jclouds/BlobStoreExpiryTest.java b/locations/jclouds/src/test/java/org/apache/brooklyn/core/mgmt/persist/jclouds/BlobStoreExpiryTest.java
index 98c49a2..460d705 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/core/mgmt/persist/jclouds/BlobStoreExpiryTest.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/core/mgmt/persist/jclouds/BlobStoreExpiryTest.java
@@ -19,13 +19,6 @@
package org.apache.brooklyn.core.mgmt.persist.jclouds;
import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.openstack.reference.AuthHeaders.URL_SUFFIX;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.List;
-import java.util.Map.Entry;
import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.core.entity.Entities;
@@ -33,34 +26,20 @@ import org.apache.brooklyn.core.internal.BrooklynProperties;
import org.apache.brooklyn.core.location.LocationConfigKeys;
import org.apache.brooklyn.core.location.cloud.CloudLocationConfig;
import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.http.HttpTool;
-import org.apache.brooklyn.util.http.HttpToolResponse;
+import org.apache.brooklyn.location.jclouds.JcloudsLocation;
+import org.apache.brooklyn.location.jclouds.JcloudsUtil;
import org.apache.brooklyn.util.text.Identifiers;
-import org.apache.brooklyn.util.time.Duration;
-import org.apache.brooklyn.util.time.Time;
-import org.apache.http.client.HttpClient;
import org.jclouds.blobstore.BlobStoreContext;
-import org.jclouds.blobstore.domain.PageSet;
-import org.jclouds.blobstore.domain.StorageMetadata;
-import org.jclouds.domain.Credentials;
-import org.jclouds.openstack.domain.AuthenticationResponse;
-import org.jclouds.openstack.reference.AuthHeaders;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import org.apache.brooklyn.location.jclouds.JcloudsLocation;
-import org.apache.brooklyn.location.jclouds.JcloudsUtil;
import com.google.common.base.Preconditions;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMap.Builder;
-import com.google.inject.Inject;
-@Test(groups={"Live", "Live-sanity"})
+// Disabled as `swift` is not supported in jclouds 2.0.0+
+@Test(groups={"Live", "Live-sanity"} , enabled = false)
public class BlobStoreExpiryTest {
private static final Logger log = LoggerFactory.getLogger(BlobStoreExpiryTest.class);
@@ -121,6 +100,10 @@ public class BlobStoreExpiryTest {
context = null;
}
+ /** FIXME
+ * see comment on this class
+ */
+ /*
public void testRenewAuthSucceedsInSwiftObjectStore() throws Exception {
doTestRenewAuth();
}
@@ -143,11 +126,6 @@ public class BlobStoreExpiryTest {
context.getBlobStore().deleteContainer(testContainerName);
}
- private void assertContainerFound() {
- PageSet<? extends StorageMetadata> ps = context.getBlobStore().list();
- BlobStoreTest.assertHasItemNamed(ps, testContainerName);
- }
-
private void injectShortLivedTokenForSwiftAuth() throws Exception {
URL endpointUrl = new URL(endpoint);
@@ -178,6 +156,11 @@ public class BlobStoreExpiryTest {
this.authenticationResponseCache = authenticationResponseCache;
}
}
+
+ private void assertContainerFound() {
+ PageSet<? extends StorageMetadata> ps = context.getBlobStore().list();
+ BlobStoreTest.assertHasItemNamed(ps, testContainerName);
+ }
public static HttpToolResponse requestTokenWithExplicitLifetime(URL url, String user, String key, Duration expiration) throws URISyntaxException {
HttpClient client = HttpTool.httpClientBuilder().build();
@@ -192,5 +175,6 @@ public class BlobStoreExpiryTest {
log.info("Requested token with explicit lifetime: "+expiration+" at "+url+"\n"+response+"\n"+response.getHeaderLists());
return response;
}
+ */
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a0f3e56/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/DelegatingComputeService.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/DelegatingComputeService.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/DelegatingComputeService.java
index 8e718e2..b1d8006 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/DelegatingComputeService.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/DelegatingComputeService.java
@@ -87,7 +87,7 @@ public class DelegatingComputeService implements ComputeService {
}
@Override
- public Set<? extends NodeMetadata> listNodesByIds(Iterable<String> ids) {
+ public Set<? extends ComputeMetadata> listNodesByIds(Iterable<String> ids) {
return delegate.listNodesByIds(ids);
}
@@ -118,7 +118,7 @@ public class DelegatingComputeService implements ComputeService {
}
@Override
- public Set<? extends NodeMetadata> resumeNodesMatching(Predicate<NodeMetadata> filter) {
+ public Set<? extends NodeMetadata> resumeNodesMatching(Predicate<? super NodeMetadata> filter) {
return delegate.resumeNodesMatching(filter);
}
@@ -128,7 +128,7 @@ public class DelegatingComputeService implements ComputeService {
}
@Override
- public Set<? extends NodeMetadata> suspendNodesMatching(Predicate<NodeMetadata> filter) {
+ public Set<? extends NodeMetadata> suspendNodesMatching(Predicate<? super NodeMetadata> filter) {
return delegate.suspendNodesMatching(filter);
}
@@ -138,7 +138,7 @@ public class DelegatingComputeService implements ComputeService {
}
@Override
- public Set<? extends NodeMetadata> destroyNodesMatching(Predicate<NodeMetadata> filter) {
+ public Set<? extends NodeMetadata> destroyNodesMatching(Predicate<? super NodeMetadata> filter) {
return delegate.destroyNodesMatching(filter);
}
@@ -148,7 +148,7 @@ public class DelegatingComputeService implements ComputeService {
}
@Override
- public Set<? extends NodeMetadata> rebootNodesMatching(Predicate<NodeMetadata> filter) {
+ public Set<? extends NodeMetadata> rebootNodesMatching(Predicate<? super NodeMetadata> filter) {
return delegate.rebootNodesMatching(filter);
}
@@ -158,31 +158,27 @@ public class DelegatingComputeService implements ComputeService {
}
@Override
- public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<ComputeMetadata> filter) {
+ public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<? super NodeMetadata> filter) {
return delegate.listNodesDetailsMatching(filter);
}
@Override
- public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<NodeMetadata> filter, String runScript)
- throws RunScriptOnNodesException {
+ public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<? super NodeMetadata> filter, String runScript) throws RunScriptOnNodesException {
return delegate.runScriptOnNodesMatching(filter, runScript);
}
@Override
- public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<NodeMetadata> filter, Statement runScript)
- throws RunScriptOnNodesException {
+ public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<? super NodeMetadata> filter, Statement runScript) throws RunScriptOnNodesException {
return delegate.runScriptOnNodesMatching(filter, runScript);
}
@Override
- public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<NodeMetadata> filter,
- String runScript, RunScriptOptions options) throws RunScriptOnNodesException {
+ public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<? super NodeMetadata> filter, String runScript, RunScriptOptions options) throws RunScriptOnNodesException {
return delegate.runScriptOnNodesMatching(filter, runScript, options);
}
@Override
- public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<NodeMetadata> filter,
- Statement runScript, RunScriptOptions options) throws RunScriptOnNodesException {
+ public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<? super NodeMetadata> filter, Statement runScript, RunScriptOptions options) throws RunScriptOnNodesException {
return delegate.runScriptOnNodesMatching(filter, runScript, options);
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a0f3e56/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsByonLocationResolverStubbedRebindTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsByonLocationResolverStubbedRebindTest.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsByonLocationResolverStubbedRebindTest.java
index 96b5786..56e8ccc 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsByonLocationResolverStubbedRebindTest.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsByonLocationResolverStubbedRebindTest.java
@@ -42,7 +42,6 @@ import org.apache.brooklyn.location.jclouds.StubbedComputeServiceRegistry.NodeCr
import org.apache.brooklyn.util.os.Os;
import org.apache.brooklyn.util.text.Identifiers;
import org.apache.brooklyn.util.time.Duration;
-import org.jclouds.compute.domain.ComputeMetadata;
import org.jclouds.compute.domain.NodeMetadata;
import org.jclouds.compute.domain.NodeMetadata.Status;
import org.jclouds.compute.domain.NodeMetadataBuilder;
@@ -118,7 +117,7 @@ public class JcloudsByonLocationResolverStubbedRebindTest extends AbstractJcloud
}
public static class NodeCreatorForRebinding extends AbstractNodeCreator {
@Override
- public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<ComputeMetadata> filter) {
+ public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<? super NodeMetadata> filter) {
NodeMetadata result = new NodeMetadataBuilder()
.id(nodeId)
.credentials(LoginCredentials.builder().identity("dummy").credential("dummy").build())
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a0f3e56/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsByonLocationResolverStubbedTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsByonLocationResolverStubbedTest.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsByonLocationResolverStubbedTest.java
index 13cf30c..8432905 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsByonLocationResolverStubbedTest.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsByonLocationResolverStubbedTest.java
@@ -33,7 +33,6 @@ import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
import org.apache.brooklyn.location.byon.FixedListMachineProvisioningLocation;
import org.apache.brooklyn.location.jclouds.StubbedComputeServiceRegistry.AbstractNodeCreator;
import org.apache.brooklyn.location.jclouds.StubbedComputeServiceRegistry.NodeCreator;
-import org.jclouds.compute.domain.ComputeMetadata;
import org.jclouds.compute.domain.NodeMetadata;
import org.jclouds.compute.domain.NodeMetadata.Status;
import org.jclouds.compute.domain.NodeMetadataBuilder;
@@ -79,7 +78,7 @@ public class JcloudsByonLocationResolverStubbedTest extends AbstractJcloudsStubb
protected NodeCreator newNodeCreator() {
return new AbstractNodeCreator() {
@Override
- public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<ComputeMetadata> filter) {
+ public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<? super NodeMetadata> filter) {
NodeMetadata result = new NodeMetadataBuilder()
.id(nodeId)
.credentials(LoginCredentials.builder().identity("dummy").credential("dummy").build())
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a0f3e56/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java
index 9dee5ef..e97f0ea 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java
@@ -25,7 +25,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.brooklyn.util.core.config.ConfigBag;
import org.jclouds.compute.ComputeService;
import org.jclouds.compute.RunNodesException;
-import org.jclouds.compute.domain.ComputeMetadata;
import org.jclouds.compute.domain.NodeMetadata;
import org.jclouds.compute.domain.NodeMetadata.Status;
import org.jclouds.compute.domain.NodeMetadataBuilder;
@@ -44,7 +43,7 @@ public class StubbedComputeServiceRegistry implements ComputeServiceRegistry {
public static interface NodeCreator {
public Set<? extends NodeMetadata> createNodesInGroup(String group, int count, Template template) throws RunNodesException;
public void destroyNode(String id);
- public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<ComputeMetadata> filter);
+ public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<? super NodeMetadata> filter);
}
public static abstract class AbstractNodeCreator implements NodeCreator {
@@ -66,7 +65,7 @@ public class StubbedComputeServiceRegistry implements ComputeServiceRegistry {
destroyed.add(id);
}
@Override
- public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<ComputeMetadata> filter) {
+ public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<? super NodeMetadata> filter) {
return ImmutableSet.of();
}
protected abstract NodeMetadata newNode(String group, Template template);
@@ -116,7 +115,7 @@ public class StubbedComputeServiceRegistry implements ComputeServiceRegistry {
nodeCreator.destroyNode(id);
}
@Override
- public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<ComputeMetadata> filter) {
+ public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<? super NodeMetadata> filter) {
return nodeCreator.listNodesDetailsMatching(filter);
}
@Override
@@ -128,7 +127,7 @@ public class StubbedComputeServiceRegistry implements ComputeServiceRegistry {
throw new UnsupportedOperationException();
}
@Override
- public Set<? extends NodeMetadata> destroyNodesMatching(Predicate<NodeMetadata> filter) {
+ public Set<? extends NodeMetadata> destroyNodesMatching(Predicate<? super NodeMetadata> filter) {
throw new UnsupportedOperationException();
}
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a0f3e56/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 11b97a7..f0218cd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -72,6 +72,16 @@
</mailingList>
</mailingLists>
+ <repositories>
+ <repository>
+ <id>jclouds-snapshots</id>
+ <url>https://repository.apache.org/content/repositories/snapshots</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
<properties>
<brooklyn.version>0.11.0-SNAPSHOT</brooklyn.version> <!-- BROOKLYN_VERSION -->
@@ -91,7 +101,7 @@
<surefire.failIfNoSpecifiedTests>false</surefire.failIfNoSpecifiedTests>
<!-- Dependency Versions -->
- <jclouds.version>1.9.3</jclouds.version> <!-- JCLOUDS_VERSION -->
+ <jclouds.version>2.0.0</jclouds.version> <!-- JCLOUDS_VERSION -->
<logback.version>1.0.7</logback.version>
<slf4j.version>1.6.6</slf4j.version> <!-- used for java.util.logging jul-to-slf4j interception -->
<!-- Must match jclouds' version. From jclouds 1.9.3+ can be any version in the range [16-20) -->
[04/13] brooklyn-server git commit: bump bouncycastle version
Posted by al...@apache.org.
bump bouncycastle version
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/16d4e8b8
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/16d4e8b8
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/16d4e8b8
Branch: refs/heads/master
Commit: 16d4e8b8face581866df1d78acda0e42a40b589c
Parents: 9e29d22
Author: Andrea Turli <an...@gmail.com>
Authored: Mon Nov 7 09:05:07 2016 +0100
Committer: Andrea Turli <an...@gmail.com>
Committed: Tue Dec 6 15:29:57 2016 +0100
----------------------------------------------------------------------
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/16d4e8b8/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 7e7e0d1..11b97a7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -119,7 +119,7 @@
<gson.version>2.3</gson.version>
<ivy.version>2.2.0</ivy.version>
<mx4j.version>3.0.1</mx4j.version>
- <bouncycastle.version>1.49</bouncycastle.version>
+ <bouncycastle.version>1.51</bouncycastle.version>
<sshj.version>0.12.0</sshj.version>
<felix.framework.version>5.4.0</felix.framework.version>
<reflections.version>0.9.9-RC1</reflections.version>
[12/13] brooklyn-server git commit: Merge pull request #1 from
aledsage/googlielmo-aled/jclouds-2.0.0
Posted by al...@apache.org.
Merge pull request #1 from aledsage/googlielmo-aled/jclouds-2.0.0
Fix sshj async-exec
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/885a42aa
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/885a42aa
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/885a42aa
Branch: refs/heads/master
Commit: 885a42aac5d5167bfde0a3a758c31e5f5d723897
Parents: b69e1bb f8c7646
Author: Guglielmo Nigri <go...@gmail.com>
Authored: Tue Dec 13 15:44:32 2016 +0100
Committer: GitHub <no...@github.com>
Committed: Tue Dec 13 15:44:32 2016 +0100
----------------------------------------------------------------------
.../apache/brooklyn/util/core/internal/ssh/ShellAbstractTool.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
[10/13] brooklyn-server git commit: Fixes jclouds unit tests
Posted by al...@apache.org.
Fixes jclouds unit tests
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/b69e1bb2
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/b69e1bb2
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/b69e1bb2
Branch: refs/heads/master
Commit: b69e1bb287ce3654d2fd20f4017533283a00ff47
Parents: 8b8b8df
Author: Mark McKenna <m4...@gmail.com>
Authored: Mon Dec 12 15:26:12 2016 +0000
Committer: Mark McKenna <m4...@gmail.com>
Committed: Mon Dec 12 15:26:12 2016 +0000
----------------------------------------------------------------------
.../brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b69e1bb2/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java
index 0e7ef12..a807dc4 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java
@@ -102,7 +102,8 @@ public class JcloudsStubTemplateBuilder {
.of(HARDWARE_SUPPORTING_BOGUS));
- AtomicReference<AuthorizationException> authException = new AtomicReference<AuthorizationException>(new AuthorizationException());
+// AtomicReference<AuthorizationException> authException = new AtomicReference<AuthorizationException>(new AuthorizationException());
+ AtomicReference<AuthorizationException> authException = new AtomicReference<AuthorizationException>();
com.google.inject.Provider<GetImageStrategy> imageLoader = new com.google.inject.Provider<GetImageStrategy>() {
@Override
[06/13] brooklyn-server git commit: remove some jclouds labs
dependency
Posted by al...@apache.org.
remove some jclouds labs dependency
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/959cd30a
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/959cd30a
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/959cd30a
Branch: refs/heads/master
Commit: 959cd30a493e3061ed9ccf6fd5c610c7de27ba34
Parents: 2a0f3e5
Author: Andrea Turli <an...@gmail.com>
Authored: Tue Nov 8 14:02:24 2016 +0100
Committer: Andrea Turli <an...@gmail.com>
Committed: Tue Dec 6 15:30:45 2016 +0100
----------------------------------------------------------------------
locations/jclouds/pom.xml | 16 ----------------
1 file changed, 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/959cd30a/locations/jclouds/pom.xml
----------------------------------------------------------------------
diff --git a/locations/jclouds/pom.xml b/locations/jclouds/pom.xml
index 7f7d29e..347e2be 100644
--- a/locations/jclouds/pom.xml
+++ b/locations/jclouds/pom.xml
@@ -136,22 +136,6 @@
<version>${jclouds.version}</version>
</dependency>
- <dependency>
- <groupId>${jclouds.groupId}.labs</groupId>
- <artifactId>abiquo</artifactId>
- <version>${jclouds.version}</version>
- </dependency>
- <dependency>
- <groupId>${jclouds.groupId}.labs</groupId>
- <artifactId>google-compute-engine</artifactId>
- <version>${jclouds.version}</version>
- </dependency>
- <dependency>
- <groupId>${jclouds.groupId}.labs</groupId>
- <artifactId>docker</artifactId>
- <version>${jclouds.version}</version>
- </dependency>
-
<!-- these two seem needed here to prevent Eclipse IDE from getting wrong version of logback-core -->
<dependency>
<groupId>ch.qos.logback</groupId>
[13/13] brooklyn-server git commit: This closes #481
Posted by al...@apache.org.
This closes #481
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/b034a272
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/b034a272
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/b034a272
Branch: refs/heads/master
Commit: b034a2727a6f6b1853008568814c057b3ea6f84f
Parents: 7f1846c 885a42a
Author: Aled Sage <al...@gmail.com>
Authored: Tue Dec 13 15:58:40 2016 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Tue Dec 13 15:58:40 2016 +0000
----------------------------------------------------------------------
core/pom.xml | 2 +-
.../core/location/LocationConfigUtils.java | 5 +-
.../util/core/crypto/FluentKeySigner.java | 11 +-
.../brooklyn/util/core/crypto/SecureKeys.java | 51 +----
.../core/internal/ssh/ShellAbstractTool.java | 3 +-
.../util/core/internal/ssh/sshj/SshjTool.java | 211 +++++++++----------
.../ssh/sshj/SshjToolIntegrationTest.java | 7 +-
karaf/features/src/main/feature/feature.xml | 11 +-
locations/jclouds/pom.xml | 10 +-
.../location/jclouds/JcloudsLocation.java | 2 +-
.../AbstractPortableTemplateBuilder.java | 3 +
.../templates/PortableTemplateBuilder.java | 10 +-
.../persist/jclouds/BlobStoreExpiryTest.java | 44 ++--
.../jclouds/DelegatingComputeService.java | 24 +--
...dsByonLocationResolverStubbedRebindTest.java | 3 +-
.../JcloudsByonLocationResolverStubbedTest.java | 3 +-
.../jclouds/JcloudsStubTemplateBuilder.java | 26 ++-
.../jclouds/StubbedComputeServiceRegistry.java | 15 +-
.../jclouds/UnsupportedComputeService.java | 22 +-
.../brooklyn/logback-logger-excludes.xml | 4 +-
parent/pom.xml | 2 +-
pom.xml | 18 +-
.../apache/brooklyn/util/osgi/OsgisTest.java | 2 -
23 files changed, 228 insertions(+), 261 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b034a272/pom.xml
----------------------------------------------------------------------
[09/13] brooklyn-server git commit: Swap service mix wrapped
`jsch.agentproxy.sshj` for karaf wrap
Posted by al...@apache.org.
Swap service mix wrapped `jsch.agentproxy.sshj` for karaf wrap
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/8b8b8dfb
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/8b8b8dfb
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/8b8b8dfb
Branch: refs/heads/master
Commit: 8b8b8dfb354f884a94a3ae230c20e005afe39f5c
Parents: eef749c
Author: Mark McKenna <m4...@gmail.com>
Authored: Mon Dec 12 15:23:20 2016 +0000
Committer: Mark McKenna <m4...@gmail.com>
Committed: Mon Dec 12 15:23:20 2016 +0000
----------------------------------------------------------------------
karaf/features/src/main/feature/feature.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/8b8b8dfb/karaf/features/src/main/feature/feature.xml
----------------------------------------------------------------------
diff --git a/karaf/features/src/main/feature/feature.xml b/karaf/features/src/main/feature/feature.xml
index 14a9d8f..8cd569a 100644
--- a/karaf/features/src/main/feature/feature.xml
+++ b/karaf/features/src/main/feature/feature.xml
@@ -266,7 +266,7 @@
<bundle dependency="true">mvn:org.apache.jclouds.provider/google-compute-engine/${jclouds.version}</bundle>
<feature>jclouds-services</feature>
- <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch-agentproxy-sshj/0.0.9_1</bundle>
+ <bundle dependency="true">wrap:mvn:com.jcraft/jsch.agentproxy.sshj/0.0.9$Bundle-Name=wrap%20%3A%3A%20jsch.agentproxy.sshj</bundle>
<!-- Same as allcompute -->
<feature>jclouds-aws-ec2</feature>
[05/13] brooklyn-server git commit: add azurecompute* deps to
locations/jclouds/pom.xml
Posted by al...@apache.org.
add azurecompute* deps to locations/jclouds/pom.xml
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/a5e56523
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/a5e56523
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/a5e56523
Branch: refs/heads/master
Commit: a5e565233854dccba309e01f22887443a4bd456a
Parents: 959cd30
Author: Andrea Turli <an...@gmail.com>
Authored: Tue Nov 8 14:05:38 2016 +0100
Committer: Andrea Turli <an...@gmail.com>
Committed: Tue Dec 6 15:30:45 2016 +0100
----------------------------------------------------------------------
locations/jclouds/pom.xml | 10 ++++++++++
1 file changed, 10 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/a5e56523/locations/jclouds/pom.xml
----------------------------------------------------------------------
diff --git a/locations/jclouds/pom.xml b/locations/jclouds/pom.xml
index 347e2be..76effcb 100644
--- a/locations/jclouds/pom.xml
+++ b/locations/jclouds/pom.xml
@@ -135,6 +135,16 @@
<artifactId>jclouds-allcompute</artifactId>
<version>${jclouds.version}</version>
</dependency>
+ <dependency>
+ <groupId>${jclouds.groupId}.labs</groupId>
+ <artifactId>azurecompute</artifactId>
+ <version>${jclouds.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${jclouds.groupId}.labs</groupId>
+ <artifactId>azurecompute-arm</artifactId>
+ <version>${jclouds.version}</version>
+ </dependency>
<!-- these two seem needed here to prevent Eclipse IDE from getting wrong version of logback-core -->
<dependency>
[08/13] brooklyn-server git commit: Compile with jclouds 2.0.0
Posted by al...@apache.org.
Compile with jclouds 2.0.0
- tweak karaf dependencies [WIP]
- small changes to accommodate new signatures
- sshj package rename throughout
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/eef749c6
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/eef749c6
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/eef749c6
Branch: refs/heads/master
Commit: eef749c6c9f4e36c3dcdde1a80ed4f0e809c6f9a
Parents: a5e5652
Author: Guglielmo Nigri <gu...@cloudsoftcorp.com>
Authored: Wed Dec 7 18:07:17 2016 +0100
Committer: Guglielmo Nigri <gu...@cloudsoftcorp.com>
Committed: Wed Dec 7 18:07:17 2016 +0100
----------------------------------------------------------------------
karaf/features/src/main/feature/feature.xml | 11 ++++-----
.../jclouds/JcloudsStubTemplateBuilder.java | 25 +++++++++++++++++---
.../jclouds/StubbedComputeServiceRegistry.java | 6 +----
.../jclouds/UnsupportedComputeService.java | 22 +++++++----------
.../brooklyn/logback-logger-excludes.xml | 4 ++--
pom.xml | 2 +-
6 files changed, 40 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/eef749c6/karaf/features/src/main/feature/feature.xml
----------------------------------------------------------------------
diff --git a/karaf/features/src/main/feature/feature.xml b/karaf/features/src/main/feature/feature.xml
index 5d4c919..14a9d8f 100644
--- a/karaf/features/src/main/feature/feature.xml
+++ b/karaf/features/src/main/feature/feature.xml
@@ -144,7 +144,7 @@
<bundle dependency="true">mvn:net.minidev/asm/${minidev.asm.version}</bundle>
<bundle dependency="true">mvn:com.thoughtworks.xstream/xstream/${xstream.version}</bundle>
<bundle dependency="true">mvn:org.freemarker/freemarker/${freemarker.version}</bundle>
- <bundle dependency="true">mvn:net.schmizz/sshj/${sshj.version}</bundle>
+ <bundle dependency="true">mvn:com.hierynomus/sshj/${sshj.version}</bundle>
<bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jzlib/1.1.3_2</bundle> <!-- jzlib version is 1.1.3, but bundle is 1.1.3_2 -->
<bundle dependency="true">mvn:org.bouncycastle/bcprov-ext-jdk15on/${bouncycastle.version}</bundle>
<bundle dependency="true">mvn:org.bouncycastle/bcpkix-jdk15on/${bouncycastle.version}</bundle>
@@ -260,13 +260,13 @@
<bundle dependency="true">mvn:org.apache.jclouds.driver/jclouds-okhttp/${jclouds.version}</bundle>
<bundle dependency="true">mvn:org.apache.jclouds.driver/jclouds-sshj/${jclouds.version}</bundle>
- <bundle dependency="true">mvn:org.apache.jclouds.labs/abiquo/${jclouds.version}</bundle>
- <bundle dependency="true">mvn:org.apache.jclouds.labs/docker/${jclouds.version}</bundle>
+ <!--<bundle dependency="true">mvn:org.apache.jclouds.labs/abiquo/${jclouds.version}</bundle>--> <!-- jclouds abstraction not implemented -->
+ <bundle dependency="true">mvn:org.apache.jclouds.api/docker/${jclouds.version}</bundle>
- <!-- Not bundle-ized, fixed in 2.0.0-SNAPSHOT -->
- <!-- bundle dependency="true">mvn:org.apache.jclouds.labs/google-compute-engine/${jclouds.version}</bundle -->
+ <bundle dependency="true">mvn:org.apache.jclouds.provider/google-compute-engine/${jclouds.version}</bundle>
<feature>jclouds-services</feature>
+ <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch-agentproxy-sshj/0.0.9_1</bundle>
<!-- Same as allcompute -->
<feature>jclouds-aws-ec2</feature>
@@ -291,7 +291,6 @@
<feature>jclouds-aws-s3</feature>
<feature>jclouds-azureblob</feature>
<feature>jclouds-api-atmos</feature>
- <feature>jclouds-api-swift</feature>
<feature>jclouds-api-openstack-swift</feature>
<feature>jclouds-rackspace-cloudfiles-uk</feature>
<feature>jclouds-rackspace-cloudfiles-us</feature>
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/eef749c6/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java
index bea98f3..0e7ef12 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java
@@ -27,6 +27,7 @@ import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import org.apache.brooklyn.util.javalang.AtomicReferences;
import org.jclouds.compute.domain.*;
import org.jclouds.compute.options.TemplateOptions;
import org.jclouds.compute.strategy.GetImageStrategy;
@@ -40,9 +41,11 @@ import org.jclouds.ec2.compute.functions.ImagesToRegionAndIdMap;
import org.jclouds.ec2.compute.internal.EC2TemplateBuilderImpl;
import org.jclouds.ec2.domain.RootDeviceType;
import org.jclouds.ec2.domain.VirtualizationType;
+import org.jclouds.rest.AuthorizationException;
import javax.inject.Provider;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicReference;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.*;
import static org.mockito.Mockito.mock;
@@ -89,7 +92,7 @@ public class JcloudsStubTemplateBuilder {
Provider<TemplateOptions> optionsProvider = mock(Provider.class);
Provider<TemplateBuilder> templateBuilderProvider = mock(Provider.class);
TemplateOptions defaultOptions = mock(TemplateOptions.class);
- GetImageStrategy getImageStrategy = mock(GetImageStrategy.class);
+ final GetImageStrategy getImageStrategy = mock(GetImageStrategy.class);
when(optionsProvider.get()).thenReturn(defaultOptions);
@@ -98,8 +101,24 @@ public class JcloudsStubTemplateBuilder {
Supplier<Set<? extends Hardware>> sizes = Suppliers.<Set<? extends Hardware>> ofInstance(ImmutableSet
.of(HARDWARE_SUPPORTING_BOGUS));
- return new EC2TemplateBuilderImpl(locations, new ImageCacheSupplier(images, 60), sizes, Suppliers.ofInstance(jcloudsDomainLocation), optionsProvider,
- templateBuilderProvider, getImageStrategy, imageCache) {
+
+ AtomicReference<AuthorizationException> authException = new AtomicReference<AuthorizationException>(new AuthorizationException());
+
+ com.google.inject.Provider<GetImageStrategy> imageLoader = new com.google.inject.Provider<GetImageStrategy>() {
+ @Override
+ public GetImageStrategy get() {
+ return getImageStrategy;
+ }
+ };
+
+ return new EC2TemplateBuilderImpl(
+ locations,
+ new ImageCacheSupplier(images, 60, authException, imageLoader),
+ sizes,
+ Suppliers.ofInstance(jcloudsDomainLocation),
+ optionsProvider,
+ templateBuilderProvider,
+ imageCache) {
@Override
protected ToStringHelper string() {
return super.string().add("type", "Stubbed-TemplateBuilder");
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/eef749c6/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java
index e97f0ea..4e25dbd 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java
@@ -147,7 +147,7 @@ public class StubbedComputeServiceRegistry implements ComputeServiceRegistry {
nodeCreator.destroyNode(id);
}
@Override
- public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<ComputeMetadata> filter) {
+ public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<? super NodeMetadata> filter) {
return nodeCreator.listNodesDetailsMatching(filter);
}
@Override
@@ -158,10 +158,6 @@ public class StubbedComputeServiceRegistry implements ComputeServiceRegistry {
public Set<? extends NodeMetadata> createNodesInGroup(String group, int count, TemplateOptions templateOptions) {
throw new UnsupportedOperationException();
}
- @Override
- public Set<? extends NodeMetadata> destroyNodesMatching(Predicate<NodeMetadata> filter) {
- throw new UnsupportedOperationException();
- }
}
private final NodeCreator nodeCreator;
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/eef749c6/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/UnsupportedComputeService.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/UnsupportedComputeService.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/UnsupportedComputeService.java
index 6bd89a6..b17aac4 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/UnsupportedComputeService.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/UnsupportedComputeService.java
@@ -112,7 +112,7 @@ public class UnsupportedComputeService implements ComputeService {
}
@Override
- public Set<? extends NodeMetadata> resumeNodesMatching(Predicate<NodeMetadata> filter) {
+ public Set<? extends NodeMetadata> resumeNodesMatching(Predicate<? super NodeMetadata> filter) {
throw new UnsupportedOperationException();
}
@@ -122,7 +122,7 @@ public class UnsupportedComputeService implements ComputeService {
}
@Override
- public Set<? extends NodeMetadata> suspendNodesMatching(Predicate<NodeMetadata> filter) {
+ public Set<? extends NodeMetadata> suspendNodesMatching(Predicate<? super NodeMetadata> filter) {
throw new UnsupportedOperationException();
}
@@ -132,7 +132,7 @@ public class UnsupportedComputeService implements ComputeService {
}
@Override
- public Set<? extends NodeMetadata> destroyNodesMatching(Predicate<NodeMetadata> filter) {
+ public Set<? extends NodeMetadata> destroyNodesMatching(Predicate<? super NodeMetadata> filter) {
throw new UnsupportedOperationException();
}
@@ -142,7 +142,7 @@ public class UnsupportedComputeService implements ComputeService {
}
@Override
- public Set<? extends NodeMetadata> rebootNodesMatching(Predicate<NodeMetadata> filter) {
+ public Set<? extends NodeMetadata> rebootNodesMatching(Predicate<? super NodeMetadata> filter) {
throw new UnsupportedOperationException();
}
@@ -152,31 +152,27 @@ public class UnsupportedComputeService implements ComputeService {
}
@Override
- public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<ComputeMetadata> filter) {
+ public Set<? extends NodeMetadata> listNodesDetailsMatching(Predicate<? super NodeMetadata> filter) {
throw new UnsupportedOperationException();
}
@Override
- public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<NodeMetadata> filter, String runScript)
- throws RunScriptOnNodesException {
+ public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<? super NodeMetadata> filter, String runScript) throws RunScriptOnNodesException {
throw new UnsupportedOperationException();
}
@Override
- public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<NodeMetadata> filter, Statement runScript)
- throws RunScriptOnNodesException {
+ public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<? super NodeMetadata> filter, Statement runScript) throws RunScriptOnNodesException {
throw new UnsupportedOperationException();
}
@Override
- public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<NodeMetadata> filter,
- String runScript, RunScriptOptions options) throws RunScriptOnNodesException {
+ public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<? super NodeMetadata> filter, String runScript, RunScriptOptions options) throws RunScriptOnNodesException {
throw new UnsupportedOperationException();
}
@Override
- public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<NodeMetadata> filter,
- Statement runScript, RunScriptOptions options) throws RunScriptOnNodesException {
+ public Map<? extends NodeMetadata, ExecResponse> runScriptOnNodesMatching(Predicate<? super NodeMetadata> filter, Statement runScript, RunScriptOptions options) throws RunScriptOnNodesException {
throw new UnsupportedOperationException();
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/eef749c6/logging/logback-includes/src/main/resources/brooklyn/logback-logger-excludes.xml
----------------------------------------------------------------------
diff --git a/logging/logback-includes/src/main/resources/brooklyn/logback-logger-excludes.xml b/logging/logback-includes/src/main/resources/brooklyn/logback-logger-excludes.xml
index afc3a0f..8bc1135 100644
--- a/logging/logback-includes/src/main/resources/brooklyn/logback-logger-excludes.xml
+++ b/logging/logback-includes/src/main/resources/brooklyn/logback-logger-excludes.xml
@@ -19,8 +19,8 @@
-->
<included>
- <!-- schmizz (sshj) very noisy, profligate with errors, put to file only, at warn level -->
- <logger name="net.schmizz" level="WARN" additivity="false">
+ <!-- sshj very noisy, profligate with errors, put to file only, at warn level -->
+ <logger name="com.hierynomus" level="WARN" additivity="false">
<appender-ref ref="FILE" />
</logger>
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/eef749c6/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index f0218cd..6b01e8e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -122,7 +122,7 @@
<commons-lang3.version>3.3.2</commons-lang3.version>
<groovy.version>2.3.7</groovy.version> <!-- Version supported by https://github.com/groovy/groovy-eclipse/wiki/Groovy-Eclipse-2.9.1-Release-Notes -->
<jsr305.version>2.0.1</jsr305.version>
- <snakeyaml.version>1.16</snakeyaml.version>
+ <snakeyaml.version>1.17</snakeyaml.version>
<!-- Next version of swagger requires changes to how path mapping and scanner injection are done. -->
<swagger.version>1.5.6</swagger.version>
<jansi.version>1.2.1</jansi.version>
[03/13] brooklyn-server git commit: bump sshj version
Posted by al...@apache.org.
bump sshj version
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/c3de6287
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/c3de6287
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/c3de6287
Branch: refs/heads/master
Commit: c3de62874f04f74bc3b542ff8f4db7e1a9a96010
Parents: 9f8a3aa
Author: Andrea Turli <an...@gmail.com>
Authored: Fri Sep 16 17:50:03 2016 +0200
Committer: Andrea Turli <an...@gmail.com>
Committed: Tue Dec 6 15:29:57 2016 +0100
----------------------------------------------------------------------
core/pom.xml | 2 +-
.../util/core/internal/ssh/sshj/SshjTool.java | 206 +++++++++----------
parent/pom.xml | 2 +-
pom.xml | 2 +-
4 files changed, 102 insertions(+), 110 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c3de6287/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index f133515..02c6cbf 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -58,7 +58,7 @@
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>net.schmizz</groupId>
+ <groupId>com.hierynomus</groupId>
<artifactId>sshj</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c3de6287/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjTool.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjTool.java b/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjTool.java
index fa46af0..1ee02da 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjTool.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/sshj/SshjTool.java
@@ -38,17 +38,6 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicReference;
-import net.schmizz.sshj.connection.ConnectionException;
-import net.schmizz.sshj.connection.channel.direct.PTYMode;
-import net.schmizz.sshj.connection.channel.direct.Session;
-import net.schmizz.sshj.connection.channel.direct.Session.Command;
-import net.schmizz.sshj.connection.channel.direct.Session.Shell;
-import net.schmizz.sshj.connection.channel.direct.SessionChannel;
-import net.schmizz.sshj.sftp.FileAttributes;
-import net.schmizz.sshj.sftp.SFTPClient;
-import net.schmizz.sshj.transport.TransportException;
-import net.schmizz.sshj.xfer.InMemorySourceFile;
-
import org.apache.brooklyn.core.BrooklynFeatureEnablement;
import org.apache.brooklyn.util.core.internal.ssh.BackoffLimitedRetryHandler;
import org.apache.brooklyn.util.core.internal.ssh.ShellTool;
@@ -56,11 +45,9 @@ import org.apache.brooklyn.util.core.internal.ssh.SshAbstractTool;
import org.apache.brooklyn.util.core.internal.ssh.SshTool;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.exceptions.RuntimeTimeoutException;
-import org.apache.brooklyn.util.io.FileUtil;
import org.apache.brooklyn.util.repeat.Repeater;
import org.apache.brooklyn.util.stream.KnownSizeInputStream;
import org.apache.brooklyn.util.stream.StreamGobbler;
-import org.apache.brooklyn.util.stream.Streams;
import org.apache.brooklyn.util.text.Strings;
import org.apache.brooklyn.util.time.Duration;
import org.apache.brooklyn.util.time.Time;
@@ -80,6 +67,19 @@ import com.google.common.io.CountingOutputStream;
import com.google.common.net.HostAndPort;
import com.google.common.primitives.Ints;
+import net.schmizz.sshj.connection.ConnectionException;
+import net.schmizz.sshj.connection.channel.direct.PTYMode;
+import net.schmizz.sshj.connection.channel.direct.Session;
+import net.schmizz.sshj.connection.channel.direct.Session.Command;
+import net.schmizz.sshj.connection.channel.direct.Session.Shell;
+import net.schmizz.sshj.connection.channel.direct.SessionChannel;
+import net.schmizz.sshj.sftp.FileAttributes;
+import net.schmizz.sshj.sftp.SFTPClient;
+import net.schmizz.sshj.transport.TransportException;
+import net.schmizz.sshj.xfer.FileSystemFile;
+import net.schmizz.sshj.xfer.InMemorySourceFile;
+import net.schmizz.sshj.xfer.LocalDestFile;
+
/**
* For ssh and scp-style commands, using the sshj library.
*/
@@ -95,7 +95,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
* Having multiple threads call connect/disconnect is going to be brittle. With
* our retries we can get away with it usually, but it's not good!
*
- * TODO need to upgrade sshj version from 0.8.1 to 0.9, but jclouds 1.7.2 still
+ * TODO need to upgrade sshj version from 0.8.1 to 0.9, but jclouds 1.7.2 still
* relies on 0.8.1. In 0.9, it fixes the https://github.com/shikhar/sshj/issues/89
* so does not throw AssertionError.
*/
@@ -108,7 +108,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
/** Terminal type name for {@code allocatePTY} option. */
final static String TERM = "vt100"; // "dumb"
-
+
private class CloseFtpChannelOnCloseInputStream extends ProxyInputStream {
private final SFTPClient sftp;
@@ -129,17 +129,17 @@ public class SshjTool extends SshAbstractTool implements SshTool {
public static SshjToolBuilder builder() {
return new SshjToolBuilder();
}
-
+
public static class SshjToolBuilder extends Builder<SshjTool, SshjToolBuilder> {
}
-
+
public static class Builder<T extends SshjTool, B extends Builder<T,B>> extends AbstractSshToolBuilder<T,B> {
protected long connectTimeout;
protected long sessionTimeout;
protected int sshTries = 4; //allow 4 tries by default, much safer
protected long sshTriesTimeout = 2*60*1000; //allow 2 minutes by default (so if too slow trying sshTries times, abort anyway)
protected long sshRetryDelay = 50L;
-
+
@Override
public B from(Map<String,?> props) {
super.from(props);
@@ -175,10 +175,10 @@ public class SshjTool extends SshAbstractTool implements SshTool {
public SshjTool(Map<String,?> map) {
this(builder().from(map));
}
-
+
protected SshjTool(Builder<?,?> builder) {
super(builder);
-
+
sshTries = builder.sshTries;
sshTriesTimeout = builder.sshTriesTimeout;
backoffLimitedRetryHandler = new BackoffLimitedRetryHandler(sshTries, builder.sshRetryDelay);
@@ -194,10 +194,10 @@ public class SshjTool extends SshAbstractTool implements SshTool {
.connectTimeout(builder.connectTimeout)
.sessionTimeout(builder.sessionTimeout)
.build();
-
+
if (LOG.isTraceEnabled()) LOG.trace("Created SshTool {} ({})", this, System.identityHashCode(this));
}
-
+
@Override
public void connect() {
try {
@@ -231,19 +231,19 @@ public class SshjTool extends SshAbstractTool implements SshTool {
public boolean isConnected() {
return sshClientConnection.isConnected() && sshClientConnection.isAuthenticated();
}
-
+
@Override
public int copyToServer(java.util.Map<String,?> props, byte[] contents, String pathAndFileOnRemoteServer) {
return copyToServer(props, newInputStreamSupplier(contents), contents.length, pathAndFileOnRemoteServer);
}
-
+
@Override
public int copyToServer(Map<String,?> props, InputStream contents, String pathAndFileOnRemoteServer) {
/* sshj needs to:
* 1) to know the length of the InputStream to copy the file to perform copy; and
* 2) re-read the input stream on retry if the first attempt fails.
* For now, write it to a file, unless caller supplies a KnownSizeInputStream
- *
+ *
* (We could have a switch where we hold it in memory if less than some max size,
* but most the routines should supply a string or byte array or similar,
* so we probably don't come here too often.)
@@ -259,12 +259,12 @@ public class SshjTool extends SshAbstractTool implements SshTool {
}
}
}
-
+
@Override
public int copyToServer(Map<String,?> props, File localFile, String pathAndFileOnRemoteServer) {
return copyToServer(props, newInputStreamSupplier(localFile), (int)localFile.length(), pathAndFileOnRemoteServer);
}
-
+
private int copyToServer(Map<String,?> props, Supplier<InputStream> contentsSupplier, long length, String pathAndFileOnRemoteServer) {
acquire(new PutFileAction(props, pathAndFileOnRemoteServer, contentsSupplier, length));
return 0; // TODO Can we assume put will have thrown exception if failed? Rather than exit code != 0?
@@ -273,13 +273,8 @@ public class SshjTool extends SshAbstractTool implements SshTool {
@Override
public int copyFromServer(Map<String,?> props, String pathAndFileOnRemoteServer, File localFile) {
- InputStream contents = acquire(new GetFileAction(pathAndFileOnRemoteServer));
- try {
- FileUtil.copyTo(contents, localFile);
- return 0; // TODO Can we assume put will have thrown exception if failed? Rather than exit code != 0?
- } finally {
- Streams.closeQuietly(contents);
- }
+ LocalDestFile localDestFile = acquire(new GetFileAction(pathAndFileOnRemoteServer));
+ return 0;
}
/**
@@ -304,11 +299,11 @@ public class SshjTool extends SshAbstractTool implements SshTool {
* e.g. by putting every second command as "echo <uid>", and waiting for the stdout.
* This gets fiddly...
* </ul>
- *
+ *
* So on balance, the script-based approach seems most reliable, even if there is an overhead
* of separate message(s) for copying the file!
- *
- * Another consideration is long-running scripts. On some clouds when executing a script that takes
+ *
+ * Another consideration is long-running scripts. On some clouds when executing a script that takes
* several minutes, we have seen it fail with -1 (e.g. 1 in 20 times). This suggests the ssh connection
* is being dropped. To avoid this problem, we can execute the script asynchronously, writing to files
* the stdout/stderr/pid/exitStatus. We then periodically poll to retrieve the contents of these files.
@@ -337,17 +332,17 @@ public class SshjTool extends SshAbstractTool implements SshTool {
/**
* Executes the script in the background (`nohup ... &`), and then executes other ssh commands to poll for the
* stdout, stderr and exit code of that original process (which will each have been written to separate files).
- *
+ *
* The polling is a "long poll". That is, it executes a long-running ssh command to retrieve the stdout, etc.
* If that long-poll command fails, then we just execute another one to pick up from where it left off.
* This means we do not need to execute many ssh commands (which are expensive), but can still return promptly
* when the command completes.
- *
+ *
* Much of this was motivated by https://issues.apache.org/jira/browse/BROOKLYN-106, which is no longer
* an issue. The retries (e.g. in the upload-script) are arguably overkill given that {@link #acquire(SshAction)}
* will already retry. However, leaving this in place as it could prove useful when working with flakey
* networks in the future.
- *
+ *
* TODO There are (probably) issues with this method when using {@link ShellTool#PROP_RUN_AS_ROOT}.
* I (Aled) saw the .pid file having an owner of root:root, and a failure message in stderr of:
* -bash: line 3: /tmp/brooklyn-20150113-161203056-XMEo-move_install_dir_from_user_to_.pid: Permission denied
@@ -362,12 +357,12 @@ public class SshjTool extends SshAbstractTool implements SshTool {
private int stdoutCount = 0;
private int stderrCount = 0;
private Stopwatch timer;
-
+
public int run() {
timer = Stopwatch.createStarted();
final String scriptContents = toScript(props, commands, env);
if (LOG.isTraceEnabled()) LOG.trace("Running shell command at {} as async script: {}", host, scriptContents);
-
+
// Upload script; try repeatedly because have seen timeout intermittently on vcloud-director (BROOKLYN-106 related).
boolean uploadSuccess = Repeater.create("async script upload on "+SshjTool.this.toString()+" (for "+getSummary()+")")
.backoffTo(maxDelayBetweenPolls)
@@ -389,14 +384,14 @@ public class SshjTool extends SshAbstractTool implements SshTool {
return true;
}})
.run();
-
+
if (!uploadSuccess) {
// Unexpected! Should have either returned true or have rethrown the exception; should never get false.
String msg = "Unexpected state: repeated failure for async script upload on "+SshjTool.this.toString()+" ("+getSummary()+")";
LOG.warn(msg+"; rethrowing");
throw new IllegalStateException(msg);
}
-
+
// Execute script asynchronously
int execResult = asInt(acquire(new ShellAction(buildRunScriptCommand(), out, err, execTimeout)), -1);
if (execResult != 0) return execResult;
@@ -417,16 +412,16 @@ public class SshjTool extends SshAbstractTool implements SshTool {
return exitstatus != null;
}})
.run();
-
+
if (!success) {
// Timed out
String msg = "Timeout for async script to complete on "+SshjTool.this.toString()+" ("+getSummary()+")";
LOG.warn(msg+"; rethrowing");
throw new TimeoutException(msg);
}
-
+
return result.get();
-
+
} catch (Exception e) {
LOG.debug("Problem polling for async script on "+SshjTool.this.toString()+" (for "+getSummary()+"); rethrowing after deleting temporary files", e);
throw Exceptions.propagate(e);
@@ -445,13 +440,13 @@ public class SshjTool extends SshAbstractTool implements SshTool {
}
}
}
-
+
Integer longPoll() throws IOException {
// Long-polling to get stdout, stderr + exit status of async task.
// If our long-poll disconnects, we will just re-execute.
- // We wrap the stdout/stderr so that we can get the size count.
+ // We wrap the stdout/stderr so that we can get the size count.
// If we disconnect, we will pick up from that char of the stream.
- // TODO Additional stdout/stderr written by buildLongPollCommand() could interfere,
+ // TODO Additional stdout/stderr written by buildLongPollCommand() could interfere,
// causing us to miss some characters.
Duration nextPollTimeout = Duration.min(pollTimeout, Duration.millis(execTimeout.toMilliseconds()-timer.elapsed(TimeUnit.MILLISECONDS)));
CountingOutputStream countingOut = (out == null) ? null : new CountingOutputStream(out);
@@ -459,7 +454,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
List<String> pollCommand = buildLongPollCommand(stdoutCount, stderrCount, nextPollTimeout);
Duration sshJoinTimeout = nextPollTimeout.add(Duration.TEN_SECONDS);
ShellAction action = new ShellAction(pollCommand, countingOut, countingErr, sshJoinTimeout);
-
+
int longPollResult;
try {
longPollResult = asInt(acquire(action, 3, nextPollTimeout), -1);
@@ -469,11 +464,11 @@ public class SshjTool extends SshAbstractTool implements SshTool {
}
stdoutCount += (countingOut == null) ? 0 : countingOut.getCount();
stderrCount += (countingErr == null) ? 0 : countingErr.getCount();
-
+
if (longPollResult == 0) {
if (LOG.isDebugEnabled()) LOG.debug("Long-poll succeeded (exit status 0) on "+SshjTool.this.toString()+" (for "+getSummary()+")");
return longPollResult; // success
-
+
} else if (longPollResult == -1) {
// probably a connection failure; try again
if (LOG.isDebugEnabled()) LOG.debug("Long-poll received exit status -1; will retry on "+SshjTool.this.toString()+" (for "+getSummary()+")");
@@ -495,7 +490,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
return result;
}
}
-
+
consecutiveSshFailures++;
if (consecutiveSshFailures > maxConsecutiveSshFailures) {
LOG.warn("Aborting on "+consecutiveSshFailures+" consecutive ssh connection errors (return -1) when polling for async script to complete on "+SshjTool.this.toString()+" ("+getSummary()+")");
@@ -505,14 +500,14 @@ public class SshjTool extends SshAbstractTool implements SshTool {
return null;
}
}
-
+
Integer retrieveStatusCommand() throws IOException {
// want to double-check whether this is the exit-code from the async process, or
// some unexpected failure in our long-poll command.
ByteArrayOutputStream statusOut = new ByteArrayOutputStream();
ByteArrayOutputStream statusErr = new ByteArrayOutputStream();
int statusResult = asInt(acquire(new ShellAction(buildRetrieveStatusCommand(), statusOut, statusErr, execTimeout)), -1);
-
+
if (statusResult == 0) {
// The status we retrieved really is valid; return it.
// TODO How to ensure no additional output in stdout/stderr when parsing below?
@@ -531,7 +526,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
// probably a connection failure; try again with long-poll
if (LOG.isDebugEnabled()) LOG.debug("Long-poll retrieving status directly received exit status -1; will retry on "+SshjTool.this.toString()+" (for "+getSummary()+")");
return null;
-
+
} else {
if (out != null) {
out.write(toUTF8ByteArray("retrieving status failed with exit code "+statusResult+" (stdout follow)"));
@@ -541,28 +536,28 @@ public class SshjTool extends SshAbstractTool implements SshTool {
err.write(toUTF8ByteArray("retrieving status failed with exit code "+statusResult+" (stderr follow)"));
err.write(statusErr.toByteArray());
}
-
+
if (LOG.isDebugEnabled()) LOG.debug("Long-poll retrieving status failed; returning "+statusResult+" on "+SshjTool.this.toString()+" (for "+getSummary()+")");
return statusResult;
}
}
}.run();
}
-
+
public int execShellDirect(Map<String,?> props, List<String> commands, Map<String,?> env) {
OutputStream out = getOptionalVal(props, PROP_OUT_STREAM);
OutputStream err = getOptionalVal(props, PROP_ERR_STREAM);
Duration execTimeout = getOptionalVal(props, PROP_EXEC_TIMEOUT);
-
+
List<String> cmdSequence = toCommandSequence(commands, env);
List<String> allcmds = ImmutableList.<String>builder()
.add(getOptionalVal(props, PROP_DIRECT_HEADER))
.addAll(cmdSequence)
.add("exit $?")
.build();
-
+
if (LOG.isTraceEnabled()) LOG.trace("Running shell command at {}: {}", host, allcmds);
-
+
Integer result = acquire(new ShellAction(allcmds, out, err, execTimeout));
if (LOG.isTraceEnabled()) LOG.trace("Running shell command at {} completed: return status {}", host, result);
return asInt(result, -1);
@@ -573,7 +568,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
if (Boolean.FALSE.equals(props.get("blocks"))) {
throw new IllegalArgumentException("Cannot exec non-blocking: command="+commands);
}
-
+
// If async is set, then do it as execScript
Boolean execAsync = getOptionalVal(props, PROP_EXEC_ASYNC);
if (Boolean.TRUE.equals(execAsync) && BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_SSH_ASYNC_EXEC)) {
@@ -591,14 +586,14 @@ public class SshjTool extends SshAbstractTool implements SshTool {
if (Boolean.TRUE.equals(getOptionalVal(props, PROP_RUN_AS_ROOT))) {
LOG.warn("Cannot run as root when executing as command; run as a script instead (will run as normal user): "+singlecmd);
}
-
+
if (LOG.isTraceEnabled()) LOG.trace("Running command at {}: {}", host, singlecmd);
-
+
Command result = acquire(new ExecAction(singlecmd, out, err, execTimeout));
if (LOG.isTraceEnabled()) LOG.trace("Running command at {} completed: exit code {}", host, result.getExitStatus());
// can be null if no exit status is received (observed on kill `ps aux | grep thing-to-grep-for | awk {print $2}`
if (result.getExitStatus()==null) LOG.warn("Null exit status running at {}: {}", host, singlecmd);
-
+
return asInt(result.getExitStatus(), -1);
}
@@ -615,16 +610,16 @@ public class SshjTool extends SshAbstractTool implements SshTool {
protected <T, C extends SshAction<T>> T acquire(C action) {
return acquire(action, sshTries, sshTriesTimeout == 0 ? Duration.PRACTICALLY_FOREVER : Duration.millis(sshTriesTimeout));
}
-
+
protected <T, C extends SshAction<T>> T acquire(C action, int sshTries, Duration sshTriesTimeout) {
Stopwatch stopwatch = Stopwatch.createStarted();
-
+
for (int i = 0; i < sshTries; i++) {
try {
action.clear();
if (LOG.isTraceEnabled()) LOG.trace(">> ({}) acquiring {}", toString(), action);
Stopwatch perfStopwatch = Stopwatch.createStarted();
-
+
T returnVal;
try {
returnVal = action.create();
@@ -633,25 +628,25 @@ public class SshjTool extends SshAbstractTool implements SshTool {
* TODO In net.schmizz.sshj.SSHClient.auth(SSHClient.java:204) throws AssertionError
* if not connected. This can happen if another thread has called disconnect
* concurrently. This is changed in sshj v0.9.0 to instead throw an IllegalStateException.
- *
+ *
* For now, we'll retry. See "TODO" at top of class about synchronization.
*/
throw new IllegalStateException("Problem in "+toString()+" for "+action, e);
}
-
+
if (LOG.isTraceEnabled()) LOG.trace("<< ({}) acquired {}", toString(), returnVal);
if (LOG.isTraceEnabled()) LOG.trace("SSH Performance: {} {} took {}", new Object[] {
- sshClientConnection.getHostAndPort(),
- action.getClass().getSimpleName() != null ? action.getClass().getSimpleName() : action,
+ sshClientConnection.getHostAndPort(),
+ action.getClass().getSimpleName() != null ? action.getClass().getSimpleName() : action,
Time.makeTimeStringRounded(perfStopwatch)});
return returnVal;
} catch (Exception e) {
- // uninformative net.schmizz.sshj.connection.ConnectionException:
+ // uninformative net.schmizz.sshj.connection.ConnectionException:
// Request failed (reason=UNKNOWN) may mean remote Subsytem is disabled (e.g. for FTP)
// if key is missing, get a UserAuth error
String errorMessage = String.format("(%s) error acquiring %s", toString(), action);
- String fullMessage = String.format("%s (attempt %s/%s, in time %s/%s)",
- errorMessage, (i+1), sshTries, Time.makeTimeStringRounded(stopwatch.elapsed(TimeUnit.MILLISECONDS)),
+ String fullMessage = String.format("%s (attempt %s/%s, in time %s/%s)",
+ errorMessage, (i+1), sshTries, Time.makeTimeStringRounded(stopwatch.elapsed(TimeUnit.MILLISECONDS)),
(sshTriesTimeout.equals(Duration.PRACTICALLY_FOREVER) ? "unlimited" : Time.makeTimeStringRounded(sshTriesTimeout)));
try {
disconnect();
@@ -700,7 +695,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
}
};
- private class GetFileAction implements SshAction<InputStream> {
+ private class GetFileAction implements SshAction<LocalDestFile> {
private final String path;
private SFTPClient sftp;
@@ -715,10 +710,11 @@ public class SshjTool extends SshAbstractTool implements SshTool {
}
@Override
- public InputStream create() throws Exception {
+ public LocalDestFile create() throws Exception {
sftp = acquire(sftpConnection);
- return new CloseFtpChannelOnCloseInputStream(
- sftp.getSFTPEngine().open(path).getInputStream(), sftp);
+ LocalDestFile localDestFile = new FileSystemFile(path);
+ sftp.get(path, localDestFile);
+ return localDestFile;
}
@Override
@@ -729,7 +725,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
private class PutFileAction implements SshAction<Void> {
// TODO support backup as a property?
-
+
private SFTPClient sftp;
private final String path;
private final int permissionsMask;
@@ -738,7 +734,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
private final int uid;
private final Supplier<InputStream> contentsSupplier;
private final Integer length;
-
+
PutFileAction(Map<String,?> props, String path, Supplier<InputStream> contentsSupplier, long length) {
String permissions = getOptionalVal(props, PROP_PERMISSIONS);
long lastModificationDateVal = getOptionalVal(props, PROP_LAST_MODIFICATION_DATE);
@@ -817,7 +813,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
}
};
}
-
+
protected SshAction<Session> newSessionAction() {
return new SshAction<Session>() {
@@ -853,18 +849,18 @@ public class SshjTool extends SshAbstractTool implements SshTool {
private final OutputStream out;
private final OutputStream err;
private final Duration timeout;
-
+
private Session session;
private Shell shell;
private StreamGobbler outgobbler;
private StreamGobbler errgobbler;
-
+
ExecAction(String command, OutputStream out, OutputStream err, Duration timeout) {
this.command = checkNotNull(command, "command");
this.out = out;
this.err = err;
- Duration sessionTimeout = (sshClientConnection.getSessionTimeout() == 0)
- ? Duration.PRACTICALLY_FOREVER
+ Duration sessionTimeout = (sshClientConnection.getSessionTimeout() == 0)
+ ? Duration.PRACTICALLY_FOREVER
: Duration.millis(sshClientConnection.getSessionTimeout());
this.timeout = (timeout == null) ? sessionTimeout : Duration.min(timeout, sessionTimeout);
}
@@ -883,9 +879,9 @@ public class SshjTool extends SshAbstractTool implements SshTool {
public Command create() throws Exception {
try {
session = acquire(newSessionAction());
-
+
Command output = session.exec(checkNotNull(command, "command"));
-
+
if (out != null) {
outgobbler = new StreamGobbler(output.getInputStream(), out, (Logger)null);
outgobbler.start();
@@ -897,7 +893,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
try {
output.join((int)Math.min(timeout.toMilliseconds(), Integer.MAX_VALUE), TimeUnit.MILLISECONDS);
return output;
-
+
} finally {
// wait for all stdout/stderr to have been re-directed
try {
@@ -910,7 +906,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
Thread.currentThread().interrupt();
}
}
-
+
} finally {
clear();
}
@@ -929,7 +925,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
final OutputStream out;
@VisibleForTesting
final OutputStream err;
-
+
private Session session;
private Shell shell;
private StreamGobbler outgobbler;
@@ -940,8 +936,8 @@ public class SshjTool extends SshAbstractTool implements SshTool {
this.commands = checkNotNull(commands, "commands");
this.out = out;
this.err = err;
- Duration sessionTimeout = (sshClientConnection.getSessionTimeout() == 0)
- ? Duration.PRACTICALLY_FOREVER
+ Duration sessionTimeout = (sshClientConnection.getSessionTimeout() == 0)
+ ? Duration.PRACTICALLY_FOREVER
: Duration.millis(sshClientConnection.getSessionTimeout());
this.timeout = (timeout == null) ? sessionTimeout : Duration.min(timeout, sessionTimeout);
}
@@ -960,9 +956,9 @@ public class SshjTool extends SshAbstractTool implements SshTool {
public Integer create() throws Exception {
try {
session = acquire(newSessionAction());
-
+
shell = session.startShell();
-
+
if (out != null) {
InputStream outstream = shell.getInputStream();
outgobbler = new StreamGobbler(outstream, out, (Logger)null);
@@ -973,7 +969,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
errgobbler = new StreamGobbler(errstream, err, (Logger)null);
errgobbler.start();
}
-
+
OutputStream output = shell.getOutputStream();
for (CharSequence cmd : commands) {
@@ -990,12 +986,8 @@ public class SshjTool extends SshAbstractTool implements SshTool {
}
}
}
- // workaround attempt for SSHJ deadlock - https://github.com/shikhar/sshj/issues/105
- synchronized (shell.getOutputStream()) {
- shell.sendEOF();
- }
closeWhispering(output, this);
-
+
boolean timedOut = false;
try {
long timeoutMillis = Math.min(timeout.toMilliseconds(), Integer.MAX_VALUE);
@@ -1006,8 +998,8 @@ public class SshjTool extends SshAbstractTool implements SshTool {
// shell closed, and exit status returned
break;
boolean endBecauseReturned =
- // if either condition is satisfied, then wait 1s in hopes the other does, then return
- (!shell.isOpen() || ((SessionChannel)session).getExitStatus()!=null);
+ // if either condition is satisfied, then wait 1s in hopes the other does, then return
+ (!shell.isOpen() || ((SessionChannel)session).getExitStatus()!=null);
try {
shell.join(1000, TimeUnit.MILLISECONDS);
} catch (ConnectionException e) {
@@ -1016,7 +1008,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
if (endBecauseReturned) {
// shell is still open, ie some process is running
// but we have a result code, so main shell is finished
- // we waited one second extra to allow any background process
+ // we waited one second extra to allow any background process
// which is nohupped to really be in the background (#162)
// now let's bail out
break;
@@ -1051,7 +1043,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
Thread.currentThread().interrupt();
}
}
-
+
} finally {
clear();
}
@@ -1066,7 +1058,7 @@ public class SshjTool extends SshAbstractTool implements SshTool {
private byte[] toUTF8ByteArray(String string) {
return org.bouncycastle.util.Strings.toUTF8ByteArray(string);
}
-
+
private Supplier<InputStream> newInputStreamSupplier(final byte[] contents) {
return new Supplier<InputStream>() {
@Override public InputStream get() {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c3de6287/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index fea6e19..3cf38b2 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -430,7 +430,7 @@
<version>${commons-compress.version}</version>
</dependency>
<dependency>
- <groupId>net.schmizz</groupId>
+ <groupId>com.hierynomus</groupId>
<artifactId>sshj</artifactId>
<version>${sshj.version}</version>
</dependency>
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c3de6287/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 9ca5234..7e7e0d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -120,7 +120,7 @@
<ivy.version>2.2.0</ivy.version>
<mx4j.version>3.0.1</mx4j.version>
<bouncycastle.version>1.49</bouncycastle.version>
- <sshj.version>0.8.1</sshj.version>
+ <sshj.version>0.12.0</sshj.version>
<felix.framework.version>5.4.0</felix.framework.version>
<reflections.version>0.9.9-RC1</reflections.version>
<jetty.version>9.2.13.v20150730</jetty.version>
[02/13] brooklyn-server git commit: fix unit tests
Posted by al...@apache.org.
fix unit tests
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/9e29d226
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/9e29d226
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/9e29d226
Branch: refs/heads/master
Commit: 9e29d226705aa7ae5a8eaf27e46cb767f1217f1f
Parents: c3de628
Author: Andrea Turli <an...@gmail.com>
Authored: Sun Nov 6 22:41:58 2016 +0100
Committer: Andrea Turli <an...@gmail.com>
Committed: Tue Dec 6 15:29:57 2016 +0100
----------------------------------------------------------------------
.../core/location/LocationConfigUtils.java | 5 +-
.../util/core/crypto/FluentKeySigner.java | 11 +++--
.../brooklyn/util/core/crypto/SecureKeys.java | 51 ++++----------------
3 files changed, 20 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9e29d226/core/src/main/java/org/apache/brooklyn/core/location/LocationConfigUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/location/LocationConfigUtils.java b/core/src/main/java/org/apache/brooklyn/core/location/LocationConfigUtils.java
index 17705f9..2ed7e1a 100644
--- a/core/src/main/java/org/apache/brooklyn/core/location/LocationConfigUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/core/location/LocationConfigUtils.java
@@ -20,7 +20,6 @@ package org.apache.brooklyn.core.location;
import static org.apache.brooklyn.util.JavaGroovyEquivalents.groovyTruth;
-import java.io.ByteArrayInputStream;
import java.io.File;
import java.security.KeyPair;
import java.security.PublicKey;
@@ -36,8 +35,6 @@ import org.apache.brooklyn.core.BrooklynFeatureEnablement;
import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.location.cloud.CloudLocationConfig;
import org.apache.brooklyn.core.location.internal.LocationInternal;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.brooklyn.util.collections.MutableMap;
import org.apache.brooklyn.util.collections.MutableSet;
import org.apache.brooklyn.util.core.ResourceUtils;
@@ -49,6 +46,8 @@ import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.os.Os;
import org.apache.brooklyn.util.text.StringFunctions;
import org.apache.brooklyn.util.text.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.google.common.annotations.Beta;
import com.google.common.base.Objects;
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9e29d226/core/src/main/java/org/apache/brooklyn/util/core/crypto/FluentKeySigner.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/crypto/FluentKeySigner.java b/core/src/main/java/org/apache/brooklyn/util/core/crypto/FluentKeySigner.java
index ecc7c36..a2aaabd 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/crypto/FluentKeySigner.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/crypto/FluentKeySigner.java
@@ -32,7 +32,9 @@ import org.apache.brooklyn.core.internal.BrooklynInitialization;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.bouncycastle.asn1.x509.AuthorityKeyIdentifier;
import org.bouncycastle.asn1.x509.X509Extension;
+import org.bouncycastle.cert.jcajce.JcaX509ExtensionUtils;
import org.bouncycastle.jce.X509Principal;
+import org.bouncycastle.x509.X509V3CertificateGenerator;
/** A fluent API which simplifies generating certificates (signed keys) */
/* NB - re deprecation - we use deprecated X509V3CertificateGenerator still
@@ -146,8 +148,10 @@ public class FluentKeySigner {
// TODO see note re deprecation at start of file
@SuppressWarnings("deprecation")
public X509Certificate newCertificateFor(X500Principal subject, PublicKey keyToCertify) {
+
try {
- org.bouncycastle.x509.X509V3CertificateGenerator v3CertGen = new org.bouncycastle.x509.X509V3CertificateGenerator();
+
+ X509V3CertificateGenerator v3CertGen = new X509V3CertificateGenerator();
v3CertGen.setSerialNumber(
serialNumber != null ? serialNumber :
@@ -159,10 +163,11 @@ public class FluentKeySigner {
v3CertGen.setSignatureAlgorithm(signatureAlgorithm);
v3CertGen.setSubjectDN(subject);
- v3CertGen.setPublicKey(keyToCertify);
+ v3CertGen.setPublicKey(keyToCertify);
+ JcaX509ExtensionUtils jcaX509ExtensionUtils = new JcaX509ExtensionUtils();
v3CertGen.addExtension(X509Extension.subjectKeyIdentifier, false,
- new org.bouncycastle.x509.extension.SubjectKeyIdentifierStructure(keyToCertify));
+ jcaX509ExtensionUtils.createSubjectKeyIdentifier(keyToCertify));
if (authorityKeyIdentifier!=null)
v3CertGen.addExtension(X509Extension.authorityKeyIdentifier, false,
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9e29d226/core/src/main/java/org/apache/brooklyn/util/core/crypto/SecureKeys.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/crypto/SecureKeys.java b/core/src/main/java/org/apache/brooklyn/util/core/crypto/SecureKeys.java
index a36b00a..5a1e54a 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/crypto/SecureKeys.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/crypto/SecureKeys.java
@@ -41,7 +41,6 @@ import org.bouncycastle.openssl.PEMEncryptedKeyPair;
import org.bouncycastle.openssl.PEMKeyPair;
import org.bouncycastle.openssl.PEMParser;
import org.bouncycastle.openssl.PEMWriter;
-import org.bouncycastle.openssl.PasswordFinder;
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
import org.bouncycastle.openssl.jcajce.JcePEMDecryptorProviderBuilder;
import org.slf4j.Logger;
@@ -89,67 +88,37 @@ public class SecureKeys extends SecureKeysWithoutBouncyCastle {
public static KeyPair readPem(byte[] key, final String passphrase) {
// TODO cache is only for fallback "reader" strategy (2015-01); delete when Parser confirmed working
InputStream input = new ByteArrayInputStream(key);
-
+ KeyPair keyPair;
try {
PEMParser pemParser = new PEMParser(new InputStreamReader(input));
-
Object object = pemParser.readObject();
pemParser.close();
-
+ if (Security.getProvider("BC") == null) {
+ Security.addProvider(new BouncyCastleProvider());
+ }
JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
- KeyPair kp = null;
if (object==null) {
throw new IllegalStateException("PEM parsing failed: missing or invalid data");
} else if (object instanceof PEMEncryptedKeyPair) {
if (passphrase==null) throw new PassphraseProblem("passphrase required");
try {
PEMDecryptorProvider decProv = new JcePEMDecryptorProviderBuilder().build(passphrase.toCharArray());
- kp = converter.getKeyPair(((PEMEncryptedKeyPair) object).decryptKeyPair(decProv));
+ keyPair = converter.getKeyPair(((PEMEncryptedKeyPair) object).decryptKeyPair(decProv));
} catch (Exception e) {
Exceptions.propagateIfFatal(e);
throw new PassphraseProblem("wrong passphrase", e);
}
} else if (object instanceof PEMKeyPair) {
- kp = converter.getKeyPair((PEMKeyPair) object);
+ keyPair = converter.getKeyPair((PEMKeyPair) object);
} else if (object instanceof PrivateKeyInfo) {
PrivateKey privKey = converter.getPrivateKey((PrivateKeyInfo) object);
- kp = new KeyPair(null, privKey);
+ keyPair = new KeyPair(null, privKey);
} else {
throw new IllegalStateException("PEM parser support missing for: "+object);
}
-
- return kp;
-
- } catch (Exception e) {
- Exceptions.propagateIfFatal(e);
-
- // older code relied on PEMReader, now deprecated
- // replaced with above based on http://stackoverflow.com/questions/14919048/bouncy-castle-pemreader-pemparser
- // passes the same tests (Jan 2015) but leaving the old code as a fallback for the time being
-
- input = new ByteArrayInputStream(key);
- try {
- Security.addProvider(new BouncyCastleProvider());
- @SuppressWarnings("deprecation")
- org.bouncycastle.openssl.PEMReader pr = new org.bouncycastle.openssl.PEMReader(new InputStreamReader(input), new PasswordFinder() {
- public char[] getPassword() {
- return passphrase!=null ? passphrase.toCharArray() : new char[0];
- }
- });
- @SuppressWarnings("deprecation")
- KeyPair result = (KeyPair) pr.readObject();
- pr.close();
- if (result==null)
- throw Exceptions.propagate(e);
-
- log.warn("PEMParser failed when deprecated PEMReader succeeded, with "+result+"; had: "+e);
-
- return result;
-
- } catch (Exception e2) {
- Exceptions.propagateIfFatal(e2);
- throw Exceptions.propagate(e);
- }
+ return keyPair;
+ } catch (IOException e) {
+ throw new RuntimeException("Invalid key", e);
}
}