o
    e$                     @   s`  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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 )Billingz
	This class define billing.
	param: pay_method:
		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/rds/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                       s(   e Zd ZdZ fddZdd Z  ZS )Tagz
    Tag model
    c                    r   r   )r   r#   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   )reprr$   r%   r   r   r   r   __repr__E   s   zTag.__repr__)r   r   r   r   r   r)   r!   r   r   r   r   r#   ;   s    r#   c                       "   e Zd ZdZd fdd	Z  ZS )InitialDataReferencez$
        Initial Data Reference
    Nc                    *   t t|   || _|| _|| _|| _d S r   )r   r+   r   instance_idreference_typedatetimesnapshot_id)r   r-   r.   r/   r0   r   r   r   r   N   
   
zInitialDataReference.__init__)NNr    r   r   r   r   r+   I       r+   c                       r*   )RecoveryToSourceInstanceModelz,
        RecoveryToSourceInstance model
    Nc                    r,   r   )r   r3   r   restore_modedb_name
new_dbnametables)r   r4   r5   r6   r7   r   r   r   r   [   r1   z&RecoveryToSourceInstanceModel.__init__r   r    r   r   r   r   r3   V   r2   r3   c                       r   )Tablesz
        Tables
    c                    s   t t|   || _|| _d S r   )r   r8   r   
table_namenew_tablename)r   r9   r:   r   r   r   r   h   s   
zTables.__init__r    r   r   r   r   r8   c   r"   r8   c                       r   )CreateInstanceResponsez"
    Create Instance Response
    c                    "   t t|   |j| _|j| _d S r   )r   r;   r   Zinstance_idsZorder_idr   Zbce_responser   r   r   r   s      zCreateInstanceResponse.__init__r    r   r   r   r   r;   n   r"   r;   c                       r   )GetInstanceResponsez#
        Get Instance Response
    c                    s   t t|   |j| _|j| _|j| _|j| _|j| _|j| _|j	| _	|j
| _
|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _d S r   )r   r?   r   r-   Zinstance_nameengineengine_versioncategoryZinstance_status	cpu_countZmemory_capacityZvolume_capacityZnode_amountZused_storageZinstance_create_timeZinstance_expire_timeZendpointZpublic_access_statusZ	sync_modeZbackup_policyregionZinstance_typeZsource_instance_idZsource_regionZ
zone_namesZvpc_idsubnetsZtopologyZpayment_timingZcharacter_set_namer=   r   r   r   r   ~   s8   zGetInstanceResponse.__init__r    r   r   r   r   r?   y   r"   r?   c                       r   )ListInstanceResponsez 
    List Instance Response
    c                    sB   t t|   |j| _t|j| _t|j| _|j| _|j| _d S r   )	r   rF   r   Zmax_keysr   markerZnext_markerZis_truncatedZ	instancesr=   r   r   r   r      s   zListInstanceResponse.__init__r    r   r   r   r   rF      r"   rF   c                       r   )ListZoneResponse
    List zone.
    c                       t t|   |j| _d S r   )r   rH   r   Zzonesr=   r   r   r   r         zListZoneResponse.__init__r    r   r   r   r   rH      r"   rH   c                       r   )ListSubnetResponserI   c                    rJ   r   )r   rL   r   rE   r=   r   r   r   r      rK   zListSubnetResponse.__init__r    r   r   r   r   rL      r"   rL   c                       r   )Instancez
    instance.
    c                    s<   t t|   || _|| _|| _|| _|| _|| _|| _	d S r   )
r   rM   r   r@   ZengineVersionZcpuCountZallocatedMemoryInGBZallocatedStorageInGBrB   Z
diskIoType)r   r@   rA   rC   Zallocated_memory_in_g_bZallocated_storage_in_g_brB   Zdisk_io_typer   r   r   r      s   
zInstance.__init__r    r   r   r   r   rM      r"   rM   c                       r   )PriceResponsez
    price response.
    c                    rJ   r   )r   rN   r   Zpricer=   r   r   r   r      rK   zPriceResponse.__init__r    r   r   r   r   rN      r"   rN   c                       r   )OrderStatusResponsez 
    order status response.
    c                    r<   r   )r   rO   r   ZorderIdstatusr=   r   r   r   r      r>   zOrderStatusResponse.__init__r    r   r   r   r   rO          rO   c                       r   )TaskResponsez
    task response.
    c                    rJ   r   )r   rR   r   tasksr=   r   r   r   r      rK   zTaskResponse.__init__r    r   r   r   r   rR      rQ   rR   c                       r   )ForceChangeResponsez
    ForceChange response.
    c                    rJ   r   )r   rT   r   ZbehindMasterr=   r   r   r   r      rK   zForceChangeResponse.__init__r    r   r   r   r   rT      rQ   rT   c                       r   )GroupResponsez
    grop response.
    c                    s2   t t|   |j| _|j| _|j| _|j| _d S r   )r   rU   r   group_idnamecountleaderr=   r   r   r   r      s
   zGroupResponse.__init__r    r   r   r   r   rU      r"   rU   c                       r   )GroupDetailResponsez
    grop detail response.
    c                    s:   t t|   |j| _|j| _|j| _|j| _|j| _d S r   )r   rZ   r   rV   rW   rX   rY   Z	followersr=   r   r   r   r     s   zGroupDetailResponse.__init__r    r   r   r   r   rZ     r"   rZ   c                       r   )GroupCheckGtidResponsez"
    grop checkGtid response.
    c                    rJ   r   )r   r[   r   resultr=   r   r   r   r     rK   zGroupCheckGtidResponse.__init__r    r   r   r   r   r[     r"   r[   c                   @   s   e Zd ZdZdd ZdS )JsonWrapperz+
        custom json encoder for class
    c                 C   s   t |trt|ddS t |tr|j|jdS t |tr#|j|jdS t |t	r3|j
|j|j|jdS t |trC|j|j|j|jdS t |trO|j|jdS t| |S )Nzutf-8)encoding)ZzoneNameZsubnetId)ZtagKeyZtagValue)Z
instanceIdZreferenceTyper/   Z
snapshotId)ZrestoreModeZdbNameZ	newDbnamer7   )Z	tableNameZnewTablename)
isinstancebytesr   r   r   r   r#   r$   r%   r+   r-   r.   r/   r0   r3   r4   r5   r6   r7   r8   r9   r:   r   default)r   objr   r   r   ra     s6   





zJsonWrapper.defaultN)r   r   r   r   ra   r   r   r   r   r]     s    r]   N)r   Zbaidubce.bce_responser   jsonr   objectr   r   r#   r+   r3   r8   r;   r?   rF   rH   rL   rM   rN   rO   rR   rT   rU   rZ   r[   r]   r   r   r   r   <module>   s.   $



	
