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 <[email protected]> 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:[email protected]/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.