← Back to team overview

fuel-dev team mailing list archive

Re: Fuel plugin ideas

 

On 01/14/2014 01:59 PM, Aleksandr Didenko wrote:
> One more thing to consider: plugins packaging into RPMs. This will
> provide a set of benefits "for free", for example:
> 
> - versioning
> - easy installation/removal/upgrades/downgrades/distribution
> - dependencies (including cross plugin dependencies)
> - conflicts (including cross plugin conflicts)
> - plugin consistency check (rpm -qV)
> 
> Thanks
> --
> Aleksandr
> 
> 

Sounds great but will be complete mess during development stage. Can be
fixed via tgz archives during development window and 'equal' packages
during code freeze testing.

> 
> On Sat, Jan 4, 2014 at 8:38 PM, Sergey Vasilenko
> <svasilenko@xxxxxxxxxxxx <mailto:svasilenko@xxxxxxxxxxxx>> wrote:
> 
>     I think we shouldn't tell about plugable architecture for fuel,
>     before divide one global manifest to set of small. First step
>     (master-less) already done. 
> 
> 
>     On Fri, Jan 3, 2014 at 12:00 AM, Andrew Woodward <xarses@xxxxxxxxx
>     <mailto:xarses@xxxxxxxxx>> wrote:
> 
>         We need to address that a lot (if not all) of puppet "plugins"
>         will be pre-baked from upstream sources. For example nagios. A
>         user will want to be able to use that module, and even keep it
>         up to date with the upstream, we should never modify the module
>         existing files.
> 
>             Each plugin has to be implemented as a separate module. Init
>             manifest withouta input parameters (init.pp) should be used
>             as an entry point to each plugin.
> 
>         No, a separate bridging file plugin_fuel_<module>.pp should be
>         created. 
>          
> 
>             All parameters for plugin should be kept in astute.yaml
> 
>         We need to fail if a required parameter is not provided.
> 
>             Function which automatically loads each plugin (e.g. it
>             should execute init manifest of each class with name mask
>             "plugin_.*") is required.
> 
>         This likely need to be a function of astute and even our core
>         modules should be loaded this way. modules included should be
>         based from data in astute.yaml.
>          
> 
>             Staging system should be implemented. All plugins have to be
>             executed in a separate stage (e.g. Stage['main'] -> stage
>             {'plugins':} )
> 
>         We can't assume that this is OK. we can encourage plugins to use
>         a separate phase, however this is not enforceable in all cases
>         (everything must be loaded this way). We should create a set of
>         standard stages, and create pre and post stages as-well this way
>         a plugin can insert its self where necessary. A plugin without a
>         stage should run last. Which stage might be operated by astute.yaml
> 
>         example stages might include: init, pre-networking, networking,
>         post-networking ...
>         (actual stages
>         are https://github.com/stackforge/fuel-library/blob/master/deployment/puppet/osnailyfacter/examples/site.pp#L14-21 )
>          
> 
>             Each puppet class which is used with library has to have the
>             ability to be disabled from plugin
>             This is necessary because plugins may require to disable
>             some services. Alternatively this can be implemented by
>             using resource collections (e.g. Service <| title ==
>             l3-agent|> { noop => true }) but we can't execute plugin in
>             a separate stage in this case.
> 
>         This is mostly addressed by loading all modules, including core
>         components the same way. If you dont wat a core module to run,
>         you simply get astute to not run it. Some modules might still
>         need further tweaking to allow more flexible overriding. If all
>         modules load the same way, we should be able to simply replace
>         the parameter into it's plugin_fuel_<module> class by calling it
>         instead of allowing it to be defined with the defaults.
> 
>         Andrew Woodward
>         Mirantis
> 
>         --
>         Mailing list: https://launchpad.net/~fuel-dev
>         Post to     : fuel-dev@xxxxxxxxxxxxxxxxxxx
>         <mailto:fuel-dev@xxxxxxxxxxxxxxxxxxx>
>         Unsubscribe : https://launchpad.net/~fuel-dev
>         More help   : https://help.launchpad.net/ListHelp
> 
> 
> 
>     --
>     Mailing list: https://launchpad.net/~fuel-dev
>     Post to     : fuel-dev@xxxxxxxxxxxxxxxxxxx
>     <mailto:fuel-dev@xxxxxxxxxxxxxxxxxxx>
>     Unsubscribe : https://launchpad.net/~fuel-dev
>     More help   : https://help.launchpad.net/ListHelp
> 
> 
> 
> 



Follow ups

References