�
�Udac @` s� d d l m Z m Z m Z e Z d d l Z d d l m Z d d l
m Z d d l m
Z
d d l m Z d d l m Z m Z d d l m Z d d l m Z d d
l m Z e � Z d e f d � � YZ d S(
i ( t absolute_importt divisiont print_functionN( t constants( t AnsibleError( t Group( t Host( t iteritemst string_types( t Display( t combine_vars( t basedirt
InventoryDatac B` s� e Z d Z d � Z d � Z d � Z d � Z d � Z d � Z d � Z d � Z
d d d � Z d
� Z
d � Z d � Z d
� Z RS( s�
Holds inventory data (host and group objects).
Using it's methods should guarantee expected relationships and data.
c C` s_ i | _ i | _ i | _ d | _ d | _ x d D] } | j | � q4 W| j d d � d S( Nt allt ungrouped( s allR ( t groupst hostst _groups_dict_cachet Nonet localhostt current_sourcet add_groupt add_child( t selft group( ( s: /usr/lib/python2.7/site-packages/ansible/inventory/data.pyt __init__* s
c C` s; d | _ i | j d 6| j d 6| j d 6| j d 6} | S( NR R t localt source( R R R R R R ( R t data( ( s: /usr/lib/python2.7/site-packages/ansible/inventory/data.pyt serialize= s
c C` sU i | _ | j d � | _ | j d � | _ | j d � | _ | j d � | _ d S( NR R R R ( R t getR R R R ( R R ( ( s: /usr/lib/python2.7/site-packages/ansible/inventory/data.pyt deserializeG s
c C` s� | j r | j } nl t | � } d | _ t | _ t j } | sX d } t j d � n | j d | � | j d d � | | _ | S( Ns 127.0.0.1s /usr/bin/pythons� Unable to determine python interpreter from sys.executable. Using /usr/bin/python default. You can correct this by setting ansible_python_interpreter for localhostt ansible_python_interpretert ansible_connectionR (
R R t addresst Truet implicitt syst
executablet displayt warningt set_variable( R t patternt new_hostt py_interp( ( s: /usr/lib/python2.7/site-packages/ansible/inventory/data.pyt _create_implicit_localhostN s c C` s� t j d � d | _ t � } x` | j D]U } | j | } | j | j � | j d k r) | j � r) | j d | j � q) q) Wt � } x| j
j � D]} | j | j � | j � } | j d | k rt | � j
t | j d | j d g � � rr| j d j | � qrnY | j srt | � } | d k sY| d k rr| j d | k rr| j d | j � qrn | j r� t | j d j � | j � | _ q� q� Wx( | j | � D] } t j d | � q�Wi | _ d S( s1 Ensure inventory basic rules, run after updates s( Reconcile groups and hosts in inventory.R
R i i s, Found both group and host with same name: %sN( R'