File: //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceOracle.cpython-310.pyc
o
�Ad�: � @ s� d Z ddlZddlZddlmZ ddlmZmZ ddlm Z ddlm
Z ddlmZm
Z
mZ ddlmZ dd lmZmZmZmZ dd
lmZmZ e�e�ZddiZd
ZdZed ZdZ ddiZ!edd�Z"G dd� dej#�Z$deddfdd�Z%G dd� de
j&�Z'dee( fdd�Z)de*fdd �Z+d1d"e,d#e(d$e,de-fd%d&�Z.dd'�d(e*de"fd)d*�Z/e'e
j0ffgZ1d+d,� Z2ed-kr�ddl3Z3d.Z4e3j5e4d/�Z6e6�7� e8e�9e/� e+� d0��� dS dS )2a3 Datasource for Oracle (OCI/Oracle Cloud Infrastructure)
Notes:
* This datasource does not support OCI Classic. OCI Classic provides an EC2
lookalike metadata service.
* The UUID provided in DMI data is not the same as the meta-data provided
instance-id, but has an equivalent lifespan.
* We do need to support upgrade from an instance that cloud-init
identified as OpenStack.
* Bare metal instances use iSCSI root, virtual machine instances do not.
* Both bare metal and virtual machine instances provide a chassis-asset-tag of
OracleCloud.com.
� N)�
namedtuple)�Optional�Tuple)�dmi)�log)�net�sources�util)�
NetworkConfig)�cmdline� ephemeral�get_interfaces_by_mac�is_netfail_master)�UrlError�readurl�configure_secondary_nicsFzOracleCloud.comz&http://169.254.169.254/opc/v{version}/z{path}/i(# �
Authorizationz
Bearer Oracle�OpcMetadataz version instance_data vnics_datac @ s e Zd ZdZdefdd�ZdS )�KlibcOracleNetworkConfigSourcez�Override super class to lower the applicability conditions.
If any `/run/net-*.cfg` files exist, then it is applicable. Even if
`/run/initramfs/open-iscsi.interface` does not exist.
�returnc C s
t | j�S )zOverride is_applicable)�bool�_files��self� r �D/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceOracle.py�
is_applicable9 �
z,KlibcOracleNetworkConfigSource.is_applicableN)�__name__�
__module__�__qualname__�__doc__r r r r r r r 2 s r �network_configr c C s d| vrdS | d dvrt �d| d � dS t� }| d dkrJdd� | d D �D ]}|d d
krGd|v rG|d }|�|�}|s@q(t|�rG|d= q(dS | d dkr�| �d
i ��� D ]/\}}d|v r�|�di ��d�}|r�|�|�}|ssqXt|�r�|d d= |d= ||d d<