+1 for the idea! There is a good discussion on this topic in StackOverflow: http://stackoverflow.com/questions/932069/building-a-minimal-plugin-architecture-in-python
On Thu, Nov 27, 2014 at 3:19 PM, Chamila De Alwis <chami...@wso2.com> wrote: > +1 > > I too think we can make the artifact handler plug-gable, aside from the > health stat collector. The common operations can be easily derived from the > existing Git based artifact handler code. > > > Regards, > Chamila de Alwis > Software Engineer | WSO2 | +94772207163 > Blog: code.chamiladealwis.com > > > > On Thu, Nov 27, 2014 at 2:51 PM, Gayan Gunarathne <gay...@wso2.com> wrote: > >> 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 <lak...@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 < >>> raviha...@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 : gay...@wso2.com | mobile : +94 766819985 >> >> > > -- Imesh Gunaratne Technical Lead, WSO2 Committer & PMC Member, Apache Stratos