
    Vh                     r    d dl mZmZmZ eZdZdZdZd dl	Z	d dl
mZ d dlmZ  G d d	      Z G d
 de      Zy)    )absolute_importdivisionprint_functiona  
author:
  - Jan-Piet Mens (@jpmens)
name: etcd
short_description: get info from an etcd server
description:
  - Retrieves data from an etcd server.
options:
  _terms:
    description:
      - The list of keys to lookup on the etcd server.
    type: list
    elements: string
    required: true
  url:
    description:
      - Environment variable with the URL for the etcd server.
    type: string
    default: 'http://127.0.0.1:4001'
    env:
      - name: ANSIBLE_ETCD_URL
  version:
    description:
      - Environment variable with the etcd protocol version.
    type: string
    default: 'v1'
    env:
      - name: ANSIBLE_ETCD_VERSION
  validate_certs:
    description:
      - Toggle checking that the ssl certificates are valid, you normally only want to turn this off with self-signed certs.
    default: true
    type: boolean
seealso:
  - module: community.general.etcd3
  - plugin: community.general.etcd3
    plugin_type: lookup
a  
- name: "a value from a locally running etcd"
  ansible.builtin.debug:
    msg: "{{ lookup('community.general.etcd', 'foo/bar') }}"

- name: "values from multiple folders on a locally running etcd"
  ansible.builtin.debug:
    msg: "{{ lookup('community.general.etcd', 'foo', 'bar', 'baz') }}"

- name: "you can set server options inline"
  ansible.builtin.debug:
    msg: "{{ lookup('community.general.etcd', 'foo', version='v2', url='http://192.168.0.27:4001') }}"
zg
_raw:
  description:
    - List of values associated with input keys.
  type: list
  elements: string
N)
LookupBase)open_urlc                       e Zd Zd Zd Zd Zy)Etcdc                 p    || _         || _        | j                    d| j                   d| _        || _        y )N/z/keys)urlversionbaseurlvalidate_certs)selfr   r   r   s       i/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/lookup/etcd.py__init__zEtcd.__init__h   s4    ((1T\\N%8,    c                     i }|j                  dd      rB|j                  dg       D ]+  }| j                  |      ||d   j                  d      d   <   - |S |d   }|S )NdirFnodeskeyr   value)get_parse_nodesplit)r   nodepathns       r   r   zEtcd._parse_noden   sq     88E5!XXgr* D040@0@0CQuX^^C(,-D  =Dr   c                 V   | j                    d| d}d }i }	 t        || j                        }|j                         }	 t        j                  |      }| j                  dk(  r
d|v r|d   }nd|v r| j                  |d         }d|v rd}|S # t        $ r Y y w xY w# t        $ r  w xY w)	Nr   z?recursive=true)r   v1r   r   	errorCodeENOENT)	r   r   r   read	Exceptionjsonloadsr   r   )r   r   r   datar   ritems          r   r   zEtcd.get   s    auO4	T-@-@AA668D	::d#D||t#d? MET> ,,T&\:Ed"  +  		$  		s   'B  AB 	BBB(N)__name__
__module____qualname__r   r   r    r   r   r	   r	   g   s    -"r   r	   c                       e Zd Zd Zy)LookupModulec                 *   | j                  ||       | j                  d      }| j                  d      }| j                  d      }t        |||      }g }|D ]7  }	|	j                         d   }
|j	                  |
      }|j                  |       9 |S )N)var_optionsdirectr   r   r   )r   r   r   r   )set_options
get_optionr	   r   r   append)r   terms	variableskwargsr   r   r   etcdrettermr   r   s               r   runzLookupModule.run   s    Yv>)9:ooe$//),W^L 	D**,q/CHHSMEJJu	 
r   N)r+   r,   r-   r=   r.   r   r   r0   r0      s    r   r0   )
__future__r   r   r   type__metaclass__DOCUMENTATIONEXAMPLESRETURNr&   ansible.plugins.lookupr   ansible.module_utils.urlsr   r	   r0   r.   r   r   <module>rF      sK    C B%N
  - .84 4n: r   