
                             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y
)z+Utilities Service Directory namespaces 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 Zd	 Zd
 Zd Z xZS )NamespacesClientz3Client for namespaces in the Service Directory API.c                 b    t         t        |   |       | j                  j                  | _        y N)superr
   __init__clientprojects_locations_namespacesservice)selfrelease_track	__class__s     :lib/googlecloudsdk/api_lib/service_directory/namespaces.pyr   zNamespacesClient.__init__   s$    	
D*=9;;<<DL    c                     | j                   j                  |      }| j                   j                  |j                         j	                         ||j
                        }| j                  j                  |      S )zNamespaces create request.labels)parent	namespacenamespaceId)msgs	Namespace8ServicedirectoryProjectsLocationsNamespacesCreateRequestParentRelativeNamenamespacesIdr   Create)r   namespace_refr   r   
create_reqs        r   r#   zNamespacesClient.Create"   sk    		##6#2ISS##%224!.. T 0J <<z**r   c                     | j                   j                  |j                               }| j                  j	                  |      S )zNamespaces delete request.name)r   8ServicedirectoryProjectsLocationsNamespacesDeleteRequestr!   r   Delete)r   r$   
delete_reqs      r   r*   zNamespacesClient.Delete+   s=    SS'') T +J<<z**r   c                     | j                   j                  |j                               }| j                  j	                  |      S )zNamespaces describe request.r'   )r   5ServicedirectoryProjectsLocationsNamespacesGetRequestr!   r   Get)r   r$   describe_reqs      r   DescribezNamespacesClient.Describe1   s=    99RR'') S +L<<L))r   c                     | j                   j                  |j                         |||      }t        j                  | j
                  ||dd      S )zNamespaces list request.)r   filterorderBypageSize
namespacesr4   )
batch_sizefieldbatch_size_attribute)r   6ServicedirectoryProjectsLocationsNamespacesListRequestr!   r   YieldFromListr   )r   location_reffilter_order_by	page_sizelist_reqs         r   ListzNamespacesClient.List7   sY    yyOO((*	 P H
 ##') )r   c                    g }|r|j                  d       | j                  j                  |      }| j                  j                  |j	                         |dj                  |            }| j                  j                  |      S )zNamespaces update request.r   r   ,)r(   r   
updateMask)appendr   r   7ServicedirectoryProjectsLocationsNamespacesPatchRequestr!   joinr   Patch)r   r$   r   
mask_partsr   
update_reqs         r   UpdatezNamespacesClient.UpdateE   s{    J!		##6#2IRR'')88J' S )J <<j))r   c                     | j                  |      }t        j                  | j                  j                  |||       | j                  ||      S )z*Namespaces add iam policy binding request.)GetIamPolicyr   AddBindingToIamPolicyr   BindingSetIamPolicyr   r$   memberrolepolicys        r   AddIamPolicyBindingz$NamespacesClient.AddIamPolicyBindingR   sC    }-F""499#4#4ffdK]F33r   c                     | j                   j                  |j                               }| j                  j	                  |      S )z"Namespaces get iam policy request.)resource)r   >ServicedirectoryProjectsLocationsNamespacesGetIamPolicyRequestr!   r   rL   )r   r$   get_reqs      r   rL   zNamespacesClient.GetIamPolicyX   s=    iiVV++- W /G<<$$W--r   c                 v    | j                  |      }t        j                  |||       | j                  ||      S )z-Namespaces remove iam policy binding request.)rL   r   RemoveBindingFromIamPolicyrO   rP   s        r   RemoveIamPolicyBindingz'NamespacesClient.RemoveIamPolicyBinding^   s7    }-F''=]F33r   c                     | j                   j                  |j                         | j                   j                  |            }| j                  j                  |      S )z"Namespaces set iam policy request.)rS   )rV   setIamPolicyRequest)r   >ServicedirectoryProjectsLocationsNamespacesSetIamPolicyRequestr!   SetIamPolicyRequestr   rO   )r   r$   rS   set_reqs       r   rO   zNamespacesClient.SetIamPolicyd   sU    iiVV++- II999H W JG <<$$W--r   r   )NNN)__name__
__module____qualname____doc__r   ReleaseTrackGAr   r#   r*   r0   r@   rJ   rT   rL   r[   rO   __classcell__)r   s   @r   r
   r
      sG    ;#'#4#4#7#7 =++*)*4.4.r   r
   N)rd   
__future__r   r   r   apitools.base.pyr   (googlecloudsdk.api_lib.service_directoryr   sd_basegooglecloudsdk.calliopegooglecloudsdk.command_lib.iamr   ServiceDirectoryApiLibBaser
    r   r   <module>rp      s3    2 &  ' ' D ( 3N.w99 N.r   