
    HK                        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
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(S@S jr)  SAS  jr*  SBS! jr+  SCS" jr,  SCS# jr-S>S$ jr.S% r/S& r0 S>S' jr1S( r2S@S) jr3S* r4S+ r5S, r6S- r7S. r8S/ r9S0 r:S1 r;S2 r<S3 r=S4 r>S5 r?S6 r@ S@S7 jrAS8\BS9\CS:\C4S; jrD    SDS< jrES= rFg)EzUtility for making API calls.    )
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"   0   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)   7   s*    !!"3&
  4&	-r   c                  @    [         R                  " [        [        5      $ r   )r   r   r%   r&   r   r   r   GetMessagesr+   A   s    			 9 <
> >r   c                  8    [         R                  " [        S5      $ Nv1beta2)r   r   r%   r   r   r   GetClientV1beta2r/   F       			 9 )
+ +r   c                  8    [         R                  " [        S5      $ r-   )r   r   r%   r   r   r   GetMessagesV1beta2r2   K   r0   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   	DeleteTagrB   P   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.)r5   version)parentr?   tagId)Tag
GetTagNameGetVersionNameFArtifactregistryProjectsLocationsRepositoriesPackagesTagsCreateRequestGetPackageNamer?   r7   Create)r(   r>   
docker_tagdocker_versionr?   create_tag_reqs         r   CreateDockerTagrP   [   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.r4   )CArtifactregistryProjectsLocationsRepositoriesPackagesTagsGetRequestr7   Get)r(   r>   r?   get_tag_reqs       r   GetTagrU   e   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.r4   )JArtifactregistryProjectsLocationsRepositoriesPackagesVersionsDeleteRequest1projects_locations_repositories_packages_versionsr8   )r(   r>   rD   delete_ver_reqs       r   DeleteVersionrZ   l   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.r4   )BArtifactregistryProjectsLocationsRepositoriesPackagesDeleteRequest(projects_locations_repositories_packagesr8   )r(   r>   packagedelete_pkg_reqs       r   DeletePackager`   t   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.r4   )r)   r+   rR   r7   rS   )r(   r>   rD   get_ver_reqs       r   
GetVersionrc   {   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.r4   /
   z!Internal error. Corrupted tag: {})	rR   r7   rS   rD   lensplitr;   r<   r=   )r(   r>   r?   rT   get_tag_ress        r   GetVersionFromTagrk      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.rE   filterpageSizetags
batch_sizebatch_size_attributefield)DArtifactregistryProjectsLocationsRepositoriesPackagesTagsListRequestlistr   YieldFromListr7   )r(   r>   r^   	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="{}"rm   ro   rp   rq   )ru   r=   rv   r   rw   r7   )r(   r>   r^   rD   rx   rz   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.rE   orderByrn   ro   packageslimitrr   rs   rt   )@ArtifactregistryProjectsLocationsRepositoriesPackagesListRequestrv   r   rw   r]   )r(   r>   reporx   order_byr   ry   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.)rE   viewr   rn   ro   versionsr   )HArtifactregistryProjectsLocationsRepositoriesPackagesVersionsListRequestrv   r   rw   rX   )
r(   r>   pkgversion_viewrx   r   r   ry   
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   ro   repositoriesrq   )r)   r+   8ArtifactregistryProjectsLocationsRepositoriesListRequestrv   r   rw   projects_locations_repositories)projectrx   r   ry   r(   r>   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.)rE   rn   r   ro   filesrq   )=ArtifactregistryProjectsLocationsRepositoriesFilesListRequestrv   r   rw   %projects_locations_repositories_files)r(   r>   r   ry   rx   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.r4   )r)   r+   7ArtifactregistryProjectsLocationsRepositoriesGetRequestr   rS   )r   r$   r(   r>   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(   r>   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/{}re   rg   )rE   repositoryId
repository)r)   r+   :ArtifactregistryProjectsLocationsRepositoriesCreateRequestr=   r5   ri   r   rL   )r   locationr   r$   r(   r>   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.r4   )r)   r+   ?ArtifactregistryProjectsLocationsRepositoriesPackagesGetRequestr]   rS   )r^   r(   r>   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/r4   ro   	locationsrq   )r/   r2   ,ArtifactregistryProjectsLocationsListRequestr   rw   projects_locationssorted
locationId)
project_idrx   r(   r>   list_locs_reqr   locs          r   ListLocationsr   4  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(   r>   test_reqs        r   TestStorageIAMPermissionr   C  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   L  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   S  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.r4   )iam_apiGetClientAndMessagesprojects_serviceAccountsrS   $IamProjectsServiceAccountsGetRequestr	   EmailToAccountResourceName)r   r(   r>   s      r   GetServiceAccountr   \  sM    113&		(	(	,	,3322?C 4 
 r   c                     [        5       n[        5       nUR                  SU -   S-   S9nUR                  R	                  U5      $ )Nr   /projectSettingsr4   )r)   r+   1ArtifactregistryProjectsGetProjectSettingsRequestprojectsGetProjectSettings)r   r(   r>   get_settings_reqs       r   r   r   f  sM    ;&](OO#&88 P  
	+	+,<	==r   c                 $    SR                  X5      $ )Nz&projects/{}/locations/{}/projectConfig)r=   )r   location_ids     r   GetProjectConfigNamer   o  s    	1	8	8
 r   c                     [        5       n[        5       nUR                  [        X5      S9nUR                  R                  U5      $ )z0Gets Project Config on the project and location.r4   )r)   r+   8ArtifactregistryProjectsLocationsGetProjectConfigRequestr   r   GetProjectConfig)r   r   r(   r>   get_project_config_reqs        r   r   r   u  sK    ;&](GG#J< H  
 
	"	"	3	34J	KKr   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//vpcscConfigr4   )r)   r+   6ArtifactregistryProjectsLocationsGetVpcscConfigRequestr   GetVpcscConfig)r   r   r(   r>   get_vpcsc_reqs        r   GetVPCSCConfigr     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   r5   vpcscPolicyr5   vPCSCConfig)r)   r+   VPCSCConfigVpcscPolicyValueValuesEnumALLOW9ArtifactregistryProjectsLocationsUpdateVpcscConfigRequestr   UpdateVpcscConfig)r   r   r(   r>   vcupdate_vpcsc_reqs         r   AllowVPCSCConfigr    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(   r>   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   r>   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   )r5   projectSettings
updateMask)r)   r+   r  pullPercent4ArtifactregistryProjectsUpdateProjectSettingsRequestr   UpdateProjectSettings)r   redirection_statepull_percentr(   r>   project_settingsupdate_maskupdate_settings_reqs           r   r  r    s~     ;&](--. . 0*+#/ CCZ'*<<*  D   
	.	./B	CCr   rE   rx   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.)rE   ro   dockerImages)rr   rs   rt   r   )r)   r+   DArtifactregistryProjectsLocationsRepositoriesDockerImagesListRequestrv   r   rw   ,projects_locations_repositories_dockerImages)rE   rx   r   r(   r>   list_images_reqs         r   ListDockerImagesr.    s^    ;&](aa b / 


=
=
)	
 	r   c           
          [        5       n[        5       nUR                  U UR                  UUUUS9S9nUR	                  UUS9n	UR
                  R                  U	5      $ )zCopies a repository.)continueOnSkippedVersionmaxVersionAgeDaysallAttachmentsIncludedallTagsExcluded)sourceRepositorybehavior)destinationRepositorycopyRepositoryRequest)r)   r+   CopyRepositoryRequestBehaviorBArtifactregistryProjectsLocationsRepositoriesCopyRepositoryRequestr   CopyRepository)
source_repodest_repo_namecontinue_on_skipped_versionmax_version_age_daysinclude_all_attachmentsexclude_all_tagsr(   r>   copy_reqreqs
             r   r;  r;    s     ;&](++"  #>0!8*	 !  , ( 	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)rE  	sourceTagz(Either version or tag must be specified.)	r)   r+   BArtifactregistryProjectsLocationsRepositoriesExportArtifactRequestParentRelativeNameExportArtifactRequest
ValueErrorr   ExportArtifact)rD   r?   gcs_destinationr(   r>   rC  s         r   rN  rN    s    ;&](

U
U>>#**,99;&<<#!..0 = 
 V C 

U
U::<&&(557&<<#&&( = 
 V C ?
@@		/	/	>	>s	CCr   )F)NNr   )NNNN)NNNNN)NNN)Fr   FF)G__doc__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+   r/   r2   rB   rP   rU   rZ   r`   rc   rk   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  strintr.  r;  rN  r   r   r   <module>rZ     s   $ ? ) ' H : 6 , 3 ) / #   (I GG.>
+
+
8OPO	,

 48:>  6:JN& )-26!" 59'+Q ;@@.7574>	LAGD()* 15D,S S  , !&!D6Dr   