brooklyn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From josec <jo...@lcc.uma.es>
Subject Re: Problem using ConfigKey<Map<String, String>>
Date Thu, 25 Sep 2014 22:21:54 GMT
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<String> SALT_FORMULAS = new 
MapConfigKey<String>(String.class,
             "salt.formulaUrls", "Map of Salt formula URLs (normally 
GutHub repository archives from the salt-formulas user)");

and

Map<String, String> 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<Object> DB_CONNECTION_CONFIG_PARAMS = new
> MapConfigKey<Object>(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 <josec@lcc.uma.es> 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<Map< String, String>> 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
>> <https://seaclDem:seaclouds@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<Map<String,String>>
>> 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<String>  but
>> they worked good.
>> 
>> Thus, the problem may be ConfigKey<Map<,>> 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.
>> 
>> 
>> 

Mime
View raw message