
                             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  G d d	e	j                        Z G d
 de      Zy)z)Utilities Service Directory services API.    )absolute_import)division)unicode_literals)
list_pager)base)iam_utilc                        e Zd ZdZej
                  j                  f fd	ZddZd Z	d Z
ddZddZddZd	 Zd
 Zd Zd Z xZS )ServicesClient0Client for service in the Service Directory API.c                 b    t         t        |   |       | j                  j                  | _        y N)superr
   __init__client&projects_locations_namespaces_servicesservice)selfrelease_track	__class__s     8lib/googlecloudsdk/api_lib/service_directory/services.pyr   zServicesClient.__init__   s#    	.$(7;;EEDL    c                     | j                   j                  |      }| j                   j                  |j                         j	                         ||j
                        }| j                  j                  |      S )Services create request.annotationsparentr   	serviceIdmsgsService@ServicedirectoryProjectsLocationsNamespacesServicesCreateRequestParentRelativeName
servicesIdr   Create)r   service_refr   r   
create_reqs        r   r&   zServicesClient.Create"   sk    iiK8G[[!!#002(( \ *J <<z**r   c                     | j                   j                  |j                               }| j                  j	                  |      S )zServices delete request.name)r    @ServicedirectoryProjectsLocationsNamespacesServicesDeleteRequestr$   r   Delete)r   r'   
delete_reqs      r   r-   zServicesClient.Delete+   s=    [[%%' \ )J<<z**r   c                     | j                   j                  |j                               }| j                  j	                  |      S )zServices describe request.r*   )r    =ServicedirectoryProjectsLocationsNamespacesServicesGetRequestr$   r   Get)r   r'   describe_reqs      r   DescribezServicesClient.Describe1   s=    99ZZ%%' [ )L<<L))r   c                     | j                   j                  |j                         |||      }t        j                  | j
                  ||dd      S )zServices list request.)r   filterorderBypageSizeservicesr7   )
batch_sizefieldbatch_size_attribute)r    >ServicedirectoryProjectsLocationsNamespacesServicesListRequestr$   r   YieldFromListr   )r   namespace_reffilter_order_by	page_sizelist_reqs         r   ListzServicesClient.List7   sY    yyWW))+	 X H
 ##') )r   c                    g }|r|j                  d       | j                  j                  |      }| j                  j                  |j	                         |dj                  |            }| j                  j                  |      S )Services update request.r   r   ,r+   r   
updateMaskappendr    r!   ?ServicedirectoryProjectsLocationsNamespacesServicesPatchRequestr$   joinr   Patch)r   r'   r   
mask_partsr   
update_reqs         r   UpdatezServicesClient.UpdateE   s{    J&iiK8GZZ%%'88J' [ )J <<j))r   c                     | j                   j                  |j                         | j                   j                  ||            }| j                  j                  |      S )zServices resolve request.)maxEndpointsendpointFilter)r+   resolveServiceRequest)r    AServicedirectoryProjectsLocationsNamespacesServicesResolveRequestr$   ResolveServiceRequestr   Resolve)r   r'   max_endpointsendpoint_filterresolve_reqs        r   rW   zServicesClient.ResolveR   s]    ))]]%%'"ii==& > H ^ IK <<,,r   c                     | j                  |      }t        j                  | j                  j                  |||       | j                  ||      S )z(Services add iam policy binding request.)GetIamPolicyr   AddBindingToIamPolicyr    BindingSetIamPolicyr   r'   memberrolepolicys        r   AddIamPolicyBindingz"ServicesClient.AddIamPolicyBindingZ   sC    {+F""499#4#4ffdK[&11r   c                     | j                   j                  |j                               }| j                  j	                  |      S )z Services get iam policy request.)resource)r    FServicedirectoryProjectsLocationsNamespacesServicesGetIamPolicyRequestr$   r   r\   )r   r'   get_reqs      r   r\   zServicesClient.GetIamPolicy`   s=    ii^^))+ _ -G<<$$W--r   c                 v    | j                  |      }t        j                  |||       | j                  ||      S )z+Services remove iam policy binding request.)r\   r   RemoveBindingFromIamPolicyr_   r`   s        r   RemoveIamPolicyBindingz%ServicesClient.RemoveIamPolicyBindingf   s7    {+F''=[&11r   c                     | j                   j                  |j                         | j                   j                  |            }| j                  j                  |      S )z Services set iam policy request.)rc   )rf   setIamPolicyRequest)r    FServicedirectoryProjectsLocationsNamespacesServicesSetIamPolicyRequestr$   SetIamPolicyRequestr   r_   )r   r'   rc   set_reqs       r   r_   zServicesClient.SetIamPolicyl   sU    ii^^))+ II999H _ JG <<$$W--r   r   )NNN)NN)__name__
__module____qualname____doc__r   ReleaseTrackGAr   r&   r-   r3   rC   rP   rW   rd   r\   rk   r_   __classcell__r   s   @r   r
   r
      sM    8#'#4#4#7#7 F++*)*-2.2.r   r
   c                   2     e Zd ZdZ fdZddZddZ xZS )ServicesClientBetar   c                 \    t         t        |   t        j                  j
                         y r   )r   rz   r   r   ru   BETA)r   r   s    r   r   zServicesClientBeta.__init__w   s    	
d,T->->-C-CDr   c                     | j                   j                  |      }| j                   j                  |j                         j	                         ||j
                        }| j                  j                  |      S )r   metadatar   r   )r   r'   r   r   r(   s        r   r&   zServicesClientBeta.Createz   sk    ii2G[[!!#002(( \ *J <<z**r   c                    g }|r|j                  d       | j                  j                  |      }| j                  j                  |j	                         |dj                  |            }| j                  j                  |      S )rE   r   r~   rF   rG   rI   )r   r'   r   rN   r   rO   s         r   rP   zServicesClientBeta.Update   s{    J
#ii2GZZ%%'88J' [ )J <<j))r   r   )rq   rr   rs   rt   r   r&   rP   rw   rx   s   @r   rz   rz   t   s    8E+*r   rz   N)rt   
__future__r   r   r   apitools.base.pyr   (googlecloudsdk.api_lib.service_directoryr   sd_basegooglecloudsdk.calliopegooglecloudsdk.command_lib.iamr   ServiceDirectoryApiLibBaser
   rz    r   r   <module>r      s@    0 &  ' ' D ( 3V.W77 V.r* *r   