You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sj...@apache.org on 2015/05/05 14:13:14 UTC
[1/5] incubator-brooklyn git commit: Support URLs in
brooklyn.webconsole.security.keystore.url property
Repository: incubator-brooklyn
Updated Branches:
refs/heads/master 78776caca -> d0cbcf36c
Support URLs in brooklyn.webconsole.security.keystore.url property
Even though the property is named url it supported local files only.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/c2724cef
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/c2724cef
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/c2724cef
Branch: refs/heads/master
Commit: c2724cefb043706bc27d5a29fa7ef7fc0480ecae
Parents: d8a9a6f
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Mon May 4 18:31:37 2015 +0300
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Mon May 4 18:31:37 2015 +0300
----------------------------------------------------------------------
.../brooklyn/launcher/BrooklynWebServer.java | 26 +++++++++++++++++++-
.../launcher/BrooklynWebServerTest.java | 15 ++++++++---
2 files changed, 37 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c2724cef/usage/launcher/src/main/java/brooklyn/launcher/BrooklynWebServer.java
----------------------------------------------------------------------
diff --git a/usage/launcher/src/main/java/brooklyn/launcher/BrooklynWebServer.java b/usage/launcher/src/main/java/brooklyn/launcher/BrooklynWebServer.java
index eaa1209..8112b13 100644
--- a/usage/launcher/src/main/java/brooklyn/launcher/BrooklynWebServer.java
+++ b/usage/launcher/src/main/java/brooklyn/launcher/BrooklynWebServer.java
@@ -19,6 +19,7 @@
package brooklyn.launcher;
import java.io.File;
+import java.io.InputStream;
import java.net.InetAddress;
import java.net.URI;
import java.security.KeyPair;
@@ -75,9 +76,11 @@ import brooklyn.util.exceptions.Exceptions;
import brooklyn.util.flags.FlagUtils;
import brooklyn.util.flags.SetFromFlag;
import brooklyn.util.flags.TypeCoercions;
+import brooklyn.util.io.FileUtil;
import brooklyn.util.javalang.Threads;
import brooklyn.util.logging.LoggingSetup;
import brooklyn.util.os.Os;
+import brooklyn.util.stream.Streams;
import brooklyn.util.text.Identifiers;
import brooklyn.util.text.Strings;
import brooklyn.util.web.ContextHandlerCollectionHotSwappable;
@@ -441,7 +444,7 @@ public class BrooklynWebServer {
if (keystoreCertAlias==null) keystoreCertAlias = managementContext.getConfig().getConfig(BrooklynWebConfig.KEYSTORE_CERTIFICATE_ALIAS);
if (keystoreUrl!=null) {
- sslContextFactory.setKeyStorePath(ResourceUtils.create(this).checkUrlExists(keystoreUrl, BrooklynWebConfig.KEYSTORE_URL.getName()));
+ sslContextFactory.setKeyStorePath(getLocalKeyStorePath(keystoreUrl));
if (Strings.isEmpty(keystorePassword))
throw new IllegalArgumentException("Keystore password is required and non-empty if keystore is specified.");
sslContextFactory.setKeyStorePassword(keystorePassword);
@@ -478,6 +481,27 @@ public class BrooklynWebServer {
return sslContextFactory;
}
+ private String getLocalKeyStorePath(String keystoreUrl) {
+ ResourceUtils res = ResourceUtils.create(this);
+ res.checkUrlExists(keystoreUrl, BrooklynWebConfig.KEYSTORE_URL.getName());
+ if (new File(keystoreUrl).exists()) {
+ return keystoreUrl;
+ } else {
+ InputStream keystoreStream;
+ try {
+ keystoreStream = res.getResourceFromUrl(keystoreUrl);
+ } catch (Exception e) {
+ Exceptions.propagateIfFatal(e);
+ throw new IllegalArgumentException("Unable to access URL: "+keystoreUrl, e);
+ }
+ File tmp = Os.newTempFile("brooklyn-keystore", "ks");
+ tmp.deleteOnExit();
+ FileUtil.copyTo(keystoreStream, tmp);
+ Streams.closeQuietly(keystoreStream);
+ return tmp.getAbsolutePath();
+ }
+ }
+
private String newTimestampedDirName(String prefix, int randomSuffixLength) {
return prefix + "-" + new SimpleDateFormat("yyyyMMdd-HHmmss").format(new Date()) + "-" + Identifiers.makeRandomId(randomSuffixLength);
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c2724cef/usage/launcher/src/test/java/brooklyn/launcher/BrooklynWebServerTest.java
----------------------------------------------------------------------
diff --git a/usage/launcher/src/test/java/brooklyn/launcher/BrooklynWebServerTest.java b/usage/launcher/src/test/java/brooklyn/launcher/BrooklynWebServerTest.java
index d40d1a4..3b7e8f6 100644
--- a/usage/launcher/src/test/java/brooklyn/launcher/BrooklynWebServerTest.java
+++ b/usage/launcher/src/test/java/brooklyn/launcher/BrooklynWebServerTest.java
@@ -34,6 +34,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import brooklyn.config.BrooklynProperties;
@@ -89,11 +90,19 @@ public class BrooklynWebServerTest {
}
}
- @Test
- public void verifyHttps() throws Exception {
+ @DataProvider(name="keystorePaths")
+ public Object[][] getKeystorePaths() {
+ return new Object[][] {
+ {getFile("server.ks")},
+ {new File(getFile("server.ks")).toURI().toString()},
+ {"classpath://server.ks"}};
+ }
+
+ @Test(dataProvider="keystorePaths")
+ public void verifyHttps(String keystoreUrl) throws Exception {
Map<String,?> flags = ImmutableMap.<String,Object>builder()
.put("httpsEnabled", true)
- .put("keystoreUrl", getFile("server.ks"))
+ .put("keystoreUrl", keystoreUrl)
.put("keystorePassword", "password")
.build();
webServer = new BrooklynWebServer(flags, newManagementContext(brooklynProperties));
[2/5] incubator-brooklyn git commit: Adds
EntityPredicates.hasInterfaceMatching
Posted by sj...@apache.org.
Adds EntityPredicates.hasInterfaceMatching
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/7b57f99b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/7b57f99b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/7b57f99b
Branch: refs/heads/master
Commit: 7b57f99bbb04c7d66bafc251e49b8952350cd59a
Parents: 78776ca
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Tue Apr 28 19:35:36 2015 +0100
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Tue May 5 12:14:56 2015 +0100
----------------------------------------------------------------------
.../brooklyn/entity/basic/EntityPredicates.java | 35 ++++++++++++++++++--
.../entity/basic/EntityPredicatesTest.java | 11 ++++++
2 files changed, 44 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7b57f99b/core/src/main/java/brooklyn/entity/basic/EntityPredicates.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/EntityPredicates.java b/core/src/main/java/brooklyn/entity/basic/EntityPredicates.java
index 5906d78..96ecb7a 100644
--- a/core/src/main/java/brooklyn/entity/basic/EntityPredicates.java
+++ b/core/src/main/java/brooklyn/entity/basic/EntityPredicates.java
@@ -19,6 +19,7 @@
package brooklyn.entity.basic;
import java.util.Collection;
+import java.util.regex.Pattern;
import javax.annotation.Nullable;
@@ -30,6 +31,7 @@ import brooklyn.event.AttributeSensor;
import brooklyn.location.Location;
import brooklyn.util.collections.CollectionFunctionals;
import brooklyn.util.guava.SerializablePredicate;
+import brooklyn.util.javalang.Reflections;
import brooklyn.util.text.StringPredicates;
import com.google.common.base.Objects;
@@ -271,9 +273,38 @@ public class EntityPredicates {
// ---------------------------
/**
+ * @param typeRegex a regular expression
+ * @return true if any of the interfaces implemented by the entity (including those derived) match typeRegex.
+ */
+ public static Predicate<Entity> hasInterfaceMatching(String typeRegex) {
+ return new ImplementsInterface(typeRegex);
+ }
+
+ protected static class ImplementsInterface implements SerializablePredicate<Entity> {
+ protected final Pattern pattern;
+
+ public ImplementsInterface(String typeRegex) {
+ this.pattern = Pattern.compile(typeRegex);
+ }
+
+ @Override
+ public boolean apply(@Nullable Entity input) {
+ if (input == null) return false;
+ for (Class<?> cls : Reflections.getAllInterfaces(input.getClass())) {
+ if (pattern.matcher(cls.getName()).matches()) {
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+ // ---------------------------
+
+ /**
* Returns a predicate that determines if a given entity is a direct child of this {@code parent}.
*/
- public static <T> Predicate<Entity> isChildOf(final Entity parent) {
+ public static Predicate<Entity> isChildOf(final Entity parent) {
return new IsChildOf(parent);
}
@@ -307,7 +338,7 @@ public class EntityPredicates {
// ---------------------------
- public static <T> Predicate<Entity> isMemberOf(final Group group) {
+ public static Predicate<Entity> isMemberOf(final Group group) {
return new IsMemberOf(group);
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7b57f99b/core/src/test/java/brooklyn/entity/basic/EntityPredicatesTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/basic/EntityPredicatesTest.java b/core/src/test/java/brooklyn/entity/basic/EntityPredicatesTest.java
index 9394b85..bfa6933 100644
--- a/core/src/test/java/brooklyn/entity/basic/EntityPredicatesTest.java
+++ b/core/src/test/java/brooklyn/entity/basic/EntityPredicatesTest.java
@@ -26,6 +26,7 @@ import org.testng.annotations.Test;
import brooklyn.entity.BrooklynAppUnitTestSupport;
import brooklyn.entity.proxying.EntitySpec;
+import brooklyn.entity.trait.Changeable;
import brooklyn.location.Location;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.text.StringPredicates;
@@ -113,4 +114,14 @@ public class EntityPredicatesTest extends BrooklynAppUnitTestSupport {
assertTrue(EntityPredicates.locationsIncludes(loc).apply(entity));
assertFalse(EntityPredicates.locationsIncludes(loc).apply(app));
}
+
+ @Test
+ public void testHasInterfaceMatching() throws Exception {
+ assertTrue(EntityPredicates.hasInterfaceMatching(".*").apply(entity));
+ assertTrue(EntityPredicates.hasInterfaceMatching(".*TestEntity").apply(entity));
+ assertFalse(EntityPredicates.hasInterfaceMatching(".*TestEntity").apply(group));
+ assertTrue(EntityPredicates.hasInterfaceMatching(Changeable.class.getName()).apply(group));
+ assertTrue(EntityPredicates.hasInterfaceMatching(".*C.*able").apply(group));
+ }
+
}
[3/5] incubator-brooklyn git commit: Rest ApplicationApi can filter
applications by interface type
Posted by sj...@apache.org.
Rest ApplicationApi can filter applications by interface type
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/a5debedc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/a5debedc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/a5debedc
Branch: refs/heads/master
Commit: a5debedc395dca1aad887b55d446f069137ec535
Parents: 7b57f99
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Tue Apr 28 20:14:02 2015 +0100
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Tue May 5 12:14:59 2015 +0100
----------------------------------------------------------------------
.../src/main/java/brooklyn/rest/api/ApplicationApi.java | 6 ++++++
.../brooklyn/rest/resources/ApplicationResource.java | 12 ++++++++++++
2 files changed, 18 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a5debedc/usage/rest-api/src/main/java/brooklyn/rest/api/ApplicationApi.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/api/ApplicationApi.java b/usage/rest-api/src/main/java/brooklyn/rest/api/ApplicationApi.java
index 9292197..865024a 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/api/ApplicationApi.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/api/ApplicationApi.java
@@ -76,6 +76,12 @@ public interface ApplicationApi {
value = "Fetch list of applications, as ApplicationSummary objects",
responseClass = "brooklyn.rest.domain.ApplicationSummary"
)
+ public List<ApplicationSummary> list(
+ @ApiParam(value = "Regular expression to filter by", required = false)
+ @DefaultValue(".*")
+ @QueryParam("typeRegex") String typeRegex);
+
+ /** As {@link #list(String)}, filtering for <code>.*</code>. */
public List<ApplicationSummary> list();
@GET
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a5debedc/usage/rest-server/src/main/java/brooklyn/rest/resources/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/main/java/brooklyn/rest/resources/ApplicationResource.java b/usage/rest-server/src/main/java/brooklyn/rest/resources/ApplicationResource.java
index fbee750..27a93a9 100644
--- a/usage/rest-server/src/main/java/brooklyn/rest/resources/ApplicationResource.java
+++ b/usage/rest-server/src/main/java/brooklyn/rest/resources/ApplicationResource.java
@@ -22,6 +22,9 @@ import static com.google.common.base.Preconditions.checkNotNull;
import static javax.ws.rs.core.Response.created;
import static javax.ws.rs.core.Response.status;
import static javax.ws.rs.core.Response.Status.ACCEPTED;
+
+import brooklyn.entity.basic.EntityPredicates;
+import brooklyn.util.text.Strings;
import io.brooklyn.camp.spi.AssemblyTemplate;
import java.io.StringReader;
@@ -216,9 +219,18 @@ public class ApplicationResource extends AbstractBrooklynRestResource implements
@Override
public List<ApplicationSummary> list() {
+ return list(".*");
+ }
+
+ @Override
+ public List<ApplicationSummary> list(String typeRegex) {
+ if (Strings.isBlank(typeRegex)) {
+ typeRegex = ".*";
+ }
return FluentIterable
.from(mgmt().getApplications())
.filter(EntitlementPredicates.isEntitled(mgmt().getEntitlementManager(), Entitlements.SEE_ENTITY))
+ .filter(EntityPredicates.hasInterfaceMatching(typeRegex))
.transform(ApplicationTransformer.FROM_APPLICATION)
.toList();
}
[4/5] incubator-brooklyn git commit: This closes #625
Posted by sj...@apache.org.
This closes #625
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/91e6ab1b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/91e6ab1b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/91e6ab1b
Branch: refs/heads/master
Commit: 91e6ab1b54fabd62e283095c9db498664dbbae17
Parents: 78776ca c2724ce
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Tue May 5 12:45:49 2015 +0100
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Tue May 5 12:45:49 2015 +0100
----------------------------------------------------------------------
.../brooklyn/launcher/BrooklynWebServer.java | 26 +++++++++++++++++++-
.../launcher/BrooklynWebServerTest.java | 15 ++++++++---
2 files changed, 37 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
[5/5] incubator-brooklyn git commit: This closes #616
Posted by sj...@apache.org.
This closes #616
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/d0cbcf36
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/d0cbcf36
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/d0cbcf36
Branch: refs/heads/master
Commit: d0cbcf36cf701d9162be74a144cf1bd26741637e
Parents: 91e6ab1 a5debed
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Tue May 5 12:46:30 2015 +0100
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Tue May 5 12:46:30 2015 +0100
----------------------------------------------------------------------
.../brooklyn/entity/basic/EntityPredicates.java | 35 ++++++++++++++++++--
.../entity/basic/EntityPredicatesTest.java | 11 ++++++
.../java/brooklyn/rest/api/ApplicationApi.java | 6 ++++
.../rest/resources/ApplicationResource.java | 12 +++++++
4 files changed, 62 insertions(+), 2 deletions(-)
----------------------------------------------------------------------