HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceOpenNebula.cpython-38.pyc
U

Ӈg�>�@s
ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZmZm
Z
e�e�ZdZdZdgZdZGdd�dej�ZGd	d
�d
e�ZGdd�de�ZGd
d�d�Zdd�Zdd�Zdd�Zddd�Zddd�Zdd�Z eZ!eej"ffgZ#dd�Z$dS)�N)�
atomic_helper�net�sources�subp�utilziid-dsopennebulaZnobody�
context.sh)Z
EPOCHREALTIMEZEPOCHSECONDSZRANDOMZLINENOZSECONDS�_ZSRANDOMZ__vc@sFeZdZdZdd�Zdd�Zdd�Zdd	�Zed
d��Z	dd
d�Z
dS)�DataSourceOpenNebulaZ
OpenNebulacCs4tj�||||�d|_tj�|jd�|_d|_dS)NZ
opennebula)	r�
DataSource�__init__�seed�os�path�join�seed_dir�network)�selfZsys_cfg�distro�paths�r�H/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceOpenNebula.pyr/szDataSourceOpenNebula.__init__cCstj�|�}d||j|jfS)Nz%s [seed=%s][dsmode=%s])rr
�__str__r�dsmode)r�rootrrrr5szDataSourceOpenNebula.__str__c
Cs�dti}d}d}t}d|jkr*|j�d�}|jg}|�t��|D]�}zLtj�	|j�rht
||j|d�}n(|�d�r�t
jt
||jd�}t�||�}Wn\tk
r�YqBYnFtk
r�}z|�W5d}~XYn"tjk
r�t�d|�YnX|rB|}t�d|��qqB|�sdS|d	}	t�|	|g�}	|�|�d
�|j�d�g�|_|jtjk�r\dS||_|�d�|_|	|_|�d
�|_dS)Nzinstance-id�	parseuser��asuserz/dev)rrz%s was not mountablezfound datasource in %sF�metadataZDSMODEr�network-interfaces�userdataT) �DEFAULT_IID�DEFAULT_PARSEUSERZds_cfg�getr�extend�find_candidate_devsr
r�isdir�read_context_disk_dirr�
startswith�	functools�partialrZmount_cb�NonContextDiskDir�BrokenContextDiskDirZMountFailedError�LOG�warning�debugZ
mergemanydictZ_determine_dsmoderrZDSMODE_DISABLEDrrrZuserdata_raw)
r�defaults�resultsrrZ
candidatesZcdevZpartially_applied_func�excZmdrrr�	_get_data9s^
�
��zDataSourceOpenNebula._get_datacCs$|j|jkrd}nd}d||jfS)z/Return the subplatform metadata source details.zseed-dirzconfig-diskz%s (%s))rr)rZsubplatform_typerrr�_get_subplatformvsz%DataSourceOpenNebula._get_subplatformcCs|jdk	r|jSdSdS�N)r)rrrr�network_config~s
z#DataSourceOpenNebula.network_configFcCs.|dkr|jtjkrd}nd}tj�|||�S)NTF)rrZDSMODE_NETWORKr
�get_hostname)rZfqdnZ
resolve_ipZ
metadata_onlyrrrr6�s
z!DataSourceOpenNebula.get_hostnameN)FFF)�__name__�
__module__�__qualname__Zdsnamerrr2r3�propertyr5r6rrrrr	+s=
r	c@seZdZdS)r*N�r7r8r9rrrrr*�sr*c@seZdZdS)r+Nr;rrrrr+�sr+c@speZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zddd�Z
dd�ZdS)�OpenNebulaNetworkNcCs|||_|dkrt|�}t�dd�t|��dd�d�D��|_i|_|��D],\}}t�	d|�}|rJ|�
d�|j|��<qJdS)NcSsg|]}|�qSrr��.0�krrr�
<listcomp>�s�z.OpenNebulaNetwork.__init__.<locals>.<listcomp>cSst�|d�S)N�)rZnatural_sort_key)r?rrr�<lambda>��z,OpenNebulaNetwork.__init__.<locals>.<lambda>)�keyz
^(.+)_MAC$rA)�context�get_physical_nics_by_mac�collections�OrderedDict�sorted�items�ifaces�context_devname�re�match�group�lower)rrErZsystem_nics_by_macr?�v�mrrrr�s ���zOpenNebulaNetwork.__init__cCs"d�dd�|�d�dd�D��S)N�.cSsg|]}tt|d���qS)�)�str�int)r>�crrrr@�sz,OpenNebulaNetwork.mac2ip.<locals>.<listcomp>�:�)r�split)r�macrrr�mac2ip�szOpenNebulaNetwork.mac2ipcCs\i}|�|dd���}|�|j�dd����|r:||d<|�|dd���}|rX||d<|S)N�dns�ZDNS�	addresses�
search_domain�search)�	get_fieldrZr#rEr")r�dev�nameserversr]r`rrr�get_nameservers�sz!OpenNebulaNetwork.get_nameserverscCs|�|d�S)N�mtu�rb�rrcrrr�get_mtu�szOpenNebulaNetwork.get_mtucCs|�|d|�|��S)NZip)rbr\)rrcr[rrr�get_ip�szOpenNebulaNetwork.get_ipcCs<g}|�|d�}|r|�|�|�|d�}|r8|�|�|S)N�ip6�ip6_ula)rb�append)rrc�
addresses6rkrlrrr�get_ip6�s

