CasperSecurity

Current Path : /lib/python3/dist-packages/cloudinit/config/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/cloudinit/config/__pycache__/cc_lxd.cpython-310.pyc

o

t��h�5�
@sUdZddlZddlZddlmZmZddlZddlmZm	Z	ddl
mZddlm
Z
ddlmZddlmZe�e�Zd	Zd
dgedgd
�Zeed<dd�Zdd�Zdede
dededdf
dd�Zdd�Zdd�Zdd�Z	!d(d"d#�Z d$e!d%edeefd&d'�Z"dS))z>LXD: configure lxd with ``lxd init`` and optionally lxd-bridge�N)�List�Tuple)�subp�util)�Cloud)�Config)�
MetaSchema)�PER_INSTANCE�lxdbr0�cc_lxd�ubuntu�lxd)�id�distros�	frequency�activate_by_schema_keys�metacCs�g}t|t�s|�dt|�j�d��t|t�s$|�dt|�j�d��t|t�s5|�dt|�j�d��|rV|s;|rV|r@dgng}||rHdgng7}|�dd�|����|r_td	�|���d
S)z�Validate user-provided lxd network and bridge config option values.

    @raises: ValueError describing invalid values provided.
    z/lxd.init config must be a dictionary. found a '�'z1lxd.bridge config must be a dictionary. found a 'z.lxd.preseed config must be a string. found a 'zlxd.initz
lxd.bridgezMUnable to configure LXD. lxd.preseed config can not be provided with key(s): z, z. N)�
isinstance�dict�append�type�__name__�str�join�
ValueError)�init_cfg�
bridge_cfg�preseed_str�errors�incompat_cfg�r!�9/usr/lib/python3/dist-packages/cloudinit/config/cc_lxd.py�supplemental_schema_validation!s<
��
��
�����r#cCs�d}gd�}|D]}|�|�r!|�d|�dd�t||�fg�qzt�|�WdStjyT|ddkr9�t�d�t�gd	��d
d�|D�}t�|�YdSw)
z�Set up lxd if init config is given.

    :param init_cfg: dict of lxd init configuration options to provide
        to `lxd init --auto`
    )�network_address�network_port�storage_backend�storage_create_device�storage_create_loop�storage_pool�trust_password)r
�initz--autoz--%s=%s�_�-r&�lvmzqCloud-init doesn't use thinpool by default on Ubuntu due to LP #1982780. This behavior will change in the future.)�lxc�storage�create�defaultr.zlvm.use_thinpool=falsecSsg|]	}|�d�s|�qS)z--storage-backend)�
startswith)�.0�xr!r!r"�
<listcomp>qsz#handle_init_cfg.<locals>.<listcomp>N)�get�extend�replacerr�ProcessExecutionError�LOG�info)r�	init_keys�cmd�k�new_cmdr!r!r"�handle_init_cfgDs(

$����rA�name�cfg�cloud�args�returnc
Cs�|�d�}|st�d|�dSt|t�stdt|�j�d���|�di�}|�dd�}|�di�}t|||�t	�
d�sZz	t	�	gd	��Wnt	jyY}ztd
|�|�d}~wwt
||�}	t|	�r�z|j�|	�Wnt	jy�}
zt�d|	|
�WYd}
~
dSd}
~
wwt	�	gd��|r�t	j	gd
�|d�dS|r�t|�d}|�r6|�dt�}tj�d�r�t	�
|�r�t|�}
zt�d|�d�dd�|
��D��d}t	j	dg|d�Wnty�t�td|�Ynwt�d�t�d�t	�	gd��dSt|�\}}t|t |�t |�t |�d�|�r"t�dd�|��t!|�|�r4t�dd�|��t!|�dSdS|�r?td|��dS)Nr
z8Skipping module named %s, not present or disabled by cfgz*lxd config must be a dictionary. found a 'rr+�preseed��bridge)�snap�installr
z#Failed to install lxd from snap: %sz!failed to install packages %s: %s)r
�	waitreadyz
--timeout=300)r
r+z	--preseed)�datazdebconf-communicaterBz/etc/default/lxd-bridgezSetting lxd debconf via %s�
cSsg|]
\}}d||f�qS)z	set %s %sr!)r4r?�vr!r!r"r6�szhandle.<locals>.<listcomp>zFailed to run '%s' for lxd withz Running dpkg-reconfigure for lxd)zdpkg-reconfigurer
z--frontend=noninteractive)�net_name�did_initr1�attachzCreating lxd bridge: %s� z!Setting up default lxd bridge: %sz*Unable to configure lxd bridge without %s.)"r7r;�debugrrrrrr#r�whichr:�RuntimeError�get_required_packages�len�distro�install_packages�warningrA�_DEFAULT_NETWORK_NAME�os�path�exists�bridge_to_debconfr�items�	Exceptionr�logexc�del_file�
bridge_to_cmd�maybe_cleanup_default�bool�_lxc)rBrCrDrE�lxd_cfgrrr�e�packages�exc�
dconf_commrP�debconfrM�
cmd_create�
cmd_attachr!r!r"�handlexs�
�
��
����
��������

