stratos-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Akila Ravihansa Perera <raviha...@wso2.com>
Subject Re: Cartridge Agent Extension Points
Date Tue, 20 May 2014 12:44:33 GMT
Hi all,

AFAIK, the Stratos community has decided to put effort in writing a
new cartridge-agent using Python. In that case, Java based agent will
become deprecated and all DevOps level extensions will have to be done
using Python. But until then we can use this shell script based model.

I'll update the thread once I've finished writing documentation for
agent extension points.

Thanks.

On Tue, May 20, 2014 at 6:07 PM, Akila Ravihansa Perera
<ravihansa@wso2.com> wrote:
> Hi Shaheed,
>
> On Mon, May 19, 2014 at 2:55 AM, Shaheedur Haque (shahhaqu)
> <shahhaqu@cisco.com> wrote:
>> Is there any documentation on how this works form the scripter's point of view? Specifically:
>
> I'm working on writing documentation content for cartridge-agent
> extension points. Also planning to publish some articles on cartridge
> deployment use cases (for eg - clustering MongoDB) in which these
> extensions are being used.
>
>>
>> - For the old events (i.e. the non-toplogy events hooked via the /extensions directory),
is the new code backwards compatible with scripts using the /extensions mechanism?
>
> There will be no changes done for previous non-topology events. The
> new code will use the same /extensions directory mechanism. Only the
> shell scripts' file names for each extension point will be passed as
> parameters to the cartridge-agent.
>
>>
>> - Specifically,  (I'm not familiar with the JavaProcessBuilder), can you confirm
if environment variables set before the JVM is invoked will still be visible to the shell
scripts?
>
> I've tested and confirmed that environment variables set before the
> JVM is invoked are visible to the shell scripts. On the side note, the
> JavaProcessBuilder will only append our custom parameters to the shell
> script process environment block. This is same as writing to
> /proc/<pid>/environ (pid - shell script process pid) in Linux. Pl note
> that these env variables set by the cartridge-agent are *not* shared
> globally across other processes.
>
>
>>
>> Thanks, Shaheed
>>
>>
>> -----Original Message-----
>> From: Akila Ravihansa Perera [mailto:ravihansa@wso2.com]
>> Sent: 07 May 2014 05:24
>> To: dev@stratos.incubator.apache.org
>> Cc: Sajith Kariyawasam; Reka Thirunavukkarasu
>> Subject: Re: Cartridge Agent Extension Points
>>
>> Pl note that patch is against the master branch (as of yesterday).
>>
>> Following are the list of event listeners that it will subscribe to 1. MemberActivatedEventListener
2. MemberTerminatedEvent 3. MemberSuspendedEventListener 4. CompleteTopologyEventListener
5. SubscriptionDomainsAddedEventListener
>> 6. SubscriptionDomainsRemovedEventListener
>> 7. CompleteTenantEvent
>> 8. ArtifactUpdateEventListener (only locally) 9. InstanceCleanupMemberEventListener
(only locally) 10. InstanceCleanupClusterEventListener (only locally) 11. Instance Started
Event (only locally) 12. Start Servers event (only locally) 13. Instance Activated Event (only
locally)
>>
>> These event handlers are called through an interface (ExtensionHandler). Therefore
someone else can easily implement this interface and customize extensions from code level.
The main purpose is however to extend the cartridge agent through shell scripts without changing
the code.
>>
>> PS - Is there an on-going development effort to develop the cartridge agent in Python
or Google GO? If so I would like to get involved :)
>>
>> Thanks.
>>
>> On Wed, May 7, 2014 at 9:44 AM, Akila Ravihansa Perera <ravihansa@wso2.com>
wrote:
>>> Hi,
>>>
>>> I've developed cartridge agent extension points feature for Stratos
>>> cartridge agent. This will work by listening to event messages
>>> published by CC, ADC and agents running on instances.
>>>
>>> Once an event is received it will execute a shell script (system
>>> command) with parameters passed to it as environment variables through
>>> Java ProcessBuilder class. These environment variables are visible
>>> only to that process so there is no risk of dirty read/write.
>>>
>>> These script names can be set from stratos.sh and these are not
>>> hard-coded. Puppet templates can be used to set script names for each
>>> event type. This can be useful when dealing with different platforms
>>> (For eg - Linux, Windows, OS X etc)
>>>
>>> I had to make some changes to the core messaging component to get
>>> LBClusterID from Member Activated event. This is because it is
>>> necessary for LBs to identify which members belong to their LB cluster
>>> when they receive a member activated event. If someone can tell a
>>> workaround, please do share.
>>>
>>> I have attached the patch in [1] as a JIRA issue.
>>>
>>> Thanks.
>>>
>>> [1] - https://issues.apache.org/jira/browse/STRATOS-642
>>>
>>>
>>> --
>>> Akila Ravihansa Perera
>>> Software Engineer
>>> WSO2 Inc.
>>> http://wso2.com
>>>
>>> Phone: +94 77 64 154 38
>>> Blog: http://ravihansa3000.blogspot.com
>>
>>
>>
>> --
>> Akila Ravihansa Perera
>> Software Engineer
>> WSO2 Inc.
>> http://wso2.com
>>
>> Phone: +94 77 64 154 38
>> Blog: http://ravihansa3000.blogspot.com
>
>
>
> --
> Akila Ravihansa Perera
> Software Engineer
> WSO2 Inc.
> http://wso2.com
>
> Phone: +94 77 64 154 38
> Blog: http://ravihansa3000.blogspot.com



-- 
Akila Ravihansa Perera
Software Engineer
WSO2 Inc.
http://wso2.com

Phone: +94 77 64 154 38
Blog: http://ravihansa3000.blogspot.com

Mime
View raw message