
    8                         S r SSKJr  SSKJr  SSKJr  SSKJr  SSKrSSKrSSKJ	r	  SSK
Jr  SS	KJr  \	R                  " S
S5      r " S S\5      rSS jrS rS rS r " S S\5      rS rg)zDLibrary for the Secret Manager integration in the local environment.    )absolute_import)division)print_function)unicode_literalsN)apis)
kubernetes)secrets_mappingsecretmanagerv1c                   4    \ rS rSrSrS	S jrS rS rS rSr	g)
SecretManagerSecret   z+A secret to be fetched from Secret Manager.Nc                 (    Xl         X l        X0l        g Nnameversionsmapped_secret)selfr   r   r   s       .lib/googlecloudsdk/command_lib/code/secrets.py__init__SecretManagerSecret.__init__"   s    IM&    c                     U R                   UR                   :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   r   )r   others     r   __eq__SecretManagerSecret.__eq__'   sD    II# 6(G 6%"5"557r   c                 d    SR                  U R                  U R                  U R                  5      $ )Nz6<Secret: (name="{}", versions={}, mapped_secret="{}")>)formatr   r   r   r   s    r   __repr__SecretManagerSecret.__repr__+   s*    CJJ		4==$"4"46 6r   c                 Z    [        U R                  U R                  U R                  45      $ r   )hashr   r   r   r    s    r   __hash__SecretManagerSecret.__hash__/   s"    DMM4+=+=>??r   )r   r   r   r   )
__name__
__module____qualname____firstlineno____doc__r   r   r!   r%   __static_attributes__ r   r   r   r      s    3'
76@r   r   c                     Uc
  [        5       n/ nU H?  nUR                  [        X0UR                  UR                  UR
                  U5      5        MA     U$ )zGFetch secrets from Secret Manager and create k8s secrets with the data.)_SecretsClientappend_BuildSecretr   r   r   )project_namesecret_list	namespaceclientsecretssecrets         r   BuildSecretsr8   3   sR    ^F'fNNV6;;8L8L__i	12  
.r   c                     [         R                  R                  U;   a  [        S5      e0 nU H  nU R	                  XUU5      Xg'   M     [        X&U5      $ )zDBuild the k8s secret resource for minikube from Secret Manager data.zSlocal development requires you to specify all secret versions that you need to use.)r	   SpecialVersion	MOUNT_ALL
ValueErrorGetSecretData_BuildK8sSecret)r5   projectsecret_namer   r   r4   r6   versions           r   r1   r1   ?   sb     ##--9
 6 7 7'g++G-,35G  
y	99r   c                     0 nUR                  5        H@  u  pE[        R                  " UR                  R                  5      R                  S5      X4'   MB     SU 0nU(       a  X&S'   XcS.nSUS'   SUS'   U$ )	z8Turn a map of SecretManager responses into a k8s secret.asciir   r4   )metadatadatar   
apiVersionSecretkind)itemsbase64	b64encodepayloadrE   decode)r@   r6   r4   rE   rA   r7   rD   ds           r   r>   r>   M   st    	$ og$$V^^%8%89@@IDM )k"(%[*!!L/!F)	
(r   c                 d    [         R                  " S[        U R                  5       5      UU5        g )Nr7   )r   DeleteResourceslistkeys)
secret_mapr4   context_names      r   _DeleteSecretsrU   [   s%    XtJOO,='>	)+r   c                   $    \ rS rSrSrS rS rSrg)r/   `   zBClient implementation for calling Secret Manager to fetch secrets.c                 <    [         R                  " SS5      U l        g )Nr
   r   )r   GetClientInstancesecrets_clientr    s    r   r   _SecretsClient.__init__c   s    00$GDr   c                    U(       a;  UR                  S5      (       a  SR                  X45      nO%SR                  XU5      nOSR                  XU5      nU R                  R                  R	                  [
        R                  US95      $ )z$Retrieve secret from secret manager.z	projects/z{}/versions/{}z"projects/{}/secrets/{}/versions/{}r   )
startswithr   rZ   projects_secrets_versionsAccessSECRETS_MESSAGE_MODULE1SecretmanagerProjectsSecretsVersionsAccessRequest)r   r?   r@   r   rA   resource_names         r   r=   _SecretsClient.GetSecretDataf   s    		!	!+	.	.(//G =CCG- ;AA
)m88??	:	:	:	NP Pr   )rZ   N)r'   r(   r)   r*   r+   r   r=   r,   r-   r   r   r/   r/   `   s    JHPr   r/   c                 0    [         R                  " SU 5      $ )Nz'[a-z0-9]([a-z0-9\-\.]{0,251}[a-z0-9])?$)rematchr]   s    r   IsValidK8sNamerh   x   s     
<d	CCr   r   )r+   
__future__r   r   r   r   rJ   rf   googlecloudsdk.api_lib.utilr   googlecloudsdk.command_lib.coder   googlecloudsdk.command_lib.runr	   GetMessagesModulera   objectr   r8   r1   r>   rU   r/   rh   r-   r   r   <module>ro      so    K &  % '  	 , 6 ://F @& @(	:+
PV P0Dr   