
    !jq                       d Z ddlmZmZ ddlZddlZddlmZ ddlm	Z	 ddl
mZmZmZ ddlm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 n# e$ r	 ddlmZ Y nw xY wddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$m%Z% ddl&m'Z'm(Z(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6  e	di ddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9i d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdc          Z7 G dd dee          Z8 G df dg          Z9dS )hz>MinIO Admin Client to perform MinIO administration operations.    )absolute_importannotationsN)	timedelta)Enum)TextIOTuplecast)
urlunsplit)Protocol)Retry)HTTPHeaderDict)PoolManager)BaseHTTPResponse)HTTPResponse)Timeout   )time)Provider)decryptencrypt)PeerInfoPeerSiteSiteReplicationStatusOptions)MinioAdminException)_DEFAULT_USER_AGENT_REGION_REGEXDictType
_parse_urlheaders_to_stringsqueryencodesha256_hashurl_replace)
sign_v4_s3CommandADD_USERzadd-user	USER_INFOz	user-info
LIST_USERSz
list-usersREMOVE_USERzremove-userSET_USER_STATUSzset-user-statusADD_CANNED_POLICYzadd-canned-policySET_USER_OR_GROUP_POLICYzset-user-or-group-policyLIST_CANNED_POLICIESzlist-canned-policiesREMOVE_CANNED_POLICYzremove-canned-policyUNSET_USER_OR_GROUP_POLICYzidp/builtin/policy/detachCANNED_POLICY_INFOzinfo-canned-policySET_BUCKET_QUOTAzset-bucket-quotaGET_BUCKET_QUOTAzget-bucket-quotaDATA_USAGE_INFOdatausageinfoADD_UPDATE_REMOVE_GROUPzupdate-group-membersSET_GROUP_STATUSzset-group-status
GROUP_INFOgroupLIST_GROUPSgroupsINFOinfoSERVICEserviceUPDATEupdate	TOP_LOCKSz	top/locksHELP_CONFIGzhelp-config-kv
GET_CONFIGzget-config-kv
SET_CONFIGzset-config-kvDELETE_CONFIGzdel-config-kvLIST_CONFIG_HISTORYzlist-config-history-kvRESOTRE_CONFIG_HISTORYzrestore-config-history-kvSTART_PROFILEprofileCREATE_KMS_KEYzkms/key/createGET_KMS_KEY_STATUSzkms/key/statusSITE_REPLICATION_ADDzsite-replication/addSITE_REPLICATION_INFOzsite-replication/infoSITE_REPLICATION_STATUSzsite-replication/statuszsite-replication/editzsite-replication/removezinfo-service-accountzlist-service-accountszadd-service-accountzupdate-service-accountzdelete-service-account)SITE_REPLICATION_EDITSITE_REPLICATION_REMOVESERVICE_ACCOUNT_INFOSERVICE_ACCOUNT_LISTSERVICE_ACCOUNT_ADDSERVICE_ACCOUNT_UPDATESERVICE_ACCOUNT_DELETEc                  *    e Zd ZdZedd            ZdS )CommandTypez"typing stub for enum.Command classreturnstrc                    dS )zGet value of the command.N selfs    Z/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/minio/minioadmin.pyvaluezCommandType.valueh   s          NrW   rX   )__name__
__module____qualname____doc__propertyr^   rZ   r_   r]   rV   rV   e   s8        ,,( ( ( X( ( (r_   rV   c                     e Zd ZdZ	 	 	 	 dpdqdZd Z	 	 	 drdsdZdtdZdud!Zd" Z	dvd#Z
dvd$Zdvd%Zdvd&Zdwd)Zdxd*Zdxd+Zdxd,Zdxd-Zdvd.Zdyd1Zdzd2Zdzd3Zd{d|d5Zdzd6Zdvd7Zd}d:Zd~d;Zd~d<Zdvd=Z	 	 dddAZ	 	 dddBZd{ddDZ 	 d{ddGZ!d{ddIZ"dvdJZ#ddLZ$ e%e&e'         dM          fddPZ(dvdQZ)d{ddRZ*d{ddSZ+ddVZ,dvdWZ-ddZZ.dd]Z/	 	 dddaZ0ddeZ1ddfZ2ddgZ3dxdhZ4ddiZ5	 	 	 	 	 	 	 dddmZ6	 	 	 	 	 	 dddnZ7dxdoZ8dS )
MinioAdminz2Client to perform MinIO administration operations. TNendpointrX   credentialsr   regionsecurebool
cert_checkhttp_clientPoolManager | Nonec                   t          |rdnd|z             }t          |t                    st          d          |r&t	          j        |          st          d|           |r%t          |t                    st          d          n~t          d          j        }t          t          ||          d	|rd
ndt          j                            d          pt          j                    t          ddg d                    }|| _        || _        || _        || _        || _        || _        t,          | _        d | _        d S )Nzhttps://zhttp://z"valid credentials must be providedzinvalid region zCHTTP client should be instance of `urllib3.poolmanager.PoolManager`   )minutes)connectread
   CERT_REQUIRED	CERT_NONESSL_CERT_FILEg?)i  i  i  i  )totalbackoff_factorstatus_forcelist)timeoutmaxsize	cert_reqsca_certsretries)r   
