HEX
Server: Apache
System: Linux box5154.bluehost.com 5.14.0-162.23.1.9991722448259.nf.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 31 18:11:45 UTC 2024 x86_64
User: almiraso (1849)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //usr/libexec/oracle-cloud-agent/plugins/osms/oci_agent_utils/utils.pyc
a

���f>�@s�ddlmZddlZddlZddlZddlZddlZddlmZm	Z	ddl
mZddlm
Z
ddlmZdZdadZdadZd	d
�Zdd�Zd dd�Zdd�Zdd�Zdd�Zdd�Zd!dd�Zdd�Zdd�Zdd�ZdS)"�)�absolute_importN��
REGION_REALMS�REALMS)�HTTPAdapter)�default_user_agent)�Retryz
User-Agent)�oc5�oc6�oc7�oc8cCs|d}|�d|�|S)z%Get the region from instance metadata�canonicalRegionNamez
Region: %s)�debug)�instance_metadata�logger�region_name�r�E/sparta/input/python_modules/oci_agent_utils/oci_agent_utils/utils.py�
get_regionsrcCsHt||�}|�d�}|dur@||vr@||}|�d�||��nd}|S)N�https_certificateszregion {0}; cert {1}.)r�get�info�format)rr�agent_configrr�certificaterrr�get_certificate_bundle s

rTcCs |rtrtSt|||�atSdS)N)�telemetry_endpoint�build_telemetry_endpoint)rr�telemetry_config�	use_cacherrr�get_telemetry_endpoint+sr cCs�t||�}|�d�}|durL||vrL|�d|�||}|�d�t��nPt|�}|d��tvrvd�|d�|d<t|�}t	j
�|jfi|��|d�}|�d	�|��|S)
a�
    Build endpoint based on the region where the instance is in.
    Region is fetched from instance metadata.
    It gets the endpoint url template from the telemetry config file.
    For R1:
    'https://telemetry-ingestion.r1.oracleiaas.com/20180401/metrics'
    Others:
    old config endpoint_format: 'https://telemetry-ingestion.{region}.oraclecloud.com'
    new config endpoint format: 'https://telemetry-ingestion.{region}.{domain}'
    :param instance_metadata:
    :param logger:
    :return:
    �region_endpointsNzRegion match found: %szRegion endpoints found: {}�realmzoci.{}�domain�
endpoint_pathz%Region endpoint built from format: {})rrrrr�get_region_info�lower�onsr_realms�get_telemetry_endpoint_format�urllib�parse�urljoin)rrr�regionr!�build_telemetry�region_info�endpoint_formatrrrr4s$

��rcCs$d}|r d|�d�vr |�d�}|S)Nz-https://telemetry-ingestion.{region}.{domain}z{domain}r/)r)�telemetry_config_dictr/rrrr(Vs
r(cCs@|tvr t|}|tvr t|S|dkr,dS|dkr8dStdS)N�r1�oracleiaas.comzus-tacoma-1zoracleonsrcloud.com�oc1r)r,r"rrr�
get_domain_sr4cCs�d|�d�krdddd�S|d}d|i}|�di�}|�d	�}|�d
�}d|d<d
|d<|rr|rr||d<||d<t�|d�}t�|�}|r�|r�||d<||d<|S)a�Gets regional domain suffix to build service urls

    Get region_info from instance metadata service and merge
    with constants defined in oci sdk prefering sdk values

    Parameters
    ----------
    instance_metadata : dict
       Dict containing instance metadata from metadata service.

    Returns
    -------
    region_info : dict
        Dict with realm, region and domain keys

    Examples
    --------
    For R1,
    {'realm': 'region1', 'region': 'r1', 'domain': 'oracleiaas.com'}
    For OC1,
    {'realm', 'oc1', 'region': 'us-ashburn-1', 'domain', 'oraclecloud.com'}
    For OC2,
    {'realm', 'oc2', 'region': 'us-langley-1', 'domain': 'oraclegovcloud.com'}
    For OC3,
    {'realm': 'oc3', 'region': 'us-gov-ashburn-1', 'domain': 'oraclegovcloud.com'}
    For OC4,
    {'realm': 'oc4', 'region': 'uk-gov-london-1', 'domain': 'oraclegovcloud.uk'}
    For OC5,
    {'realm': 'oc5', 'region': 'us-tacoma-1', 'domain': 'oracleonsrcloud.com'}
    �sear,�region1r1r2)r"r,r#r
�
regionInfo�realmDomainComponent�realmKeyr3r"zoraclecloud.comr#�)rrr)rr,r.�metadata_region_info�realm_domain_component�	realm_key�	sdk_realm�
sdk_domainrrrr%ls$


r%cCsjt�}d}|rJt|t�r8d�dd�|��D��}|��}t|t�rJ|��}t|�dkrbd||f}t|iS)Nr:cSs$g|]\}}d||�dd�f�qS)z%s/%s � �-)�replace)�.0�key�valuerrr�
<listcomp>�s�z"get_user_agent.<locals>.<listcomp>rz%s %s)	r�
isinstance�dict�join�items�strip�str�len�user_agent_header_name)�extra_user_agents�user_agents�more_user_agentsrrr�get_user_agent�s

�
�rRcCs$trtStddddtdg�d�atS)N�g�������?���)�total�connect�read�backoff_factor�status_forcelist)�request_no_retryr�	frozensetrrrr�request_dont_retry�s�r\cCs0t��}tt�d�}|�d|�|�d|�|S)N)�max_retrieszhttp://zhttps://)�requests�Sessionrr\�mount)�session�adapterrrr�requests_no_retry_session�s
rcc	Cs�z�ttd�}|r�tj�|�}tj�|�}t�|�D]N}|�d�r2||kr2|�d|�zt	�
tj�||��Wq2ty~Yq20q2Wnt
y�|�d�Yn0dS)z[
    Rudimentary workaround for https://github.com/pyinstaller/pyinstaller/issues/2379
    �_MEIPASS�_MEIz
Cleanup %szCleanup MEIN)�getattr�sys�os�path�dirname�basename�listdir�
startswithr�shutil�rmtreerI�PermissionError�	Exception�	exception)r�
mei_bundle�mei_dir�current_mei�filenamerrr�cleanup_mei�s
rw)T)N) �
__future__rrhrnrgr)r^�oci.regionsrr�requests.adaptersr�requests.utilsr�urllib3.util.retryr�telemetry_metricsrrNrZr'rrr rr(r4r%rRr\rcrwrrrr�<module>s2
	"	
5