
                             S 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.    N)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   BuildSecretsr4   /   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)r1   projectsecret_namer   r   r0   r2   versions           r   r-   r-   ;   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   r0   )metadatadatar   
apiVersionSecretkind)itemsbase64	b64encodepayloadrA   decode)r<   r2   r0   rA   r=   r3   r@   ds           r   r:   r:   I   st    	$ og$$V^^%8%89@@IDM )k"(%[*!!L/!F)	
(r   c                 d    [         R                  " S[        U R                  5       5      UU5        g )Nr3   )r   DeleteResourceslistkeys)
secret_mapr0   context_names      r   _DeleteSecretsrQ   W   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___   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   rV   projects_secrets_versionsAccessSECRETS_MESSAGE_MODULE1SecretmanagerProjectsSecretsVersionsAccessRequest)r   r;   r<   r   r=   resource_names         r   r9   _SecretsClient.GetSecretDatab   s    		!	!+	.	.(//G =CCG- ;AA
)m88??	:	:	:	NP Pr   )rV   N)r#   r$   r%   r&   r'   r   r9   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matchrY   s    r   IsValidK8sNamerd   t   s     
<d	CCr   r   )r'   rF   rb   googlecloudsdk.api_lib.utilr   googlecloudsdk.command_lib.coder   googlecloudsdk.command_lib.runr   GetMessagesModuler]   objectr	   r4   r-   r:   rQ   r+   rd   r)   r   r   <module>rj      sc    K  	 , 6 ://F @& @(	:+
PV P0Dr   