File: //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceLXD.cpython-38.pyc
U
Ӈg�D � @ s: 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(e)d�dd�Z*d9eee) e
e)ef d�dd�Z+G dd� de�Z,G dd� de�Z-G dd� de�Z.e)e/d�dd �Z0G d!d"� d"ej1�Z2e3d�d#d$�Z4d:ej5e)e3d&�d'd(�Z6d;ej5e)e3ej7d)�d*d+�Z8G d,d-� d-e�Z9G d.d/� d/�Z:e&e9j;fe)e9e/d0�d1d2�Z<e2ej=ffgZ>d3d4� Z?e#d5k�r6ddl@Z@d6ZAe@jBeAd7�ZCeC�D� eEe�Fe<e9j;d8��� 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�r�zt � dg�\}}W n8 t jk
rZ } zt�d|� | W Y �S d }~X Y nX |�� dkr�t�� d d }|dkr�dS |d kr�d
S dS | S )NZeth0zsystemd-detect-virtzHUnable to run systemd-detect-virt: %s. Rendering default network config.)ZkvmZqemu�uname� Zppc64leZenp0s5Zs390xZenc9Zenp5s0)r ZwhichZProcessExecutionError�LOG�warning�stripr Zsystem_info)Zdefault_nameZ virt_type�_�errZarch� r% �A/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceLXD.py�_get_fallback_interface_name/ s$
�r'