
    `                        S r SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSKJr  SSK	J
r
  SS	K	Jr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKrSr Sr!Sr"Sr#Sr$Sr%Sr&Sr'Sr(Sr)S r*S r+S  r, " S! S"\RZ                  " \R\                  \/5      5      r0 " S# S$\05      r1S% r2S& r3 " S' S(\05      r4 " S) S*\05      r5 " S+ S,\05      r6S-r7 " S. S/\05      r8 " S0 S1\05      r9S2r: " S3 S4\05      r; " S5 S6\05      r<S7r= " S8 S9\05      r> " S: S;\05      r?S< r@ " S= S>\/5      rA " S? S@\05      rBg)AzUtil for iap.    )absolute_import)division)unicode_literalsN)encoding)
list_pager)appengine_api_client)operations_util)projects_api)base_classes)apis)base)
exceptions)iam_util)util)log)	resources)yamliapzappengine.appszcompute.backendServiceszcompute.regionBackendServicesziap.projectsziap.projects.iap_webziap.projects.iap_web.servicesz&iap.projects.iap_web.services.versionsz,iap.projects.iap_tunnel.locations.destGroupsz!iap.projects.iap_tunnel.locationsc                     A g)Nv1 )release_tracks    &lib/googlecloudsdk/api_lib/iap/util.py_ApiVersionr   6   s    	    c                 n    [         R                  R                  5       nUR                  [        U 5        U$ N)r   REGISTRYCloneRegisterApiByNameIAP_API)api_versionregistrys     r   _GetRegistryr$   ;   s-     %%'(
Wk2	/r   c                 V    [         R                  " [        R                  " U 5      5      $ r   )r
   Getprojects_utilParseProject)
project_ids    r   _GetProjectr*   C   s    			-44Z@	AAr   c                       \ rS rSrSrS r\S 5       r\S 5       r\	R                  S 5       r\	R                  S 5       rS rS	 rS
 rS rS rS rSrg)IapIamResourceG   z!Base class for IAP IAM resources.c                     Xl         [        U5      U l        [        R                  " [
        U R                  5      U l        [        U R                  5      U l        X l	        g)zBase Constructor for an IAP IAM resource.

Args:
  release_track: base.ReleaseTrack, release track of command.
  project: Project of the IAP IAM resource
N)
r   r   r"   r   GetClientInstancer!   clientr$   r#   project)selfr   r1   s      r   __init__IapIamResource.__init__J   sH     '"=1D(($2B2BCDK !1!12DMLr   c                 .    U R                   R                  $ r   r0   MESSAGES_MODULEr2   s    r   messagesIapIamResource.messagesX       ;;&&&r   c                 B    [        U R                  U R                  5      $ r   getattrr0   r"   r8   s    r   serviceIapIamResource.service\       4;; 0 011r   c                     g)z$Human-readable name of the resource.Nr   r8   s    r   _NameIapIamResource._Name`        	r   c                     g)z/Parses the IAP IAM resource from the arguments.Nr   r8   s    r   _ParseIapIamResource._Parsee   rE   r   c           	          U R                   R                  UR                  5       U R                   R                  U R                   R	                  [
        R                  S9S9S9nU R                  R                  U5      $ )N)requestedPolicyVersion)options)resourcegetIamPolicyRequest)	r9   IapGetIamPolicyRequestRelativeNameGetIamPolicyRequestGetPolicyOptionsr   !MAX_LIBRARY_IAM_SUPPORTED_VERSIONr?   GetIamPolicy)r2   resource_refrequests      r   _GetIamPolicyIapIamResource._GetIamPolicyj   su    mm22**, MM==MM22:: 3 < > = 3 >G <<$$W--r   c                 D    U R                  5       nU R                  U5      $ )z'Get IAM policy for an IAP IAM resource.)rG   rV   )r2   rT   s     r   rS   IapIamResource.GetIamPolicys   s    ;;=Ll++r   c                 J   [         R                  Ul        U R                  R	                  UR                  5       U R                  R                  US9S9nU R                  R                  U5      n[         R                  " UR                  5       U R                  5       5        U$ )N)policy)rL   setIamPolicyRequest)r   rR   versionr9   IapSetIamPolicyRequestrO   SetIamPolicyRequestr?   SetIamPolicyLogSetIamPolicyrC   )r2   rT   r[   rU   responses        r   _SetIamPolicyIapIamResource._SetIamPolicyx   s    ??FNmm22**, MM==V=L 3 G ||((1H\668$**,GOr   c                     [         R                  " XR                  R                  5      nU R	                  5       nU R                  X25      $ )z+Set the IAM policy for an IAP IAM resource.)r   ParsePolicyFiler9   PolicyrG   rc   )r2   policy_filer[   rT   s       r   r`   IapIamResource.SetIamPolicy   s8    %%k==3G3GHF;;=Ll33r   c                     U R                  5       nU R                  U5      n[        R                  " U R                  R
                  U R                  R                  XQX#5        U R                  XE5        g)z.Add IAM policy binding to an IAP IAM resource.N)rG   rV   r   "AddBindingToIamPolicyWithConditionr9   BindingExprrc   )r2   memberrole	conditionrT   r[   s         r   AddIamPolicyBinding"IapIamResource.AddIamPolicyBinding   sY    ;;=L-F//t}}116 	|,r   c                     U R                  5       nU R                  U5      n[        R                  " XaX#US9  U R	                  XV5        g)z3Remove IAM policy binding from an IAP IAM resource.)all_conditionsN)rG   rV   r   'RemoveBindingFromIamPolicyWithConditionrc   )r2   rn   ro   rp   rt   rT   r[   s          r   RemoveIamPolicyBinding%IapIamResource.RemoveIamPolicyBinding   sA    ;;=L-F44H|,r   )r"   r0   r1   r#   r   N)__name__
