You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brooklyn.apache.org by Alex Heneveld <al...@cloudsoftcorp.com> on 2015/02/09 16:22:22 UTC

Upgrading blueprint versions of instances

Hi folks,

A big feature people have requested is to make it easier to change the 
version of a blueprint being used to manage a given entity or application.

Here's the use case:

* I installed MyAppBlueprint v1 to the catalog, and deployed an instance.
* I now have an updated MyAppBlueprint v2, which I've installed to the 
catalog.
* I know that v2 is compatible with my existing deployments, and want to 
switch the management logic

With OSGi versioning support @neykov has done a great job of making the 
catalog support multiple versions, and allowing us to run multiple 
versions of the same blueprint at the same time. `catalogItemId` makes 
it clear which version -- and which code -- is in charge of any one entity.

PR #506 [1] solves the technical side of allowing us to reload something 
already being managed and start managing it with a different version of 
the blueprint, without interrupting Brooklyn or interrupting management 
of other entities.  I think it also cleans up a lot of the management 
semantics (and makes room for a per-entity MANAGED_ELSEWHERE state).

Instructions for testing (and test cases) are in the notes for that PR. 
  Please try, and comments welcome.

A few known issues:

* You can only kick it off programmatically.
* If it fails, you get errors in the logs and the old entities remain in 
place; no GUI feedback.
* If there are any tasks to do as part of this upgrade, it can be 
tedious to define these.

To solve these I've been thinking what is the right sort of API model 
and GUI support.  I am thinking that the simplest way is to expose a 
"Server Internals" entity tree, with an entity for rebind and rebind 
problems.  (We can also hook web server controls and entitlements in 
here.)  We'd hide this in the Apps view, and give REST shortcuts, and 
then basically we get sensors/effectors with a serviceable GUI in here, 
and on top of which we could build nicer GUI support in time.

Thoughts on this?

Best
Alex


[1]  https://github.com/apache/incubator-brooklyn/pull/506


Re: Upgrading blueprint versions of instances

Posted by Aled Sage <al...@gmail.com>.
Alex,

Excellent, this will be really useful!

For the GUI support, I agree with your proposal: representing the 
management server(s) and parts of the server internals as entities. That 
will give us a lot of code re-use; improvements there will then benefit 
the GUI for other applications as well.

Aled


On 09/02/2015 15:22, Alex Heneveld wrote:
>
> Hi folks,
>
> A big feature people have requested is to make it easier to change the 
> version of a blueprint being used to manage a given entity or 
> application.
>
> Here's the use case:
>
> * I installed MyAppBlueprint v1 to the catalog, and deployed an instance.
> * I now have an updated MyAppBlueprint v2, which I've installed to the 
> catalog.
> * I know that v2 is compatible with my existing deployments, and want 
> to switch the management logic
>
> With OSGi versioning support @neykov has done a great job of making 
> the catalog support multiple versions, and allowing us to run multiple 
> versions of the same blueprint at the same time. `catalogItemId` makes 
> it clear which version -- and which code -- is in charge of any one 
> entity.
>
> PR #506 [1] solves the technical side of allowing us to reload 
> something already being managed and start managing it with a different 
> version of the blueprint, without interrupting Brooklyn or 
> interrupting management of other entities.  I think it also cleans up 
> a lot of the management semantics (and makes room for a per-entity 
> MANAGED_ELSEWHERE state).
>
> Instructions for testing (and test cases) are in the notes for that 
> PR.  Please try, and comments welcome.
>
> A few known issues:
>
> * You can only kick it off programmatically.
> * If it fails, you get errors in the logs and the old entities remain 
> in place; no GUI feedback.
> * If there are any tasks to do as part of this upgrade, it can be 
> tedious to define these.
>
> To solve these I've been thinking what is the right sort of API model 
> and GUI support.  I am thinking that the simplest way is to expose a 
> "Server Internals" entity tree, with an entity for rebind and rebind 
> problems.  (We can also hook web server controls and entitlements in 
> here.)  We'd hide this in the Apps view, and give REST shortcuts, and 
> then basically we get sensors/effectors with a serviceable GUI in 
> here, and on top of which we could build nicer GUI support in time.
>
> Thoughts on this?
>
> Best
> Alex
>
>
> [1]  https://github.com/apache/incubator-brooklyn/pull/506
>