[openstack-dev] [Fuel] [Plugins] Further development of plugin metadata format

Vitaly Kramskikh vkramskikh at mirantis.com
Fri Nov 28 16:01:44 UTC 2014


Evgeniy,

Responses inline:

2014-11-28 18:31 GMT+03:00 Evgeniy L <eli at mirantis.com>:

> Hi Vitaly,
>
> I agree with you that conditions can be useful in case of complicated
> plugins, but
> at the same time in case of simple cases it adds a huge amount of
> complexity.
> I would like to avoid forcing user to know about any conditions if he wants
> to add several text fields on the UI.
>
> I have several reasons why we shouldn't do that:
> 1. conditions are described with yet another language with it's own syntax
>
Yes, but is already used in a few places. I want to notice once again -
even a simple LBaaS plugin with a single checkbox needed to utilize this
functionality.

> 2. the language is not documented (solvable)
>
It is documented:
http://docs.mirantis.com/fuel-dev/develop/nailgun/customization/settings.html#expression-syntax

> 3. complicated interface will lead to a lot of bugs for the end user, and
> it will be
>     a Fuel team's problem
>
So, you're still calling this interface complicated. Ok, I'm looking
forward to seeing your proposal about dealing with complex plugins.

> 4. in case of several checkboxes you'll have to write a huge conditions
> with
>     a lot of "and" statements and it'll be really easy to forget about
> some of them
>
If you have several checkboxes, then it is a complex plugin with complex
configuration, so I see no problem here. There will be many more places
where you can "forget" stuff.

>
> As result in simple cases plugin developer will have to specify the same
> condition of every task in tasks.yaml file, add it to metadata.yaml.
> If you add new checkbox, you should go through all of this files,
> add "and lbaas:new_checkbox_name" statement.
>
Once again, in simple cases checkbox and the conditions (one for task and
one for is_removable) can be easily pregenerated by FPB, so plugin
developer has to do nothing more. If you add a new checkbox which doesn't
affect plugin removeability and tasks, you have to change nothing in plugin
metadata.

>
> Thanks,
>
> On Thu, Nov 27, 2014 at 7:57 PM, Vitaly Kramskikh <vkramskikh at mirantis.com
> > wrote:
>
>> Folks,
>>
>> In the 6.0 release we'll support simple plugins for Fuel. The current
>> architecture allows to create only very simple plugins and doesn't allow to
>> "pluginize" complex features like Ceph, vCenter, etc. I'd like to propose
>> some changes to make it possible. They are subtle enough and the plugin
>> template still can be autogenerated by Fuel Plugin Builder. Here they are:
>>
>>
>> https://github.com/vkramskikh/fuel-plugins/commit/1ddb166731fc4bf614f502b276eb136687cb20cf
>>
>>    1. environment_config.yaml should contain exact config which will be
>>    mixed into cluster_attributes. No need to implicitly generate any controls
>>    like it is done now.
>>    2. metadata.yaml should also contain "is_removable" field. This field
>>    is needed to determine whether it is possible to remove installed plugin.
>>    It is impossible to remove plugins in the current implementation.
>>    This field should contain an expression written in our DSL which we already
>>    use in a few places. The LBaaS plugin also uses it to hide the checkbox if
>>    Neutron is not used, so even simple plugins like this need to utilize it.
>>    This field can also be autogenerated, for more complex plugins plugin
>>    writer needs to fix it manually. For example, for Ceph it could look like
>>    "settings:storage.volumes_ceph.value == false and
>>    settings:storage.images_ceph.value == false".
>>    3. For every task in tasks.yaml there should be added new "condition"
>>    field with an expression which determines whether the task should be run.
>>    In the current implementation tasks are always run for specified roles. For
>>    example, vCenter plugin can have a few tasks with conditions like
>>    "settings:common.libvirt_type.value == 'vcenter'" or
>>    "settings:storage.volumes_vmdk.value == true". Also, AFAIU, similar
>>    approach will be used in implementation of Granular Deployment feature.
>>
>> These simple changes will allow to write much more complex plugins. What
>> do you think?
>> --
>> Vitaly Kramskikh,
>> Software Engineer,
>> Mirantis, Inc.
>>
>> _______________________________________________
>> OpenStack-dev mailing list
>> OpenStack-dev at lists.openstack.org
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>


-- 
Vitaly Kramskikh,
Software Engineer,
Mirantis, Inc.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20141128/164d1dd0/attachment.html>


More information about the OpenStack-dev mailing list