Release Notes

Version 0.9.0

Thanks go to our community for their improvements, feedback and guidance, and to Brooklyn’s commercial users for funding much of this development.

New Features

  1. Brooklyn has now graduated to an Apache top-level project - this is our first release without the “incubating” designation.
  2. A new YAML editor that supports syntax highlighting and other conveniences for editing blueprints.
  3. The br command line tool allows Brooklyn to be controlled from a shell and to be scripted. You no longer need to use the web UI or REST API to control Brooklyn.
  4. Parameters (config keys) can now be defined in YAML, using brooklyn.parameters. This allows YAML entities to advertise how they should be parameterized, for use in the UI and in documentation tools, and do coercion on these values. For a good demonstration, see the “Custom Entities” section of the YAML chapter of the user guide.
  5. New locations can be added to the catalog with an easy-to-use wizard.
  6. $brooklyn:external(...) extension for taking values from other sources is supported in more places.
  7. OSGi-native mode using Karaf, to simplify packaging of blueprints.
  8. A new pure-java WinRM client (winrm4j). This eliminates a number of large dependencies, reducing the size of Brooklyn.
  9. jclouds and several other dependencies updated to newer versions.
  10. Performance and reliability improvements.
  11. Our source code repository is now split into modules covering broad areas of functionality. Combined with some cleanup, this significantly reduces the size of data that needs to be downloaded when cloning the repository.

Backwards Compatibility

Changes since 0.8.0-incubating:

  1. Major: The classes HttpTool and HttpToolResponse in brooklyn-core (package org.apache.brooklyn.util.core.http) have been moved to brooklyn-utils-common, in package org.apache.brooklyn.util. Classes such as HttpFeed that previously returned org.apache.brooklyn.util.core.http.HttpToolResponse in some methods now return org.apache.brooklyn.util.HttpToolResponse.

  2. Major: Locations set in YAML or on a spec are no longer passed to child.start(...) by AbstractApplication; this has no effect in most cases as SoftwareProcess.start looks at local and inherited locations, but in ambiguous cases it means that locally defined locations are now preferred. Other classes of entities may need to do similar behaviour, and it means that calls to Entity.getLocations() in some cases will not show parent locations, unless discovered and set locally e.g. start(). The new method Entities.getAllInheritedLocations(Entity) can be used to traverse the hierarchy. It also means that when a type in the registry (catalog) includes a location, and a caller references it, that location will now take priority over a location defined in a parent. Additionally, any locations specified in YAML extending the registered type will now replace locations on the referenced type; this means in many cases an explicit locations: [] when extending a type will cause locations to be taken from the parent or application root in YAML. Related to this, tags from referencing specs now preceed tags in the referenced types, and the referencing catalog item ID also takes priority; this has no effect in most cases, but if you have a chain of referenced types blueprint plan source code and the catalog item ID are now set correctly.

  3. Task cancellation is now propagated to dependent submitted tasks, including backgrounded tasks if they are transient. Previously when a task was cancelled the API did not guarantee semantics but the behaviour was to cancel sub-tasks only in very limited cases. Now the semantics are more precise and controllable, and more sub-tasks are cancelled. This can prevent some leaked waits on attributeWhenReady.

  4. The name of the sensor VanillaWindowsProcess.WINRM_PORT has been changed from winrmPort to winrm.port.
    During the development some wrong named sensors appeared for WINRM_PORT. They are still there for backwards compatibility but they are deprecated.
    If you are referencing this sensor in blueprint DSL or somewhere else please use the key winrm.port.

  5. The name of the sensor VanillaWindowsProcess.RDP_PORT has been changed from rdpPort to rdp.port.
    If you are referencing this sensor in blueprint DSL or somewhere else please use the key rdp.port.

  6. Location resolvers now generate LocationSpec instances instead of Location instances. This makes it clearer when locations become managed and prevents a memory leak which can happen when some locations are never unmanaged. All implementations of LocationResolver need to be updated to conform to the new interface.

  7. The named location localhost is no longer automatically added by default on a fresh Brooklyn install. Instead UI users are directed to a location wizard where they can configure their targets, including localhost. If you require localhost to be available on boot, define it as a named location in brooklyn.properties or the default catalog. (The property brooklyn.location.name.localhost=localhost is usually sufficient.)

For changes in prior versions, please refer to the release notes for 0.8.0.