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

Dmitriy Shulyak dshulyak at mirantis.com
Fri Nov 28 19:20:01 UTC 2014

>    - 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.
>  Initially i had the same thoughts and wanted to use it the way it is, but
now i completely agree with Evgeniy that additional DSL will cause a lot
of problems with compatibility between versions and developer experience.
We need to search for alternatives..
1. for UI i would prefer separate tab for plugins, where user will be able
to enable/disable plugin explicitly.
Currently settings tab is overloaded.
2. on backend we need to validate plugins against certain env before
enabling it,
   and for simple case we may expose some basic entities like network_mode.
For case where you need complex logic - python code is far more flexible
that new DSL.

>    - 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".
> How checkbox will help? There is several cases of plugin removal..
1. Plugin is installed, but not enabled for any env - just remove the plugin
2. Plugin is installed, enabled and cluster deployed - forget about it for
3. Plugin is installed and only enabled - we need to maintain state of db
consistent after plugin is removed, it is problematic, but possible
My main point that plugin is enabled/disabled explicitly by user, after
that we can decide ourselves can it be removed or not.

>    - 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.
> I had some thoughts about using DSL, it seemed to me especially helpfull
when you need to disable part of embedded into core functionality,
like deploying with another hypervisor, or network dirver (contrail for
example). And DSL wont cover all cases here, this quite similar to
metadata.yaml, simple cases can be covered by some variables in tasks (like
group, unique, etc), but complex is easier to test and describe in python.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20141128/d530e63b/attachment.html>

More information about the OpenStack-dev mailing list