zOpenNebulaNetwork.get_ip6cCs|�|dd�S)NZip6_prefix_lengthZ64rgrhrrr�get_ip6_prefix�sz OpenNebulaNetwork.get_ip6_prefixcCs|�|d�S)N�gatewayrgrhrrr�get_gateway�szOpenNebulaNetwork.get_gatewaycCs|�|d|�|d��S)NZip6_gateway�gateway6rgrhrrr�get_gateway6�s

�zOpenNebulaNetwork.get_gateway6cCs|�|dd�S)N�maskz
255.255.255.0rgrhrrr�get_mask�szOpenNebulaNetwork.get_maskcCs*|j�d�||f����}|dkr&|S|S)z�return the field name in context for device dev.

        context stores <dev>_<NAME> (example: eth0_DOMAIN).
        an empty string for value will return default.r)Nr^)rEr"r�upper)rrc�name�default�valrrrrb�s���	zOpenNebulaNetwork.get_fieldcs6i}d|d<i|d<i}|j��D�]\}}|��}|j�||�}i}d|i|d<g|d<|�|�}tt�|��}|d�	|�
||�d|�|�|�}	|	r�|�|��|d�
�fdd	�|	D��|�|�}
|
r�|
|d
<|�|�}|r�||d<|�|�}|�r||d<|�|�}
|
�r |
|d
<|||<q"||d<|S)NrY�version�	ethernetsZ
macaddressrNr_�/csg|]}|d��qS)r}r)r>�i�Zprefix6rrr@	sz.OpenNebulaNetwork.gen_conf.<locals>.<listcomp>Zgateway4rsrdrf)rKrJrPrLr"rvrUrZipv4_mask_to_net_prefixrmrjrorpr#rrrtreri)rZnetconfr|r[rcZc_devZdevconfru�prefixrnrqrsrdrfrrr�gen_conf�sD


�




zOpenNebulaNetwork.gen_conf)N)N)r7r8r9rr\rerirjrorprrrtrvrbr�rrrrr<�s


r<cCs@g}dD]2}t�|�}|��|D]}||kr"|�|�q"q|S)zE
    Return a list of devices that may contain the context disk.
    )z
LABEL=CONTEXTzLABEL=CDROMzTYPE=iso9660)rZfind_devs_with�sortrm)Zcombined�f�devs�drrrr$&s
r$cCs
dd|gS)NZsudoz-ur��userrrr�switch_user_cmd5sr�cCs
t�d�S)zDprint the shell environment variables within delimiters to be parsedz�
        printf "%s\0" _start_
        [ $0 != 'sh' ] && set -o posix
        set
        [ $0 != 'sh' ] && set +o posix
        printf "%s\0" _start_
        )�textwrap�dedentrrrr�
