Hi David,
That's probably related to a previous thread - 
http://mail-archives.apache.org/mod_mbox/brooklyn-dev/201604.mbox/%3CCADkof5ZX_pCP+YZzKd28gjfiJWLxCjMiiFWve0aYh2=4nxz...@mail.gmail.com%3E
 
<http://mail-archives.apache.org/mod_mbox/brooklyn-dev/201604.mbox/%3CCADkof5ZX_pCP+YZzKd28gjfiJWLxCjMiiFWve0aYh2=4nxz...@mail.gmail.com%3E>

When resolving resources the catalog item in the current context is used, its 
libraries in particular. Currently Brooklyn automatically populates its catalog 
from the entities on the classpath which means that there's a java entity 
called org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess and a 
catalog item with the same id. Catalog items take precedence over java entities 
when resolving the yaml. 
What happens is that when resolving your yaml, 
"org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess" will point to 
the Brooklyn provided catalog item which doesn't have any libraries defined, so 
loading resources will fail.
When you use the old package name 
"brooklyn.entity.basic.VanillaSoftwareProcess" there's no catalog item with the 
same name, so it's resolved directly to the java entity, so the catalog item 
context doesn't change and you can still use your libraries.

To work around it add a "java:" prefix to the entity names. This will skip 
loading catalog items and go straight to the java entity.

The current behaviour is not really user friendly so we need to find a better 
way at resolving the resources, but at least the workaround is easy to apply 
for the time being.

Svet.


> On 12.05.2016 г., at 14:32, David Bush <[email protected]> wrote:
> 
> Hi,
> 
> Hopefully this carries enough explanation - please ask if not.  
> 
> I have found a difference in behaviour between 
> org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess and 
> brooklyn.entity.basic.VanillaSoftwareProcess which was not expected.
> 
> Using the first prefix I am unable to resolve resources from the classpath, 
> whereas with the second prefix I can (examples below).
> 
> I understood that these should be equivalent and that under the covers a 
> mapping is made from the old to new versions?
> 
> Is this unexpected?  
> 
> Nonworking example (no difference if SameServerEntity is basic or apache):
> 
>>> brooklyn.catalog:
>>>  items:
>>>  - id: vc-node
>>>    itemType: template
>>>    item:
>>>      services:
>>>      - type: brooklyn.entity.basic.SameServerEntity
>>>        brooklyn.children:
>>>        - type: 
>>> org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess
>>>          id: consul
>>>          name: consul
> 
> Working example:
> 
> brooklyn.catalog:
>  items:
>  - id: vc-node
>    itemType: template
>    item:
>      services:
>      - type: brooklyn.entity.basic.SameServerEntity
>        brooklyn.children:
>        - type: brooklyn.entity.basic.VanillaSoftwareProcess
>          id: consul
>          name: consul
> 
> -- 
> David Bush • Systems Integrator • Cloudsoft Corporation • 
> http://www.cloudsoftcorp.com <http://www.cloudsoftcorp.com/>
> T: 07834 127195 • SKYPE: david.c.bush
> 

Reply via email to