
    9ij                        S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSK	J
s  Js  Jr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  \R>                  " \ 5      r!S r" " S S\5      r#g)z.
This module provides a client class for SCS.
    )unicode_literalsN)utils)bce_v1_signer)BceBaseClient)BceClientConfiguration)BceClientError)BceServerError)bce_http_client)http_headers)http_methods)scs)requiredc                    U R                   S-  [        R                  R                  S-  :X  a  [	        S5      eS nU R                  5       nU(       Ga&  [        R                  " U5      nSU;   a  SU;   a~  SU;   ax  US   nUS:w  a  [        US   US   US   S9nGOUR                  R                  [        R                  " U[        R                  S9R                  5        U R                  5         g	U R                   S-  [        R                  R                  S-  :X  aW  UR                  R                  [        R                  " U[        R                  S9R                  5        U R                  5         g	O/U R                   S-  [        R                  R                  S-  :X  a  g	Uc(  [        U R                  UR                   R"                  S
9nU R                   Ul        Ue)Nd   z#Can not handle 1xx http status codemessagecode	requestId1000)r   
request_id)object_hookT)r   )statushttpclientCONTINUEr   readjsonloadsr	   __dict__updater   dict_to_python_objectcloseOKreasonmetadatabce_request_idstatus_code)http_responseresponsebsebodydr_codes         `/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/baidubce/services/scs/scs_client.py_parse_resultr.   ,   s   c!T[[%9%9C%??BCC
CDJJt>fkkQ.>vYF$Qy\*+F)01+@ !!((JJt1L1LMVVX##%!!C'4;;>>C+??$$

4U-H-HIRRT!	 @
 
			#t{{~~';	;
{]11h>O>O>^>^_#**CO
I    c                      \ rS rSrSrS6S jr\" \S9S 5       r\" \	\	\	\	\
\
\
\
\	\\
\
\	\
\R                  S9SSSSS	S
SS\R                  " 5       S4
S j5       r\" \	\	\	\
\
\R                  S9S7S j5       r\" \	S9S6S j5       rS8S jr\" \	S9S6S j5       r\" \	\	S9S6S j5       r\" \	S9S6S j5       r\" \	\	S9S6S j5       r\" \	\	S9S9S j5       rS6S jrS:S jrS6S jr\" \	\S9S6S j5       r\" \	\S9S6S j5       r\" \	S9S6S  j5       r\" \	\	\
S!9S6S" j5       r\" \	S9S6S# j5       r\" \	\S$9S6S% j5       r\" \	\S$9S6S& j5       r \" \	\	S9S6S' j5       r!\" \	S9S6S( j5       r"\" \	\	\	\
S)9S6S* j5       r#\" \	S9S6S+ j5       r$\" \	\	S,9S6S- j5       r%\" \	\	\	\
S.9S6S/ j5       r&\'S;S0 j5       r(\'S;S1 j5       r)\'  S<S2 j5       r*S3 r+  S=S4 jr,S5r-g)>	ScsClientN   z
Scs sdk client
Nc                 X    Ub  U R                  U5        [        R                  " X5        g N)_check_config_typer   __init__selfconfigs     r-   r6   ScsClient.__init__S   s$    ##F+t,r/   )r9   c                     g)NT r7   s     r-   r5   ScsClient._check_config_typeX   s    r/   )engine_versioninstance_namecluster_type	node_type	shard_num	proxy_numreplication_num
store_typevpc_idsubnetsportpurchase_countauto_renew_time_unitauto_renew_timebillingr   i     monthc                    UR                   UUUUUUUUUUU	U
UUS.n[        R                  " U R                  [        R
                  SS[        R                  " 5       0[        R                  " U[        R                  SS9USS95      $ )at  
Create instance with specific config

:param engine_version:
:type engine_version:string or unicode

:param instance_name: Instance name
:type  name: string or unicode

:param cluster_type: default/master_slave or cluster
:type  cluster_type: string or unicode

:param node_type: Node specification
:type  node_type: string or unicode

:param shard_num: number of shard
:type  shard_num: int

:param replication_num: number of replication
:type  replication_num: int

:param store_type: default is 0;High performance memory:0;ssd-native:1
:type  store_type: int

:param vpc_id: vpc id,use default vpc id if not provide.
:type  vpc_id: str

:param subnets: list of model.SubnetMap
:type  subnets: list

:param port: default is 6379
:type  port: int

:param purchase_count: Number of purchases, default is 1
:type  purchase_count: int

:param auto_renew_time_unit: Renew monthly or yearly,value in ['month','year]
:type  auto_renew_time_unit: str

:param auto_renew_time: If billing is Prepay, the automatic renewal time is 1-9
 when auto_renew_time_unit is 'month' and 1-3 when auto_renew_time_unit is 'year'
:type  auto_renew_time: int

:param billing: default billing is Prepay 1 month
:type  billing: model.Billing

:param config: None
:type  config: BceClientConfiguration

:return: Object
    {
        "instance_ids": ["scs-bj-wHoJXL09355"]
    }

:rtype: baidubce.bce_response.BceResponse
)rL   instanceNamenodeTyperH   engineVersion	storeTypepurchaseCountshardNumproxyNumreplicationNumclusterTypevpcIdrG   autoRenewTimeUnitautoRenewTimeinstanceclientToken   clsindent   )paramsr*   r9   api_version)r   modelCreateInstanceResponse_send_requestr   POSTuuiduuid4r   dumpsJsonWrapper)r8   r>   r?   r@   rA   rB   rD   rC   rE   rF   rG   rH   rI   rJ   rK   rL   r9   datas                     r-   create_instanceScsClient.create_instance\   s    @ '')!+#+!!-'!5,
$ ++D,>,>|?P?PR\GTVZV`V`VbFcDHJJtY^YjYjstDuFLKL	 -? -N O 	Or/   )r>   instance_idrA   rB   rC   rL   c           
      Z   U R                  U5      n[        R                  " UR                  S9nUc  UR                  nUc  UR
                  nUR                  UUUS.nUS-   n	[        R                  " U R                  [        R                  SU	[        R                  " U5      US95      $ )a  
Create instance with specific config

:param engine_version:
:type engine_version:string or unicode

:type  name: string or unicode

:param node_type: Node specification
:type  node_type: string or unicode

:param instance_id: number of shard
:type  shard_num: int

:param shard_num: number of proxy node
:type  shard_num: int

:param billing: default billing is Prepay 1 month
:type  billing: model.Billing

:param config: None
:type  config: BceClientConfiguration

)
pay_method)rL   rQ   rR   rU   z/resizer\   )keyr*   r9   )get_instance_detailre   Billingpayment_timingr>   rB   r   rf   rg   r   PUTr   rk   )
r8   rp   rA   rB   r>   rL   r9   r(   rm   rs   s
             r-   resize_instanceScsClient.resize_instance   s    6 ++K8--8+B+BC!%44N **I''!+!	
 I%++D,>,>|?O?OQ[adDHJJtDT]c -? -e f 	fr/   )rp   c                 D    U R                  [        R                  SUUSS9$ )z
Delete instance
:param instance_id: The ID of instance
:type  instance_id: string or unicode

:param config: None
:type  config: BceClientConfiguration

:return:
r\   rM   http_methodfunction_namers   r9   rd   )rg   r   DELETEr8   rp   r9   s      r-   delete_instanceScsClient.delete_instance   s1     !!l.A.AQ[al)/Q " @ 	@r/   c           	          0 nUb  XS'   Ub  X$S'   [         R                  " U R                  [        R                  SUUS95      $ )z{
Get instances in current region
:param marker: start position
:param max_keys: max count per page
:param config:
:return:
s   markers   maxKeysr\   r}   rc   r9   )re   ListInstanceResponserg   r   GET)r8   markermax_keysr9   rc   s        r-   list_instancesScsClient.list_instances   s^      &9!):))$*<*<\=M=MKUDJDJ += +L M 	Mr/   c           
      l    [         R                  " U R                  [        R                  SUUSS95      $ )u  
Get instance detail
:param instance_id: The ID of instance
:type  instance_id: string or unicode

:param config: None
:type  config: BceClientConfiguration

:return:
    {
        "instance_id":"scs-bj-cxisuftlkquj",
        "instance_name":"post101",
        "instance_status":"_running",
        "cluster_type":"master_slave",
        "engine":"redis",
        "engine_version":"3.2",
        "vnet_ip":"10.107.231.11",
        "domain":"redis.zsfqaybijgbv.scs.bj.baidubce.com",
        "port":"6379",
        "instance_create_time":"2018-11-13_t05:37:49_z",
        "capacity":1,
        "used_capacity":0.06,
        "payment_timing":"_postpaid",
        "vpc_id":"vpc-1n1wqxfu4iuu",
        "auto_renew":"true",
        "subnets":[
            {
                "name":"系统预定义子网_c",
                "subnet_id":"sbn-0ynnfkyymh8z",
                "zone_name":"cn-bj-c",
                "cidr":"192.168.32.0/20"
            },
            {
                "name":"系统预定义子网",
                "subnet_id":"sbn-rvv87cdd0gv9",
                "zone_name":"cn-bj-a",
                "cidr":"192.168.0.0/20"
            }
        ],
        "zone_names":[
            "cn-bj-a",
            "cn-bj-c"
        ]
    }
r\   rb   )r}   rs   r9   rd   )re   GetInstanceResponserg   r   r   r   s      r-   rt   ScsClient.get_instance_detail   sA    ^ ((););L<L<L\flwCIWX *< *Z [ 	[r/   )rp   r?   c           	          SU0nUS-   nU R                  [        R                  SU[        R                  " U5      USS9$ )z
Update the instance_name of instance
:param instance_id: the ID of instance
:type str

:param instance_name: a new instance name for instance
:type str

:param config: None
:type BceClientConfiguration

:return:
rP   z/renamer\   rM   r|   r}   rs   r*   r9   rd   rg   r   rw   r   rk   )r8   rp   r?   r9   rm   rs   s         r-   rename_instanceScsClient.rename_instance1  sP     .I%!!l.>.>j^a'+zz$'7TU " W 	Wr/   c                 N    US-   nU R                  [        R                  SUUSS9$ )z
restart the instance
:param instance_id: the ID of instance
:type str

:type str

:param config: None
:type BceClientConfiguration

:return:
z/restartr\   rb   r{   rg   r   rw   r8   rp   r9   rs   s       r-   restart_instanceScsClient.restart_instanceE  s:     J&!!l.>.>j^a)/Q " @ 	@r/   )rp   domainc           	          SU0nUS-   nU R                  [        R                  SU[        R                  " U5      USS9$ )a|  
Update the domain of instance
:param instance_id: the ID of instance
:type str

:param domain: a new domain for instance.
New instance domain name.
Naming rules of domain name:
    1. It is composed of lowercase letters and numbers;
    2. It begins with a lowercase letter;
    3. The length is between 3-30
:type str

:param config: None
:type BceClientConfiguration

:return:
r   z/renameDomainr\   rM   r   r   )r8   rp   r   r9   rm   rs   s         r-   rename_instance_domain ScsClient.rename_instance_domainW  sP    ( &!O+!!l.>.>j^a'+zz$'7TU " W 	Wr/   )rp   passwordc           	         Sn[        U5      S:  a6  U R                  R                  R                  n[        R
                  " X$5      nSU0nUS-   nU R                  [        R                  SU[        R                  " U5      USS9$ )aw  
Clear the data of SCS instance
:param instance_id: the ID of instance
:type str

:param password: the password of instance.
if no password is set, an empty string is passed.
The password needs to be encrypted.
Please refer to the definition of password encryption transmission specification for details.
:type str

:param config: None
:type BceClientConfiguration

:return:
 r   r   z/flushr\   rM   r   )lenr9   credentialssecret_access_keyr   aes128_encrypt_16char_keyrg   r   rw   r   rk   r8   rp   r   r9   r   rm   rs   s          r-   flush_instanceScsClient.flush_instancep  s    $ x=1 $ 7 7 I I66xSH
 H$!!l.>.>j^a'+zz$'7TU " W 	Wr/   c                 h    [         R                  " U R                  [        R                  SUS95      $ )z\
lost available zone of current region
:param config:
:type BceClientConfiguration
:return:
zone)r}   r9   )re   ListAvailableZoneResponserg   r   r   r7   s     r-   list_available_zonesScsClient.list_available_zones  s;     ..t/A/A,BRBRbhIO 0B 0Q R 	Rr/   c           	          0 nUb  XS'   Ub  X$S'   [         R                  " U R                  [        R                  SXCS95      $ )z
list subnet by vpcId or zoneName
:param vpc_id: ID of the VPC to which it belongs
:param zone_name: The name of the zone it belongs to
:param config:
:type BceClientConfiguration
:return:
s   vpcIds   zoneNamesubnetr   )re   ListSubnetResponserg   r   r   )r8   rF   	zone_namer9   rc   s        r-   list_subnetsScsClient.list_subnets  s[     %8 "+;''(:(:<;K;K[cBH ); )Y Z 	Zr/   c           	      j    [         R                  " U R                  [        R                  SUSS95      $ )zE
List nodetypes
:param config:
:type BceClientConfiguration
:return:
	nodetypesrb   )r}   r9   rd   )re   ListNodeTypeResponserg   r   r   r7   s     r-   list_nodetypesScsClient.list_nodetypes  s=     ))$*<*<\=M=M]hDJXY += +[ \ 	\r/   )rp   change_tagsc                     SU0nUS-   nU R                  [        R                  SU[        R                  " U[
        R                  SS9US9$ )z
Bind tags to instance
:param change_tags: tag list to bind to instance
:type list of Tag

:param instance_id: the ID of instance
:type str

:param config: None
:type BceClientConfiguration

:return:

changeTagsz/bindTagr\   r^   r_   r|   r}   rs   r*   r9   rg   r   rw   r   rk   re   rl   r8   rp   r   r9   rm   rs   s         r-   	bind_tagsScsClient.bind_tags  s\    " +
 J&!!l.>.>j&)

4UEVEV_`0ajp " r 	rr/   c                     SU0nUS-   nU R                  [        R                  SU[        R                  " U[
        R                  SS9US9$ )z
Unbind tags to instance
:param change_tags: tag list to unbind
:type list of Tag

:param instance_id: the ID of instance
:type str

:param config: None
:type BceClientConfiguration

:return:
r   z
/unBindTagr\   r^   r_   r   r   r   s         r-   unbind_tagsScsClient.unbind_tags  s\      +
 L(!!l.>.>j&)

4UEVEV_`0ajp " r 	rr/   c                 J    US-   nU R                  [        R                  SX2S9$ )z
Set an SCS instance as the primary region of the live instance group
The cluster created by default is master
:param instance_id: the ID of instance
:type str

:param config: None
:type BceClientConfiguration

:return:
z/setAsMasterr\   )r|   r}   rs   r9   r   r   s       r-   set_as_masterScsClient.set_as_master  s3     N*!!l.>.>j&) " : 	:r/   )rp   master_domainmaster_portc                     UUS.nUS-   nU R                  [        R                  SU[        R                  " U5      US9$ )aq  
Set SCS instance A as a slave of a master SCS instance B
:param master_port: the port of master redis B
:type int

:param master_domain:the domain of master redis B
if B in a different region,peer-2-peer dns copy muster be turn on.
:type str/unicode

:param instance_id: the ID of instance
:type str/unicode

:param config: None
:type BceClientConfiguration

:return:
)masterDomain
masterPortz/setAsSlaver\   r   r   )r8   rp   r   r   r9   rm   rs   s          r-   set_as_slaveScsClient.set_as_slave  sQ    ( *%
 M)!!l.>.>j&)

40@ " Q 	Qr/   c           	      r    US-   n[         R                  " U R                  [        R                  SX2S95      $ )z]
List securityIps of a instance
:param instance_id: ID of instanceId
:param config:
:return:
/securityIpr\   r}   rs   r9   )re   ListSecurityIpResponserg   r   r   r   s       r-   list_security_ipScsClient.list_security_ip  sD     M)++D,>,>|?O?O_iCF -? -W X 	Xr/   )rp   security_ipsc                 ~    SU0nUS-   nU R                  [        R                  SU[        R                  " U5      US9$ )z
Add security_ips to access to instance
:param security_ips:
:type list

:param instance_id: the ID of instance
:type str

:param config: None
:type BceClientConfiguration

:return:
securityIpsr   r\   r   r   r8   rp   r   r9   rm   rs   s         r-   add_security_ipsScsClient.add_security_ips  sP      <
 M)!!l.>.>j&)

40@ " Q 	Qr/   c                 ~    SU0nUS-   nU R                  [        R                  SU[        R                  " U5      US9$ )z
Delete security_ips to access to instance
:param security_ips:
:type list

:param instance_id: the ID of instance
:type str

:param config: None
:type BceClientConfiguration

:return:
r   r   r\   r   )rg   r   r~   r   rk   r   s         r-   delete_security_ipsScsClient.delete_security_ips.  sQ      <
 M)!!l.A.AQ[&)

40@ " Q 	Qr/   c                     U R                   R                  R                  nS[        R                  " X$5      0nUS-   nU R                  [        R                  SU[        R                  " U5      US9$ )z
Update the password for scs instance
:param password:
:type list

:param instance_id: the ID of instance
:type str

:param config: None
:type BceClientConfiguration

:return:
r   z/modifyPasswordr\   r   )
r9   r   r   r   r   rg   r   rw   r   rk   r   s          r-   modify_passwordScsClient.modify_passwordD  sr      !KK33EE77T
 --!!l.>.>j&)

40@ " Q 	Qr/   c           	      r    US-   n[         R                  " U R                  [        R                  SX2S95      $ )z\
List parameters of a instance
:param instance_id: ID of instanceId
:param config:
:return:

/parameterr\   r   )re   ListParameterResponserg   r   r   r   s       r-   list_parametersScsClient.list_parameters\  sD     L(**4+=+=l>N>N^hBE ,> ,V W 	Wr/   )rp   nametimeexpire_daysc                     SUUS.0nUS-   nU R                  [        R                  SU[        R                  " U5      US9$ )z
Update the parameter of instance
:param name: parameter name
:param value: parameter value
:param instance_id: the ID of instance
:type str

:param config: None
:type BceClientConfiguration

:return:
	parameter)r   valuer   r\   r   r   )r8   rp   r   r   r9   rm   rs   s          r-   modify_parameterScsClient.modify_parameterh  sY     
 L(!!l.>.>j&)

40@ " Q 	Qr/   c           	      r    US-   n[         R                  " U R                  [        R                  SX2S95      $ )zX
List backup of a instance
:param instance_id: ID of instanceId
:param config:
:return:
z/backupr\   r   )re   ListBackupResponserg   r   r   r   s       r-   list_backupsScsClient.list_backups  sD     I%''(:(:<;K;K[e?B ); )S T 	Tr/   )rp   backup_record_idc           	      x    US-   U-   n[         R                  " U R                  [        R                  SXCS95      $ )z
List backup of a instance
:param backup_record_id: backup record ID
:param instance_id: ID of instanceId
:param config:
:return:
z/backup/r\   r   )re   GetBackupResponserg   r   r   )r8   rp   r   r9   rs   s        r-   
get_backupScsClient.get_backup  sJ     J&)99&&t'9'9,:J:JZd>A (: (R S 	Sr/   )rp   daysr   r   c                     UUUS.nUS-   nU R                  [        R                  SU[        R                  " U5      US9$ )aE  
Update the instance_name of instance
:param instance_id: the ID of instance
:type str

:param expire_days: Backup file expiration time
:type int

:param time: when to backup.utc time.eg:01:05:00
:param days: the duration to backup.eg:Sun,Wed,Thu,Fri,Sta
:type str

:param config: None
:type BceClientConfiguration

:return:
)
backupDays
backupTime	expireDayz/modifyBackupPolicyr\   r   r   )r8   rp   r   r   r   r9   rm   rs   s           r-   modify_backup_policyScsClient.modify_backup_policy  sV    ( $

 11!!l.>.>j^a'+zz$'7 " H 	Hr/   c                 L    [         R                  " [        R                  X5      $ r4   )r   
append_urir   URL_PREFIX_V1r9   r}   rs   s      r-   _get_path_v1ScsClient._get_path_v1       1 1=FFr/   c                 L    [         R                  " [        R                  X5      $ r4   )r   r   r   URL_PREFIX_V2r   s      r-   _get_path_v2ScsClient._get_path_v2  r   r/   c           
      0   / SQnUb  [        U5      S:X  av  / nU H]  n	U	R                  5       R                  5       n
U
R                  [        R
                  5      (       d  X;   d  ML  UR                  U
5        M_     UR                  5         OnU HX  n	U	R                  5       R                  5       n
U
R                  [        R
                  5      (       d  MG  UR                  U
5        MZ     UR                  5         [        R                  " U UUUUUUU5      $ )N)s   hosts   content-md5s   content-lengths   content-typer   )
r   striplower
startswithr   
BCE_PREFIXappendsortr   sign)r   r|   pathheadersrc   	timestampexpiration_in_secondsheaders_to_signheaders_to_sign_listkk_lowers              r-   _bce_scs_signScsClient._bce_scs_sign  s    
 1
 "c/&:a&? O'')//+%%l&=&=>>'Ba#**73    "'')//+%%l&=&=>>#**73    "!!+"-"&")"("+"7"13 	3r/   c                     Uc  U R                   $ U R                  U5        [        R                  " U R                   5      nUR                  U5        U$ r4   )r9   r5   copymerge_non_none_values)r8   r9   
new_configs      r-   _merge_configScsClient._merge_config  sE    >;;##F+4;;/J,,V4r/   c
           
      $   Uc  S[         R                  " 5       0nU R                  U5      n[        R                  [        R
                  S.U	   " XrU5      n
Uc  [        nUc  SSS.n[        R                  " U[        R                  U/XUXV5      $ )Nr]   )rM   rb   s   */*s   application/json;charset=utf-8)s   Accepts   Content-Type)
ri   rj   r  r1   r   r  r.   r
   send_requestr  )r8   r|   r}   rs   r*   r  rc   r9   body_parserrd   r  s              r-   rg   ScsClient._send_request  s    >#TZZ\2F##F+%%%%
  c3
 'K?"(;\]G++FI4K4Kk]\gos,3= 	=r/   r<   r4   )NNNN)Ni  N)r   N)NNN)NN)r   i  N)NNNNNNNrM   ).__name__
__module____qualname____firstlineno____doc__r6   r   r   r5   strintlistre   ru   rn   rx   r   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   staticmethodr   r  r  r  rg   __static_attributes__r<   r/   r-   r1   r1   N   sY   -
 +, - c3s!c3TWhk$'#u}}V
 #$T4VZkl-4dTYTaTaTclpQO	VQOf cU]]T'fT'fR 3 @ !@M$ 3 /[ !/[b 35W 6W& 3 @ !@" 3.W /W0 330W 1W8RZ"\ 3T2r 3r, 3T2r 3r* 3 : !:" 3#FQ GQ4 3 	X !	X 3d3Q 4Q* 3d3Q 4Q* 330Q 1Q. 3 	W !	W 3s3SIQ JQ. 3 	T !	T 338
S 9
S 3s3SIH JH6 G G G G 9=&*3 3@ hlAB=r/   r1   )$r$  
__future__r   r  r   loggingri   http.clientr   baidubce.services.scs.modelservicesr   re   baidubcer   baidubce.authr   baidubce.bce_base_clientr   !baidubce.bce_client_configurationr   baidubce.exceptionr   r	   baidubce.httpr
   r   r   baidubce.servicesbaidubce.utilsr   	getLoggerr   _loggerr.   r1   r<   r/   r-   <module>r9     si     (      + +  ' 2 D - - ) & & ! #


H
%Dj
= j
=r/   