varprinter9s�r�c
Csd|��krt�d�t�d|t�d}g}|dk	rBt|�}|�ddg�tj||d�j}i}|�d	�d
d�}|d|d}}t	d
d�t
�|�D��}	t	dd�t
�|�D��}
t|	����
t|
����D]6}|tkr�q�|
�|�}|dk	r�||	�|�kr�|||<q�|S)a<run content and return environment variables which changed

    WARNING: the special variable _start_ is used to delimit content

    a context.sh that defines this variable might break in unexpected
    ways

    compatible with posix shells such as dash and ash and any shell
    which supports `set -o posix`
    s_start_zYUser defined _start_ variable in context.sh, this may breakcloud-init in unexpected ways.z{
%s

:
} > /dev/null
�
NZshz-e)�dataz_start_rArrYcss|]}|jddd�VqdS��=rA)�maxsplitN�rZ�r>Zvariablerrr�	<genexpr>}sz%parse_shell_config.<locals>.<genexpr>css|]}|jddd�VqdSr�r�r�rrrr��s)�encoder,r-r�r�r#r�stdoutrZ�dict�shlex�set�keys�union�
EXCLUDED_VARSr")
�contentrZbcmd�cmd�outputZretZsectionsZbeforeZafterZpre_envZpost_envrD�valuerrr�parse_shell_configFsB�������

r�c
Cs�i}tD]&}tj�||�}tj�|�r|||<q|sDtd|df��i}did�}d|k�r8|dk	r�zt�|�Wn4tk
r�}zt	dj
|d��|�W5d}~XYnXz(tj�|d�}	t�|	�}
t
|
|d�}Wndtjk
�r}zt	d	|�|�W5d}~XYn2tk
�r4}ztd
|�|�W5d}~XYnXntd��|�sJ|S||d<d}d
|k�rfd
}nd|k�rtd}|�r�|�|���}dd�|D�|dd<dD]&}
|
|k�r�||
|dd<�qʐq�d|k�r�|d|d<nd|k�r�|d|d<d|k�rV|�d|�d��}|dk�rVzt�|d�|d<Wn tk
�rTt�d�YnXdd�|D�}|�r�t||�}|��|d<|S)z�
    read_context_disk_dir(source_dir):
    read source_dir and return a tuple with metadata dict and user-data
    string populated.  If not a valid dir, raise a NonContextDiskDir
    z%s: %szno files foundN)rrrz'configured user '{user}' does not existr�rzError processing context.sh: %szError reading context.sh: %szMissing context.shrZSSH_KEYZSSH_PUBLIC_KEYcSs"g|]}t|�r|�d�s|�qS)�#)�lenr')r>�linerrrr@�s
z)read_context_disk_dir.<locals>.<listcomp>zpublic-keys)ZSET_HOSTNAMEZHOSTNAMEZ	PUBLIC_IPZ	IP_PUBLICZETH0_IPzlocal-hostnameZ	USER_DATArZUSERDATAZUSERDATA_ENCODINGZUSER_DATA_ENCODING�base64z"Failed base64 decoding of userdatacSsg|]}t�d|�r|�qS)z
^ETH\d+_IP.*$)rMrNr=rrrr@�sr)�CONTEXT_DISK_FILESr
rr�isfiler*�pwd�getpwnam�KeyErrorr+�formatrZload_text_filer�rZProcessExecutionError�IOErrorr"�
splitlinesrZb64d�	TypeErrorr,r-r<r�)Z
source_dirrr�foundZaf�fnrEr0�err�Zssh_key_var�linesr?�encodingZipaddr_keysZonetrrrr&�s�


���
����

�




�

r&cs"t��}t�fdd�|��D��S)Ncs$g|]\}}�j�|�r||f�qSr)Z
networkingZis_physical)r>rR�n�rrrr@�sz,get_physical_nics_by_mac.<locals>.<listcomp>)rZget_interfaces_by_macr�rJ)rr�rr�rrF�s�rFcCst�|t�Sr4)rZlist_from_depends�datasources)Zdependsrrr�get_datasource_list�sr�)N)N)%rGr(Zloggingr
r�rMr�r�Z	cloudinitrrrrrZ	getLoggerr7r,r r!r�r�r
r	�	Exceptionr*r+r<r$r�r�r�r&rFZDataSourceOpenNebulaNetZDEP_FILESYSTEMr�r�rrrr�<module>s8
c
G
`
