o
    #j                     @   s   d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ eeZG dd deZdS )z8
This module provides a client class for BOS CloudFlow.
    N)BceBaseClient)bce_v1_signer)bce_http_client)handler)http_methods)http_content_types)http_headers)required)cloudflow_modelc                   @   s   e Zd ZdZdZd#ddZdd Ze			d$d
dZ		d%ddZ	e
ejdd#ddZe
ejdd#ddZe
edd#ddZd#ddZe
edd#ddZe
edd#ddZe
edd#ddZe
edd#dd Ze
edd#d!d"ZdS )&CloudFlowClientz
    sdk client
    s   /v1/Nc                 C   s   t | | d S N)r   __init__)selfconfig r   m/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/baidubce/services/cloudflow/cloudflow_client.pyr      s   zCloudFlowClient.__init__c                 C   s(   |d u r| j S t| j }|| |S r   )r   copyZmerge_non_none_values)r   r   Z
new_configr   r   r   _merge_config"   s
   
zCloudFlowClient._merge_configr     c              
   C   s   g d}|du st |dkr/g }|D ]}	|	  }
|
tjs$|
|v r)||
 q|  n|D ]}	|	  }
|
tjrD||
 q1|  t	| |||||||S )z;
        CloudFlow API signature adaptation method
        )s   hosts   content-md5s   content-lengths   content-typeNr   )
lenstriplower
startswithr   Z
BCE_PREFIXappendsortr   sign)credentialshttp_methodpathheadersparams	timestampZexpiration_in_secondsZheaders_to_signZheaders_to_sign_listkZk_lowerr   r   r   _bce_cloudflow_sign,   s0   


z#CloudFlowClient._bce_cloudflow_signc              
   C   sP   |  |}|d u rtj}|d u rtjdi}tj}t|| j	tj
|g|||||S )Ns   application/json)r   r   Z
parse_jsonr   ZCONTENT_TYPEr   r   r   send_requestr#   Zparse_error)r   r   r    bodyr   r   Zbody_parserr   r   r   r   _send_requestN   s   


zCloudFlowClient._send_request)create_task_infoc                 C   (   |  }tjjdi}| jtj|||dS )z'
        create migration task
        Nr    r%   r   )to_json_stringcfmMigrationInterfaceZPOSTMIGRATIONr&   r   POST)r   r'   r   r%   r    r   r   r   create_migration]      
z CloudFlowClient.create_migration)create_task_list_infoc                 C   r(   )z1
        create migration task from list
        Nr)   )r*   r+   r,   ZPOSTMIGRATIONFROMLISTr&   r   r-   )r   r0   r   r%   r    r   r   r   create_migration_from_listi   r/   z*CloudFlowClient.create_migration_from_list)task_idc                 C   "   t jjdd|i}| jtj||dS )z$
        get migration task
        N   taskIdr    r   )r+   r,   ZGETMIGRATIONr&   r   GETr   r2   r   r    r   r   r   get_migrationu      zCloudFlowClient.get_migrationc                 C   s   t jjdi}| jtj||dS )z%
        list migration task
        Nr5   )r+   r,   ZLISTMIGRATIONr&   r   r6   )r   r   r    r   r   r   list_migration   s   zCloudFlowClient.list_migrationc                 C   r3   )z+
        get migration task result
        Nr4   r5   )r+   r,   ZGETMIGRATIONRESULTr&   r   r6   r7   r   r   r   get_migration_result   r9   z$CloudFlowClient.get_migration_resultc                 C   r3   )z&
        pause migration task
        Nr4   r5   )r+   r,   ZPAUSEMIGRATIONr&   r   r-   r7   r   r   r   pause_migration   r9   zCloudFlowClient.pause_migrationc                 C   r3   )z'
        resume migration task
        Nr4   r5   )r+   r,   ZRESUMEMIGRATIONr&   r   r-   r7   r   r   r   resume_migration   r9   z CloudFlowClient.resume_migrationc                 C   r3   )z&
        retry migration task
        Nr4   r5   )r+   r,   ZRETRYMIGRATIONr&   r   r-   r7   r   r   r   retry_migration   r9   zCloudFlowClient.retry_migrationc                 C   r3   )z'
        delete migration task
        Nr4   r5   )r+   r,   ZDELETEMIGRATIONr&   r   DELETEr7   r   r   r   delete_migration   r9   z CloudFlowClient.delete_migrationr   )r   r   N)NNNNN)__name__
__module____qualname____doc__r   r   r   staticmethodr#   r&   r	   r+   ZCreateTaskInfor.   ZCreateTaskListInfor1   strr8   r:   r;   r<   r=   r>   r@   r   r   r   r   r      s:    

!




	



r   )rD   r   loggingZbaidubce.bce_base_clientr   Zbaidubce.authr   Zbaidubce.httpr   r   r   r   r   Zbaidubce.utilsr	   Zbaidubce.services.cloudflowr
   r+   	getLoggerrA   _loggerr   r   r   r   r   <module>   s    
