File manager - Edit - /opt/saltstack/salt/lib/python3.10/site-packages/libcloud/common/__pycache__/cloudstack.cpython-310.pyc
Back
o ;j7 � @ s� d dl Z d dlZd dlZd dlZd dlmZmZmZmZ d dl m Z mZmZ d dl mZmZ d dlmZ G dd� de �ZG dd � d ee�ZG d d� d�ZdS )� N)�b�httplib�urlquote� urlencode)�JsonResponse�PollingConnection�ConnectionUserAndKey)� ProviderError�MalformedResponseError)�InvalidCredsErrorc @ s e Zd Zdd� ZdS )�CloudStackResponsec C sx | j tjkr td��d }| �� }t|d�r%t|�� �d }d|v r%|d }|d u r,| j}|s0d}t || j | j jd�}|�)NzInvalid provider credentials�valuesr � errortextz7WARNING: error message text sent by provider was empty.)�valueZ http_code�driver)�statusr �UNAUTHORIZEDr Z parse_body�hasattr�listr �bodyr � connectionr )�selfr r r �error� r �N/opt/saltstack/salt/lib/python3.10/site-packages/libcloud/common/cloudstack.py�parse_error s zCloudStackResponse.parse_errorN)�__name__� __module__�__qualname__r r r r r r s r c s� e Zd ZeZdZdZdZdZdZ dZ dd� Zdd � Zd d� Z dd � Z d� fdd� Z ddd�Zdd� Zdd� Z ddd�Z� ZS )�CloudStackConnection� � _sync_requestiX r � c C s |rt |�}|S )z� Must of the data is sent as part of query params (eeww), but in newer versions, userdata argument can be sent as a urlencoded data in the request body. )r )r �datar r r �encode_data: s z CloudStackConnection.encode_datac C s� dd� t |�� �D �}|jdd� d� g }|D ]!}tt|d �dd�}tt|d �d d�}d�||�}|�|� qd�|�}|�� � d d�}t jt| j �t|�tjd�}t�t|�� ��S )Nc S s g | ] \}}|� � |f�qS r )�lower)�.0�k�vr r r � <listcomp>F s z8CloudStackConnection._make_signature.<locals>.<listcomp>c S s | d S )Nr r )�xr r r �<lambda>G s z6CloudStackConnection._make_signature.<locals>.<lambda>)�keyr z[])�safer z[]*z{}={}�&�+z%20)�msgZ digestmod)r �items�sortr �str�format�append�joinr% �replace�hmac�newr r, �hashlib�sha1�base64� b64encode�digest)r �params� signature�pairs�pairr, r �itemr r r �_make_signatureE s z$CloudStackConnection._make_signaturec C s | j |d<