
    G                        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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rSrSrSrSrSrS rS rS r S?S jr!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S@S! jr,SAS" jr-  SBS# jr.  SCS$ jr/  SDS% jr0  SDS& jr1S?S' jr2S( r3S) r4 S?S* jr5S+ r6SAS, jr7S- r8S. r9S/ r:S0 r;S1 r<S2 r=S3 r>S4 r?S5 r@S6 rAS7 rB SAS8 jrCS9\DS:\ES;\E4S< jrFS= rGS> rHg )EzUtility for making API calls.    )absolute_import)division)unicode_literals)
exceptions)http_wrapper)
list_pager)iam)util)apis)iam_util)	resourcesartifactregistryv1storagezstorage.objects.listz/cloudkms.projects.locations.keyRings.cryptoKeysc                  @    [         R                  " [        [        5      $ N)r   GetClientInstanceSTORAGE_API_NAMESTORAGE_API_VERSION     4lib/googlecloudsdk/command_lib/artifacts/requests.pyGetStorageClientr   +       			 02E	FFr   c                  @    [         R                  " [        [        5      $ r   )r   GetMessagesModuler   r   r   r   r   GetStorageMessagesr   /   r   r   c                     U R                   S:  a  [        R                  R                  U 5      e[        R
                  " U 5      $ )z5Wrap http_wrapper.CheckResponse to skip retry on 501.i  )status_codeapitools_exceptions	HttpErrorFromResponser   CheckResponse)responses    r   SkipRetryOn500Errorsr%   3   s8    S 

'
'
4
4X
>>		#	#H	--r   c                 X    [         R                  " [        [        U S9n[        Ul        U$ )N)skip_activation_prompt)r   r   ARTIFACTREGISTRY_API_NAMEARTIFACTREGISTRY_API_VERSIONr%   check_response_func)r'   clients     r   	GetClientr,   :   s*    !!"3&
  4&	-r   c                  @    [         R                  " [        [        5      $ r   )r   r   r(   r)   r   r   r   GetMessagesr.   D   s    			 9 <
> >r   c                  8    [         R                  " [        S5      $ Nv1beta2)r   r   r(   r   r   r   GetClientV1beta2r2   I       			 9 )
+ +r   c                  8    [         R                  " [        S5      $ r0   )r   r   r(   r   r   r   GetMessagesV1beta2r5   N   r3   r   c                     UR                  US9nU R                  R                  U5      n[        XAR                  5      (       d%  [
        R                  " SR                  X$5      5      eg)zDeletes a tag by its name.namezFailed to delete tag {}: {}N)FArtifactregistryProjectsLocationsRepositoriesPackagesTagsDeleteRequest-projects_locations_repositories_packages_tagsDelete
isinstanceEmptyar_exceptionsArtifactRegistryErrorformat)r+   messagestagdelete_tag_reqerrs        r   	DeleteTagrE   S   si    bb c .<<CC	#	C	(	(

-
-%,,S68 8 
)r   c                     UR                  UR                  5       UR                  5       S9nUR                  UR	                  5       XBR
                  S9nU R                  R                  U5      $ )z7Creates a tag associated with the given docker version.)r8   version)parentrB   tagId)Tag
GetTagNameGetVersionNameFArtifactregistryProjectsLocationsRepositoriesPackagesTagsCreateRequestGetPackageNamerB   r:   Create)r+   rA   
docker_tagdocker_versionrB   create_tag_reqs         r   CreateDockerTagrS   ^   sr      "N,I,I,K 	 	M#bb&&(c c I.		=	=	D	D
 r   c                 V    UR                  US9nU R                  R                  U5      $ )zGets a tag by its name.r7   )CArtifactregistryProjectsLocationsRepositoriesPackagesTagsGetRequestr:   Get)r+   rA   rB   get_tag_reqs       r   GetTagrX   h   s2    \\ ] +		=	=	A	A+	NNr   c                 V    UR                  US9nU R                  R                  U5      $ )zDeletes a version by its name.r7   )JArtifactregistryProjectsLocationsRepositoriesPackagesVersionsDeleteRequest1projects_locations_repositories_packages_versionsr;   )r+   rA   rG   delete_ver_reqs       r   DeleteVersionr]   o   s7    ff g .		A	A	H	H
 r   c                 V    UR                  US9nU R                  R                  U5      $ )zDeletes a package by its name.r7   )BArtifactregistryProjectsLocationsRepositoriesPackagesDeleteRequest(projects_locations_repositories_packagesr;   )r+   rA   packagedelete_pkg_reqs       r   DeletePackagerc   w   s2    ^^ _ .		8	8	?	?	OOr   c                 ~    [        5       n [        5       nUR                  US9nU R                  R	                  U5      $ )zGets a version by its name.r7   )r,   r.   rU   r:   rV   )r+   rA   rG   get_ver_reqs       r   
