Thank you, JB!

So with this code, it's possible to create a bundle service for the sole 
purpose of updating configuration of other bundles provided I have their pid, 
correct?

Raffi

-----Original Message-----
From: Jean-Baptiste Onofré [mailto:[email protected]] 
Sent: Monday, October 19, 2015 8:46 AM
To: [email protected]
Subject: Re: Emulating config:edit/update behavior using JMX [ EXTERNAL ]

Hi Raffi,

sorry I forgot you, shame on me.

Here's a quick snippet using ConfigAdmin (in a bundle):

ServiceReference ref =
bundleContext.getServiceReference(ConfigurationAdmin.class);
if (ref != null) {
   ConfigurationAdmin configAdmin = (ConfigurationAdmin) 
bundleContext.getService(ref);
   if (configAdmin != null) {
     Configuration config = configAdmin.getConfiguration(pid, null);
     Dictionary properties = config.getProperties();
     // get/set config properties
   }
}

Regards
JB

On 10/19/2015 02:39 PM, Basmajian, Raffi wrote:
> JB,
>
> Did you ever get around to this example? I could use one!
>
> Best
> Raffi
>
> -----Original Message-----
> From: Basmajian, Raffi
> Sent: Thursday, September 24, 2015 9:13 AM
> To: [email protected]
> Subject: RE: Emulating config:edit/update behavior using JMX [ 
> EXTERNAL ]
>
> Thank you, Jean, look forward to seeing the example!
>
> -----Original Message-----
> From: Jean-Baptiste Onofré [mailto:[email protected]]
> Sent: Wednesday, September 23, 2015 3:34 PM
> To: [email protected]
> Subject: Re: Emulating config:edit/update behavior using JMX [ 
> EXTERNAL ]
> Importance: High
>
> You retrieve the ConfigurationAdmin service (using 
> bundleContext.getService()).
>
> Using the ConfigurationAdmin service, you can access to a Config PID 
> (getConfiguration(pid, null)) and after the properties in the Config.
>
> Let me prepare an example for you.
>
> Regards
> JB
>
> On 09/23/2015 08:52 PM, Basmajian, Raffi wrote:
>> Hi Jean,
>>
>> Thanks for the quick reply,
>>
>> Is there an example showing how to use ConfigAdmin locally? How is that 
>> achieved?
>>
>> Best
>> Raffi
>>
>> -----Original Message-----
>> From: Jean-Baptiste Onofré [mailto:[email protected]]
>> Sent: Wednesday, September 23, 2015 2:49 PM
>> To: [email protected]
>> Subject: Re: Emulating config:edit/update behavior using JMX [ 
>> EXTERNAL ]
>> Importance: High
>>
>> Hi,
>>
>> The "session" is the console shell memory session: it's not available on JMX 
>> as we don't have a memory session or state.
>> That's why we introduce the update() operation with a map.
>>
>> I can merge the change on karaf-2.x branch (2.4.x).
>>
>> On the other hand, you can use ConfigAdmin directly (but not remote or by 
>> JMX, only locally). Basically the JMX layer is on top of ConfigAdmin.
>>
>> Regards
>> JB
>>
>> On 09/23/2015 07:59 PM, Basmajian, Raffi wrote:
>>> Hello,
>>>
>>> I'm creating a custom tool for managing Karaf /etc configs using 
>>> Karaf 2.4.0/JBoss Fuse 6.2/Java 8/Win7x64. My goal is to emulate 
>>> config:edit/update behavior such that all config changes for the 
>>> same PID are committed atomically, or not at all.
>>>
>>> The Karaf CLI supports configuration "sessions", config:edit opens a 
>>> session, and config:update flushes changes to the service. This 
>>> behavior makes sense since - for our use cases -- configuration 
>>> parameters depend on other parameters.
>>>
>>> Our automation tool needs programmatic access to manage 
>>> configuration changes, ideally JMX.
>>>
>>> After playing around with JMX bean "org.apache.karaf.config/root" 
>>> and its operations (propset/append/setProperty()), the behavior 
>>> observed is not consistent with config:edit/update. Individual 
>>> changes are propagated immediately, causing the service to reload. 
>>> This is far from ideal and does not meet our requirements.
>>>
>>> After searching around for solutions, we found this issue which is 
>>> more/less identical to ours:
>>> https://issues.apache.org/jira/browse/KARAF-1243.
>>>
>>> The fix for that issue introduced a new JMX method "update(String 
>>> pid, Map props)" to ConfigMBean, perfect for our needs, but not 
>>> available in 2.4.
>>>
>>> What are my options to achieve programmatic configuration management 
>>> for arbitrary bundles while controlling propagation of updates?
>>>
>>> Can I use the ConfigurationAdmin service directly? If so, is it 
>>> available from JMX?
>>>
>>> I can't upgrade to Karaf 3.0 since Fuse 6.2 depends on Karaf 2.4; is 
>>> it possible to patch 2.4 with fix from KARAF-1243?
>>>
>>> Thank you,
>>>
>>> Raffi
>>>
>>> This e-mail transmission may contain information that is 
>>> proprietary, privileged and/or confidential and is intended 
>>> exclusively for the
>>> person(s) to whom it is addressed. Any use, copying, retention or 
>>> disclosure by any person other than the intended recipient or the 
>>> intended recipient's designees is strictly prohibited. If you are 
>>> not the intended recipient or their designee, please notify the 
>>> sender immediately by return e-mail and delete all copies. 
>>> OppenheimerFunds may, at its sole discretion, monitor, review, 
>>> retain and/or disclose the content of all email communications.
>>
>> --
>> Jean-Baptiste Onofré
>> [email protected]
>> http://blog.nanthrax.net
>> Talend - http://www.talend.com
>>
>> This e-mail transmission may contain information that is proprietary, 
>> privileged and/or confidential and is intended exclusively for the person(s) 
>> to whom it is addressed. Any use, copying, retention or disclosure by any 
>> person other than the intended recipient or the intended recipient's 
>> designees is strictly prohibited. If you are not the intended recipient or 
>> their designee, please notify the sender immediately by return e-mail and 
>> delete all copies. OppenheimerFunds may, at its sole discretion, monitor, 
>> review, retain and/or disclose the content of all email communications.
>>
>
> --
> Jean-Baptiste Onofré
> [email protected]
> http://blog.nanthrax.net
> Talend - http://www.talend.com
>

--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com

Reply via email to