Hi Clément,
with a configurator plugin you run into the same problem as with
configuration plugins - the configurator plugin needs to be there in
order to work. So in addition to a plugin mechanism you would need a
mechanism to ensure the availability of the plugin. And this means you
can run into the same situations - just on a different level - as you
can run today with configuration plugins.
It's true that with Jürgen's possibility 2 you can't use an OSGi
configuration for your plugin; you could use a different way of
configuring that.
Funnily, when we designed the configurator specification I was arguing
for some time to get a such a plugin mechanism for the configurator.
And I was *convinced* that the configuration plugin should be enough
(with the additions we did around that area). Please keep in mind that
this is version 1.0 of the configurator specification. Nothing prevents
us from extending it.
Regards
Carsten
Am 10.10.2019 um 17:36 schrieb Clément Delgrange:
We explicitely decided against an additional plugin mechanism for the
configurator as that one is not really needed. It's not important what
configuration admin stores (the place holders or the final values)
But a ConfigurationPlugin cannot delay a configuration (to not deliver the
configuration to the target until a condition is met)?
* With the Tim's solution, configuration targets can receive wrong
configurations at startup that may trigger wrong behaviors or at least a lot of
exceptions in my activate methods. I suppose that with DS and Metatype the
system will be more stable, isn't it? It is maybe the best solution in my case.
* With Jürgen's possibility 1, service implementations must know how they
will be configured. Impossible in my case.
* With Jürgen's possibility 2, if my configuration plugin needs a
configuration (eg; user/password for a database) it will be never activated!?
A configurator plugin would have been easier to implement and would have
improved startup stability, no?
In any case, thank you for your precious help!
Clément.
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Thursday 10 October 2019 12:12, Carsten Ziegeler via osgi-dev
<osgi-dev@mail.osgi.org> wrote:
We explicitely decided against an additional plugin mechanism for the
configurator as that one is not really needed. It's not important what
configuration admin stores (the place holders or the final values), its
important what configuration admin delivers. And for that use case a
configuration plugin works.
For your use case you can implement two configuration plugins.
Regards
Carsten
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Carsten Ziegeler
Adobe Research Switzerland
cziege...@apache.org
Am 10.10.2019 um 08:37 schrieb Clément Delgrange via osgi-dev:
Thanks for your help,
Jürgen and Tim's solutions could meet my needs, but as BJ said values
are replaced each time the configuration is delivered to the target and
as I understand not saved. Maybe it is appropriate just for password and
secrets. My application configurations generally contain "structural"
properties (eg; myreference.target=), stable properties (eg;
url.to.publickey=), properties that change according to the environment
(cache.policy=) and secret properties. It would be nice if the
configurator could in addition handle placeholders, if it was the case,
I could provide "structural" and stable properties inside an application
bundle, changing properties could be resolved by a ConfiguratorPlugin
(the source can be easier to administrate, no PIDs) and secrets by a
ConfigurationPlugin. Does that make sense?
Clement
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Tuesday 8 October 2019 20:41, Jürgen Albert via osgi-dev
osgi-dev@mail.osgi.org wrote:
Hi Clement,
we have discussed this problem you have at a OSGi meeting and Carsten
Ziegler implemented something that goes beyond the Spec, that might
help you I assume here that you are using the Felix ConfigAdmin. See:
https://issues.apache.org/jira/browse/FELIX-6059
You have to possibilities:
1. The ConfigAdmin will be registered with a property config.plugins,
that names all ConfigurationPlugins that serve a property
config.plugin.id. Thus register your plugin with e.g.
config.plugin.id=my.id. Add a mandatory Service reference for the
Config Admin with a target filter like (config.plugins=my.id) in the
service that needs configuration. With this your Service will be
activated after the ConfigAdmin knows about you plugin and handles the
properties accordingly.
2. If you start your runtime with a framework property
felix.cm.config.plugins=my.id1,my.id2 the ConfigAdmin will not become
active and registered until the a Plugin with config.plugin.id=my.id1
and config.plugin.id=my.id2 is available.
I hope this helps,
Jürgen.
Am 08/10/2019 um 16:27 schrieb Tim Ward via osgi-dev:
My question is, how can I tell to the Configurator bundle to not
process resources that contains placeholder until my
ConfigurationPlugin is up?
There are ways that you could attempt to do this, however they’re all
inelegant and error prone. What would make more sense would be for
the ConfigurationPlugin to detect the existing configurations which
contain placeholders at startup and trigger an update for them. This
will cause the configuration to be re-delivered, including any
necessary configuration plugin execution.
In general you are better off trying to make things ordering
independent rather than to control the order that things happen in.
The result is a much more flexible and stable system.
Best Regards,
Tim
On 8 Oct 2019, at 12:54, BJ Hargrave via osgi-dev
<osgi-dev@mail.osgi.org mailto:osgi-dev@mail.osgi.org> wrote:
Configuration Plugins mutate configuration data each time it is
delivered to a configuration target. So the Configuration Plugin
must be active before any configuration targets which care about the
mutated configuration data.
So this is orthogonal to Configurator which is about putting
configuration data in the CM configuration data store.
--------------------------------------------------------------------------------------------------------------------
BJ Hargrave
Senior Technical Staff Member, IBM // office: +1 386 848 1781
OSGi Fellow and CTO of the OSGi Alliance // mobile: +1 386 848 3788
hargr...@us.ibm.com mailto:hargr...@us.ibm.com
----- Original message -----
From: "Clément Delgrange via osgi-dev" <osgi-dev@mail.osgi.org
<mailto:osgi-dev@mail.osgi.org>>
Sent by: osgi-dev-boun...@mail.osgi.org
<mailto:osgi-dev-boun...@mail.osgi.org>
To: OSGi Developer Mail List <osgi-dev@mail.osgi.org
<mailto:osgi-dev@mail.osgi.org>>
Cc:
Subject: [EXTERNAL] [osgi-dev] Configurator resources that
depend on a ConfigurationPlugin
Date: Tue, Oct 8, 2019 06:08
Hi all,
I have a question regarding the Configurator and the
ConfigurationPlugin spec. I would like to provision my
application with configurations as I do with my the bundles, for
this the Configurator seems perfect. But, the values inside my
configurations could be different depending of the environment
(dev, beta, prod, ...) and my configurations may contain
sensitive data that I don't want in my Git repo. In this case I
think I could provide a ConfigurationPlugin which will replace
placeholders with data coming from a database.
My question is, how can I tell to the Configurator bundle to not
process resources that contains placeholder until my
ConfigurationPlugin is up?
Thanks,
Clément Delgrange.
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>
https://mail.osgi.org/mailman/listinfo/osgi-dev
OSGi Developer Mail List
osgi-dev@mail.osgi.org mailto:osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev
OSGi Developer Mail List
osgi-dev@mail.osgi.org mailto:osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev
--
Jürgen Albert
Geschäftsführer
Data In Motion Consulting GmbH
Kahlaische Str. 4
07745 Jena
Mobil: 0157-72521634
E-Mail:j.alb...@datainmotion.de mailto:j.alb...@datainmotion.de
Web:www.datainmotion.de http://www.datainmotion.de
XING:https://www.xing.com/profile/Juergen_Albert5
Rechtliches
Jena HBR 513025
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev
--
--
Carsten Ziegeler
Adobe Research Switzerland
cziege...@apache.org
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev