HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/libcloud/common/__pycache__/ovh.cpython-310.pyc
o

;j�#�@sZddlZddlZddlmZddlmZddlmZddlm	Z	m
Z
ddlmZddl
mZzddlZWn
eyAddlZYnwdd	gZd
ZdZiddd
dd��ddddd��ddddd��ddddd��ddddd��ddddd��ddddd��ddddd��d d d!dd��d"d"d#dd��d$d$d%dd��d&d&d'd(d��d)d)d*d+d��d,d,d-dd��d.d.d/dd��d0d0d1dd��d2d2d3dd��d4d5dd�d6d7dd�d8d9dd�d:d;dd�d<d=dd�d>d?dd�d@dAdd�dBdCdDd�dEdFdGd�dHdId(d�dJdKdLd�dM��ZdNdOdP�dQdOdP�dRdOdP�dSdOdP�gZGdTdU�dUe�ZGdVd�de	�ZGdWd	�d	e
�ZdXdY�ZdS)Z�N)�List)�LibcloudConnection)�httplib)�JsonResponse�ConnectionUserAndKey)�InvalidCredsError)�get_response_object�OvhResponse�
OvhConnectionzapi.ovh.comz/1.0ZBHS1zBeauharnois, Quebec 1�CA)�id�nameZcountryZBHS2zBeauharnois, Quebec 2ZBHS3zBeauharnois, Quebec 3ZBHS4zBeauharnois, Quebec 4ZBHS5zBeauharnois, Quebec 5ZBHS6zBeauharnois, Quebec 6ZDC1z	Paris DC1ZFRZFRA1zFrankfurt 1ZDEZGRA1zGravelines 1ZGRA2zGravelines 2ZGSWz	Paris GSWZHIL1zHillsboro, Oregon 1ZUSZLON1zLondon 1ZUKZP19z	Paris P19ZRBX1z	Roubaix 1ZRBX2z	Roubaix 2ZRBX3z	Roubaix 3�RBX4z	Roubaix 4�RBX5z	Roubaix 5�RBX6z	Roubaix 6�RBX7z	Roubaix 7�SBG1zStrasbourg 1�SBG2zStrasbourg 2�SBG3zStrasbourg 3�SGP1zSingapore 1ZSG�SYD1zSydney 1ZAU�VIN1zVint Hill, Virginia 1�WAW1zWarsaw 1ZPL)rrrrrrrrrrr�GETz/*)�method�path�POST�PUTZDELETEc@seZdZdS)�OvhExceptionN)�__name__�
__module__�__qualname__�r"r"�G/opt/saltstack/salt/lib/python3.10/site-packages/libcloud/common/ovh.pyrKsrcseZdZ�fdd�Z�ZS)r	cs0t���}|pi}|�dd�dkrtd��|jS)NZ	errorCodeZINVALID_SIGNATUREz?Signature validation failed, probably using invalid credentials)�super�
parse_body�getr�body)�self�response��	__class__r"r#�parse_errorPs
�zOvhResponse.parse_error)rr r!r,�
__classcell__r"r"r*r#r	OscsveZdZdZeZeZeZ	dZ
gZeZdZ
dZ�fdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Zd�fdd�	Z�ZS)r
z�
    A connection to the Ovh API

    Wraps SSL connections to the Ovh API, automagically injecting the
    parameters that the API needs for each request.
    NTcs||�dd�}|rd�|t��d�|_nt|_|�dd�|_|jdur/|�|�}d|}t|��t�j	|g|�Ri|��dS)N�region�z{}.{}�.Zex_consumer_keyz�Your consumer key isn't validated, go to '%(validationUrl)s' for valid it. After instantiate your driver with "ex_consumer_key='%(consumerKey)s'".)
�pop�format�API_HOST�lstrip�host�consumer_key�request_consumer_keyrr$�__init__)r(�user_id�args�kwargsr.Zconsumer_key_json�msgr*r"r#r8ns

��zOvhConnection.__init__c	
Cs�|jd}t�tdd��}d|d�}t|jdd�}z|jd|||d	�Wnty=}z
t|j|d
�WYd}~nd}~wwt	|�
�|�}|jtj
krNt��|��}|��|S)Nz/auth/credentialzhttp://ovh.com)ZaccessRulesZredirection�application/json)zContent-Type�X-Ovh-Applicationi�)r5�portr)r�urlr'�headers�r5�e)�request_path�json�dumps�DEFAULT_ACCESS_RULESrr5�request�	Exception�5handle_and_rethrow_user_friendly_invalid_region_errorr	�getresponse�statusr�UNAUTHORIZEDrr%�close)	r(r9�action�datarAZhttpconrCr)Z
json_responser"r"r#r7�s$
���z"OvhConnection.request_consumer_keycCsb|js(d�|jt�}t|did�}|r|jstd��t|j�}|tt���|_tt���|jS)Nzhttps://{}{}/auth/timer)r@rrAz'Failed to get current time from Ovh API)	�
_timedeltar2r5�API_ROOTrr'rI�int�time)r(r@r)�	timestampr"r"r#�
get_timestamp�s

zOvhConnection.get_timestampc	Cs�d�|j|�}|r$|d7}|��D]\}}|d�||�7}q|dd�}t��}	d�|j|j|��||r6|ndt	|�g�}
|	�
|
���d|	��}|S)Nzhttps://{}{}�?z{}={}&����+r/z$1$)
r2r5�items�hashlib�sha1�join�keyr6�upper�str�update�encode�	hexdigest)r(rrO�paramsrPrUZfull_urlr^�valuer\Zbase_signature�	signaturer"r"r#�make_signature�s&
��
zOvhConnection.make_signaturecCs|S)Nr")r(rdr"r"r#�add_default_params�sz OvhConnection.add_default_paramscCs|�|j|jdd��|S)Nr=)r>zX-Ovh-ConsumerzContent-type)rar9r6)r(rAr"r"r#�add_default_headers�s��z!OvhConnection.add_default_headersrFc

s�|rt�|�nd}|��}|�|||||�}|pi}|�||d��z
t�j||||||d�WStyI}	zt|j	|	d�WYd}	~	dSd}	~	ww)N)zX-Ovh-TimestampzX-Ovh-Signature)rdrPrAr�rawrB)
rErFrVrgrar$rHrIrJr5)
r(rOrdrPrArrjrUrfrCr*r"r#rH�s$���zOvhConnection.request)NNNrF)rr r!�__doc__r3r5rRrDr	ZresponseClsrUZua�	LOCATIONSrQZallow_insecurer8r7rVrgrhrirHr-r"r"r*r#r
\s"
csBt|����gd�}t�fdd�|D��rtd|t|�f��|�)a
    Utility method which throws a more user-friendly error in case "name or
    service not known" error is received when sending a request.

    In most cases this error indicates user passed invalid ``region`` argument
    to the driver constructor.
    )zname or service not knownz,nodename nor servname provided, or not knownzgetaddrinfo failedcsg|]}|�vr|�qSr"r")�.0re�r<r"r#�
<listcomp>�szIhandle_and_rethrow_user_friendly_invalid_region_error.<locals>.<listcomp>z�Received "name or service not known" error when sending a request. This likely indicates invalid region argument was passed to the driver constructor.Used host: %s. Original error: %s)r`�lower�any�
ValueError)r5rCZerror_messages_to_throwr"rnr#rJ�s
��rJ)rTr[�typingrZ
libcloud.httprZlibcloud.utils.py3rZlibcloud.common.baserrZlibcloud.common.typesrZlibcloud.utils.connectionrZ
simplejsonrE�ImportError�__all__r3rRrlrGrIrr	r
rJr"r"r"r#�<module>s����������	�
���
�����










��