o
    e                      @   sP  d Z ddlmZ ddlmZ G dd deZG dd deZG dd	 d	eZG d
d deZ	G dd deZ
G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG d d! d!eZG d"d# d#eZG d$d% d%eZG d&d' d'eZG d(d) d)eZd*S )+z3
This module defines some Response classes for BTS
    )BceResponse)JSONEncoderc                   @   s"   e Zd ZdZd
ddZdd Zd	S )Billinga  
	This class define billing.
	param: paymentTiming:
		The pay time of the payment,
	param: reservationLength:
		The duration to buy in specified time unit,
	param: reservationTimeUnit:
		The time unit to specify the duration ,only "Month" can be used now.
	Prepaid   Monthc                 C   s   || _ ||d| _d S )N)reservationLengthreservationTimeUnit)paymentTimingZreservation)selfZ
pay_methodr   r	    r   KD:\Projects\ConvertPro\env\Lib\site-packages\baidubce/services/scs/model.py__init__"   s   zBilling.__init__c                 C   s   | j S )zF
            get instance current pay_method:Prepaid/Postpaid
        )r
   r   r   r   r   get_pay_method)   s   zBilling.get_pay_methodN)r   r   r   )__name__
__module____qualname____doc__r   r   r   r   r   r   r      s    

r   c                           e Zd ZdZ fddZ  ZS )	SubnetMapz2
    SubnetMap:contains zoneName and subnetId
    c                    &   t t|   t|| _t|| _d S N)superr   r   str	zone_name	subnet_id)r   r   r   	__class__r   r   r   5      
zSubnetMap.__init__r   r   r   r   r   __classcell__r   r   r   r   r   0       r   c                       r   )CreateInstanceResponsez"
    Create Instance Response
    c                       t t|   |j| _d S r   )r   r#   r   Zinstance_idsr   Zbce_responser   r   r   r   @      zCreateInstanceResponse.__init__r    r   r   r   r   r#   ;   r"   r#   c                       r   )ListInstanceResponsez 
    List Instance Response
    c                    sB   t t|   |j| _t|j| _t|j| _|j| _|j| _d S r   )	r   r'   r   Zmax_keysr   markerZnext_markerZis_truncatedZ	instancesr%   r   r   r   r   J   s   zListInstanceResponse.__init__r    r   r   r   r   r'   E   r"   r'   c                       r   )GetInstanceResponsez
    Get Instance Response
    c                    s   t t|   t|j| _t|j| _t|j| _t|j| _t|j| _t|j	| _	t|j
| _
t|j| _|j| _|j| _|j| _|j| _t|j| _|j| _t|j| _|j| _|j| _|j| _|j| _d S r   )r   r)   r   r   Zinstance_idZinstance_nameZinstance_statusZcluster_typeZengineZengine_versionZvnet_ipportZinstance_create_timeZinstance_expire_timecapacityZused_capacityZpayment_timingZ
zone_namesZvpc_idsubnetsZ
auto_renewZ	shard_numZ
store_typer%   r   r   r   r   X   s(   zGetInstanceResponse.__init__r    r   r   r   r   r)   S   r"   r)   c                       r   )ListAvailableZoneResponse
    List available zone.
    c                    r$   r   )r   r-   r   Zzonesr%   r   r   r   r   t   r&   z"ListAvailableZoneResponse.__init__r    r   r   r   r   r-   o   r"   r-   c                       r   )ListSubnetResponser.   c                    s.   t t|   |j| _| jd u rg | _d S d S r   )r   r/   r   r,   r%   r   r   r   r   ~   s
   

zListSubnetResponse.__init__r    r   r   r   r   r/   y   r"   r/   c                       r   )ListNodeTypeResponsez!
    List nodetypes for scs.
    c                    s*   t t|   |j| _|j| _|j| _d S r   )r   r0   r   Zdefault_node_type_listZcluster_node_type_listZhsdb_node_type_listr%   r   r   r   r      s   zListNodeTypeResponse.__init__r    r   r   r   r   r0      r"   r0   c                       r   )NodeTypez
    NodeType model
    c                    sj   t t|   t|j| _t|j| _t|j| _t|j	| _	t|j
