3
\meX: @ s d Z ddlZddlZddlZddlmZ ddlmZmZ ddl m
Z
mZmZm
Z
mZ ddlmZ ddlmZmZmZmZ ddlmZmZ ejeZd d
iZdZdZed
ZdZ ddiZ!eddZ"G dd dej#Z$eddddZ%G dd de
j&Z'ee( dddZ)e*dddZ+d-e,e(e,e-d d!d"Z.d
d#e*e"d$d%d&Z/e'e
j0ffgZ1d'd( Z2ed)krddl3Z3d*Z4e3j5e4d+Z6e6j7 e8e
j9e/ e+ d, dS ).a3 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)OptionalTuple)
atomic_helperdminetsourcesutil)
NetworkConfig)cmdline ephemeralget_interfaces_by_macis_netfail_master)UrlErrorreadurlconfigure_secondary_nicsFzOracleCloud.comz&http://169.254.169.254/opc/v{version}/z{path}/i(# Z
Authorizationz
Bearer OracleOpcMetadataz version instance_data vnics_datac @ s e Zd ZdZedddZdS )KlibcOracleNetworkConfigSourcezOverride 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 | jS )zOverride is_applicable)bool_files)self r &/usr/lib/python3.6/DataSourceOracle.py
is_applicable8 s z,KlibcOracleNetworkConfigSource.is_applicableN)__name__
__module____qualname____doc__r r r r r r r 1 s r )network_configr c C s d| krdS | d dkr,t jd| d dS t }| d dkrxdd | d D D ]@}|d d
krRd|krR|d }|j|}|sqRqRt|rR|d= qRW n| d dkrxp| jdi j D ]\\}}d
|kr|jd
i jd}|r|j|}|sqqt|r|d
d= |d= ||d
d<