
    "%                     ~    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rSrS	rS
rSrSrS rS r " S S\5      rg)z,Utilities for Package Rollouts Releases API.    )
exceptions)
list_pager)util)variants)waiterpageSizez'configdelivery-variant-storage-strategynestedz.configdelivery-skip-creating-variant-resourcestruez:configdelivery.projects.locations.resourceBundles.releasesc                     SU  SU SU 3$ )N	projects//locations//resourceBundles/ )projectlocationparent_bundles      ?lib/googlecloudsdk/api_lib/container/fleet/packages/releases.py_ParentPathr   !   s    '+hZ/@P    c                 B    UR                  SS5      nSU  SU SU SU 3$ )N.-r   r   r   z
/releases/)replace)r   r   resource_bundlereleasenames        r   _FullyQualifiedPathr   '   s6    	c	"$WI[
2COCTT^_c^d	eer   c                   b    \ rS rSrSrSS jrS rSS jr   SS jrSS jr	S	 r
   SS
 jrSrg)ReleasesClient,   z<Client for Releases in Config Delivery Package Rollouts API.Nc                    U=(       d    [         R                  U l        U=(       d     [         R                  " U R                  5      U l        U=(       d     [         R
                  " U R                  5      U l        U R                  R                  U l        [        R                  " U R                  R                  S S9U l        g )Nc                     U R                   $ )Nr   )xs    r   <lambda>)ReleasesClient.__init__.<locals>.<lambda>6   s    r   )operation_serviceget_name_func)r   DEFAULT_API_VERSION_api_versionGetClientInstanceclientGetMessagesModulemessages+projects_locations_resourceBundles_releases_servicer   CloudOperationPollerNoResourcesprojects_locations_operationsrelease_waiter)selfapi_versionr,   r.   s       r   __init__ReleasesClient.__init__/   s    #?t'?'?DED2243D3DEDKC 6 6t{{ CDMKKKKDM @@++CC&Dr   c                     U(       a>  UR                  5       S:X  a*  U R                  R                  R                  R                  $ U R                  R                  R                  R
                  $ )z1Converts input-format lifecycle to internal enum.DRAFT)upperr.   ReleaseLifecycleValueValuesEnumr9   	PUBLISHED)r4   lifecycle_strs     r   GetLifecycleEnumReleasesClient.GetLifecycleEnum9   sM    ,,.'9]]"";;AAA]]"";;EEEr   c           	          U R                   R                  [        XU5      S9n[        R                  " U R
                  USUU[        S9$ )a  List Releases of a ResourceBundle.

Args:
  project: GCP project id.
  location: Valid GCP location (e.g. us-central1).
  parent_bundle: Name of parent ResourceBundle.
  limit: int or None, the total number of results to return.
  page_size: int, the number of entries in each batch (affects requests
    made, but not the yielded results).

