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
- Brooklyn has now graduated to an Apache top-level project - this is our first release without the “incubating” designation.
- A new YAML editor that supports syntax highlighting and other conveniences for editing blueprints.
- 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. - 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. - New locations can be added to the catalog with an easy-to-use wizard.
$brooklyn:external(...)
extension for taking values from other sources is supported in more places.- OSGi-native mode using Karaf, to simplify packaging of blueprints.
- A new pure-java WinRM client (winrm4j). This eliminates a number of large dependencies, reducing the size of Brooklyn.
- jclouds and several other dependencies updated to newer versions.
- Performance and reliability improvements.
- 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:
-
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.
-
Major: Locations set in YAML or on a spec are no longer passed to
child.start(...)
byAbstractApplication
; this has no effect in most cases asSoftwareProcess.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 toEntity.getLocations()
in some cases will not show parent locations, unless discovered and set locally e.g.start()
. The new methodEntities.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 explicitlocations: []
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. -
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
. -
The name of the sensor
VanillaWindowsProcess.WINRM_PORT
has been changed fromwinrmPort
towinrm.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 keywinrm.port
. -
The name of the sensor
VanillaWindowsProcess.RDP_PORT
has been changed fromrdpPort
tordp.port
.
If you are referencing this sensor in blueprint DSL or somewhere else please use the keyrdp.port
. -
Location resolvers now generate
LocationSpec
instances instead ofLocation
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 ofLocationResolver
need to be updated to conform to the new interface. -
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 requirelocalhost
to be available on boot, define it as a named location inbrooklyn.properties
or the default catalog. (The propertybrooklyn.location.name.localhost=localhost
is usually sufficient.)
For changes in prior versions, please refer to the release notes for 0.8.0.