# # example showing how enrichers can be set # name: test-app-with-enrichers description: Testing many enrichers services: - type: org.apache.brooklyn.entity.group.DynamicCluster id: cluster location: localhost brooklyn.config: cluster.initial.size: 3 dynamiccluster.memberspec: $brooklyn:entitySpec: type: org.apache.brooklyn.core.test.entity.TestEntity brooklyn.enrichers: - type: org.apache.brooklyn.enricher.stock.Transformer # transform "ip" (which we expect a feed, not shown here, to set) to a URL; # you can curl an address string to the sensors/ip endpoint an entity to trigger these enrichers brooklyn.config: enricher.sourceSensor: $brooklyn:sensor("ip") enricher.targetSensor: $brooklyn:sensor("url") enricher.targetValue: $brooklyn:formatString("http://%s/", $brooklyn:attributeWhenReady("ip")) - type: org.apache.brooklyn.enricher.stock.Propagator # use propagator to duplicate one sensor as another, giving the supplied sensor mapping; # the other use of Propagator is where you specify a producer (using $brooklyn:entity(...) as below) # from which to take sensors; in that mode you can specify `propagate` as a list of sensors whose names are unchanged, # instead of (or in addition to) this map brooklyn.config: sensorMapping: $brooklyn:sensor("url"): $brooklyn:sensor("org.apache.brooklyn.core.entity.Attributes", "main.uri") brooklyn.enrichers: - type: org.apache.brooklyn.enricher.stock.Aggregator # aggregate `url` sensors from children into a list brooklyn.config: enricher.sourceSensor: $brooklyn:sensor("url") enricher.targetSensor: $brooklyn:sensor("urls.list") enricher.aggregating.fromMembers: true - type: org.apache.brooklyn.enricher.stock.Joiner # create a string from that list, for use e.g. in bash scripts brooklyn.config: enricher.sourceSensor: $brooklyn:sensor("urls.list") enricher.targetSensor: $brooklyn:sensor("urls.list.comma_separated.max_2") maximum: 2 # TODO infer uniqueTag, name etc uniqueTag: urls.list.comma_separated.max_2 - type: org.apache.brooklyn.enricher.stock.Joiner # pick one uri as the main one to use brooklyn.config: enricher.sourceSensor: $brooklyn:sensor("urls.list") enricher.targetSensor: $brooklyn:sensor("org.apache.brooklyn.core.entity.Attributes", "main.uri") quote: false maximum: 1 brooklyn.enrichers: - type: org.apache.brooklyn.enricher.stock.Propagator # if nothing specified for `propagating` or `sensorMapping` then # Propagator will do all but the usual lifecycle defaults, handy at the root! brooklyn.config: enricher.producer: $brooklyn:entity("cluster")