Returns:
  Generator of matching devices.
)parentreleases)field
batch_sizelimitbatch_size_attribute)r.   AConfigdeliveryProjectsLocationsResourceBundlesReleasesListRequestr   r   YieldFromListr0   "_LIST_REQUEST_BATCH_SIZE_ATTRIBUTE)r4   r   r   r   rF   	page_sizelist_requests          r   ListReleasesClient.List@   sS     ==bb7m< c L ##? r   c           
      @   [        X4X5      nU(       d  Uc  [        S5      eU R                  R                  R	                  U R                  R                  R                  R                  [        [        S9/S9n	U(       aO  U	R                  R                  U R                  R                  R                  R                  [        [        S95        U R                  R                  UU	U R                  S5      US9n
U R                  R                  [        X4U5      U
UR                  SS5      S	9n[         R"                  " U R$                  U R&                  R)                  U5      S
U 35      nUR+                  5        HJ  u  p[,        R.                  " U R0                  5      n UR)                  UUR                  SS5      UUUUS9  ML     U R;                  UUUUU	US9$ ! [2        R4                   a)  nS[7        U5      R9                  5       ;   a   SnAM  e SnAff = f)a  Create Release for a ResourceBundle.

Args:
  resource_bundle: Name of parent ResourceBundle.
  version: Version of the Release.
  project: GCP Project ID.
  location: Valid GCP location (e.g., uc-central1)
  lifecycle: Lifecycle of the Release.
  variants: Variants of the Release.
  skip_creating_variant_resources: Whether to use the crane upload strategy
    to upload variant images.

Returns:
  Created Release resource.
NzNo variants found in source directory. Please check the source directory and variants pattern, or create the release with --lifecycle=DRAFT.)keyvalue)additionalPropertiesr9   r   labels	lifecycleversionr   r   )rB   r   	releaseIdzCreating Release )r   r   r   r   r   variant_resourcesalready_exists)r   r   r   r   rT   rU   )r   
ValueErrorr.   r;   LabelsValueAdditionalProperty#_VARIANT_STORAGE_STRATEGY_LABEL_KEY,_VARIANT_STORAGE_STRATEGY_LABEL_VALUE_NESTEDrR   append*_SKIP_CREATING_VARIANT_RESOURCES_LABEL_KEY,_SKIP_CREATING_VARIANT_RESOURCES_LABEL_VALUEr?   CConfigdeliveryProjectsLocationsResourceBundlesReleasesCreateRequestr   r   r   WaitForr3   r0   Createitemsvariants_apisVariantsClientr*   apitools_exceptionsHttpConflictErrorstrlowerUpdate)r4   r   rV   r   r   rU   r   skip_creating_variant_resourcesfully_qualified_pathrT   r   create_request_variantrX   variants_clientes                    r   rd   ReleasesClient.CreateZ   s   2 /? 	)  
 ]]""..MM!!--@@7B A 
 / F '!!((
--


+
+
>
><@ ?  mm##!''0	 $ G ]]ff7o>//#s+ g N
 	^,
012	A
 '/nn&6"%44T5F5FGo+OOC-/ 	 	
 '7$ ;;'    !22 s1v||~-
 s   $$G  H4HHHc                     [        UUUU5      nU R                  R                  UUS9n[        R                  " U R
                  U R                  R                  U5      SU 35      $ )a  Delete a Release resource.

Args:
  project: GCP project ID.
  location: GCP location of Release.
  resource_bundle: Name of ResourceBundle.
  release: Name of Release.
  force: Whether to force deletion of any child variants.

Returns:
  Empty Response Message.
)r   forcezDeleting Release )r   r.   CConfigdeliveryProjectsLocationsResourceBundlesReleasesDeleteRequestr   rc   r3   r0   Delete)r4   r   r   r   r   rv   rn   
delete_reqs           r   rx   ReleasesClient.Delete   sw     /	 bb! c J >>Z(
012 r   c                     [        XX45      nU R                  R                  US9nU R                  R	                  U5      $ )zDescribe a Release resource.

Args:
  project: GCP project ID.
  location: GCP location of Release.
  resource_bundle: Name of ResourceBundle.
  release: Name of Release.

Returns:
  Requested Release resource.
r#   )r   r.   @ConfigdeliveryProjectsLocationsResourceBundlesReleasesGetRequestr0   Get)r4   r   r   r   r   rn   describe_reqs          r   DescribeReleasesClient.Describe   sJ     /? ==aa! b L ==\**r   c                     [        X#XA5      nU R                  R                  UUU R                  U5      US9nU R                  R	                  XUS9n	[
        R                  " U R                  U R                  R                  U	5      SU 35      $ )aX  Update Release for a ResourceBundle.

Args:
  release: Name of Release (e.g., v1).
  project: GCP project ID.
  location: GCP location of Release.
  resource_bundle: Name of parent ResourceBundle.
  labels: Labels of the Release.
  lifecycle: Lifecycle of the Release.
  update_mask: Fields to be updated.

Returns:
  Updated Release resource.
rS   )r   r   
updateMaskzUpdating Release )
r   r.   r;   r?   BConfigdeliveryProjectsLocationsResourceBundlesReleasesPatchRequestr   rc   r3   r0   Patch)
r4   r   r   r   r   rT   rU   update_maskrn   update_requests
             r   rl   ReleasesClient.Update   s    0 /? mm##!''	2	 $ G ]]ee!{ f N >>N+
012 r   )r*   r0   r,   r.   r3   )NN)Nd   )NNF)F)NNN)__name__
__module____qualname____firstlineno____doc__r6   r?   rM   rd   rx   r   rl   __static_attributes__r   r   r   r   r   ,   sB    DF@ &+^@:+4 (r   r   N)r   apitools.base.pyr   rh   r   /googlecloudsdk.api_lib.container.fleet.packagesr   r   rf   googlecloudsdk.api_lib.utilr   rJ   r]   r^   r`   ra   RELEASE_COLLECTIONr   r   objectr   r   r   r   <module>r      sY    3 > ' @ U .%/ "&O #/7 ,-] */5 , R f
gV gr   