isinstancer   
ValueErrorr   matchr   r   secondsr   osenvirongetcertifiwherer   _url	_provider_region_secure_cert_check_httpr   _user_agent_trace_stream)	r\   ri   rj   rk   rl   rn   ro   urlr}   s	            r]   __init__zMinioAdmin.__init__p   sp    =**IIJJ+x00 	CABBB 	9--f55 	97v77888 	k;77  8    ***2G%g>>>-7H//[88KGMOO#&%9%9%9  
 
 
K 	$% 
.,0r_   c                8    | j                                          d S N)r   clearr[   s    r]   __del__zMinioAdmin.__del__   s    
r_   methodcommandrV   query_paramsDictType | Nonebodybytes | Nonepreload_contentrW   r   c           	        | j                                         }t          | j        d|j        z             }g }t          |pi                                           D ]D\  }	t          |	t          t          f          r|	n|	g}	|fdt          |	          D             z  }Et          |d
                    |                    }t          |          }
t          j                    }|j        | j        t          j        |          |
dd}|j        r
|j        |d<   |rt%          t'          |                    |d	<   t)          ||| j        |||
|          }| j        r7| j                            d
           |j        r
d|j        z   nd}| j                            | d|j         | d           | j                            t5          |d                     | j                            d           || j                            d           | j                            t          |t6                    r|                                nt%          |                     | j                            d           | j                            d           t;                      }|                                D ]S\  }t          |t          t          f          r|D ]}|                    |           =|                    |           T| j                             |tC          |          |||          }| j        r| j                            d|j"         d           | j                            t5          |j#                             | j                            d           | j                            d           | j                            |j$                                                   | j                            d           | j                            d           |j"        dv r|S tK          t%          |j"                  |j$                                                  )zExecute HTTP request.z/minio/admin/v3/)pathc                R    g | ]#}t                     d t          |           $S =)r    ).0r^   keys     r]   
<listcomp>z(MinioAdmin._url_open.<locals>.<listcomp>   sG        s##::k%&8&8::  r_   &)queryzapplication/octet-stream)Hostz
User-Agentz
x-amz-datezx-amz-content-sha256zContent-TypezX-Amz-Security-TokenzContent-Lengthz---------START-HTTP---------
?rh    z
 HTTP/1.1
T)
titled_key
N)r   headersr   z	HTTP/1.1 z----------END-HTTP----------
)         )&r   retriever"   r   r^   sorteditemsr   listtuplejoinr!   r   utcnownetlocr   to_amz_datesession_tokenrX   lenr#   r   r   writer   r   r   bytesdecoder   addr   urlopenr
   statusr   datar   )r\   r   r   r   r   r   credsr   r   valuescontent_sha256dater   query_stringhttp_headersr^   valresponser   s                     @r]   	_url_openzMinioAdmin._url_open   s    ''))$)*<W]*JKKK!<#52"<"<">">?? 	 	KC)&4-@@NVVvhF    #F^^   EE #SXXe__555$T**{}}J**400$26
 
  	B.3.AG*+ 	7(+CIIG$%L
 
  	+$$%EFFF03	AC#)OOrL$$??CH?l???   $$"7t<<<   $$T***"((..."((%/e%<%<KDKKMMM#d))   "((...$$T***%''!--// 	- 	-JC%$// -  / /C $$S#..../   e,,,,:%%sOO + & 
 
  		G$$%D%D%D%DEEE$$"8#344   $$T***$$T***$$X]%9%9%;%;<<<$$T***$$%EFFF?o--O!#ho"6"68L8L8N8NOOOr_   app_nameapp_versionc                T    |r|st          d          t           d| d| | _        dS )z
        Set your application name and version to user agent header.

        :param app_name: Application name.
        :param app_version: Application version.

        Example::
            client.set_app_info('my_app', '1.0.2')
        z)Application name/version cannot be empty.r   /N)r   r   r   )r\   r   r   s      r]   set_app_infozMinioAdmin.set_app_info   sH      	J[ 	JHIII1LLHLL{LLr_   streamr   c                6    |st          d          || _        dS )zb
        Enable http trace.

        :param stream: Stream for writing HTTP call tracing.
        z)Input stream for trace output is invalid.N)r   r   )r\   r   s     r]   trace_onzMinioAdmin.trace_on  s*      	JHIII#r_   c                    d| _         dS )z%
        Disable HTTP trace.
        N)r   r[   s    r]   	trace_offzMinioAdmin.trace_off  s     "r_   c                |    |                      dt          j        ddi          }|j                                        S )zRestart MinIO service.POSTactionrestartr   r   _COMMANDr<   r   r   r\   r   s     r]   service_restartzMinioAdmin.service_restart  sA    >>"I. " 
 

 }##%%%r_   c                |    |                      dt          j        ddi          }|j                                        S )zStop MinIO service.r   r   stopr   r   r   s     r]   service_stopzMinioAdmin.service_stop%  sA    >>"F+ " 
 

 }##%%%r_   c                |    |                      dt          j        ddi          }|j                                        S )zUpdate MinIO.r   	updateURLrh   r   )r   r   r>   r   r   r   s     r]   r?   zMinioAdmin.update.  s@    >>O%r* " 
 

 }##%%%r_   c                t    |                      dt          j                  }|j                                        S )zGet MinIO server information.GET)r   r   r:   r   r   r   s     r]   r;   zMinioAdmin.info7  s3    >>M
 
 }##%%%r_   