| _
t|j| _|j| _|j| _d S r   )r   r1   r   r   Z	node_typeintZcpu_numZinstance_flavorfloatZnetwork_throughput_in_gbpsZpeak_qpsZmax_connectionsZallowed_node_num_listZallowed_replication_num_listr   objr   r   r   r      s   zNodeType.__init__r    r   r   r   r   r1      r"   r1   c                       s(   e Zd ZdZ fddZdd Z  ZS )Tagz
    Tag model
    c                    r   r   )r   r6   r   r   tag_key	tag_value)r   keyvaluer   r   r   r      r   zTag.__init__c                 C   s   t | j| jfS r   )reprr7   r8   r   r   r   r   __repr__   s   zTag.__repr__)r   r   r   r   r   r<   r!   r   r   r   r   r6      s    r6   c                       r   )ListSecurityIpResponsez>
    List IP whitelist of instances which allow access to
    c                    r$   r   )r   r=   r   Zsecurity_ipsr%   r   r   r   r      r&   zListSecurityIpResponse.__init__r    r   r   r   r   r=      r"   r=   c                       r   )ListParameterResponsezN
    List configuration parameters and runtime parameters of scs instance
    c                    r$   r   )r   r>   r   
parametersr%   r   r   r   r      r&   zListParameterResponse.__init__r    r   r   r   r   r>      r"   r>   c                       r   )	ParameterzI
    Configuration parameters and runtime parameters of scs instance
    c                    sB   t t|   t|j| _t|j| _t|j| _t|j| _d S r   )	r   r@   r   r   defaultr2   Zforce_restartnamer:   r4   r   r   r   r      s
   zParameter.__init__r    r   r   r   r   r@      r"   r@   c                       r   )ModifyParameterRequestz6
    A request model to modify instance parameter
    c                    *   t t|   t|j| _t|j| _d S r   )r   rC   r   r   rB   r:   r4   r   r   r   r         zModifyParameterRequest.__init__r    r   r   r   r   rC      r"   rC   c                       r   )ListBackupResponsez#
    List backups of instance.
    c                    s"   t t|   |j| _|j| _d S r   )r   rF   r   Ztotal_countZbackupsr%   r   r   r   r      s   zListBackupResponse.__init__r    r   r   r   r   rF      r"   rF   c                       r   )Backupz
    Backup model
    c                    s>   t t|   t|j| _t|j| _|j| _t|j| _d S r   )r   rG   r   r   Zbackup_typecommentrecords
start_timer4   r   r   r   r      s
   zBackup.__init__r    r   r   r   r   rG      r"   rG   c                       r   )BackupRecordz
    Backup record model
    c                    sZ   t t|   t|j| _t|j| _t|j| _t|j| _t|j	| _	t|j
| _
d S r   )r   rK   r   r   Zbackup_record_idZbackup_statusr2   durationZobject_sizeZ
shard_namerJ   r4   r   r   r   r      s   zBackupRecord.__init__r    r   r   r   r   rK      r"   rK   c                       r   )GetBackupResponsez*
    Get backup detail response model
    c                    rD   r   )r   rM   r   r   urlZurl_expirationr%   r   r   r   r     rE   zGetBackupResponse.__init__r    r   r   r   r   rM     r"   rM   c                   @   s   e Zd ZdZdd ZdS )JsonWrapperz+
        custom json encoder for class
    c                 C   sR   t |trt|ddS t |tr|j|jdS t |tr#|j|jdS t	
| |S )Nzutf-8)encoding)ZzoneNameZsubnetId)ZtagKeyZtagValue)
isinstancebytesr   r   r   r   r6   r7   r8   r   rA   r4   r   r   r   rA     s   


zJsonWrapper.defaultN)r   r   r   r   rA   r   r   r   r   rO     s    rO   N)r   Zbaidubce.bce_responser   jsonr   objectr   r   r#   r'   r)   r-   r/   r0   r1   r6   r=   r>   r@   rC   rF   rG   rK   rM   rO   r   r   r   r   <module>   s,   



