HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/cloud/clouds/__pycache__/lxc.cpython-310.pyc
o

�N�gG�@s4dZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
ZddlZddlZddl
mZe�e�Zddddddd	�ZiZd
dd�Zd
d�Zdd�Zdd�Zd3dd�Zd4dd�Zdd�Zdd�Zdd�Zdd �Zd5d!d"�Zd5d#d$�Zd6d%d&�Z d6d'd(�Z!d)d*�Z"d6d+d,�Z#d6d-d.�Z$d/d0�Z%d6d1d2�Z&dS)7z�
Install Salt on an LXC Container
================================

.. versionadded:: 2014.7.0

Please read :ref:`core config documentation <config_lxc>`.
�N)�SaltCloudSystemExiti�
�(i,�d)zcmd.run�	test.ping�lxc.info�lxc.list�
lxc.templateszgrains.items��)rrcCsdS)z(
    Needs no special configuration
    T�rrr�I/opt/saltstack/salt/lib/python3.10/site-packages/salt/cloud/clouds/lxc.py�__virtual__(srcCs"zt��WStytYSw�N)Z__active_provider_name__�value�AttributeErrorrrrr
�_get_active_provider_name/s

�rcCs t�sdSt�}d�|d|�S)Nzsalt.cloud.lxc.{}.{}�target)�get_configured_provider�format)Zid_�infosrrr
�
_get_grain_id6sr�minioncCsJdtvr
tj�td�}ntdf}tj�dtj�||��}t�|�}|S)N�	conf_file�
config_dirZSALT_MINION_CONFIG)	�__opts__�os�path�dirname�environ�get�join�configZ
minion_config�ZcfgZdefault_dir�optsrrr
�_minion_opts=s

r%�mastercCsRdtvr
tj�td�}ntdf}tj�dtj�||��}t�|�}d|d<|S)NrrZSALT_MASTER_CONFIG�quiet�output)	rrrrrr r!r"Z
master_configr#rrr
�_master_optsGs

r)cCstjjt�d�S)N)Zmopts)�salt�clientZget_local_clientr)rrrr
�_clientRsr,cCstj�t��Sr)r*�runnerZRunnerClientr)rrrr
�_runnerVsr.c	Os�z|�d�}Wntyd}Ynwz|�d�}Wnty%d}Ynwz	t|�d��}Wnttfy@t�|d�}Ynwz|�d�}WntySi}Ynw|sat�}|s]dS|d}t��}d	}	|tvrsd
}	|t|}z	t	j
j�|�}
Wnt
y�d}
Ynwz	t	j
j�|�}Wnt
y�d}Ynwz	t	j
j�|�}Wnt
y�d}Ynw||||
||f}
|	r�|	�r@|
tv�r@t���m}t�}|��}||d<|�d
d�|�d
d�d}d}d
}|dkr�|d}||k�r@z2|dkr�t�d�|j|ddd�}t|���}|�sd	}|D]
}|d
u�rd	}�q|�s$td��Wnt�y;d	}|d7}t�d|�Ynw||ks�|�sKtd|�d���|jd(||||d�|��}|jd(|d|gdd�|��}t|�|d	��}t��|}|�r�|d|gdd�}|jd(i|��}t|�|d	��}|�s�n|�r�t��|k�r�td�|t�|����t�|�|�swt ddi�|d��}|�r�|d8}|�d |d!d
ig�}||v�r�||}n'd"|v�r�d#|v�r�|d"}n|d$v�r�|�s�dd	i�|d	�}t�d�|�s�zd%|v�r
td&|�d'���Wnt�y�t
�yYnw|	�r-|t|
<Wd�|SWd�|S1�s9wY|S|	�rL|
tv�rLt|
}|S))aExecute a salt function on a specific minion

    Special kwargs:

            salt_target
                target to exec things on
            salt_timeout
                timeout for jobs
            salt_job_poll
                poll interval to wait for job finish result
    Z
salt_job_pollg�������?�salt_targetNZsalt_timeouti��kwargsrFT��timeoutZtgt_type�listr�<r�r)�tgtr2�funZUnreachablez%s unreachable, retryingzTarget z unreachable)r6r7�arg�kwargzsaltutil.find_job)r6r7r8r2zTimeout {}s for {} is elapsed�5Z120g�?zjobs.lookup_jidZ	__kwarg__�dataZ	outputter)rzis not available.zmodule/function z is not availabler)!�pop�KeyError�int�
ValueError�
__FUN_TIMEOUTr r�time�
__CACHED_FUNSr*�utils�json�dumps�	TypeError�__CACHED_CALLSr,r.�copy�
setdefault�sleep�cmdr3�values�	Exception�log�errorrZ	cmd_async�boolr�pprintZpformat�float)r7�args�kw�pollrr2r0rZlaps�cacheZsargsZskwZskwargsZ	cache_key�connr-ZrkwargsZping_retriesZping_max_retriesZpingZpingsrL�vZjid�cretZrunningZendtoZwait_for_res�retrrr
�_salt\s ��������



���
���
��
�

�
��

