[openstack-dev] [Fuel] Plugins improvement

Mike Scherbakov mscherbakov at mirantis.com
Mon Nov 24 12:01:24 UTC 2014


> I did not expect that timeout parameter is a mandatory requirement for
task

UX is obviously has to be improved here. Can we make a clear error, if
there is no required parameter, instead of throwing unclear exception?

On Mon, Nov 24, 2014 at 2:34 PM, Dmitry Ukov <dukov at mirantis.com> wrote:

> That was my fault. I did not expect that timeout parameter is a mandatory
> requirement for task. Every thing works perfectly fine.
> Thanks for the help.
>
> On Mon, Nov 24, 2014 at 3:05 PM, Tatyana Leontovich <
> tleontovich at mirantis.com> wrote:
>
>> Guys,
>> task like
>> - role: ['controller']
>> stage: post_deployment
>> type: puppet
>> parameters:
>> puppet_manifest: puppet/site.pp
>> puppet_modules: puppet/modules/
>> timeout: 360
>> works fine for me, so  I believe your task should looks like
>>
>> cat tasks.yaml
>> # This tasks will be applied on controller nodes,
>> # here you can also specify several roles, for example
>> # ['cinder', 'compute'] will be applied only on
>> # cinder and compute nodes
>> - role: ['controller']
>>   stage: post_deployment
>>   type: puppet
>>   parameters:
>>     puppet_manifest: install_keystone_ldap.pp
>>     puppet_modules: /etc/puppet/modules/"
>>
>> And be sure that install_keystone_ldap.pp thos one invoke other manifests
>>
>> Best,
>> Tatyana
>>
>> On Mon, Nov 24, 2014 at 12:49 PM, Dmitry Ukov <dukov at mirantis.com> wrote:
>>
>>> Unfortunately this does not work
>>>
>>> cat tasks.yaml
>>> # This tasks will be applied on controller nodes,
>>> # here you can also specify several roles, for example
>>> # ['cinder', 'compute'] will be applied only on
>>> # cinder and compute nodes
>>> - role: ['controller']
>>>   stage: post_deployment
>>>   type: puppet
>>>   parameters:
>>>     puppet_manifest: install_keystone_ldap.pp
>>>     puppet_modules: "puppet/:/etc/puppet/modules/"
>>>
>>>
>>> fpb --build .
>>> /home/dukov/dev/.plugins_ldap/local/lib/python2.7/site-packages/pkg_resources.py:1045:
>>> UserWarning: /home/dukov/.python-eggs is writable by group/others and
>>> vulnerable to attack when used with get_resource_filename. Consider a more
>>> secure location (set with .set_extraction_path or the PYTHON_EGG_CACHE
>>> environment variable).
>>>   warnings.warn(msg, UserWarning)
>>> 2014-11-24 13:48:32 ERROR 15026 (cli) Wrong value format "0 ->
>>> parameters", for file "./tasks.yaml", {'puppet_modules':
>>> 'puppet/:/etc/puppet/modules/', 'puppet_manifest':
>>> 'install_keystone_ldap.pp'} is not valid under any of the given schemas
>>> Traceback (most recent call last):
>>>   File
>>> "/home/dukov/git/fuel/fuel-plugins/fuel_plugin_builder/fuel_plugin_builder/cli.py",
>>> line 90, in main
>>>     perform_action(args)
>>>   File
>>> "/home/dukov/git/fuel/fuel-plugins/fuel_plugin_builder/fuel_plugin_builder/cli.py",
>>> line 77, in perform_action
>>>     actions.BuildPlugin(args.build).run()
>>>   File
>>> "/home/dukov/git/fuel/fuel-plugins/fuel_plugin_builder/fuel_plugin_builder/actions/build.py",
>>> line 42, in run
>>>     self.check()
>>>   File
>>> "/home/dukov/git/fuel/fuel-plugins/fuel_plugin_builder/fuel_plugin_builder/actions/build.py",
>>> line 99, in check
>>>     self._check_structure()
>>>   File
>>> "/home/dukov/git/fuel/fuel-plugins/fuel_plugin_builder/fuel_plugin_builder/actions/build.py",
>>> line 111, in _check_structure
>>>     ValidatorManager(self.plugin_path).get_validator().validate()
>>>   File
>>> "/home/dukov/git/fuel/fuel-plugins/fuel_plugin_builder/fuel_plugin_builder/validators/validator_v1.py",
>>> line 39, in validate
>>>     self.check_schemas()
>>>   File
>>> "/home/dukov/git/fuel/fuel-plugins/fuel_plugin_builder/fuel_plugin_builder/validators/validator_v1.py",
>>> line 46, in check_schemas
>>>     self.validate_file_by_schema(v1.TASKS_SCHEMA, self.tasks_path)
>>>   File
>>> "/home/dukov/git/fuel/fuel-plugins/fuel_plugin_builder/fuel_plugin_builder/validators/base.py",
>>> line 47, in validate_file_by_schema
>>>     self.validate_schema(data, schema, path)
>>>   File
>>> "/home/dukov/git/fuel/fuel-plugins/fuel_plugin_builder/fuel_plugin_builder/validators/base.py",
>>> line 43, in validate_schema
>>>     value_path, path, exc.message))
>>> ValidationError: Wrong value format "0 -> parameters", for file
>>> "./tasks.yaml", {'puppet_modules': 'puppet/:/etc/puppet/modules/',
>>> 'puppet_manifest': 'install_keystone_ldap.pp'} is not valid under any of
>>> the given schemas
>>>
>>>
>>> On Mon, Nov 24, 2014 at 2:34 PM, Aleksandr Didenko <
>>> adidenko at mirantis.com> wrote:
>>>
>>>> Hi,
>>>>
>>>> according to [1] you should be able to use:
>>>>
>>>> puppet_modules: "puppet/:/etc/puppet/modules/"
>>>>
>>>> This is valid string yaml parameter that should be parsed just fine.
>>>>
>>>> [1]
>>>> https://github.com/stackforge/fuel-web/blob/master/tasklib/tasklib/actions/puppet.py#L61-L62
>>>>
>>>> Regards
>>>> --
>>>> Alex
>>>>
>>>>
>>>> On Mon, Nov 24, 2014 at 12:07 PM, Dmitry Ukov <dukov at mirantis.com>
>>>> wrote:
>>>>
>>>>> Hello All,
>>>>> Current implementation of plugins in Fuel unpacks plugin tarball
>>>>> into /var/www/nailgun/plugins/.
>>>>> If we implement deployment part of plugin using puppet there is a
>>>>> setting
>>>>> puppet_modules:
>>>>>
>>>>> This setting should specify path to modules folder. As soon as main
>>>>> deployment part of plugin is implemented as a Puppet module module
>>>>> path setting should be:
>>>>>
>>>>> puppet_modules: puppet/
>>>>>
>>>>> There is big probability that plugin implementation will require some
>>>>> custom resources and functions which are implemented in fuel-library (e.g.
>>>>> service config resources, stdlib functions e.t.c). So in order to use
>>>>> them plugin developer has to copy them from fuel-library into plugin
>>>>> (if i'm not missing something). This is not really convenient from my
>>>>> perspective.
>>>>>
>>>>> I'd like to suggest to treat puppet_modules parameter as an array and
>>>>> pass it to puppet binary as
>>>>> # puppet apply --modulepath=<modulepath1>:<modulepath2>
>>>>> This will allow to add /etc/puppet/modules as module path and use
>>>>> resources and functions form fuel-library.
>>>>>
>>>>> P.S.:
>>>>> puppet_modules: "puppet/:/etc/puppet/moules/: <- is not allowed by
>>>>> yaml parser (and yaml format I believe)
>>>>>
>>>>> Any suggestions here?
>>>>>
>>>>>
>>>>> --
>>>>> Kind regards
>>>>> Dmitry Ukov
>>>>> IT 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
>>>>
>>>>
>>>
>>>
>>> --
>>> Kind regards
>>> Dmitry Ukov
>>> IT 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
>>
>>
>
>
> --
> Kind regards
> Dmitry Ukov
> IT Engineer
> Mirantis, Inc.
>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>


-- 
Mike Scherbakov
#mihgen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20141124/011f890c/attachment.html>


More information about the OpenStack-dev mailing list