�
����rqcCsXi}|�d�dkrd|d<d|d<|S|�d�dkr+d|d<d|d	<|�d
�|d<|S|�d�dkr�d|d<|�d
�rB|�d
�|d<|�d�rvd|d
<|�d�|d<|�d�|d<|�d�|d<|�d�|d<|�d�|d<|�dd�|d<|�d�r�d|d<|�d�|d<|�d�|d<|�dd�|d<|�d �r�|�d �|d!<|Std"|�d���)#N�mode�none�falsezlxd/setup-bridgerHzlxd/bridge-name�existing�truezlxd/use-existing-bridgerB�new�ipv4_addresszlxd/bridge-ipv4zlxd/bridge-ipv4-address�ipv4_netmaskzlxd/bridge-ipv4-netmask�ipv4_dhcp_firstzlxd/bridge-ipv4-dhcp-first�ipv4_dhcp_lastzlxd/bridge-ipv4-dhcp-last�ipv4_dhcp_leaseszlxd/bridge-ipv4-dhcp-leases�ipv4_natzlxd/bridge-ipv4-nat�ipv6_addresszlxd/bridge-ipv6zlxd/bridge-ipv6-address�ipv6_netmaskzlxd/bridge-ipv6-netmask�ipv6_natzlxd/bridge-ipv6-nat�domainzlxd/bridge-domain�invalid bridge mode "%s")r7rV)rrnr!r!r"r`�sN)�$�

���
�
�r`cCs�|�d�dkr	dS|�dt�}g}dd|ddg}|�d�d	kr#d|fS|�d�d
kr3td|�d���dd|g}|�d
�r||�d�r||�d|�d
�|�d�f�|�dd�dkr^|�d�|�d�r{|�d�r{d|�d�|�d�f}|�d|�n|�d�|�d�r�|�d�r�|�d|�d�|�d�f�|�d�dkr�|�d�n|�d�|�d�r�|�d|�d��|�d d!�}|d!kr�|�d"|���||fS)#Nrrrs)NNrB�networkzattach-profiler2�eth0rurwr�r1rxryzipv4.address=%s/%sr}rvz
ipv4.nat=truerzr{z%s-%szipv4.dhcp.ranges=%szipv4.address=noner~rzipv6.address=%s/%sr�z
ipv6.nat=truezipv6.address=noner�z
dns.domain=%s�mtu���zbridge.mtu=)r7r\rVr)r�bridge_namerorp�
dhcp_ranger�r!r!r"re
sX
��
���
��
�

recCsBdtj�dd�tj�dd�d�}tjdgt|�dg|d	�dS)
N�C�HOMEz/root�USER�root)�LC_ALLr�r�r/z
--force-local)�
update_env)r]�environr7r�list)r>�envr!r!r"rhIs
�"rhr2r�c

Cs&|tks|sdSd}d}|rUd}ztdd||g�t�||||�Wn"tjyD}	z|	jdkr2|	�t�||||�WYd}	~	nd}	~	wwd}tdd	|g�t�|||�|r�d
}ztddd
||g�t�||||�WdStjy�}	z|	jdkr}|	�t�||||�WYd}	~	dSd}	~	wwdS)aNewer versions of lxc (3.0.1+) create a lxdbr0 network when
    'lxd init --auto' is run.  Older versions did not.

    By removing any that lxd-init created, we simply leave the add/attach
    code intact.

    https://github.com/canonical/lxd/issues/4649Nz"failed. Assuming it did not exist.z
succeeded.z/Detach of lxd network '%s' from profile '%s' %sr�zdetach-profile�zDeletion of lxd network '%s' %s�deletez+Removal of device '%s' from profile '%s' %s�profile�device�remove)r\rhr;rTrr:�	exit_code)
rPrQr1rRr��nic_name�fail_assume_enoent�	succeeded�msgrjr!r!r"rfRs<

��
���rfrrc
Cs�g}g}i}d|vr|�|d�|r1d|vr1zt�|�}Wntjttfy0t�d�Ynw|�dg�D]}|�d�rE|�|d�q7d|vrTt	�
d�sT|�d�d|vrbt	�
d�sb|�d	�d
|vrpt	�
d�sp|�d�|S)
z&identify required packages for installr&�
storage_poolsz|lxd.preseed string value is not YAML.  Unable to determine required storage driver packages to support storage_pools config.�driver�zfszzfsutils-linuxr.�lvcreate�lvm2�btrfsz
mkfs.btrfszbtrfs-progs)r�yaml�	safe_load�	YAMLError�	TypeErrorrr;r[r7rrU)rrrk�storage_drivers�preseed_cfgr)r!r!r"rWzs0��
�


rW)r2r�)#�__doc__�loggingr]�typingrrr��	cloudinitrr�cloudinit.cloudr�cloudinit.configr�cloudinit.config.schemar�cloudinit.settingsr	�	getLoggerrr;r\r�__annotations__r#rArr�rqr`rerhrfrrWr!r!r!r"�<module>s4
�#4d1<

�(
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY