Hi Richard-
What you're doing looks fine. Maybe something is wrong with the
"consul.serverReference" value, or there is a bug around special
treatment of parameters. The blueprint below shows what I think you're
doing, several ways, and all work, both in bash and in the config view
(IE fully resolved). If "consul.serverReference" doesn't resolve I see
the values you describe and I get a nice error in the Summary view when
I try to use it ( Error resolving config consul.serverReference,
$brooklyn:entity("MISSING"), ... NoSuchElementException: No entity
matching id).
Can you share your blueprint?
Best
Alex
location: localhost
services:
- type: org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess
id: consul.server
launch.command: |
echo hello | nc -l 4321 &
echo $! > $PID_FILE
- type: org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess
launch.command: |
echo hello | nc -l 4322 &
echo $! > $PID_FILE
brooklyn.config:
consul.serverReference: $brooklyn:entity("consul.server")
shell.env:
consul_join0:
$brooklyn:entity(config("consul.serverReference")).attributeWhenReady("entity.id")
consul_join1:
$brooklyn:entity(config("consul.join1")).attributeWhenReady("entity.id")
consul_join2: $brooklyn:config("consul.join2")
consul.join1: $brooklyn:config("consul.serverReference")
consul.join2:
$brooklyn:entity(config("consul.serverReference")).attributeWhenReady("entity.id")
END
On 17/07/2017 09:54, Richard Downer wrote:
Hello all.
I have a catalog item for an entity type. This has a number of parameters,
including one parameter which is intended to hold a reference to an entity.
This works fine; I can see in the "config" pane of the entity this:
consul.serverReference Consul Server (bootstrap)
What I want to do is extract some of the referenced entity's attributes and
use them in my entity's blueprint. I'm struggling to find out how to do
that. While experimenting, I've ended up with this in my blueprint:
consul.join1: $brooklyn:config("consul.serverReference")
consul.join2: $brooklyn:entity(config("consul.serverReference"))
consul.join3:
$brooklyn:component(config("consul.serverReference"))
consul.join4:
$brooklyn:config("consul.serverReference").attributeWhenReady("entity.id")
consul.join5:
$brooklyn:entity(config("consul.serverReference")).attributeWhenReady("
entity.id")
consul.join6:
$brooklyn:component(config("consul.serverReference")).attributeWhenReady("
entity.id")
None of those are resolving. They appear in the config pane looking like
this:
consul.join1
{"component":{"componentId":"","componentIdSupplier":null,"scopeComponent":null,"scope":"THIS"},"keyName":"consul.serverReference"}
consul.join2
{"componentId":null,"componentIdSupplier":{"component":{"componentId":"","componentIdSupplier":null,"scopeComponent":null,"scope":"THIS"},"keyName":"consul.serverReference"},"scopeComponent":null,"scope":"GLOBAL"}
consul.join3
{"componentId":null,"componentIdSupplier":{"component":{"componentId":"","componentIdSupplier":null,"scopeComponent":null,"scope":"THIS"},"keyName":"consul.serverReference"},"scopeComponent":null,"scope":"GLOBAL"}
consul.join4
{"object":{"component":{"componentId":"","componentIdSupplier":null,"scopeComponent":null,"scope":"THIS"},"keyName":"consul.serverReference"},"fnName":"attributeWhenReady","args":["
entity.id"]}
consul.join5
{"component":{"componentId":null,"componentIdSupplier":{"component":{"componentId":"","componentIdSupplier":null,"scopeComponent":null,"scope":"THIS"},"keyName":"consul.serverReference"},"scopeComponent":null,"scope":"GLOBAL"},"sensorName":"
entity.id"}
consul.join6
{"component":{"componentId":null,"componentIdSupplier":{"component":{"componentId":"","componentIdSupplier":null,"scopeComponent":null,"scope":"THIS"},"keyName":"consul.serverReference"},"scopeComponent":null,"scope":"GLOBAL"},"sensorName":"
entity.id"}
Is it possible to do what I want?
Thanks
Richard.