access_key
secret_keyc           
     $   t          j        d|d                                          }|                     dt          j        d|it          || j                                        j	                            }|j
                                        S )z'Create user with access and secret keysenabled)r   	secretKeyPUT	accessKeyr   r   )jsondumpsencoder   r   r%   r   r   r   r   r   r   )r\   r   r   r   r   s        r]   user_addzMinioAdmin.user_add?  s    z z::< <<BFHH 	>>%z2t~6688CDD	 " 
 
 }##%%%r_   c                ~    |                      dt          j        |dd          }|j                                        S )zDisable user.r   disabledr   r   r   r   r   r)   r   r   r\   r   r   s      r]   user_disablezMinioAdmin.user_disableK  sD    >>$'1ZHH " 
 

 }##%%%r_   c                ~    |                      dt          j        |dd          }|j                                        S )zEnable user.r   r   r   r   r   r   s      r]   user_enablezMinioAdmin.user_enableT  sD    >>$'1YGG " 
 

 }##%%%r_   c                |    |                      dt          j        d|i          }|j                                        S )zDelete userDELETEr   r   )r   r   r(   r   r   r   s      r]   user_removezMinioAdmin.user_remove]  sA    >> %z2 " 
 

 }##%%%r_   c                |    |                      dt          j        d|i          }|j                                        S )zGet information about userr   r   r   )r   r   r&   r   r   r   s      r]   	user_infozMinioAdmin.user_infof  sA    >>%z2 " 
 

 }##%%%r_   c                    |                      dt          j        d          }t          || j                                        j                  }|                                S )zList all usersr   F)r   )r   r   r'   r   r   r   r   r   )r\   r   
