File: //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceLXD.cpython-310.pyc
o
x[h�D � @ sH d Z ddlZddlZddlZddlZddlZddlmZmZ ddl m
Z
ddlmZm
Z
mZmZmZmZmZ ddlZddlmZ ddlmZ ddlmZ dd lmZmZmZmZmZ dd
l m!Z! e�"e#�Z$dZ%dZ&d
Z'ddddddd�Z(de)fdd�Z* d9deee) de
e)ef fdd�Z+G dd� de�Z,G dd� de�Z-G dd� de�Z.de)de/fdd �Z0G d!d"� d"ej1�Z2 #d:d$ej3d%e)d&e4fd'd(�Z5 #d:d$ej3d%e)d&e4dej6fd)d*�Z7G d+d,� d,e�Z8G d-d.� d.�Z9e&e8j:fd/e)d0e8de/fd1d2�Z;e2ej<ffgZ=d3d4� Z>e#d5k�r"ddl?Z?d6Z@e?jAe@d7�ZBeB�C� eDe�Ee;e8j:d8��� dS dS );a� Datasource for LXD, reads /dev/lxd/sock representation of instance data.
Notes:
* This datasource replaces previous NoCloud datasource for LXD.
* Older LXD images may not have updates for cloud-init so NoCloud may
still be detected on those images.
* Detect LXD datasource when /dev/lxd/sock is an active socket file.
* Info on dev-lxd API: https://documentation.ubuntu.com/lxd/en/latest/dev-lxd/
� N)�Flag�auto)�JSONDecodeError)�Any�Dict�List�Optional�Tuple�Union�cast)�HTTPAdapter)�HTTPConnection)�HTTPConnectionPool)�
atomic_helper�sources�subp�
url_helper�util)�find_fallback_nicz
/dev/lxd/sockz1.0z
http://lxd� user-data�network-config�vendor-data)�cloud-init.user-datazcloud-init.network-config�cloud-init.vendor-data�user.user-datazuser.network-config�user.vendor-data�returnc
C s� d} t �d�rIz
t � dg�\}}W n t jy, } zt�d|� | W Y d }~S d }~ww |�� dv rIt�� d d }|dkrAdS |d krGd
S dS | S )N�eth0zsystemd-detect-virtzHUnable to run systemd-detect-virt: %s. Rendering default network config.)�kvm�qemu�uname� �ppc64le�enp0s5�s390x�enc9�enp5s0)r �which�ProcessExecutionError�LOG�warning�stripr �system_info)�default_name� virt_type�_�err�arch� r2 �A/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceLXD.py�_get_fallback_interface_name/ s(
���r4 �nicsc C sF t � }|rt�d|� n t� }t�d|� dd|ddd�gd�gd �S )
zCReturn network config V1 dict representing instance network config.zCLXD datasource generating network from discovered active device: %szVLXD datasource generating network from systemd-detect-virt platform default device: %s� �physical�dhcpr )�type�control)r9 �name�subnets)�version�config)r r) �debugr4 )r5 �primary_nicr2 r2 r3 �generate_network_configI s$ ��
���rA c �$ e Zd Z� fdd�Zdd� Z� ZS )�SocketHTTPConnectionc s t � �d� || _d | _d S �N� localhost)�super�__init__�socket_path�sock��selfrH �� __class__r2 r3 rG p s
zSocketHTTPConnection.__init__c C s$ t � t jt j�| _| j�| j� d S �N)�socket�AF_UNIX�SOCK_STREAMrI �connectrH �rK r2 r2 r3 rR u s zSocketHTTPConnection.connect)�__name__�
__module__�__qualname__rG rR �
__classcell__r2 r2 rL r3 rC o s rC c rB )�SocketConnectionPoolc s || _ t� �d� d S rD )rH rF rG rJ rL r2 r3 rG { s zSocketConnectionPool.__init__c C s
t | j�S rN )rC rH rS r2 r2 r3 � _new_conn s
zSocketConnectionPool._new_conn)rT rU rV rG rY rW r2 r2 rL r3 rX z s rX c @ s"