
    *$                     v    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 S\5      rg)z,Utilities for Package Rollouts Releases API.    )
exceptions)
list_pager)util)variants)waiterpageSizez.configdelivery-skip-creating-variant-resourcesfalsez: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>8   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__1   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LifecycleValueValuesEnumr8   	PUBLISHED)r3   lifecycle_strs     r   GetLifecycleEnumReleasesClient.GetLifecycleEnum;   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   YieldFromListr/   "_LIST_REQUEST_BATCH_SIZE_ATTRIBUTE)r3   r   r   r   rE   	page_sizelist_requests          r   ListReleasesClient.ListB   sS     ==bb7m< c L ##? r   c           
         [        X4X5      nU(       a  [        S5      eU(       d  Uc  [        S5      eU R                  R                  R	                  / S9n	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 R,                  5      n UR%                  UUR                  SS	5      UUUUS9  ML     U R7                  UUUUU	US9$ ! [.        R0                   a)  nS[3        U5      R5                  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: [DISALLOWED] Whether to use the crane
    upload strategy to upload variant images.

Returns:
  Created Release resource.
zSCreating Releases with --skip-creating-variant-resources flag is not supported yet.NzmNo variants found in source path. Please check the source path, or create the release with --lifecycle=DRAFT.)additionalProperties)keyvaluer8   r   labels	lifecycleversionr   r   )rA   r   	releaseIdzCreating Release )r   r   r   r   r   variant_resourcesalready_exists)r   r   r   r   rS   rT   )r   
ValueErrorr-   r:   LabelsValuerO   appendAdditionalProperty*_SKIP_CREATING_VARIANT_RESOURCES_LABEL_KEY,_SKIP_CREATING_VARIANT_RESOURCES_LABEL_VALUEr>   CConfigdeliveryProjectsLocationsResourceBundlesReleasesCreateRequestr   r   r   WaitForr2   r/   Createitemsvariants_apisVariantsClientr)   apitools_exceptionsHttpConflictErrorstrlowerUpdate)r3   r   rU   r   r   rT   r   skip_creating_variant_resourcesfully_qualified_pathrS   r   create_request_variantrW   variants_clientes                    r   ra   ReleasesClient.Create\   s   2 /? '  	)A  ]]""..B.GF
&&))<<:> 	= 	
 mm##!''0	 $ G ]]ff7o>//#s+ g N
 	^,
012	A
 '/nn&6"%44T5F5FGo+OOC-/ 	 	
 '7$ ;;'    !22 s1v||~-
 s   :$F66G3
G.-G..G3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   r`   r2   r/   Delete)r3   r   r   r   r   rs   rk   
delete_reqs           r   ru   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-   @ConfigdeliveryProjectsLocationsResourceBundlesReleasesGetRequestr/   Get)r3   r   r   r   r   rk   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.
rR   )r   r   
updateMaskzUpdating Release )
r   r-   r:   r>   BConfigdeliveryProjectsLocationsResourceBundlesReleasesPatchRequestr   r`   r2   r/   Patch)
r3   r   r   r   r   rS   rT   update_maskrk   update_requests
             r   ri   ReleasesClient.Update   s    0 /? mm##!''	2	 $ G ]]ee!{ f N >>N+
012 r   )r)   r/   r+   r-   r2   )NN)Nd   )NNF)F)NNN)__name__
__module____qualname____firstlineno____doc__r5   r>   rL   ra   ru   r|   ri   __static_attributes__r   r   r   r   r   .   sB    DF@ &+[z:+4 (r   r   N)r   apitools.base.pyr   re   r   /googlecloudsdk.api_lib.container.fleet.packagesr   r   rc   googlecloudsdk.api_lib.utilr   rI   r]   r^   RELEASE_COLLECTIONr   r   objectr   r   r   r   <module>r      sS    3 > ' @ U .%/ "4 + 07 , A 
f
dV dr   