
                             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  G d
 de      Z G d de      Z G d dej"                        Zy)*Google Cloud VMware Engine network client.    )absolute_import)division)unicode_literals)
list_pager)util)	arg_utils)Error)REGISTRYc                        e Zd Z fdZ xZS )NetworkNotFoundErrorc                 L    t         t        |   dj                  |             y )NzzFAILED_PRECONDITION: The VMware Engine network `{network_id}` doesn't exist. Operation on the resource can't be fulfilled.
network_id)superr   __init__formatselfr   	__class__s     -lib/googlecloudsdk/api_lib/vmware/networks.pyr   zNetworkNotFoundError.__init__   s%    	
. 	G	:	&(    __name__
__module____qualname__r   __classcell__r   s   @r   r   r          ( (r   r   c                        e Zd Z fdZ xZS )MultipleNetworksFoundErrorc                 L    t         t        |   dj                  |             y )NzcMultiple VMware Engine networks `{network_id}` exist. Operation on the resource can't be fulfilled.r   )r   r!   r   r   r   s     r   r   z#MultipleNetworksFoundError.__init__&   s"    	
$d4n	:	&(r   r   r   s   @r   r!   r!   $   r   r   r!   c                   J     e Zd ZdZ fdZd Zd Zd	dZd Zd	dZ	d Z
 xZS )
NetworksClientr   c                 `    t         t        |           | j                  j                  | _        y N)r   r$   r   client'projects_locations_vmwareEngineNetworksservice)r   r   s    r   r   zNetworksClient.__init__/   s!    	.$(*;;FFDLr   c                     | j                   j                  |j                               }| j                  j	                  |      }|S N)name)messages;VmwareengineProjectsLocationsVmwareEngineNetworksGetRequestRelativeNamer)   Get)r   resourcerequestresponses       r   r0   zNetworksClient.Get3   sC    mmWW""$ X &G ||(HOr   c                     t        j                  d|d      }t        fd| j                  |      D              }t	        |      dkD  rt              |st              |d   S )Nzvmwareengine.projects.locations-)
projectsIdlocationsIdc              3   f   K   | ](  }t        j                  |j                        k(  r| * y wr&   )r   GetResourceIdr,   ).0networkr   s     r   	<genexpr>z)NetworksClient.GetByID.<locals>.<genexpr>>   s0      ;9Ggll+z9 	9s   .1   r   )r   CreatelistListlenr!   r   )r   projectr   parent_locationnetworkss     `  r   GetByIDzNetworksClient.GetByID:   sl    oo)g3PO  ;#yy9; ;H 8}q&z22 ,,A;r   c                    |j                         j                         }|j                         }| j                  j	                  |      }t        j                  d| j                  j                  j                  d       j                  t        j                  |            }||_
        | j                  j                  |||      }| j                  j                  |      S )N)descriptiontypec                 
    d| vS )NTYPE_UNSPECIFIED )xs    r   <lambda>z'NetworksClient.Create.<locals>.<lambda>Q   s
    !31!<r   )arg_namemessage_enuminclude_filter)parentvmwareEngineNetworkvmwareEngineNetworkId)Parentr/   Namer-   VmwareEngineNetworkr	   ChoiceEnumMapperTypeValueValuesEnumGetEnumForChoiceEnumNameToChoicerH   >VmwareengineProjectsLocationsVmwareEngineNetworksCreateRequestr)   r>   )	r   r1   network_typerG   rQ   r   r;   	type_enumr2   s	            r   r>   zNetworksClient.CreateJ   s    __++-FJmm//K/HG**]]66JJ<> ?O>N&&|4?6 
 GLmmZZ#( [ G
 <<w''r   c                    | j                  |      }g }|||_        |j                  d       | j                  j	                  ||j                         dj                  |            }| j                  j                  |      S )NrG   ,)rR   r,   
updateMask)	r0   rG   appendr-   =VmwareengineProjectsLocationsVmwareEngineNetworksPatchRequestr/   joinr)   Patch)r   r1   rG   r;   update_maskr2   s         r   UpdatezNetworksClient.Update[   s}    hhx GK'g'mmYY#""$88K( Z G
 <<g&&r   c                     | j                   j                  | j                  j                  |j	                                     S r+   )r)   Deleter-   >VmwareengineProjectsLocationsVmwareEngineNetworksDeleteRequestr/   )r   r1   delay_hourss      r   rh   zNetworksClient.Deleteh   s=    <<TT&&( 	U 	
 r   c                     |j                         }| j                  j                  |      }t        j                  | j
                  |dd      S )N)rQ   pageSizevmwareEngineNetworks)batch_size_attributefield)r/   r-   <VmwareengineProjectsLocationsVmwareEngineNetworksListRequestr   YieldFromListr)   )r   location_resourcelocationr2   s       r   r@   zNetworksClient.Listo   sR     --/HmmXX Y G ##'$	& &r   r&   )r   r   r   __doc__r   r0   rE   r>   rf   rh   r@   r   r   s   @r   r$   r$   ,   s*    2G ("'	&r   r$   N)rt   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.vmwarer   $googlecloudsdk.command_lib.util.apisr	   googlecloudsdk.core.exceptionsr
   googlecloudsdk.core.resourcesr   r   r!   VmwareClientBaser$   rK   r   r   <module>r|      sN    1 &  ' ' . : 0 2(5 (( (L&T** L&r   