brooklyn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aled Sage <aled.s...@gmail.com>
Subject Re: [PROPOSAL] YAML dsl enhancements
Date Fri, 11 Nov 2016 11:58:51 GMT
Hi all,

@tbouron and @googlielmo reviewed and approved the first PR [2], so I've 
merged that now. Thomas also made use of it for his tests in 
https://github.com/brooklyncentral/brooklyn-riak-cluster/pull/1.

Any comments, or shall I push on with the second part of the proposal 
("Get child/member by index")?

Aled


On 08/11/2016 17:51, Aled Sage wrote:
> Hi all,
>
> I'd like us to make a few enhancements to the YAML DSL support. These 
> are mostly motivated by trying to write some more complicated YAML 
> test case examples.
>
> _*$brooklyn:entity() to support nested DSLs*_
> See [1], and the PR at [2].
>
> For example, being able to write:
>
> $brooklyn:entity(config("targetId")).attributeWhenReady("main.uri")
>
> This looks up the entity with the id specified in the targetId config, 
> and then retrieves the main.uri sensor value from that entity.
>
> Currently, $brooklyn:entity() takes a string for the id of an entity 
> to be looked up. However, in more dynamic situations the entity's id 
> is only available on-the-fly as a sensor value (or a sensor value that 
> is set to the entity itself).
>
> In the example below, the "loop-test" will go through the members of 
> the Riak cluster, and will run the test-http against each. That test 
> entity will then lookup the main.uri from that riak cluster member.
>
>    services:
>    - type: org.apache.brooklyn.entity.nosql.riak.RiakCluster
>       id: target-app
>    ...
>    - type: 
> org.apache.brooklyn.test.framework.LoopOverGroupMembersTestCase
>       name: "Value replicated on all Riak nodes"
>       brooklyn.config:
>         target: target-app
>         testSpec:
>           $brooklyn:entitySpec:
>             type: org.apache.brooklyn.test.framework.TestHttpCall
>             brooklyn.config:
>               url:
> $brooklyn:entity(config("targetId")).attributeWhenReady("main.uri")
>               applyAssertionTo: status
>               assert:
>                 equals: 200
>
> We'd also support retrieving a $brooklyn:entity() from sensor that 
> points at the actual entity (rather than at the entity's id).
>
> _*Get child/member by index*_
> Currently, the $brooklyn:entity() and its variants takes an entity's 
> id. It would be useful to be able to retrieve entities in other ways, 
> without knowing their ids (particularly when those entities are nested 
> inside a blueprint that someone else wrote).
>
> For example, we could retrieve the main.uri of the first and second 
> members of a cluster by doing:
>
> $brooklyn:entity("riak-cluster").member(0).attributeWhenReady("main.uri")
> $brooklyn:entity("riak-cluster").member(1).attributeWhenReady("main.uri")
>
> We could similarly retrieve a child by index.
>
> This would be very useful for tests that write data using the first 
> member, and then read the data using the second member of the cluster.
>
> _*Other enhancements?*_
> I suggest that we make improvements incrementally, starting with these.
>
> However, does anyone have any other enhancements that they'd really 
> like to see?
>
> Aled
>
> [1] https://issues.apache.org/jira/browse/BROOKLYN-381
> [2] https://github.com/apache/brooklyn-server/pull/417
>
>


Mime
View raw message