
    .                         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dlm	Z	 ddl
mZ dd	lmZ dd
lmZ  G d dej                        Zd Z G d dej$                        Zy)z'Utilities for Eventarc Enrollments API.    )absolute_import)division)unicode_literals)
list_pager)base)common)apis)
exceptions)	resourcesc                       e Zd ZdZy)NoFieldsSpecifiedErrorz:Error when no fields were specified for a Patch operation.N)__name__
__module____qualname____doc__     2lib/googlecloudsdk/api_lib/eventarc/enrollments.pyr   r      s    Br   r   c                 x    t         j                  j                  | j                  d      }|j	                         S )Nz'eventarc.projects.locations.enrollments)
collection)r   REGISTRYParseRelativeNamenameSelfLink)resourceenrollmentss     r   GetEnrollmentURIr   !   s8    ""44mm I 5 + 
			r   c                   T     e Zd ZdZ fdZddZd Zd Zd Zd Z	d Z
d	 Zd
 Z xZS )EnrollmentClientV1zFEnrollment Client for interaction with v1 of Eventarc Enrollments API.c                    t         t        |   t        j                  t        j
                  d       t        j                  t        j                  t        j
                        }|j                  | _	        |j                  | _        y )N
enrollment)superr   __init__r   API_NAMEAPI_VERSION_1r	   GetClientInstanceMESSAGES_MODULE	_messagesprojects_locations_enrollments_service)selfclient	__class__s     r   r#   zEnrollmentClientV1.__init__+   s\    	
d,--|
 ##FOOV5I5IJF++DN99DMr   c                     | j                   j                  |j                         j                         ||j	                         |      }| j
                  j                  |      S )ar  Creates a new Enrollment.

    Args:
      enrollment_ref: Resource, the Enrollment to create.
      enrollment_message: Enrollment, the enrollment message that holds
        enrollment's name, cel_match, message_bus, destination, etc.
      dry_run: If set, the changes will not be committed, only validated

    Returns:
      A long-running operation for create.
    )parentr!   enrollmentIdvalidateOnly)r(   1EventarcProjectsLocationsEnrollmentsCreateRequestParentRelativeNameNamer*   Create)r+   enrollment_refenrollment_messagedry_run
create_reqs        r   r6   zEnrollmentClientV1.Create6   s_     	HH!((*779)',,. 	 	I 	
  ==
++r   c                     | j                   j                  |j                               }| j                  j	                  |      S )zGets the requested Enrollment.

    Args:
      enrollment_ref: Resource, the Enrollment to get.

    Returns:
      The Enrollment message.
    r   )r(   .EventarcProjectsLocationsEnrollmentsGetRequestr4   r*   Get)r+   r7   get_reqs      r   r>   zEnrollmentClientV1.GetL   sA     nnKK((* L G ==W%%r   c                     | j                   j                  |j                         |      }t        j                  | j
                  |d||d      S )as  List available enrollments in location.

    Args:
      location_ref: Resource, the location to list Enrollments in.
      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:
      A generator of Enrollments in the location.
    )r/   pageSizer   rA   )servicerequestfieldlimit
batch_sizebatch_size_attribute)r(   /EventarcProjectsLocationsEnrollmentsListRequestr4   r   YieldFromListr*   )r+   location_refrE   	page_sizelist_reqs        r   ListzEnrollmentClientV1.ListZ   sW     ~~MM((*Y N H ##' r   c                     | j                   j                  |j                         ||      }| j                  j	                  |      S )a  Updates the specified Enrollment.

    Args:
      enrollment_ref: Resource, the Enrollment to update.
      enrollment_message: Enrollment, the enrollment message that holds
        enrollment's name, cel_match, message_bus, destination, etc.
      update_mask: str, a comma-separated list of Enrollment fields to update.

    Returns:
      A long-running operation for update.
    )r   r!   
updateMask)r(   0EventarcProjectsLocationsEnrollmentsPatchRequestr4   r*   Patch)r+   r7   r8   update_mask	patch_reqs        r   rQ   zEnrollmentClientV1.Patchr   sG     OO((*% P I
 ==y))r   c                     | j                   j                  |j                               }| j                  j	                  |      S )zDeletes the specified Enrollment.

    Args:
      enrollment_ref: Resource, the Enrollment to delete.

    Returns:
      A long-running operation for delete.
    r<   )r(   1EventarcProjectsLocationsEnrollmentsDeleteRequestr4   r*   Delete)r+   r7   
delete_reqs      r   rV   zEnrollmentClientV1.Delete   sD     	HH,,. 	I 	
 
 ==
++r   c                     | j                   j                  |j                         |||j                         nd||j                         |      S d|      S )N )r   celMatch
messageBusdestinationlabels)r(   
Enrollmentr4   )r+   r7   	cel_matchmessage_bus_refdestination_refr]   s         r   BuildEnrollmentz"EnrollmentClientV1.BuildEnrollment   sv     >>$$((*& #//1& $002  % 
 
  % 
 
r   c                     g }|r|j                  d       |r|j                  d       |r|j                  d       |st        d      dj                  |      S )a`  Builds an update mask for updating a enrollment.

    Args:
      cel_match: bool, whether to update the cel_match.
      destination: bool, whether to update the destination.
      labels: bool, whether to update the labels.

    Returns:
      The update mask as a string.


    Raises:
      NoFieldsSpecifiedError: No fields are being updated.
    rZ   r\   r]   z*Must specify at least one field to update.,)appendr   join)r+   r_   r\   r]   rR   s        r   BuildUpdateMaskz"EnrollmentClientV1.BuildUpdateMask   sZ     K$'""#OPP88K  r   c                 B    | j                   j                  j                  S )N)r(   r^   LabelsValue)r+   s    r   LabelsValueClassz#EnrollmentClientV1.LabelsValueClass   s    >>$$000r   )F)r   r   r   r   r#   r6   r>   rM   rQ   rV   rb   rg   rj   __classcell__)r-   s   @r   r   r   (   s3    N	:,,&0*&, !61r   r   N)r   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.eventarcr   r   googlecloudsdk.api_lib.utilr	   googlecloudsdk.corer
   r   Errorr   r   EventarcClientBaser   r   r   r   <module>rs      sR    . &  ' ' 0 2 , * )CZ-- C X100 X1r   