Utils: add example of module import

This commit is contained in:
Denys Havrysh 2017-07-06 11:53:54 +03:00
parent e2aa5114e4
commit f1bc58f6d5

View File

@ -54,7 +54,7 @@ types like so:
salt '*' mymodule.observe_the_awesomeness salt '*' mymodule.observe_the_awesomeness
''' '''
print __utils__['foo.bar']() return __utils__['foo.bar']()
Utility modules, like any other kind of Salt extension, support using a Utility modules, like any other kind of Salt extension, support using a
:ref:`__virtual__ function <modules-virtual-name>` to conditionally load them, :ref:`__virtual__ function <modules-virtual-name>` to conditionally load them,
@ -81,11 +81,56 @@ the ``foo`` utility module with a ``__virtual__`` function.
def bar(): def bar():
return 'baz' return 'baz'
Also you could even write your utility modules in object oriented fashion:
.. code-block:: python
# -*- coding: utf-8 -*-
'''
My utils module
---------------
This module contains common functions for use in my other custom types.
'''
class Foo(object):
def __init__(self):
pass
def bar(self):
return 'baz'
And import them into other custom modules:
.. code-block:: python
# -*- coding: utf-8 -*-
'''
My awesome execution module
---------------------------
'''
import mymodule
def observe_the_awesomeness():
'''
Prints information from my utility module
CLI Example:
.. code-block:: bash
salt '*' mymodule.observe_the_awesomeness
'''
foo = mymodule.Foo()
return foo.bar()
These are, of course, contrived examples, but they should serve to show some of These are, of course, contrived examples, but they should serve to show some of
the possibilities opened up by writing utility modules. Keep in mind though the possibilities opened up by writing utility modules. Keep in mind though
that States still have access to all of the execution modules, so it is not that states still have access to all of the execution modules, so it is not
necessary to write a utility module to make a function available to both a necessary to write a utility module to make a function available to both a
state and an execution module. One good use case for utililty modules is one state and an execution module. One good use case for utility modules is one
where it is necessary to invoke the same function from a custom :ref:`outputter where it is necessary to invoke the same function from a custom :ref:`outputter
<all-salt.output>`/returner, as well as an execution module. <all-salt.output>`/returner, as well as an execution module.