plain_datas      r]   	user_listzMinioAdmin.user_listo  s_    >>8& " 
 
 dn--//:
 

   """r_   
group_namemembersc                    t          j        ||dd                                          }|                     dt          j        |          }|j                                        S )z"Add users a new or existing group.F)r7   r  isRemover   r   )r   r   r   r   r   r4   r   r   )r\   r  r  r   r   s        r]   	group_addzMinioAdmin.group_addy  sp    z
 
   688	 	
 >>, " 
 

 }##%%%r_   c                ~    |                      dt          j        |dd          }|j                                        S )zDisable group.r   r   r7   r   r   r   r   r5   r   r   r\   r  r   s      r]   group_disablezMinioAdmin.group_disable  sD    >>%#-DD " 
 

 }##%%%r_   c                ~    |                      dt          j        |dd          }|j                                        S )zEnable group.r   r   r  r   r  r  s      r]   group_enablezMinioAdmin.group_enable  sD    >>%#-CC " 
 

 }##%%%r_   
str | Nonec                    |dd}|||d<   |                      dt          j        t          j        |                                                    }|j                                        S )z%Remove group or members from a group.T)r7   r  Nr  r   r  )r   r   r4   r   r   r   r   r   )r\   r  r  r   r   s        r]   group_removezMinioAdmin.group_remove  sw      
 
 %DO>>,D!!((** " 
 

 }##%%%r_   c                |    |                      dt          j        d|i          }|j                                        S )zGet group information.r   r7   r   )r   r   r6   r   r   r  s      r]   
group_infozMinioAdmin.group_info  sA    >>!:. " 
 

 }##%%%r_   c                t    |                      dt          j                  }|j                                        S )zList groups.r   )r   r   r8   r   r   r   s     r]   
group_listzMinioAdmin.group_list  s,    >>%)=>>}##%%%r_   policy_namepolicy_filec                   t          |d          5 }|                     dt          j        d|i|                                                                          }|j                                        cddd           S # 1 swxY w Y   dS )zAdd new policy.utf-8encodingr   namer   N)openr   r   r*   ru   r   r   r   )r\   r  r  filer   s        r]   
policy_addzMinioAdmin.policy_add  s    +000 	*D~~*$k2YY[[''))	 &  H =''))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   A"BBBc                |    |                      dt          j        d|i          }|j                                        S )zRemove policy.r   r  r   )r   r   r-   r   r   r\   r  r   s      r]   policy_removezMinioAdmin.policy_remove  sA    >>) +. " 
 

 }##%%%r_   c                |    |                      dt          j        d|i          }|j                                        S )zGet policy information.r   r  r   )r   r   r/   r   r   r#  s      r]   policy_infozMinioAdmin.policy_info  sA    >>' +. " 
 

 }##%%%r_   c                t    |                      dt          j                  }|j                                        S )zList policies.r   )r   r   r,   r   r   r   s     r]   policy_listzMinioAdmin.policy_list  s,    >>%)FGG}##%%%r_   str | list[str]userr7   c                    |du|duz  rX|                      dt          j        t          t          |p|          |rdnd|d          }|j                                        S t          d          )z"Set IAM policy on a user or group.Nr   truefalse)userOrGroupisGroup
policyNamer    either user or group must be set)r   r   r+   r	   rX   r   r   r   )r\   r  r*  r7   r   s        r]   
policy_setzMinioAdmin.policy_set  s     d!23 	*~~1-1#t}u-E-E38)Eg,79 9 &  H ='')));<<<r_   c           	        |du|duz  rt          |t                    r|n|g}d|i}|r||d<   |r||d<   |                     dt          j        t          t          j        |                                          | j	        
                                j                  d          }t          || j	        
                                j                  }|                                S t          d          )	z(Unset an IAM policy for a user or group.Npoliciesr*  r7   r   Fr   r   r1  )r   r   r   r   r.   r   r   r   r   r   r   r   r   r   r   )r\   r  r*  r7   r4  r   r   r  s           r]   policy_unsetzMinioAdmin.policy_unset  s    d!23 	')+t<<O;-  1;H/ED $#V & %W~~3Jt$$++--N++--8  !& &  H !$.1133> J $$&&&;<<<r_   r   c                .   	 |                      dt          j        |pdddd          }|Q|                                                                |r)|                                 |                                 S S t          || j        	                                j
                                                  	 |r)|                                 |                                 S S # |r)|                                 |                                 w w xY w)zGet configuration parameters.r   rh   )r   subSysFr   r   )r   r   rB   ru   r   closerelease_connr   r   r   r   r\   r   r   s      r]   
config_getzMinioAdmin.config_get
  s(   	(~~#%(YB"== %	 &  H {}}--//
  (   %%''''(	 $.1133> fhh  (   %%''''(x (   %%''''(s   AC' ==C' '-Dconfigdict[str, str] | Nonec           	     f   |g}|r!|d |                                 D             z  }d                    |                                          }|                     dt          j        t          || j                                        j	                            }|j
                                        S )zSet configuration parameters.c                "    g | ]\  }}| d | S r   rZ   )r   r  r^   s      r]   r   z)MinioAdmin.config_set.<locals>.<listcomp>%  s*    III;4&&u&&IIIr_   r   r   r  )r   r   r   r   r   rC   r   r   r   r   r   r   )r\   r   r>  r   r   r   s         r]   
config_setzMinioAdmin.config_set  s     u 	JII&,,..IIIIDxx~~$$&&>>t~6688CDD " 
 

 }##%%%r_   r  c           	        |r|d|z   z  }|                                 }|                     dt          j        t	          || j                                        j                            }|j        	                                S )zReset configuration parameters.:r   r  )
r   r   r   rD   r   r   r   r   r   r   )r\   r   r  r   r   s        r]   config_resetzMinioAdmin.config_reset.  sz     	3:Czz||>>"t~6688CDD " 
 

 }##%%%r_   c                   	 |                      dt          j        ddid          }t          || j                                        j                  }|                                |r)|                                 |	                                 S S # |r)|                                 |	                                 w w xY w)z#Get historic configuration changes.r   count10Fr9  )
r   r   rE   r   r   r   r   r   r:  r;  )r\   r   
plain_texts      r]   config_historyzMinioAdmin.config_history:  s    	(~~,%t_ %	 &  H !$.1133> J $$&& (   %%''''(x (   %%''''(s   A$B -B?
restore_idc                |    |                      dt          j        d|i          }|j                                        S )z,Restore to a specific configuration history.r   	restoreIdr   )r   r   rF   r   r   )r\   rK  r   s      r]   config_restorezMinioAdmin.config_restoreL  sA    >>+%z2 " 
 

 }##%%%r_   rZ   	profilers
tuple[str]c                    |                      dt          j        dd                    |          i          }|j                                        S )zRuns a system profiler   zprofilerType;,r   )r   r   rG   r   r   r   )r\   rO  r   s      r]   profile_startzMinioAdmin.profile_startU  sO    
 >>")388I+>+>? " 
 

 }##%%%r_   c                t    |                      dt          j                  }|j                                        S )z5Get a list of the 10 oldest locks on a MinIO cluster.r   )r   r   r@   r   r   r   s     r]   	top_lockszMinioAdmin.top_locksa  s4    >>
 
 }##%%%r_   c                    |                      dt          j        d|pdi          }|j                                        S )zCreate a new KMS master key.r   key-idrh   r   )r   r   rI   r   r   r<  s      r]   kms_key_createzMinioAdmin.kms_key_createi  sE    >>#"CI2. " 
 

 }##%%%r_   c                    |                      dt          j        d|pdi          }|j                                        S )z+Get status information of a KMS master key.r   rW  rh   r   )r   r   rJ   r   r   r<  s      r]   kms_key_statuszMinioAdmin.kms_key_statusr  sE    >>'"CI2. " 
 

 }##%%%r_   
peer_siteslist[PeerSite]c           
     2   t          j        d |D                                                       }|                     dt          j        ddit          || j                                        j	                            }|j
                                        S )z#Add peer sites to site replication.c                6    g | ]}|                                 S rZ   )to_dict)r   	peer_sites     r]   r   z3MinioAdmin.add_site_replication.<locals>.<listcomp>~  s$    ===YY  ===r_   r   api-version1r   )r   r   r   r   r   rK   r   r   r   r   r   r   )r\   r[  r   r   s       r]   add_site_replicationzMinioAdmin.add_site_replication{  s    z==*===? ??Evxx 	>>)'-t~6688CDD	 " 
 
 }##%%%r_   c                t    |                      dt          j                  }|j                                        S )!Get site replication information.r   )r   r   rL   r   r   r   s     r]   get_site_replication_infoz$MinioAdmin.get_site_replication_info  s,    >>%)GHH}##%%%r_   optionsr   c           	         |                      dt          j        t          t          |                                                    }|j                                        S )re  r   r   )r   r   rM   r	   r   to_query_paramsr   r   )r\   rg  r   s      r]   get_site_replication_statusz&MinioAdmin.get_site_replication_status  sT    
 >>,h(?(?(A(ABB " 
 

 }##%%%r_   	peer_infor   c           
     B   t          j        |                                                                          }|                     dt
          j        ddit          || j        	                                j
                            }|j                                        S )z2Edit site replication with given peer information.r   ra  rb  r   )r   r   r_  r   r   r   rN   r   r   r   r   r   r   )r\   rk  r   r   s       r]   edit_site_replicationz MinioAdmin.edit_site_replication  s    z)++--..5577>>*'-t~6688CDD	 " 
 
 }##%%%r_   Fsites	all_sitesc           
        i }|r|                     ddi           n+|r|                     d|pdi           nt          d          t          j        |                                          }|                     dt          j        ddit          || j	        
                                j                  	          }|j                                        S )
z6Remove given sites or all sites from site replication.allTruern  rh   z&either sites or all flag must be givenr   ra  rb  r   )r?   r   r   r   r   r   r   rO   r   r   r   r   r   r   )r\   rn  ro  r   r   r   s         r]   remove_site_replicationz"MinioAdmin.remove_site_replication  s      	GKK(((( 	GKK%+2.////EFFFz$&&((>>,'-t~6688CDD	 " 
 
 }##%%%r_   bucketsizeintc                    t          j        |dd                                          }|                     dt          j        d|i|          }|j                                        S )zSet bucket quota configuration.hard)quota	quotatyper   rt  r   )r   r   r   r   r   r0   r   r   )r\   rt  ru  r   r   s        r]   bucket_quota_setzMinioAdmin.bucket_quota_set  sg    zDv>>??FFHH>>%"F+	 " 
 
 }##%%%r_   c                .    |                      |d          S )z!Clear bucket quota configuration.r   )r{  )r\   rt  s     r]   bucket_quota_clearzMinioAdmin.bucket_quota_clear  s    $$VQ///r_   c                |    |                      dt          j        d|i          }|j                                        S )zGet bucket quota configuration.r   rt  r   )r   r   r1   r   r   )r\   rt  r   s      r]   bucket_quota_getzMinioAdmin.bucket_quota_get  sA    >>%"F+ " 
 

 }##%%%r_   c                    |                      dt          j        d|id          }t          || j                                        j                  }|                                S )z%Get information about service accountr   r   Fr9  )r   r   rP   r   r   r   r   r   )r\   r   r   r  s       r]   get_service_accountzMinioAdmin.get_service_account  si    >>)%z2!	 " 
 
 dn--//:
 

   """r_   c                    |                      dt          j        d|id          }t          || j                                        j                  }|                                S )zList service accounts of userr   r*  Fr9  )r   r   rQ   r   r   r   r   r   )r\   r*  r   r  s       r]   list_service_accountzMinioAdmin.list_service_account  sh    >>) $!	 " 
 
 dn--//:
 

   """r_   description
expirationr   c           	        |du |du z  rt          d          |dk    s|dk    rt          d          d||d}|r||d<   |r||d<   |r@t          |d	
          5 }	t          j        |	          |d<   ddd           n# 1 swxY w Y   |r||d<   |r||d<   t          j        |                                          }
|                     dt          j        t          |
| j
                                        j                  d          }t          || j
                                        j                  }|                                S )zT
        Add a new service account with the given access key and secret key
        Nz/both access key and secret key must be providedrh   z*access key or secret key must not be emptyr   )r   r   r   r  r  r  r  policyr  r   r   Fr5  )r   r  r   loadr   r   r   r   rR   r   r   r   r   r   r   )r\   r   r   r  r  r  r  r   r   r   r   r   r  s                r]   add_service_accountzMinioAdmin.add_service_account  s    $:#56 	PNOOOzR//IJJJ##
 

  	 DL 	."-D 	1kG444 1!%4X1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 	,!+D 	$#DNz$&&((>>(t~6688CDD!	 " 
 
 dn--//:
 

   """   A??BBc           
     L   ||||||g}t          d |D                       st          d          i }	|r||	d<   |r||	d<   |r||	d<   |r@t          |d          5 }