GetVersionrf   ~   sE    ;&](JJ K   
	=	=	A	A+	NNr   c                 N   UR                  US9nU R                  R                  U5      nUR                  (       a(  [	        UR                  R                  S5      5      S:w  a%  [        R                  " SR                  U5      5      eUR                  R                  S5      S   $ )z"Gets a version name by a tag name.r7   /
   z!Internal error. Corrupted tag: {})	rU   r:   rV   rG   lensplitr>   r?   r@   )r+   rA   rB   rW   get_tag_ress        r   GetVersionFromTagrn      s    \\ ] +DDHH+			K$7$7$=$=c$B Cr I

-
-+22379 9				"	"3	'	++r   Nc           
      v    UR                  X$S9n[        [        R                  " U R                  UUSSS95      $ )z;Lists all tags under a package with the given package name.rH   filterpageSizetags
batch_sizebatch_size_attributefield)DArtifactregistryProjectsLocationsRepositoriesPackagesTagsListRequestlistr   YieldFromListr:   )r+   rA   ra   	page_sizeserver_filterlist_tags_reqs         r   ListTagsr~      sK    __ ` ,-	

>
>
)
 r   c           
          UR                  USR                  U5      S9n[        [        R                  " U R
                  UUSSS95      $ )z-Lists tags associated with the given version.zversion="{}"rp   rr   rs   rt   )rx   r@   ry   r   rz   r:   )r+   rA   ra   rG   r{   r}   s         r   ListVersionTagsr      sY    __-44W= ` ?-	

>
>
)
 r   c                 z    UR                  X$US9n[        [        R                  " U R                  UUUSSS95      $ )z&Lists all packages under a repository.rH   orderByrq   rr   packageslimitru   rv   rw   )@ArtifactregistryProjectsLocationsRepositoriesPackagesListRequestry   r   rz   r`   )r+   rA   repor{   order_byr   r|   list_pkgs_reqs           r   ListPackagesr      sW     OO P ?  


9
9
)
 r   c                     UnUb  Ub  XF:  a  UnUR                  X#XWS9n	[        [        R                  " U R                  U	UUSSS95      $ )z#Lists all versions under a package.)rH   viewr   rq   rr   versionsr   )HArtifactregistryProjectsLocationsRepositoriesPackagesVersionsListRequestry   r   rz   r[   )
r+   rA   pkgversion_viewr{   r   r   r|   
page_limitlist_vers_reqs
             r   ListVersionsr      sl     *
]y,1BJccX d M-	

B
B
)
 r   c           
          [        5       n[        5       nUR                  XUS9n[        [        R
                  " UR                  UUSSS95      $ )z'Lists all repositories under a project.r   rr   repositoriesrt   )r,   r.   8ArtifactregistryProjectsLocationsRepositoriesListRequestry   r   rz   projects_locations_repositories)projectr{   r   r|   r+   rA   list_repos_reqs          r   ListRepositoriesr      sc     ;&](GG= H B  


0
0
) 
! !r   c           
      x    UR                  X#US9n[        [        R                  " U R                  UUSSS95      $ )z#Lists all files under a repository.)rH   rq   r   rr   filesrt   )=ArtifactregistryProjectsLocationsRepositoriesFilesListRequestry   r   rz   %projects_locations_repositories_files)r+   rA   r   r|   r{   r   list_files_reqs          r   	ListFilesr      sT     LLX M ?  


6
6
)
 r   c                     [        U5      n[        5       nUR                  U S9nUR                  R	                  U5      nU$ )z#Gets the repository given its name.r7   )r,   r.   7ArtifactregistryProjectsLocationsRepositoriesGetRequestr   rV   )r   r'   r+   rA   get_repo_reqget_repo_ress         r   GetRepositoryr      sI    +,&](QQ R ,77;;LI,	r   c                     [        5       n[        5       nUR                  U S9nUR                  R	                  U5      nU$ )z1Gets the IAM policy for the specified repository.)resource)r,   r.   @ArtifactregistryProjectsLocationsRepositoriesGetIamPolicyRequestr   GetIamPolicy)repo_resr+   rA   get_iam_policy_reqget_iam_policy_ress        r   r   r      sJ    ;&](`` a ==JJ	r   c                     [        5       n[        5       nUR                  U UR                  US9S9nUR                  R                  U5      $ )z1Sets the IAM policy for the specified repository.)policy)r   setIamPolicyRequest)r,   r.   @ArtifactregistryProjectsLocationsRepositoriesSetIamPolicyRequestSetIamPolicyRequestr   SetIamPolicy)r   r   r+   ar_messagesset_iam_policy_reqs        r   r   r     sW    ;&+ #cc%999H d  
	/	/	<	<=O	PPr   c                     [        U5      n[        5       nUR                  SR                  X5      UR                  R                  S5      S   US9nUR                  R                  U5      $ )aZ  Creates the repository given its parent.

Args:
  project: str: The project to create the repository in.
  location: str: The region to create the repository in.
  repository: messages.Repository to create.
  skip_activation_prompt: bool: If true, do not prompt for service activation

Returns:
  The resulting operation from the create request.
zprojects/{}/locations/{}rh   rj   )rH   repositoryId
repository)r,   r.   :ArtifactregistryProjectsLocationsRepositoriesCreateRequestr@   r8   rl   r   rO   )r   locationr   r'   r+   rA   requests          r   CreateRepositoryr     sm     +,&](OO'..wA??((-b1 P ' 
	/	/	6	6w	??r   c                     [        5       n[        5       nUR                  U S9nUR                  R	                  U5      nU$ )z Gets the package given its name.r7   )r,   r.   ?ArtifactregistryProjectsLocationsRepositoriesPackagesGetRequestr`   rV   )ra   r+   rA   get_package_reqget_package_ress        r   
GetPackager   ,  sH    ;&](\\ ] /CCGG/	r   c                     [        5       n[        5       nUR                  SU -   S9n[        R                  " UR
                  UUSSS9n[        U Vs/ s H  ofR                  PM     sn5      $ s  snf )z(Lists all locations for a given project.	projects/r7   rr   	locationsrt   )r2   r5   ,ArtifactregistryProjectsLocationsListRequestr   rz   projects_locationssorted
locationId)
project_idr{   r+   rA   list_locs_reqr   locs          r   ListLocationsr   7  sv    &!(GG# H %-&&%) 
959C95	665s   A.c                     [        5       n[        5       nUR                  U [        US9nUR                  R                  U5      $ )zETests storage IAM permission for a given bucket for the user project.)bucketpermissionsuserProject)r   r   'StorageBucketsTestIamPermissionsRequest_GCR_PERMISSIONbucketsTestIamPermissions)r   r   r+   rA   test_reqs        r   TestStorageIAMPermissionr   F  sD    &!(==g > G(		*	*8	44r   c                 r    [         R                  R                  U [        S9n[        R
                  " U5      $ )z+Gets the IAM policy for a given crypto key.relative_name
collection)r   REGISTRYParseRelativeNameCRYPTO_KEY_COLLECTIONkms_iamGetCryptoKeyIamPolicy)kms_keycrypto_key_refs     r   GetCryptoKeyPolicyr   O  s4    %%77(= 8 ?.		&	&~	66r   c                 t    [         R                  R                  U [        S9n[        R
                  " X!S5      $ )z;Adds Encrypter/Decrypter role to the given service account.r   z*roles/cloudkms.cryptoKeyEncrypterDecrypter)r   r   r   r   r   AddPolicyBindingToCryptoKey)r   service_accountr   s      r   AddCryptoKeyPermissionr   V  s<    %%77(= 8 ?.		,	,2
4 4r   c                     [         R                  " 5       u  pUR                  R                  UR	                  [
        R                  " U 5      S95      $ )z)Gets the service account given its email.r7   )iam_apiGetClientAndMessagesprojects_serviceAccountsrV   $IamProjectsServiceAccountsGetRequestr   EmailToAccountResourceName)r   r+   rA   s      r   GetServiceAccountr   _  sP    113&		(	(	,	,3322?C 4 E
F Fr   c                     [        5       n[        5       nUR                  SU -   S-   S9nUR                  R	                  U5      $ )Nr   /projectSettingsr7   )r,   r.   1ArtifactregistryProjectsGetProjectSettingsRequestprojectsGetProjectSettings)r   r+   rA   get_settings_reqs       r   r   r   g  sK    ;&](OO#&88 P :		+	+,<	==r   c                     [        5       n[        5       nUR                  SU -   S-   U-   S-   S9nUR                  R	                  U5      $ )z/Gets VPC SC Config on the project and location.r   /locations//vpcscConfigr7   )r,   r.   6ArtifactregistryProjectsLocationsGetVpcscConfigRequestr   GetVpcscConfig)r   location_idr+   rA   get_vpcsc_reqs        r   GetVPCSCConfigr   o  sY    ;&](QQ#m3kA R - 
	"	"	1	1-	@@r   c                    [        5       n[        5       nUR                  SU -   S-   U-   S-   UR                  R                  R                  S9nUR                  SU -   S-   U-   S-   US9nUR                  R                  U5      $ )z=Allows requests in Remote Repository inside VPC SC perimeter.r   r   r   r8   vpcscPolicyr8   vPCSCConfig)r,   r.   VPCSCConfigVpcscPolicyValueValuesEnumALLOW9ArtifactregistryProjectsLocationsUpdateVpcscConfigRequestr   UpdateVpcscConfig)r   r   r+   rA   vcupdate_vpcsc_reqs         r   AllowVPCSCConfigr  y  s    ;&](#m3kA&&AAGG  I" WW#m3kA X  
	"	"	4	45E	FFr   c                    [        5       n[        5       nUR                  SU -   S-   U-   S-   UR                  R                  R                  S9nUR                  SU -   S-   U-   S-   US9nUR                  R                  U5      $ )z=Denies requests in Remote Repository inside VPC SC perimeter.r   r   r   r   r   )r,   r.   r  r  DENYr  r   r  )r   r   r+   rA   r  r   s         r   DenyVPCSCConfigr    s    ;&](#m3kA&&AAFF  H" TT#m3kA U - 
	"	"	4	4]	CCr   c                 h    [        5       n[        XR                  R                  R                  5      $ r   )r.   SetUpgradeRedirectionStateProjectSettings%LegacyRedirectionStateValueValuesEnumREDIRECTION_FROM_GCR_IO_ENABLEDr   rA   s     r   EnableUpgradeRedirectionr    s+    ](	#**PP&&
( (r   c                 h    [        5       n[        XR                  R                  R                  5      $ r   )r.   r  r  r   REDIRECTION_FROM_GCR_IO_DISABLEDr  s     r   DisableUpgradeRedirectionr    s+    ](	#**PP''
) )r   c                 h    [        5       n[        XR                  R                  R                  5      $ r   )r.   r  r  r  !REDIRECTION_FROM_GCR_IO_FINALIZEDr  s     r   FinalizeUpgradeRedirectionr    s+    ](	#**PP((
* *r   c                     [        5       n[        5       nUR                  US9nSnU(       a  X%l        UR	                  SU -   S-   UUS9nUR
                  R                  U5      $ )z<Sets the upgrade redirection state for the supplied project.)legacyRedirectionStatelegacy_redirection_stater   r   )r8   projectSettings
updateMask)r,   r.   r  pullPercent4ArtifactregistryProjectsUpdateProjectSettingsRequestr   UpdateProjectSettings)r   redirection_statepull_percentr+   rA   project_settingsupdate_maskupdate_settings_reqs           r   r  r    s~     ;&](--. . 0*+#/ CCZ'*<<*  D   
	.	./B	CCr   rH   r{   r   c                     [        5       n[        5       nUR                  U S9n[        [        R
                  " UR                  UUSSUS95      $ )z+Lists all docker images under a repository.)rH   rr   dockerImages)ru   rv   rw   r   )r,   r.   DArtifactregistryProjectsLocationsRepositoriesDockerImagesListRequestry   r   rz   ,projects_locations_repositories_dockerImages)rH   r{   r   r+   rA   list_images_reqs         r   ListDockerImagesr+    s^    ;&](aa b / 


=
=
)	
 	r   c                     [        5       n[        5       nUR                  UUR                  U S9S9nUR                  R                  U5      $ )zCopies a repository.)sourceRepository)destinationRepositorycopyRepositoryRequest)r,   r.   BArtifactregistryProjectsLocationsRepositoriesCopyRepositoryRequestCopyRepositoryRequestr   CopyRepository)source_repodest_repo_namer+   rA   reqs        r   r2  r2    sX    ;&](SS*$::& ;  	T 	# 
	/	/	>	>s	CCr   c                    [        5       n[        5       nU (       aW  UR                  U R                  5       R                  5       R	                  5       UR                  UU R	                  5       S9S9nOiU(       aW  UR                  UR                  5       R                  5       R	                  5       UR                  UUR	                  5       S9S9nO[        S5      eUR                  R                  U5      $ )z&Exports an artifact by version or tag.)gcsPathsourceVersion)r   exportArtifactRequest)r7  	sourceTagz(Either version or tag must be specified.)	r,   r.   BArtifactregistryProjectsLocationsRepositoriesExportArtifactRequestParentRelativeNameExportArtifactRequest
ValueErrorr   ExportArtifact)rG   rB   gcs_destinationr+   rA   r5  s         r   r@  r@    s    ;&](

U
U>>#**,99;&<<#!..0 = 
 V C 

U
U::<&&(557&<<#&&( = 
 V C ?
@@		/	/	>	>s	CCr   )F)NNr   )NNNN)NNNNN)NNN)I__doc__
__future__r   r   r   apitools.base.pyr   r    r   r    googlecloudsdk.api_lib.artifactsr>   googlecloudsdk.api_lib.cloudkmsr	   r   googlecloudsdk.api_lib.iamr
   r   googlecloudsdk.api_lib.utilr   googlecloudsdk.command_lib.iamr   googlecloudsdk.corer   r(   r)   r   r   r   r   r   r   r%   r,   r.   r2   r5   rE   rS   rX   r]   rc   rf   rn   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  strintr+  r2  r@  r   r   r   <module>rM     sn   $ &  ' > ) ' H : 6 , 3 ) / #   (I GG.>
+
+
8OPO	,

 48:>  6:JN& )-26!" 59'+Q ;@@.7574F>AGD()* 15D,S S  &
DDr   