__module____qualname____firstlineno____doc__r3   propertyr9   r?   abcabstractmethodrC   rG   rV   rS   rc   r`   rq   rv   __static_attributes__r   r   r   r,   r,   G   s    ) ' ' 2 2 	 	 	 	.,
4--r   r,   c                   $    \ rS rSrSrS rS rSrg)IAPWeb   zIAP IAM project resource.
  c                     g)Nr1   r   r8   s    r   rC   IAPWeb._Name   s    r   c                     [        U R                  5      nU R                  R                  S SSR	                  UR
                  5      0[        S9$ )N
projectsIdz
{}/iap_webparams
collection)r*   r1   r#   ParseformatprojectNumberPROJECTS_COLLECTIONr2   r1   s     r   rG   IAPWeb._Parse   sM    $,,'G==,--g.C.CD
)  + +r   r   N)rx   ry   rz   r{   r|   rC   rG   r   r   r   r   r   r      s    +r   r   c                 $    SR                  U 5      $ )Nzappengine-{})r   )app_ids    r   _AppEngineAppIdr      s    			v	&&r   c                     [         R                  R                  5       n[        R                  R                  SSU 0[        S9nUR                  R                  UR                  5       S9nUR                  R                  R                  U5      $ )z)Returns the application, given a project.NappsIdr   name)r   AppengineApiClientGetApiClientr   r   r   APPENGINE_APPS_COLLECTIONr9   AppengineAppsGetRequestrO   r0   appsr&   )r1   
api_clientapplicationrU   s       r   _GetApplicationr      s    #66CCE*""((

G + ) ,+ 77##% 8 ''						#	#G	,,r   c                   >    \ rS rSrSrS rS r  S
S jrS rS r	S	r
g)AppEngineApplication   z+IAP IAM App Engine application resource.
  c                     g)NzApp Engine applicationr   r8   s    r   rC   AppEngineApplication._Name   s    #r   c                     [        U R                  5      nU R                  R                  S UR                  [        UR                  5      S.[        S9$ N)r1   iapWebIdr   )r*   r1   r#   r   r   r   	projectIdIAP_WEB_COLLECTIONr   s     r   rG   AppEngineApplication._Parse   sP    $,,'G==,,'(9(9:
 &  ' 'r   Nc                 H   [        U R                  5      n[        R                  R	                  5       n[        SUR                  UX#5      nUR                  R                  UR                  R                  " S0 UD6S9n[        R                  R                  U R                  [        S9nUR                  R                  UR                  5       USS9nUR                   R"                  R%                  U5      n	[&        R(                  " UR                   R*                  U	5      $ )NF)r   )r   ziap,)r   r   
updateMaskr   )r   r1   r   r   r   _MakeIAPKwargsr   r9   ApplicationIdentityAwareProxyr   r   r   r   AppengineAppsPatchRequestrO   r0   r   Patchr	   WaitForOperationapps_operations)
r2   enabledoauth2_client_idoauth2_client_secretr   r   
iap_kwargsapplication_updateupdate_request	operations
             r   _SetAppEngineApplicationIap0AppEngineApplication._SetAppEngineApplicationIap   s	   !$,,/K%88EEGJ{ 0HJ#,,8822@Z@ 9 B $$**!: + <K  ((BB%%'& C N !!&&,,^<I++J,=,=,M,M,57 7r   c                 (    U R                  SUU5      $ )z(Enable IAP on an App Engine Application.Tr   r2   r   r   s      r   EnableAppEngineApplication.Enable   s    ++D,<,@B Br   c                 $    U R                  S5      $ )z)Disable IAP on an App Engine Application.Fr   r8   s    r   DisableAppEngineApplication.Disable   s    ++E22r   r   NN)rx   ry   rz   r{   r|   rC   rG   r   r   r   r   r   r   r   r   r      s+    $' CG7;7,B3r   r   c                   8   ^  \ rS rSrSrU 4S jrS rS rSrU =r	$ )AppEngineService   z'IAP IAM App Engine service resource.
  c                 8   > [         [        U ]  X5        X0l        g r   )superr   r3   
service_id)r2   r   r1   r   	__class__s       r   r3   AppEngineService.__init__   s    	
D*=B Or   c                     g)NzApp Engine application servicer   r8   s    r   rC   AppEngineService._Name   s    +r   c                     [        U R                  5      nU R                  R                  S UR                  [        UR                  5      U R                  S.[        S9$ N)r1   r   	serviceIdr   )	r*   r1   r#   r   r   r   r   r   IAP_WEB_SERVICES_COLLECTIONr   s     r   rG   AppEngineService._Parse   sW    $,,'G==,,'(9(9:

 /  0 0r   )r   
rx   ry   rz   r{   r|   r3   rC   rG   r   __classcell__r   s   @r   r   r      s    !,	0 	0r   r   c                   8   ^  \ rS rSrSrU 4S jrS rS rSrU =r	$ )AppEngineServiceVersioni  z/IAP IAM App Engine service version resource.
  c                 D   > [         [        U ]  X5        X0l        X@l        g r   )r   r   r3   r   
version_id)r2   r   r1   r   r   r   s        r   r3    AppEngineServiceVersion.__init__  s    	
!41-I O Or   c                     g)Nz&App Engine application service versionr   r8   s    r   rC   AppEngineServiceVersion._Name  s    3r   c                     [        U R                  5      nU R                  R                  S UR                  [        UR                  5      U R                  U R                  S.[        S9$ )N)r1   r   r   	versionIdr   )
r*   r1   r#   r   r   r   r   r   r   $IAP_WEB_SERVICES_VERSIONS_COLLECTIONr   s     r   rG   AppEngineServiceVersion._Parse  s^    $,,'G==,,'(9(9:	
 8  9 9r   )r   r   r   r   s   @r   r   r     s    !
4
9 
9r   r   computec                   >   ^  \ rS rSrSrU 4S jrS rS rS rSr	U =r
$ )BackendServicesi#  z%IAP IAM backend services resource.
  c                 8   > [         [        U ]  X5        X0l        g r   )r   r   r3   	region_idr2   r   r1   r   r   s       r   r3   BackendServices.__init__'      	/4)-ANr   c                     g)Nzbackend servicesr   r8   s    r   rC   BackendServices._Name+      r   c                 ^    U R                   (       a  [        < SU R                   < 3$ [        $ N-r   BACKEND_SERVICESr8   s    r   	_IapWebIdBackendServices._IapWebId.      ~~($..99r   c                     [        U R                  5      nU R                  5       nU R                  R	                  S UR
                  US.[        S9$ r   r*   r1   r   r#   r   r   r   r2   r1   
iap_web_ids      r   rG   BackendServices._Parse4  Q    $,,'G!J==,,"
 &  ' 'r   r   rx   ry   rz   r{   r|   r3   rC   r   rG   r   r   r   s   @r   r   r   #  s!    	' 	'r   r   c                   X   ^  \ rS rSrSrU 4S jrS rS rS r  SS jr	S r
S	 rS
rU =r$ )BackendServicei@  z$IAP IAM backend service resource.
  c                 D   > [         [        U ]  X5        X0l        X@l        g r   )r   r   r3   r   r   r2   r   r1   r   r   r   s        r   r3   BackendService.__init__D      	.$(@N Or   c                     g)Nzbackend servicer   r8   s    r   rC   BackendService._NameI      r   c                 ^    U R                   (       a  [        < SU R                   < 3$ [        $ r   r   r8   s    r   r   BackendService._IapWebIdL  r   r   c                     [        U R                  5      nU R                  5       nU R                  R	                  S UR
                  UU R                  S.[        S9$ r   r*   r1   r   r#   r   r   r   r   r   s      r   rG   BackendService._ParseR  X    $,,'G!J==,,"

 /  0 0r   c                 6  ^ ^ [         R                  " [        R                  R                  5      mTR
                  nUU 4S jnT R                  (       a~  TR                  R                  T R                  T R                  T R                  S.[        S9nUR                  R                  UR                  UR                  UR                  5       S9nOgTR                  R                  T R                  ST R                  0[         S9nUR                  R#                  UR                  UR                  5       S9nUR%                  U" SU5      /5      nU(       aP  US   R&                  UR                  R(                  R*                  R,                  La  [.        R0                  " S	5        [3        S
US   R4                  UX#5      n	[6        R8                  " US   5      n
UR                  R:                  " S0 U	D6U
l        T R                  (       a?  UR                  R=                  UR                  UR                  UR                  5       U
S9nO3UR                  R?                  UR                  UR                  5       U
S9nUR%                  U" SU5      /5      $ )Nc                    > TR                   (       a#  TR                  R                  R                  U U4$ TR                  R                  R                  X4$ r   )r   r0   apitools_clientregionBackendServicesbackendServices)methodrU   holderr2   s     r   MakeRequest9BackendService._SetBackendServiceIap.<locals>.MakeRequestb  sJ    	MM))??
 	
 }},,<<fMMr   )r1   regionr   )r1   r  backendServicer1   )r1   r  r&   r   zIAP has been enabled for a backend service that does not use HTTPS. Data sent from the Load Balancer to your VM will not be encrypted.T)r1   r  r  backendServiceResource)r1   r  r  r   r   ) r   ComputeApiHolderr   ReleaseTrackGAr0   r   r   r   r   r1   *COMPUTE_REGION_BACKEND_SERVICES_COLLECTIONr9   &ComputeRegionBackendServicesGetRequestr  Name#COMPUTE_BACKEND_SERVICES_COLLECTION ComputeBackendServicesGetRequestMakeRequestsprotocolr   ProtocolValueValuesEnumHTTPSr   warningr   r   r   CopyProtoMessageBackendServiceIAP(ComputeRegionBackendServicesPatchRequest"ComputeBackendServicesPatchRequest)r2   r   r   r   r0   r  backend_serviceget_requestobjectsr   replacementr   r  s   `           @r   _SetBackendServiceIap$BackendService._SetBackendServiceIap^  sL   **4+<+<+?+?@F]]FN ~~((..
// @ / o OOJJ!)) ''(--/ K k ((..
// 9 / o OODD!))/:N:N:P E k !!;uk#B"CDGGAJ''OO**BBHHI	kk & '  gajnng 0HJ++GAJ7Koo77E*EKO~~OO!)) ''(--/!,	 P n II!))(--/!, J .n
 G^ DEFFr   c                 (    U R                  SUU5      $ )z Enable IAP on a backend service.Tr.  r   s      r   r   BackendService.Enable  s    %%d&6&:< <r   c                 $    U R                  S5      $ )z!Disable IAP on a backend service.Fr1  r8   s    r   r   BackendService.Disable  s    %%e,,r   r   r   r   )rx   ry   rz   r{   r|   r3   rC   r   rG   r.  r   r   r   r   r   s   @r   r   r   @  s<    !

0 =A15@GD<- -r   r   forwarding_rulec                   >   ^  \ rS rSrSrU 4S jrS rS rS rSr	U =r
$ )ForwardingRulesi  z%IAP IAM forwarding rules resource.
  c                 8   > [         [        U ]  X5        X0l        g r   )r   r8  r3   r   r   s       r   r3   ForwardingRules.__init__  r   r   c                     g)Nzforwarding rulesr   r8   s    r   rC   ForwardingRules._Name  r   r   c                 ^    U R                   (       a  [        < SU R                   < 3$ [        $ r   r   FORWARDING_RULEr8   s    r   r   ForwardingRules._IapWebId      ~~'88r   c                     [        U R                  5      nU R                  5       nU R                  R	                  S UR
                  US.[        S9$ r   r   r   s      r   rG   ForwardingRules._Parse  r   r   r   r   r   s   @r   r8  r8    s!    	' 	'r   r8  c                   >   ^  \ rS rSrSrU 4S jrS rS rS rSr	U =r
$ )ForwardingRulei  z$IAP IAM forwarding rule resource.
  c                 D   > [         [        U ]  X5        X0l        X@l        g r   )r   rE  r3   r   r   r  s        r   r3   ForwardingRule.__init__  r  r   c                     g)Nzforwarding ruler   r8   s    r   rC   ForwardingRule._Name  r  r   c                 ^    U R                   (       a  [        < SU R                   < 3$ [        $ r   r>  r8   s    r   r   ForwardingRule._IapWebId  rA  r   c                     [        U R                  5      nU R                  5       nU R                  R	                  S UR
                  UU R                  S.[        S9$ r   r
  r   s      r   rG   ForwardingRule._Parse  r  r   r5  r   r   s   @r   rE  rE    s!    !

0 
0r   rE  	cloud_runc                   >   ^  \ rS rSrSrU 4S jrS rS rS rSr	U =r
$ )	CloudRunsi  zIAP IAM cloud runs resource.
  c                 8   > [         [        U ]  X5        X0l        g r   )r   rP  r3   r   r   s       r   r3   CloudRuns.__init__  s    	)T#M;Nr   c                     g)Nz
cloud runsr   r8   s    r   rC   CloudRuns._Name  s    r   c                 0    [         < SU R                  < 3$ r   	CLOUD_RUNr   r8   s    r   r   CloudRuns._IapWebId      00r   c                     [        U R                  5      nU R                  5       nU R                  R	                  S UR
                  US.[        S9$ r   r   r   s      r   rG   CloudRuns._Parse  r   r   r   r   r   s   @r   rP  rP    s!    1	' 	'r   rP  c                   >   ^  \ rS rSrSrU 4S jrS rS rS rSr	U =r
$ )CloudRuni  zIAP IAM cloud run resource.
  c                 D   > [         [        U ]  X5        X0l        X@l        g r   )r   r]  r3   r   r   r  s        r   r3   CloudRun.__init__  s    	(D"=:N Or   c                     g)Nz	cloud runr   r8   s    r   rC   CloudRun._Name  s    r   c                 0    [         < SU R                  < 3$ r   rV  r8   s    r   r   CloudRun._IapWebId  rY  r   c                     [        U R                  5      nU R                  5       nU R                  R	                  S UR
                  UU R                  S.[        S9$ r   r
  r   s      r   rG   CloudRun._Parse  r  r   r5  r   r   s   @r   r]  r]    s!    !
1
0 
0r   r]  c                     U (       a5  U(       a.  U(       a  UR                   (       d  [        R                  " S5        SU0nU(       a  X5S'   U(       a  XES'   U$ )a  Make IAP kwargs for IAP settings.

Args:
  is_backend_service: boolean, True if we are applying IAP to a backend
      service.
  existing_iap_settings: appengine IdentityAwareProxy or compute
      BackendServiceIAP, IAP settings.
  enabled: boolean, True if IAP is enabled.
  oauth2_client_id: OAuth2 client ID to use.
  oauth2_client_secret: OAuth2 client secret to use.

Returns:
  IAP kwargs for appengine IdentityAwareProxy or compute BackendServiceIAP
zIAP only protects requests that go through the Cloud Load Balancer. See the IAP documentation for important security best practices: https://cloud.google.com/iap/.r   oauth2ClientIdoauth2ClientSecret)r   r   r%  )is_backend_serviceexisting_iap_settingsr   r   r   kwargss         r   r   r   #  sU    " W %:%B%BKK A B & /#7 	-r   c                   P    \ rS rSrSrS r\S 5       r\S 5       rS r	S r
S rS	rg
)IapSettingsResourceiC  z!Class for IAP settings resources.c                     Xl         X l        [        U5      U l        [        R
                  " [        U R                  5      U l        [        U R                  5      U l	        g)zConstructor for IAP setting resource.

Args:
  release_track: base.ReleaseTrack, release track of command.
  resource_name: resource name for the iap settings.
N)
r   resource_namer   r"   r   r/   r!   r0   r$   r#   )r2   r   ro  s      r   r3   IapSettingsResource.__init__F  sI     '&"=1D(($2B2BCDK !1!12DMr   c                 .    U R                   R                  $ r   r6   r8   s    r   r9   IapSettingsResource.messagesS  r;   r   c                 B    [        U R                  U R                  5      $ r   r=   r8   s    r   r?   IapSettingsResource.serviceW  rA   r   c           	         [         R                  " U5      nSU;   a+  SUS   ;   a"  SUS   S   ;   a  [        R                  " S5        SU;   a  SUS   ;   a  [        R                  " S5         [        R
                  " X#5      nU$ ! [         a?  n[        R                  " SR                  U[        R                  " U5      5      5      eSnAff = f)	a;  Create an iap settings message from a JSON formatted file.

Args:
   iap_settings_file_path: Path to iap_setttings JSON file
   iap_settings_message_type: iap settings message type to convert JSON to

Returns:
   the iap_settings message filled from JSON file
Raises:
   BadFileException if JSON file is malformed.
access_settingsoauth_settings
login_hintzlogin_hint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain.gcip_settingszEnabling gcip_settings significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application.zBIap settings file {0} does not contain properly formatted JSON {1}N)r   	load_pathr   r%  r   PyValueToMessageAttributeErrorcalliope_exceptionsBadFileExceptionr   six	text_type)r2   iap_settings_file_pathiap_settings_message_typeiap_settings_to_parseiap_settings_messagees         r   _ParseIapSettingsFile)IapSettingsResource._ParseIapSettingsFile[  s     !NN+AB22 56G HH !234DEF 
kk2 	2245FGG	kk%66
#    00
N6(#--*:; s   .B 
C:C

Cc                 ~    U R                   R                  U R                  S9nU R                  R	                  U5      $ )z$Get the setting for an IAP resource.r   )r9   IapGetIapSettingsRequestro  r?   GetIapSettingsr2   rU   s     r   GetIapSetting!IapSettingsResource.GetIapSetting  s4    mm44$:L:L4MG<<&&w//r   c                     U R                  XR                  R                  5      nU R                  Ul        U R                  R                  X R                  S9nU R                  R                  U5      $ )z$Set the setting for an IAP resource.)iapSettingsr   )r  r9   IapSettingsro  r   IapUpdateIapSettingsRequestr?   UpdateIapSettings)r2   setting_fileiap_settingsrU   s       r   SetIapSetting!IapSettingsResource.SetIapSetting  sh    --mm//L **Lmm77 '9'9 8 G <<))'22r   )r"   r0   r#   r   ro  N)rx   ry   rz   r{   r|   r3   r}   r9   r?   r  r  r  r   r   r   r   rm  rm  C  sB    )3 ' ' 2 2- ^0
	3r   rm  c                   v   ^  \ rS rSrSrSU 4S jjrS rS rS rS r	S r
S	 rS
 rS rSS jrS rS rSrU =r$ )IapTunnelDestGroupResourcei  z%IAP TCP tunnelDestGroup IAM resource.c                 D   > [         [        U ]  X5        X0l        X@l        g r   )r   r  r3   r  
group_name)r2   r   r1   r  r  r   s        r   r3   #IapTunnelDestGroupResource.__init__  s    	
$d4]LK Or   c                 .    [        U R                  S5      $ )N(projects_iap_tunnel_locations_destGroups)r>   r0   r8   s    r   ResourceService*IapTunnelDestGroupResource.ResourceService  s    4;; JKKr   c                     g)Niap_tunneldestgroupsr   r8   s    r   rC    IapTunnelDestGroupResource._Name  s    !r   c                 \    U R                   c  U R                  5       $ U R                  5       $ r   )r  _ParseWithoutGroupId_ParseWithGroupIdr8   s    r   rG   !IapTunnelDestGroupResource._Parse  s*    &&((!!##r   c                     [        U R                  5      R                  nU R                  R	                  S UU R
                  U R                  S.[        S9$ )N)r   locationsIddestGroupsIdr   )r*   r1   r   r#   r   r  r  IAP_TCP_DESTGROUP_COLLECTION)r2   project_numbers     r   r  ,IapTunnelDestGroupResource._ParseWithGroupId  sP     .<<N==(;; OO

 0  1 1r   c                     [        U R                  5      R                  U l        U R                  R                  S U R                  U R                  S.[        S9$ )N)r   r  r   )r*   r1   r   r  r#   r   r  IAP_TCP_LOCATIONS_COLLECTIONr8   s    r   r  /IapTunnelDestGroupResource._ParseWithoutGroupId  sR    %dll3AAD==--;;
 0  1 1r   c                     U R                   U(       a  UR                  S5      O/ U(       a  UR                  S5      S.$ / S.$ )N,)r   cidrsfqdns)r  split)r2   	cidr_list	fqdn_lists      r   _CreateTunnelDestGroupObject7IapTunnelDestGroupResource._CreateTunnelDestGroupObject  s@    )2%)2%  9; r   c                     U R                  X5      nU R                  R                  U R                  5       R	                  5       UU R
                  S9nU R                  5       R                  U5      $ )zCreates a TunnelDestGroup.)parenttunnelDestGrouptunnelDestGroupId)r  r9   4IapProjectsIapTunnelLocationsDestGroupsCreateRequestr  rO   r  r  Create)r2   r  r  tunnel_dest_grouprU   s        r   r  !IapTunnelDestGroupResource.Create  sm     99)OJJ,,.;;=-"oo 	K 	
  !((11r   c                     U R                   R                  U R                  5       R                  5       S9nU R	                  5       R                  U5      $ )zDeletes the TunnelDestGroup.r   )r9   4IapProjectsIapTunnelLocationsDestGroupsDeleteRequestrG   rO   r  Deleter  s     r   r  !IapTunnelDestGroupResource.Delete  sO     	JJ++- 	K 	
 
 !((11r   c           	          U R                   R                  U R                  5       R                  5       S9n[        R
                  " U R                  5       UUUSSS9$ )zYields TunnelDestGroups.)r  tunnelDestGroupspageSize)
batch_sizelimitfieldbatch_size_attribute)r9   2IapProjectsIapTunnelLocationsDestGroupsListRequestr  rO   r   YieldFromListr  )r2   	page_sizer  list_filterlist_reqs        r   ListIapTunnelDestGroupResource.List  sa    }}OO((*779 P H ## ' r   c                     U R                   R                  U R                  5       R                  5       S9nU R	                  5       R                  U5      $ )zGet TunnelDestGroup.r   )r9   1IapProjectsIapTunnelLocationsDestGroupsGetRequestrG   rO   r  r&   r  s     r   r&   IapTunnelDestGroupResource.Get  sJ    mmMM[[]'') N G !%%g..r   c                     U R                  X5      nU R                  R                  U R                  5       R	                  5       UUS9nU R                  5       R                  U5      $ )zUpdate TunnelDestGroup.)r   r  r   )r  r9   3IapProjectsIapTunnelLocationsDestGroupsPatchRequestrG   rO   r  r   )r2   r  r  update_maskr  rU   s         r   Update!IapTunnelDestGroupResource.Update  sc     99)OmmOO[[]'')) P  G !''00r   )r  r  r  )r   N)NNN)rx   ry   rz   r{   r|   r3   r  rC   rG   r  r  r  r  r  r  r&   r  r   r   r   s   @r   r  r    sH    -!
L"$
	1122/	1 	1r   r  )Cr|   
__future__r   r   r   r~   apitools.base.pyr   r   googlecloudsdk.api_lib.appr   r	   +googlecloudsdk.api_lib.cloudresourcemanagerr
   googlecloudsdk.api_lib.computer   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   r   r}  googlecloudsdk.command_lib.iamr   #googlecloudsdk.command_lib.projectsr   r'   googlecloudsdk.corer   r   r   r  r!   r   r  r  r   r   r   r   r  r  r   r$   r*   with_metaclassABCMetaobjectr,   r   r   r   r   r   r   r   r   r   r?  r8  rE  rW  rP  r]  r   rm  r  r   r   r   <module>r     sm     &  ' 
 % ' ; 6 D 7 , ( E 3 E # ) $ 

, &? #-L *$ + = 'O $M B 
BR-S''V< R-j+^ +'-/3> /3d0~ 0.9n 92  'n ':h-^ h-V $'n ':0^ 0> 	' '40~ 08@U3& U3pc1 c1r   