�Y�
�Y�Y�r[cCstd�S)Nr	)r[rrrr
�avail_images�sr\c
Csnd}t�dg�}t�di�}t�dt�dg��}t�dd�}t�dd�}d	D]
}t�|d�r0d
}q&|r5d
}|r;|s;d}|rC|rC|sCd}t�sHdSd}	|rX||vrX||�dd�}	td
d|	d�}
i}|
��D]O\}}
|
��D]F\}}||d|d|��|d|dd�}|dvs�|s�||vr�|dvs�|dvr�||d|d|��|d|dd�||<qm||��d�||<qmqe|S)NF�names�profiles�profile�internal_lxc_profile�destroy�actionr1)Z
full_queryZselect_query�query�fullTrr)�extrar�size�
public_ips�private_ips��id�nameZimagerf�statergrh)rd)rb)rjrl)rr rr[�items�lower)rW�call�hider]r^r_�destroy_optrb�optrZlxclist�nodesrlZlxcsZlxccZlinfos�inforrr
�
list_nodes�s\��
�
�rucCst�sdS|s	d}t||d�S)Nrb�rWro)rrurvrrr
�list_nodes_full+s
rwcCs:t�sdS|s	d}t|d�}td||t�t�||S)zC
    Show the details from the provider concerning an instance
    Nrb�rozcloud.cache_node)rrw�	__utils__rr)rkrorsrrr
�
show_instance3s
rzcCs:|sd}t�s	dSgd�}tjj�tdd�t�d|�|�S)zO
    Return a list of the VMs that are on the provider, with select fields
    �selectNrirbrxzquery.selection)rr*rC�cloud�list_nodes_selectrwrr )rortrrr
r}As�r}c	Cszdjdi|��}t|d���}|��|D]\}}|d�||�dd��7}q|ds6d|vr2|d=t|��t�|�|S)Nz#
id: {name}
last message: {comment}�changesz
    {}:
      {}�
z
      �resultr)rr3rm�sort�replacerrNrt)rZZsret�keys�ch�commentrrr
�_checkpointOs��
r�c	CsRt�dd�}t�di�}t�dt�dg��}d}|r&||vr&||�dd�}t�dd	�}|dkr6|s6td
��t�s;dS|�d�dd�}td
||d�r�tdddd|�d�||d�tdtdd�td|d|d�}|d|d<|dr�|�d�|d<tdddd|�d�||d�tdtdd�t�d d�dur�td!|t��d"�d#t�|S)$zDestroy a lxc containerraFr^r_r`Nrrbr1zEThe destroy action must be called with -d, --destroy, -a or --action.z was not found)r�r�r)r�cloud.fire_event�eventzdestroying instancezsalt/cloud/z/destroying)rkZinstance_id�sock_dir�	transport�rSr�r�zlxc.destroyT)�stoprr�z was destroyedr�zdestroyed instancez
/destroyedZupdate_cachedirzcloud.delete_minion_cachedir�:r)rr rrr[ryr�split)	�vm_rorqr^r_rrbrZrYrrr
raasP�
�
��rac	Cs�t|�}|sdS|�d|�dd��}|��}||d<tdddd�|d	�td
d|gd��td
tdd�|d	iddd�}d|vrcd|vrct�d|d	�tj	j
�tj�
d|t��\|d<|d<t�|�}|d|d<||d<tdddd�|d	�td
d|gd��td
tdd�t�jd|d	g|d�}||d<|d|d<|ds�d �|d	�|d!<nd"|d#d"<dtvr�tdtd$<td=tddd%d&�|d	�td
d"|gd��td
tdd�|S)'aCreate an lxc Container.
    This function is idempotent and will try to either provision
    or finish the provision of an lxc container.

    NOTE: Most of the initialization code has been moved and merged
    with the lxc runner and lxc.init functions
    NZlxc_profileZcontainer_profiler_r�r�zstarting createzsalt/cloud/{}/creatingrkzcloud.filter_eventZcreating)rkr_�provider�driverr�r�r�Tr1)rkr~r�r�Zpub_keyZpriv_keyzGenerating minion keys for %sZkeysizer�hostzrequesting instancezsalt/cloud/{}/requestingZ
requestingzlxc.cloud_init)r9Z
runner_returnr�zError while creating {},�Error�createdr~r`zcreated instancezsalt/cloud/{}/created)rr rHryrrrN�debugr*rCr|Zgen_keysr"Zget_cloud_config_value�deepcopyr.rK)r�ro�provr_Z
event_datarZr9rYrrr
�create�sn
���

��	
��r�cCs8d}|tdvrtd|}d|vr|d}|Sd}|S)N�	providersZlxc)r)rkr;rrr
�get_provider�s�r�cCsz|duri}t��d�\}}d}d}t�dd�}t�dg�}d}|r1d|��}||kr1t|�}d	}|sRd
tvrR|rR|D]}d|��}||krJt|�}|rPd	}nq;n6d
tvr�td
}	td}
d|	��}|	|
vr�|
|	d
t�kr�|
|	d
�d�\}}|d|��7}t|�}d	}t�dd�r�|r�|s�t�r�t�di��|i��|i�}|r�td|dd�}
|
r�|St�dt�|d�dS)zW
    Return the contextual provider of None if no configured
    one can be found.
    Nr��unknownZlist_imagesr1r]Fz
provider: Tr_r^z	profile: r�z provider: rar�rr)r/z0Configured provider %s minion: %s is unreachable)rr�rr r�r[rNrO)r�Zdaliasr�r;r6Zimg_providerZ
arg_providersZmatchedrkZcurprofZprofsr�ZcdriverrZrrr
r�sb

��
���r)r)r&)NNr)'�__doc__rH�loggingrrQrAZsalt.clientr*Zsalt.configr"Zsalt.runnerZsalt.utils.cloudZsalt.utils.jsonZsalt.exceptionsr�	getLogger�__name__rNr@rGrBrrrr%r)r,r.r[r\rurwrzr}r�rar�r�rrrrr
�<module>sV	
��




8



,T