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.



Reply via email to