관리-도구
편집 파일: data.cpython-39.pyc
a �)g�) � @ s� d dl mZmZmZ eZd dlZd dlmZ d dl mZ d dlm Z d dlmZ d dlmZ d dlmZ d d lmZ d d lmZ e� ZG dd� de�ZdS ) � )�absolute_import�division�print_functionN)� constants)�AnsibleError)�Group)�Host)�string_types)�Display)�combine_vars)�basedirc @ sz e Zd ZdZdd� Zdd� Zdd� Zdd � Zd d� Zdd � Z dd� Z dd� Zddd�Zdd� Z dd� Zdd� Zdd� ZdS )� InventoryDataz� Holds inventory data (host and group objects). Using it's methods should guarantee expected relationships and data. c C sH i | _ i | _i | _d | _d | _g | _dD ]}| �|� q(| �dd� d S )N)�all� ungroupedr r )�groups�hosts�_groups_dict_cache� localhost�current_source�processed_sources� add_group� add_child)�self�group� r �:/usr/lib/python3.9/site-packages/ansible/inventory/data.py�__init__* s zInventoryData.__init__c C s$ d | _ | j| j| j| j| jd�}|S )N)r r �local�sourcer )r r r r r r �r �datar r r � serialize= s �zInventoryData.serializec C sF i | _ |�d�| _|�d�| _|�d�| _|�d�| _|�d�| _d S )Nr r r r r )r �getr r r r r r r r r �deserializeH s zInventoryData.deserializec C s\ | j r| j }nJt|�}d|_d|_tj}|s:d}t�d� |�d|� |�dd� || _ |S )Nz 127.0.0.1Tz/usr/bin/pythonz�Unable to determine python interpreter from sys.executable. Using /usr/bin/python default. You can correct this by setting ansible_python_interpreter for localhostZansible_python_interpreterZansible_connectionr ) r r �address�implicit�sys� executable�display�warning�set_variable)r �patternZnew_hostZ py_interpr r r �_create_implicit_localhostP s z(InventoryData._create_implicit_localhostc C sF t �d� d| _t� }| jD ]:}| j| }|�|j� |jdkr|�� s| �d|j� qt� }| j � � D ]�}|�|j� |�� }| jd |v r�t|��t| jd | jd g��r�| jd � |� n:|js�t|�}|dks�|dkr�| jd |v r�| �d|j� |jrht| jd �� |j�|_qh|�|�D ]}t �d| � �q&i | _dS )z1 Ensure inventory basic rules, run after updates z(Reconcile groups and hosts in inventory.Nr r r � z,Found both group and host with same name: %s)r( �debugr �setr �add�nameZ get_ancestorsr r �valuesZ get_groups� difference�remove_hostr% �lenr Zget_vars�vars�intersectionr) r ) r Zgroup_names�gr Z host_names�hostZmygroups�lengthZconflictr r r �reconcile_inventoryh s0 "z!InventoryData.reconcile_inventoryc C s. | j �|d�}|du r*|tjv r*| �|�}|S )z; fetch host object using name deal with implicit localhost N)r r"