Return-Path: X-Original-To: apmail-brooklyn-dev-archive@minotaur.apache.org Delivered-To: apmail-brooklyn-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E615717B3F for ; Thu, 25 Sep 2014 22:22:24 +0000 (UTC) Received: (qmail 50591 invoked by uid 500); 25 Sep 2014 22:22:24 -0000 Delivered-To: apmail-brooklyn-dev-archive@brooklyn.apache.org Received: (qmail 50551 invoked by uid 500); 25 Sep 2014 22:22:24 -0000 Mailing-List: contact dev-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 dev@brooklyn.incubator.apache.org Received: (qmail 50539 invoked by uid 99); 25 Sep 2014 22:22:24 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 25 Sep 2014 22:22:24 +0000 X-ASF-Spam-Status: No, hits=-2.3 required=5.0 tests=RCVD_IN_DNSWL_MED,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of josec@lcc.uma.es designates 150.214.57.2 as permitted sender) Received: from [150.214.57.2] (HELO correo2.satd.uma.es) (150.214.57.2) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 25 Sep 2014 22:21:58 +0000 Received: from sol10.lcc.uma.es (sol10.lcc.uma.es [150.214.108.1]) by correo2.satd.uma.es (Postfix) with ESMTP id 9F87E1182B2 for ; Fri, 26 Sep 2014 00:21:54 +0200 (CEST) Received: from webmail.lcc.uma.es (sol10.lcc.uma.es [150.214.108.1]) by sol10.lcc.uma.es (Postfix) with ESMTP id 863914B0018 for ; Fri, 26 Sep 2014 00:21:54 +0200 (CEST) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Date: Fri, 26 Sep 2014 00:21:54 +0200 From: josec To: dev@brooklyn.incubator.apache.org Subject: Re: Problem using ConfigKey> In-Reply-To: References: <54245BEA.3060603@lcc.uma.es> Message-ID: X-Sender: josec@lcc.uma.es User-Agent: RoundCube Webmail/0.8.5 X-SATD-MailScanner-Information: Please contact the ISP for more information X-SATD-MailScanner-ID: 9F87E1182B2.AC314 X-SATD-MailScanner: Found to be clean X-SATD-MailScanner-From: josec@lcc.uma.es X-Virus-Checked: Checked by ClamAV on apache.org X-Old-Spam-Status: No Hi Andrew, Thanks for your reply. I checked this class las afternoon, but I do not undertand how the keySet(in this case d_DatabaseHost and g_DatabasePort) is returned by MapConfigKey. This keys are specified by the user, so they arenot known by the Java code in runtime. However I can find the next lines: MapConfigKey SALT_FORMULAS = new MapConfigKey(String.class, "salt.formulaUrls", "Map of Salt formula URLs (normally GutHub repository archives from the salt-formulas user)"); and Map formulas = app.getConfig(SaltConfig.SALT_FORMULAS); So, I hope formulas.keySet() returns <"g_DatabaseHost", "g_DatabasePort">, then I could interate over the map I think it could be working good, I will tell you. :) Thanks a lot. Jose El 25.09.2014 23:47, Andrew Kennedy escribió: > Jose, Hi. > > There are some issues using $brooklyn functions and deferred values > using Map valued ConfigKeys at the moment, which I am working on > resolving in pull request #182, however in the mean time I suggest you > try this: > > Change the type of the key to MapConfigKey, declared like this: > > MapConfigKey DB_CONNECTION_CONFIG_PARAMS = new > MapConfigKey(Object.class, "php.db.connection.config.params"); > > Then you should be able to specify the configuration in the YAML like > this: > > brooklyn.config: > db_connection_config_params: > g_DatabaseHost: > $brooklyn:component("db").attributeWhenReady("datastore.url") > g_DatabasePort: > $brooklyn:component("db").attributeWhenReady("mysql.port") > > Hopefully this is helpful. > > Cheers, > Andrew. > -- > -- andrew kennedy ? cloud engineer : > http://blog.abstractvisitorpattern.co.uk/ ; > > > On 25 September 2014 19:16, Jose Carrasco wrote: >> Hello, >> >> I am currently developing a new entities for Brooklyn (into SeaClouds >> project context). >> I have found a problem using the ConfigKey. >> >> I am using a ConfigKey> to my entity the >> parameters >> necessaty to stablish a database >> connection. I have decided to use a Map because the user could find a >> smart >> and flexible way flexible to specify >> several attributes and their values, e.g.: >> >> name: PHP HelloWorld >> services: >> - serviceType: brooklyn.entity.webapp.apache.ApacheServer >> name: Apache Server >> location: localhost >> brooklyn.config: >> http_port: 80 >> app_git_repo_url:https://bitbucket.org/seaclDem/nurocasestudyphp5-5.git >> >> db_connection_config_params: >> g_DatabaseHost: $brooklyn:formatString("%s", >> component("db").attributeWhenReady("datastore.url")) >> g_DatabasePort: >> $brooklyn:component("db").attributeWhenReady("mysql.port") >> >> - serviceType: brooklyn.entity.database.mysql.MySqlNode >> id: db >> name: My DB >> location: localhost >> brooklyn.config: >> datastore.creation.script.url: >> file:///root/Desktop/brooklynTest/create.sql >> >> In this example the db_connection_config_params is a MapConfigKey: >> >> @SetFromFlag("db_connection_config_params") >> public static final ConfigKey> >> DB_CONNECTION_CONFIG_PARAMS = new BasicConfigKey( >> Map.class, "php.db.connection.config.params", "PHP >> application >> file to start e.g. main.php, or launch.php"); >> >> Which contains two items which are used to configure the database. In >> this >> case, the values of the >> aforementioned items are provided by MySQL entity. It works ok. >> Here, I find a problem getting the values of the g_DatabaseHost and >> g_DatabasePort in my java code. When >> I read the values of the aforementiond items the returned values are >> $brooklyn:formatString("%s"). >> >> I have changed the YAML definition using: >> >> g_DatabaseHost: >> $brooklyn:component("db").attributeWhenReady("datastore.url")) >> g_DatabasePort: >> $brooklyn:component("db").attributeWhenReady("mysql.port") >> >> But I have obteined >> $brooklyn:component("db").attributeWhenReady("datastore.url")) and >> $brooklyn:component("db").attributeWhenReady("mysql.portl")) >> respectively. >> >> I thought the problem could be the component values request (e.g. >> $brooklyn:component("db"). >> attributeWhenReady("datastore.url"))), then I assinged these values to >> simple ConfigKey but >> they worked good. >> >> Thus, the problem may be ConfigKey> parser does not evalue the >> expresions which uses >> $brooklyn:... but I do not know. >> >> Could anyone point me in the right direction? Thank you very much. >> >> Thanks a lot, >> Jose. >> >> >>