You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ace.apache.org by Toni Menzel <to...@okidokiteam.com> on 2009/10/07 10:32:08 UTC
Installable Units in Ace
Is there in ace already a concept of "installable units" (p2 terminology) ?
Speaking of the fact that, if i make a group and assign it to a certain
gateway (through license), does the server know about the gateways
capabilities so it can make sure things are resolving ?
To me this would be a crucial concept, not because its coming from p2 but to
at all allow to automatically resolve dependencies for a group. (for
example).
Sure, because every gateway can be different, it is hard to manage this if
features are assembled on the server (web ui: clicking the triangle bundle)
and not on the gateway.
Any thoughts already in this direction ?
--
Toni Menzel
Independent Software Developer
Professional Profile: http://okidokiteam.com
toni@okidokiteam.com
http://www.ops4j.org - New Energy for OSS Communities - Open
Participation Software.
Re: Installable Units in Ace
Posted by Marcel Offermans <ma...@luminis.nl>.
Hello Toni,
On Oct 7, 2009, at 10:32 , Toni Menzel wrote:
> Is there in ace already a concept of "installable units" (p2
> terminology) ?
There probably isn't a direct equivalent of that, but both groups and
licenses could be seen as IU's (reading the definition at http://wiki.eclipse.org/Installable_Units
).
> Speaking of the fact that, if i make a group and assign it to a
> certain
> gateway (through license), does the server know about the gateways
> capabilities so it can make sure things are resolving ?
Currently we do not have any requirements and capabilities yet (like
IU's and also OBR specifies). If you look at the entities in the
repository though (component/bundle, group, license, target) they do
have ways of adding your own properties and those can be used for
resolving constraints. Also, if you look at the way we specify
associations between these entities, an association has a left an
right hand side. Each of these can be expressed as an LDAP query. Our
current UI creates them as (name=mybundle-1.0.0.jar) so the
association becomes a 1:1 association, but you can programmatically
also do stuff like creating associations that match more entities,
using something like (&(execution-env=java6)(category=core)).
> To me this would be a crucial concept, not because its coming from
> p2 but to
> at all allow to automatically resolve dependencies for a group. (for
> example).
I have mixed feelings about this.
On the one hand, resolving package dependencies definitely helps. You
can make sure at least everything resolves and starts. Same goes for
matching things like execution environment.
On the other hand...
One of the most important mechanisms in OSGi is the use of services
and those in general do not have any such metadata. Of course you
could parse XML files of Declarative Services and other similar
models, but there is no system in general to describe services in
terms of metadata. So at this level you cannot "resolve" services very
well.
I'm not a big fan of developers just selecting components and "seeing
what the cat drags in". For any application there should be a well
thought out design and a concious decision about what components and
dependencies to use and not to use. From this design you should be
able to directly "import" things like groups and licenses (or
installable units in p2 for that matter).
> Sure, because every gateway can be different, it is hard to manage
> this if
> features are assembled on the server (web ui: clicking the triangle
> bundle)
> and not on the gateway.
That exactly is the problem. Every gateway can be different and those
differences come from:
a) different framework implementations and launchers which export
things through the system bundle, support certain execution
environments, etc.
b) different bundles that might have already been installed outside of
the scope of the management agent
c) differences in actual wiring that can even occur if you install the
same set of bundles in a different order (especially if you do not
refresh everything)
One way to resolve this is to have the exact same resolver that your
framework would have and use that on the server. Such a resolver would
have to have either a current "snapshot" of the actual wiring and
installed set of bundles, or some feature for replaying all life cycle
changes in history (probably that's a lot of work if you have hundreds
of updates over time).
> Any thoughts already in this direction ?
One way to really test if some combination of groups and licenses will
work is to just deploy it to a test framework. So my advice in general
would be to setup a way of working where any new software or versions
of components are first deployed to a testing/staging environment
where they are not only installed, but where actual integration /
system / performance tests are deployed to really validate if
everything works correctly. Only after passing that stage can you mark
a certain set of components as "tested" or "stable" and roll them out
to production targets.
Greetings, Marcel