t          j        |
          |	d<   d	d	d	           n# 1 swxY w Y   |r||	d
<   |r||	d<   t          j        |	                                          }|                     dt          j	        d|it          || j                                        j                            }|j                                        S )z"Update an existing service accountc              3     K   | ]}|V  d S r   rZ   )r   args     r]   	<genexpr>z4MinioAdmin.update_service_account.<locals>.<genexpr>!  s"      ''33''''''r_   zbat least one of secret_key, name, description, policy_file, expiration or status must be specifiednewSecretKeynewNamenewDescriptionr  r  	newPolicyNnewExpiration	newStatusr   r   r   )anyr   r  r   r  r   r   r   r   rS   r   r   r   r   r   r   )r\   r   r   r  r  r  r  r   argsr   r   r   r   s                r]   update_service_accountz!MinioAdmin.update_service_account  s    D+{JO''$''''' 	* ) * * *  	.#-D  	#"DO 	1%0D!" 	4kG444 4$(IdOO[!4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 	/$.D! 	' &Dz$&&((>>+%z2t~6688CDD	 " 
 
 }##%%%r  c                |    |                      dt          j        d|i          }|j                                        S )zDelete a service accountr   r   r   )r   r   rT   r   r   r   s      r]   delete_service_accountz!MinioAdmin.delete_service_account=  sA    >>+%z2 " 
 

 }##%%%r_   )rh   TTN)ri   rX   rj   r   rk   rX   rl   rm   rn   rm   ro   rp   )NNT)r   rX   r   rV   r   r   r   r   r   rm   rW   r   )r   rX   r   rX   )r   r   r`   )r   rX   r   rX   rW   rX   )r   rX   rW   rX   )r  rX   r  rX   rW   rX   )r  rX   rW   rX   r   )r  rX   r  r  rW   rX   )r  rX   r  rX   rW   rX   )r  rX   rW   rX   )NN)r  r)  r*  r  r7   r  rW   rX   )r   r  rW   rX   )r   rX   r>  r?  rW   rX   )r   rX   r  r  rW   rX   )rK  rX   rW   rX   )rO  rP  rW   rX   )r[  r\  rW   rX   )rg  r   rW   rX   )rk  r   rW   rX   )NF)rn  r  ro  rm   rW   rX   )rt  rX   ru  rv  rW   rX   )rt  rX   rW   rX   )r*  rX   rW   rX   )NNNNNNN)r   r  r   r  r  r  r  r  r  r  r  r  r   r  rW   rX   )NNNNNN)r   rX   r   r  r  r  r  r  r  r  r  r  r   r  rW   rX   )9ra   rb   rc   rd   r   r   r   r   r   r   r   r   r?   r;   r   r   r   r   r   r  r	  r  r  r  r  r  r!  r$  r&  r(  r2  r6  r=  rB  rE  rJ  rN  r	   r   rX   rS  rU  rX  rZ  rc  rf  rj  rm  rs  r{  r}  r  r  r  r  r  r  rZ   r_   r]   rg   rg   m   s       << #.2)1 )1 )1 )1 )1V   -1!%$(]P ]P ]P ]P ]P~M M M M	$ 	$ 	$ 	$" " "& & & && & & && & & && & & &
& 
& 
& 
&& & & && & & && & & && & & &# # # #& & & && & & && & & && & & & & & & & && & & &
	* 	* 	* 	*& & & && & & && & & &  $ $	= = = = =*  $ $	= = = = =>( ( ( ( (, -1& & & & &"
& 
& 
& 
& 
&( ( ( ($& & & & %)DsR$8$8
& 
& 
& 
& 
&& & & && & & & && & & & &
& 
& 
& 
&& & & &

& 
& 
& 
&	& 	& 	& 	& !%#& & & & &,	& 	& 	& 	&0 0 0 0& & & &# # # ## # # # 6:59/36:6:5915*# *# *# *# *#\ 9=269=9=8<48$& $& $& $& $&L& & & & & &r_   rg   ):rd   
__future__r   r   r   r   datetimer   enumr   typingr   r   r	   urllib.parser
   r   typing_extensionsr   urllib3r   urllib3._collectionsr   urllib3.poolmanagerr   urllib3.responser   ImportErrorr   urllib3.utilr   rh   r   rj   r   cryptor   r   	datatypesr   r   r   errorr   helpersr   r   r   r   r   r    r!   r"   signerr#   r   rV   rg   rZ   r_   r]   <module>r     s  & E D 3 3 3 3 3 3 3 3  				             & & & & & & & & & & # # # # # #  & & & & & &       / / / / / / + + + + + +B1111111 B B BAAAAAAAAB !                 ! ! ! ! ! ! $ $ $ $ $ $ $ $ G G G G G G G G G G & & & & & &# # # # # # # # # # # # # # # # # # # #      4*J*[* 	l* 	}	*
 	,* 	0* 	#$>* 	 6* 	 6* 	%&A* 	2* 	.* 	.* 	?* 	"#9*  	.!*" 	g#* *$ 	x%*& 	'*( 	9)** 	(+*, 	[-*. 	'/*0 	o1*2 	o3*4 	5*6 	77*8 	!"=9*: 	;*< 	*=*> 	.?*@ 	 6A*B 	 !8C*D 	"#<E* *F "9#< 6 74":":S* * *- -`( ( ( ( (( ( ( (W& W& W& W& W& W& W& W& W& W&s   A A! A!