File manager - Edit - /opt/saltstack/salt/lib/python3.10/site-packages/salt/states/__pycache__/etcd_mod.cpython-310.pyc
Back
o ;j�+ � @ s� d Z dZddiZzddlZejjjsejjjrdZ ndZ W n e y( dZ Y nw dZd d � Zdd�dd �Z ddd�Zddd�Zddd�Zddd�Zddd�Zdd� ZdS )a� Manage etcd Keys ================ .. versionadded:: 2015.8.0 :depends: - python-etcd or etcd3-py This state module supports setting and removing keys from etcd. Configuration ------------- To work with an etcd server you must configure an etcd profile. The etcd config can be set in either the Salt Minion configuration file or in pillar: .. code-block:: yaml my_etd_config: etcd.host: 127.0.0.1 etcd.port: 4001 It is technically possible to configure etcd without using a profile, but this is not considered to be a best practice, especially when multiple etcd servers or clusters are available. .. code-block:: yaml etcd.host: 127.0.0.1 etcd.port: 4001 In order to choose whether to use etcd API v2 or v3, you can put the following configuration option in the same place as your etcd configuration. This option defaults to true, meaning you will use v2 unless you specify otherwise. .. code-block:: yaml etcd.require_v2: True When using API v3, there are some specific options available to be configured within your etcd profile. They are defaulted to the following... .. code-block:: yaml etcd.encode_keys: False etcd.encode_values: True etcd.raw_keys: False etcd.raw_values: False etcd.unicode_errors: "surrogateescape" ``etcd.encode_keys`` indicates whether you want to pre-encode keys using msgpack before adding them to etcd. .. note:: If you set ``etcd.encode_keys`` to ``True``, all recursive functionality will no longer work. This includes ``tree`` and ``ls`` and all other methods if you set ``recurse``/``recursive`` to ``True``. This is due to the fact that when encoding with msgpack, keys like ``/salt`` and ``/salt/stack`` will have differing byte prefixes, and etcd v3 searches recursively using prefixes. ``etcd.encode_values`` indicates whether you want to pre-encode values using msgpack before adding them to etcd. This defaults to ``True`` to avoid data loss on non-string values wherever possible. ``etcd.raw_keys`` determines whether you want the raw key or a string returned. ``etcd.raw_values`` determines whether you want the raw value or a string returned. ``etcd.unicode_errors`` determines what you policy to follow when there are encoding/decoding errors. .. note:: The etcd configuration can also be set in the Salt Master config file, but in order to use any etcd configurations defined in the Salt Master config, the :conf_master:`pillar_opts` must be set to ``True``. Be aware that setting ``pillar_opts`` to ``True`` has security implications as this makes all master configuration settings available in all minion's pillars. Etcd profile configuration can be overridden using following arguments: ``host``, ``port``, ``username``, ``password``, ``ca``, ``client_key`` and ``client_cert``. The v3 specific arguments can also be used for overriding if you are using v3. .. code-block:: yaml my-value: etcd.set: - name: /path/to/key - value: value - host: 127.0.0.1 - port: 2379 - username: user - password: pass Available Functions ------------------- - ``set`` This will set a value to a key in etcd. Changes will be returned if the key has been created or the value of the key has been updated. This means you can watch these states for changes. .. code-block:: yaml /foo/bar/baz: etcd.set: - value: foo - profile: my_etcd_config - ``wait_set`` Performs the same functionality as ``set`` but only if a watch requisite is ``True``. .. code-block:: yaml /some/file.txt: file.managed: - source: salt://file.txt /foo/bar/baz: etcd.wait_set: - value: foo - profile: my_etcd_config - watch: - file: /some/file.txt - ``rm`` This will delete a key from etcd. If the key exists then changes will be returned and thus you can watch for changes on the state, if the key does not exist then no changes will occur. .. code-block:: yaml /foo/bar/baz: etcd.rm: - profile: my_etcd_config - ``wait_rm`` Performs the same functionality as ``rm`` but only if a watch requisite is ``True``. .. code-block:: yaml /some/file.txt: file.managed: - source: salt://file.txt /foo/bar/baz: etcd.wait_rm: - profile: my_etcd_config - watch: - file: /some/file.txt Zetcd�set_�set� NTFz7No profile found, using a profile is always recommendedc C s t rtS dS )z1 Only return if python-etcd is installed )FzUnable to import etcd_util)�HAS_LIBS�__virtualname__� r r �H/opt/saltstack/salt/lib/python3.10/site-packages/salt/states/etcd_mod.py�__virtual__� s r )�valuec K s@ zt d| � � d|||d�|��}W |S ty d }Y |S w )Nzetcd.)�key�profiler r )�__salt__� Exception)�actionr r r �kwargs�retr r r �_etcd_action� s ����r c K s� d}| ddi d�}t dd| |d�|��}|du r&|du r&t|d<