Return-Path: X-Original-To: apmail-brooklyn-commits-archive@minotaur.apache.org Delivered-To: apmail-brooklyn-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 57C3317647 for ; Tue, 1 Sep 2015 15:16:33 +0000 (UTC) Received: (qmail 42760 invoked by uid 500); 1 Sep 2015 15:16:33 -0000 Delivered-To: apmail-brooklyn-commits-archive@brooklyn.apache.org Received: (qmail 42738 invoked by uid 500); 1 Sep 2015 15:16:33 -0000 Mailing-List: contact commits-help@brooklyn.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@brooklyn.incubator.apache.org Delivered-To: mailing list commits@brooklyn.incubator.apache.org Received: (qmail 42729 invoked by uid 99); 1 Sep 2015 15:16:33 -0000 Received: from Unknown (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 01 Sep 2015 15:16:33 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id C554218234D for ; Tue, 1 Sep 2015 15:16:32 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.775 X-Spam-Level: * X-Spam-Status: No, score=1.775 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.006, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-eu-west.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id L-Fpk8Cfyfa4 for ; Tue, 1 Sep 2015 15:16:27 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-eu-west.apache.org (ASF Mail Server at mx1-eu-west.apache.org) with SMTP id 2BE0434686 for ; Tue, 1 Sep 2015 15:16:25 +0000 (UTC) Received: (qmail 42337 invoked by uid 99); 1 Sep 2015 15:16:24 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 01 Sep 2015 15:16:24 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 7A829E0440; Tue, 1 Sep 2015 15:16:24 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: heneveld@apache.org To: commits@brooklyn.incubator.apache.org Date: Tue, 01 Sep 2015 15:16:31 -0000 Message-Id: <47ee93e83f6e42f7ac890e57aa6a73a9@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [08/28] incubator-brooklyn git commit: Brooklyn YAML supports deferred value resolution via $brooklyn:external(). Brooklyn YAML supports deferred value resolution via $brooklyn:external(). Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/f9cf4966 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/f9cf4966 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/f9cf4966 Branch: refs/heads/master Commit: f9cf496675ab6dfac5e864f48c302692e198feb3 Parents: 3ed391a Author: Alasdair Hodge Authored: Mon Jun 22 16:53:14 2015 +0100 Committer: Alasdair Hodge Committed: Tue Aug 25 11:51:20 2015 +0100 ---------------------------------------------------------------------- .../spi/dsl/methods/BrooklynDslCommon.java | 65 ++++++++++++++++++++ 1 file changed, 65 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f9cf4966/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java index 52122bf..67c31f3 100644 --- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java +++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java @@ -21,6 +21,7 @@ package org.apache.brooklyn.camp.brooklyn.spi.dsl.methods; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.concurrent.Callable; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.mgmt.Task; @@ -48,6 +49,30 @@ import org.apache.brooklyn.util.text.Strings; import org.apache.brooklyn.util.text.StringEscapes.JavaStringEscapes; import org.apache.commons.beanutils.BeanUtils; +import brooklyn.config.external.ExternalConfigSupplier; +import brooklyn.entity.Entity; +import brooklyn.entity.basic.EntityDynamicType; +import brooklyn.entity.basic.EntityInternal; +import brooklyn.entity.trait.Configurable; +import brooklyn.event.Sensor; +import brooklyn.event.basic.DependentConfiguration; +import brooklyn.management.Task; +import brooklyn.management.TaskAdaptable; +import brooklyn.management.TaskFactory; +import brooklyn.management.internal.ExternalConfigSupplierRegistry; +import brooklyn.management.internal.ManagementContextInternal; +import brooklyn.util.collections.MutableMap; +import brooklyn.util.config.ConfigBag; +import brooklyn.util.exceptions.Exceptions; +import brooklyn.util.flags.ClassCoercionException; +import brooklyn.util.flags.FlagUtils; +import brooklyn.util.flags.TypeCoercions; +import brooklyn.util.javalang.Reflections; +import brooklyn.util.task.DeferredSupplier; +import brooklyn.util.text.StringEscapes.JavaStringEscapes; +import brooklyn.util.text.Strings; +import brooklyn.util.task.Tasks; + import com.google.common.base.Function; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; @@ -297,4 +322,44 @@ public class BrooklynDslCommon { } } + /** + * Defers to management context's {@link ExternalConfigSupplierRegistry} to resolve values at runtime. + * The name of the appropriate {@link ExternalConfigSupplier} is captured, along with the key of + * the desired config value. + */ + public static DslExternal external(final String providerName, final String key) { + return new DslExternal(providerName, key); + } + protected final static class DslExternal extends BrooklynDslDeferredSupplier { + private static final long serialVersionUID = -3860334240490397057L; + private final String providerName; + private final String key; + + public DslExternal(String providerName, String key) { + this.providerName = providerName; + this.key = key; + } + + @Override + public Task newTask() { + return Tasks.builder() + .name("resolving external configuration: '" + key + "' from provider '" + providerName + "'") + .dynamic(false) + .body(new Callable() { + @Override + public Object call() throws Exception { + EntityInternal entity = (EntityInternal) BrooklynDslDeferredSupplier.entity(); + ManagementContextInternal managementContext = (ManagementContextInternal) entity.getManagementContext(); + return managementContext.getExternalConfigProviderRegistry().getConfig(providerName, key); + } + }) + .build(); + } + + @Override + public String toString() { + return "$brooklyn:external("+providerName+", "+key+")"; + } + } + }