Hello Igor,

On Mar 1, 2013, at 17:35 , "Passchier, I. (Igor)" <[email protected]> wrote:

> I am operating a set of OSGi platforms, based on apache Felix, which I would 
> like to manage with apache ace. Most bundles are developed by ourselves, 
> where dependency and configuration is automated with SCR. Currently platform 
> management and configuration is done via Felix webconsole. I tried to find a 
> way to supply configuration data via apache ace, but to no avail.

ACE supports the "Auto Configuration Specification" as described in the OSGi 
Compendium chapter 115.

We should probably do a better job at documenting how this works though.

> In the various mailing list and source code, I found references to the xml 
> metatype description, but deploying these via Ace fails in the deployment 
> stage. I also found references to the use .cfg files containing key/value 
> pairs, but these I cannot add on the server side ("no artifact recognizer").

You should not use the .cfg files, unless you write a resource processor for 
them yourself, but that is not the easiest way.

> How can I deploy configuration data to my osgi targets via Ace, preferably 
> depending on some properties of my targets?

There are a couple of things you need to do:

1) Add an artifact to ACE that implements the Auto Configuration resource 
processor. I suggest you either download the latest release from [1] or build 
it from source (it's part of Apache Felix) yourself. Note that when you add 
this artifact to ACE, it will *not* become visible in the left most column, but 
it will be in the OBR. If you omit this step, things will seem to work, but you 
cannot deploy configurations as at deploy time it will try to ship the resource 
processor automatically along with the xml configurations.

2) Create an xml configuration that complies to the specification, and upload 
that as an artifact as well. It should be visible, and you should be able to 
assign it to a feature and get it on a target just like you would with bundles.

3) Now deploy. :)

To answer your final question, there is one extra feature that ACE supports for 
these xml config files, and that is they can be processed using Velocity. That 
means you can make a configuration file that really is a template, and in the 
template you can define variables that will be replaced with values.

Now how can you provide values for these variables?

Go to a target in the UI, double click it, then go to the tag editor. Here you 
can enter key/value pairs and these will be used to fill out your template. If 
you have a variable called "hostname" there, you should use the following in 
the xml file: "${context.hostname}". So, always prefix them with "context.".

If you want to do more fancy things, check out the Velocity website.

For more advanced use, you can also add tags to features or distributions. That 
is sometimes useful if you have a configuration value for a whole group of 
targets.

Hope this helps. If not, let me know!

Greetings, Marcel


[1] http://felix.apache.org/downloads.cgi

Reply via email to