
    g                     b    d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dZ	dZ
 G d	 d
e      Zy)z2Support library to handle the release subcommands.    )absolute_import)division)unicode_literals)client_util)logz5targetSnapshots.name:"{}" AND renderState="SUCCEEDED"z-projects/{}/locations/{}/deliveryPipelines/{}c                   0    e Zd ZdZddZd Zd Zd Zd Zy)	ReleaseClientz3Client for release service in the Cloud Deploy API.Nc                     |xs t        j                         | _        |xs t        j                  |      | _        | j                  j
                  | _        y)zInitialize a release.ReleaseClient.

    Args:
      client: base_api.BaseApiClient, the client class for Cloud Deploy.
      messages: module containing the definitions of messages for Cloud Deploy.
    N)r   GetClientInstanceclientGetMessagesModulemessages-projects_locations_deliveryPipelines_releases_service)selfr   r   s      1lib/googlecloudsdk/api_lib/clouddeploy/release.py__init__zReleaseClient.__init__    sA     ;K99;DKE = =f EDMKKMMDM    c                     t        j                  d|       | j                  j                  | j                  j                  |j                         j                         ||j                                     S )zCreate the release resource.

    Args:
      release_ref: release resource object.
      release_config: release message.

    Returns:
      The operation message.
    zcreating release: %r)parentrelease	releaseId)	r   debugr   Creater   BClouddeployProjectsLocationsDeliveryPipelinesReleasesCreateRequestParentRelativeNameName)r   release_refrelease_configs      r   r   zReleaseClient.Create+   sf     II$n5==	K	K%%'446"!&&( 
L 
*+ +r   c                 p    | j                   j                  |      }| j                  j                  |      S )zpGets a release resource.

    Args:
      name: release resource name.

    Returns:
      release message.
    name)r   ?ClouddeployProjectsLocationsDeliveryPipelinesReleasesGetRequestr   Getr   r#   requests      r   r%   zReleaseClient.Get>   s6     mm[[ \ G==W%%r   c                    |j                         }| j                  j                  t        j	                  ||d   |      t
        j	                  |j                                     }| j                  j                  |      j                  S )a  Lists the releases in a target.

    Args:
      target_ref_project_number: target reference with project number in the
        name.
      project_id: str, project ID.
      pipeline_id: str, delivery pipeline ID.

    Returns:
      a list of release messages.
    locationsId)r   filter)
AsDictr   @ClouddeployProjectsLocationsDeliveryPipelinesReleasesListRequestRELEASE_PARENT_TEMPLATEformatTARGET_FILTER_TEMPLATEr   r   Listreleases)r   target_ref_project_number
project_idpipeline_idtarget_dictr'   s         r   ListReleasesByTargetz"ReleaseClient.ListReleasesByTargetK   s     ,224Kmm\\&--j.9-.H.9; &,,%2246	 ] 7G ==g&///r   c                 p    | j                   j                  |      }| j                  j                  |      S )zzAbandons a release.

    Args:
      name: release resource name.

    Returns:
      AbandonReleaseResponse message.
    r"   )r   CClouddeployProjectsLocationsDeliveryPipelinesReleasesAbandonRequestr   Abandonr&   s      r   r9   zReleaseClient.Abandona   s6     mm__ ` G==  ))r   )NN)	__name__
__module____qualname____doc__r   r   r%   r6   r9    r   r   r	   r	      s    ;	N+&&0,*r   r	   N)r=   
__future__r   r   r   "googlecloudsdk.api_lib.clouddeployr   googlecloudsdk.corer   r/   r-   objectr	   r>   r   r   <module>rC      s5    9 &  ' : #9 I O*F O*r   