o
    eY                     @   s   d Z ddlZddl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 eeZejd dkrSeefZneefZG dd dejZdS )z.
This module provides a client class for BES.
    N)bce_base_client)compat)bce_v1_signer)bce_http_client)handler)http_methods)	bes_model)required   c                   @   s  e Zd ZdZdZd1ddZeeeeee	eeeee
jd
	d1ddZeeeeeed		d1d
dZeeed	d1ddZeed	d1ddZeed	d1ddZeed	d1ddZeed	d1ddZeeed	d1ddZeeed	d1ddZeeeeeed	d1ddZeeeed 	d1d!d"Zeeeeeeeed#	d1d$d%Z	d1d&d'Zeeeeed(	d1d)d*Zeed	d1d+d,Zd1d-d.Z		d2d/d0ZdS )3	BesClientz
    Bes sdk client
    s   /api/bes/clusterNc                 C   s   t j| | d S N)r   BceBaseClient__init__)selfconfig r   PD:\Projects\ConvertPro\env\Lib\site-packages\baidubce/services/bes/bes_client.pyr   -   s   zBesClient.__init__)
namepasswordmodulesversionis_old_packageavailable_zonesecurity_group_idsubnet_uuidvpc_idbillingc                 C   s|   d}d}|durd|i}g }|D ]}| |j q|||||||||	|
jd
}| jj}|dd}| jtj||t||dS )aq  
        Create cluster

        :param name: The parameter to specify es cluster name.
        :type name: string

        :param password: The parameter to specify password for manage cluster.
        :type password: string

        :param modules: The parameter to specify modules for cluster.
        :type modules: array

        :param version: The parameter to specify es cluster version.
        :type version: string

        :param is_old_package: The parameter to specify is old package
        :type is_old_package: bool

        :param available_zone: he parameter to specify security zone.
        :type available_zone: string

        :param security_group_id: The parameter to specify id of the securityGroup.
        :type security_group_id: string

        :param subnet_uuid: The parameter to specify id of the subnet.
        :type subnet_uuid: string

        :param vpc_id: The parameter to specify id of the vpc.
        :type vpc_id: string

        :param billing: The parameter to specify id of billing info.
        :type billing: xxx

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /createNclientToken)
r   r   r   r   ZisOldPackageZavailableZoneZsecurityGroupIdZ
subnetUuidZvpcIdr      application/json;charset=UTF-8s   x-Regions   content-typeparamsbodyheaders	append__dict__r   region_send_requestr   POSTjsondumps)r   r   r   r   r   r   r   r   r   r   r   client_tokenpathr!   module_json_arraymoduler"   r'   r#   r   r   r   create_cluster0   s0   :zBesClient.create_cluster)r   payment_type
cluster_idr'   r   c                 C   sd   d}ddi}g }	|D ]}
|	 |
j q
|||	||d}| jj}|dd}| jtj||t||dS )aT  
        resize cluster

        :param name: The parameter to specify es cluster name.
        :type name: string

        :param payment_type: The parameter to specify mode of payment.
        :type payment_type: string

        :param cluster_id: The parameter to specify cluster id.
        :type cluster_id: array

        :param region: The parameter to specify region.
        :type region: string

        :param modules: The parameter to specify the type of es cluster node resource.
        :type modules: list

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /resize	orderTypeZRESIZE)r   ZpaymentTyper   	clusterIdr'   r   r   r    r$   )r   r   r1   r2   r'   r   r,   r-   r!   r.   r/   r"   r#   r   r   r   resize_cluster   s"   !zBesClient.resize_cluster)page_no	page_sizec           	      C   P   d}d}|durd|i}||d}| j j}|dd}| jtj||t||dS )a1  
        get es cluster list
        :param page_no: The parameter to specify cluster list pageNo.
        :type page_no: int

        :param page_size: The parameter to specify cluster list pageSize.
        :type page_size: int

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /listNr   )pageNopageSizer   r   r    r   r'   r(   r   r)   r*   r+   )	r   r6   r7   r,   r-   r!   r"   r'   r#   r   r   r   get_cluster_list   s   zBesClient.get_cluster_list)r2   c                 C   N   d}d}|durd|i}d|i}| j j}|dd}| jtj||t||dS )z
        get cluster detail info

        :param cluster_id: The parameter to specify cluster id.
        :type cluster_id: string

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /detailNr   r4   r   r   r    r;   r   r2   r,   r-   r!   r"   r'   r#   r   r   r   get_cluster_detail      zBesClient.get_cluster_detailc                 C   r=   )z
        start es cluster

        :param cluster_id: The parameter to specify cluster id.
        :type cluster_id: string

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /startNr   r4   r   r   r    r;   r>   r   r   r   start_cluster  r@   zBesClient.start_clusterc                 C   r=   )z
        stop es cluster

        :param cluster_id: The parameter to specify cluster id.
        :type cluster_id: string

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /stopNr   r4   r   r   r    r;   r>   r   r   r   stop_cluster+  r@   zBesClient.stop_clusterc                 C   r=   )z
        delete es cluster

        :param cluster_id: The parameter to specify cluster id.
        :type cluster_id: string

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /deleteNr   r4   r   r   r    r;   r>   r   r   r   delete_clusterK  r@   zBesClient.delete_cluster)r2   instance_idc           	      C   r8   )a7  
        start instance of es cluster

        :param cluster_id: The parameter to specify cluster id.
        :type cluster_id: string

        :param instance_id: The parameter to specify cluster id.
        :type instance_id: string

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /instance/startNr   r4   Z
instanceIdr   r   r    r;   	r   r2   rD   r,   r-   r!   r"   r'   r#   r   r   r   start_instancek     zBesClient.start_instancec           	      C   r8   )a6  
        stop instance of es cluster

        :param cluster_id: The parameter to specify cluster id.
        :type cluster_id: string

        :param instance_id: The parameter to specify cluster id.
        :type instance_id: string

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /instance/stopNr   rE   r   r   r    r;   rF   r   r   r   stop_instance  rH   zBesClient.stop_instance)orderorder_byr6   r7   days_to_expirationc                 C   sV   d}d}|durd|i}|||||d}	| j j}
|
dd}| jtj||t|	|dS )at  
        get es cluster renew list

        :param order: The parameter to specify order rule.
        :type order: string

        :param order_by: The parameter to specify order field.
        :type order_by: string

        :param page_no: The parameter to specify renew cluster list pageNo.
        :type page_no: int

        :param page_size: The parameter to specify renew cluster list pageSize.
        :type page_size: int

        :param days_to_expiration: The parameter to specify how many days expire.
        :type days_to_expiration: int

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /renew/listNr   )r9   r:   ZdaysToExpirationrJ   ZorderByr   r   r    r;   )r   rJ   rK   r6   r7   rL   r,   r-   r!   r"   r'   r#   r   r   r   get_renew_list  s    !zBesClient.get_renew_list)rJ   r2   timec           	      C   sZ   d}d}ddi}|dur||d< d||d}| j j}|dd	}| jtj||t||d
S )a,  
        renew es cluster

        :param cluster_id: The parameter to specify order cluster id.
        :type cluster_id: string

        :param time: The parameter to specify renew time, unit month.
        :type time: int

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /renewNr3   ZRENEWr   BES)serviceTyperN   r4   r   r   r    r;   )	r   r2   rN   r,   r-   r!   r"   r'   r#   r   r   r   renew_cluster  s   zBesClient.renew_cluster)cluster_idsuser_idr'   Zservice_typeZservice_idsrenew_time_unit
renew_timec                 C   sX   d}d}|durd|i}|||d||d}	| j j}|dd}
| jtj||t|	|
dS )	aT  
        create cluster auto renew rule

        :param cluster_ids: The parameter to cluster id list.
        :type cluster_ids: list

        :param user_id: The parameter to specify account id.
        :type user_id: string

        :param region: The parameter to specify region.
        :type region: string

        :param renew_time_unit: The parameter to specify renew time unit.
        :type renew_time_unit: string

        :param renew_time: The parameter to specify renew time.
        :type renew_time: int

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /auto_renew_rule/createNr   rO   )Z
clusterIdsZuserIdr'   rP   renewTimeUnit	renewTimer   r   r    r;   )r   rR   rS   r'   rT   rU   r,   r-   r!   r"   r#   r   r   r   create_auto_renew_rule  s"   #z BesClient.create_auto_renew_rulec                 C   sN   d}d}|durd|i}ddi}| j j}|dd}| jtj||t||dS )	zu
        get cluster auto renew rule list

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /auto_renew_rule/listNr   rP   rO   r   r   r    r;   )r   r,   r-   r!   r"   r'   r#   r   r   r   get_auto_renew_rule_listF  s   z"BesClient.get_auto_renew_rule_list)r2   Z
account_idrT   rU   c           
      C   sR   d}d}|durd|i}|||d}| j j}|dd}	| jtj||t||	dS )a  
        update cluster auto renew rule

        :param cluster_id: The parameter to cluster id list.
        :type cluster_id: string

        :param renew_time_unit: The parameter to specify renew time unit.
        :type renew_time_unit: string

        :param renew_time: The parameter to specify renew time.
        :type renew_time: int

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /auto_renew_rule/updateNr   )r4   rV   rW   r   r   r    r;   )
r   r2   rT   rU   r,   r-   r!   r"   r'   r#   r   r   r   update_auto_renew_rule\  s   z BesClient.update_auto_renew_rulec                 C   r=   )z
        delete cluster auto renew rule

        :param cluster_id: The parameter to cluster id list.
        :type cluster_id: string

        :return:
        :rtype baidubce.bce_response.BceResponse
        s   /auto_renew_rule/deleteNr   r4   r   r   r    r;   r>   r   r   r   delete_auto_renew_rule  s   z BesClient.delete_auto_renew_rulec                 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BesClient._merge_configc              
   C   sL   |  |}|d u rtj}t|j|_t|tj	tj
|g|tj| |||S r   )r]   r   Z
parse_jsonr   Zconvert_to_bytesZendpointr   send_requestr   signZparse_errorr   prefix)r   Zhttp_methodr-   r"   r#   r!   r   Zbody_parserr   r   r   r(     s   
zBesClient._send_requestr   )NNNNN)__name__
__module____qualname____doc__r`   r   r	   
value_typelistboolr   ZBillingr0   r5   intr<   r?   rA   rB   rC   rG   rI   rM   rQ   rX   rY   rZ   r[   r]   r(   r   r   r   r   r   '   s    
O8#$$/!1
$
	r   )rd   r\   r*   loggingsysZbaidubcer   r   Zbaidubce.authr   Zbaidubce.httpr   r   r   Zbaidubce.services.besr   Zbaidubce.utilsr	   	getLoggerra   Z_loggerversion_infostrunicodere   bytesr   r   r   r   r   r   <module>   s$   

