stratos-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gayan Gunarathne <gay...@wso2.com>
Subject Re: Pluggable Extensions Framework for Python Cartridge Agent
Date Thu, 27 Nov 2014 09:21:56 GMT
IMO if we are move with the plugin framework , we can use our agent
 components (eg health checker, source control handler) as plugins. We can
ship the default cartridge agent with our default plugin set.If the end
user needs they can use their own plugin with their requirement.

AFAIR we may need to define
1. Common specification for plugins
2. Plugin manager (I guess we can use the plugin manager provided from the
framework as it is or customize version of plugin manager)

WDYT?

Thanks,
Gayan


On Thu, Nov 27, 2014 at 2:14 PM, Lakmal Warusawithana <lakmal@wso2.com>
wrote:

> +1 for adding plugging framework and extension mechanism to the cartridge
> agent. With my little finding, I think Yapsy may good for our requirement.
>
> Also, can we make health checker also pluggable? Please see Shaheed
> comments in [1]
>
> [1]Hangout (01) to discuss the Python Agent
>
> On Thu, Nov 27, 2014 at 1:38 PM, Akila Ravihansa Perera <
> ravihansa@wso2.com> wrote:
>
>> Hi,
>>
>> As you may know, Stratos 4.1.0 Alpha release will be shipped with a
>> Python based cartridge agent. AFAIU, there were two main reasons to move to
>> a Python based agent.
>>
>> 1. Make it light weight to minimize the memory/CPU footprint. This was
>> important especially in the Docker scenario.
>>
>> 2. Allow Dev-Ops to extend the cartridge agent without having to modify
>> the core code. In most cases, cartridge agent has to be customized to suite
>> the requirements of the cartridge application. All dynamic configuration
>> changes and stats publishing are done by this agent. It is therefore
>> critical to make the agent flexible enough so that users developing
>> cartridges are able to manage and monitor the run time environment of the
>> cartridge application, as they wish.
>> At the same time, the design has to be simple enough to make sure that
>> we're not adding more complexity. A dev-ops should be able to easily
>> understand the flow and extend it to cater the cartridge application run
>> time requirements.
>>
>> For this purpose I'd like to propose that we integrate a Python plugin
>> framework to make the cartridge agent easily extendable. Main requirements
>> are;
>>
>> 1. The plugin framework of choosing must be very easy to use
>> 2. Have minimal or no external dependencies to make it lightweight
>> 3. Should be able to dynamically load plugins without manual
>> configurations
>> 4. Version control of plugins and be able to control the loading order
>>
>> I've done evaluation of following existing Python plugin frameworks;
>> Plug n' PLay (PnP) [1]
>> Trac [2]
>> Yapsy [3]
>> Zope [4]
>>
>> As per my findings, I've concluded that Yapsy would be the best fit for
>> our requirements. PnP framework is very simple but lacks some of the
>> features like version control, control the loading behavior.
>>
>> Here is a very good tutorial [5] for understanding the Yasy framework.
>> I'd like to work on an initial model for this integration. But before that
>> wanted to get your ideas regarding this feature.
>>
>> [1] https://github.com/daltonmatos/plugnplay
>> [2] http://trac.edgewall.org/wiki/TracDev/ComponentArchitecture
>> [3] http://yapsy.sourceforge.net/
>> [4] http://docs.zope.org/zope.interface/
>> [5] http://www.micahcarrick.com/python-gtk-plugins-with-yapsy.html
>>
>> Thanks.
>>
>> --
>> Akila Ravihansa Perera
>> Software Engineer, WSO2
>>
>> Blog: http://ravihansa3000.blogspot.com
>>
>
>
>
> --
> Lakmal Warusawithana
> Vice President, Apache Stratos
> Director - Cloud Architecture; WSO2 Inc.
> Mobile : +94714289692
> Blog : http://lakmalsview.blogspot.com/
>
>


-- 

Gayan Gunarathne
Technical Lead
WSO2 Inc. (http://wso2.com)
email  : gayang@wso2.com  | mobile : +94 766819985

Mime
View raw message