
    i'                     |    S 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	\
5      r " S
 S\5      rg)z%Public delegated prefixes api client.    )absolute_import)division)unicode_literals)poller)waiter)Errorc                       \ rS rSrSrSrg)PublicDelegatedPrefixPatchError   zDRaised when an invalid update to PublicDelegatedPrefix is attempted. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       ?lib/googlecloudsdk/api_lib/compute/public_delegated_prefixes.pyr
   r
      s    Lr   r
   c                   N    \ 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g)PublicDelegatedPrefixesClient   z<Client for public delegated prefixes service in the GCE API.c                     Xl         X l        X0l        U R                   R                  R                  U l        U R                   R                  R                  U l        g )N)clientmessages	resourcesapitools_clientglobalPublicDelegatedPrefixes_global_servicepublicDelegatedPrefixes_regional_service)selfr   r   r   s       r   __init__&PublicDelegatedPrefixesClient.__init__!   sF    KMN##AA 	 "[[88PPDr   c
                    [        US5      n
U(       a3  U R                  R                  UUR                  UR                  S.SS9nO'U R                  R                  USUR                  0SS9nUR                  5       nU R                  R                  UR                  5       UUUUS9nUb  X}l	        Ub  UUl
        U	b  Xl        U
(       a[  U R                  R                  UUR                  UR                  S9nU R                  R                  U R                  S	U4/5      S
   $ U R                  R!                  XR                  S9nU R                  R                  U R"                  S	U4/5      S
   $ )z"Creates a public delegated prefix.region)projectr%   zcompute.publicDelegatedPrefixes
collectionr&   z compute.publicAdvertisedPrefixes)nameparentPrefixipCidrRangedescriptionisLiveMigrationpublicDelegatedPrefixr&   r%   Insertr   r/   r&   )hasattrr   Parser&   r%   SelfLinkr   PublicDelegatedPrefixNamemodeallocatablePrefixLengthpurpose+ComputePublicDelegatedPrefixesInsertRequestr   MakeRequestsr    1ComputeGlobalPublicDelegatedPrefixesInsertRequestr   )r!   pdp_refparent_pap_prefixparent_pdp_prefixip_cidr_ranger,   enable_live_migrationr7   allocatable_prefix_lengthr9   is_regionalparent_prefix_refparent_prefix_uripublic_delegated_prefixrequests                  r   Create$PublicDelegatedPrefixesClient.Create*   s    '8,K....
oo
@6 /  ....
goo
&7 /  *224"mmAA\\^&!- B  %)" ,
# 5 (/%II 7// J g [[%%""Hg6
7	  OO 7 P g [[%%  (G4
5	 r   c                    [        US5      nU(       af  U R                  R                  UR                  5       UR                  UR
                  S9nU R                  R                  U R                  SU4/5      $ U R                  R                  UR                  5       UR                  S9nU R                  R                  U R                  SU4/5      $ )z"Deletes a public delegated prefix.r%   r.   Deleter1   )r2   r   +ComputePublicDelegatedPrefixesDeleteRequestr6   r&   r%   r   r;   r    1ComputeGlobalPublicDelegatedPrefixesDeleteRequestr   r!   r=   rC   rG   s       r   rK   $PublicDelegatedPrefixesClient.Deleten   s     '8,KII '// J g [[%%""Hg6
7  OO ' P g [[%%  (G4
5 r   c                    [        US5      nU(       ai  U R                  R                  UR                  5       UR                  UR
                  S9nU R                  R                  U R                  SU4/5      S   $ U R                  R                  UR                  5       UR                  S9nU R                  R                  U R                  SU4/5      S   $ )zGets a public delegated prefix.r%   r.   Getr   r1   )r2   r   (ComputePublicDelegatedPrefixesGetRequestr6   r&   r%   r   r;   r    .ComputeGlobalPublicDelegatedPrefixesGetRequestr   rN   s       r   rQ   !PublicDelegatedPrefixesClient.Get   s     '8,KFF '// G g [[%%""E73
4	  LL ' M g [[%%(<(<eW'M&NO
 r   c                    U R                   R                  UR                  UR                  S9n/ nUR                  (       d  UR	                  S5        [        US5      nU(       a  U R                   R                  UR                  5       UUR                  UR                  S9nU R                  R                  R                  U5         U R                  R                  U5      nSSS5        U R                  R!                  WR"                  SS9n[$        R&                  " U R                  5      nOU R                   R)                  UR                  5       UUR                  S9nU R                  R                  R                  U5         U R*                  R                  U5      nSSS5        U R                  R!                  WR"                  S	S9n[$        R&                  " U R*                  5      n[,        R.                  " UUS
R1                  UR                  5       5      5      $ ! , (       d  f       GNI= f! , (       d  f       N= f)zPatches a public delegated prefix resource.

Args:
  pdp_ref: resource reference.
  resource: PublicDelegatedPrefix resource.

Returns:
  Operation result from the poller.
)fingerprintpublicDelegatedSubPrefixsrW   r%   )r/   publicDelegatedPrefixResourcer&   r%   Nzcompute.regionOperationsr'   )r/   rX   r&   zcompute.globalOperationsz&Updating public delegated prefix [{}].)r   r5   rV   rW   appendr2   *ComputePublicDelegatedPrefixesPatchRequestr6   r&   r%   r   r   IncludeFieldsr    Patchr   r3   selfLinkr   Poller0ComputeGlobalPublicDelegatedPrefixesPatchRequestr   r   WaitForformat)	r!   r=   resourceinclude_fieldsrC   rG   	operationoperation_refoperation_pollers	            r   _Patch$PublicDelegatedPrefixesClient._Patch   s    }}22(("*"D"D 3 H N--78'8,KHH '(0//	 I g ;;&&44^D**009	 Enn**


)C + m  t'='=>NN '(0// O g ;;&&44^D((..w7	 Enn**


)C + m  t';';<>>077G ) ED EDs   	H'
H9'
H69
Ic	                 L   U R                  U5      n	U	R                   H;  n
U
R                  U:X  d  M  [        SR	                  X!R                  5       5      5      e   U	R                  R                  U R                  R                  UUUUUUUS95        U R                  X5      $ )aH  Adds a delegated sub prefix to public delegated prefix using PATCH.

Args:
  pdp_ref: resource reference.
  name: sub prefix name.
  ip_cidr_range: sub prefix IP address range.
  description: sub prefix description.
  delegatee_project: sub prefix target project.
  is_addresses: sub prefix isAddress parameter.
  mode: sub prefix mode.
  allocatable_prefix_length: sub prefix allocatable prefix length for IPv6
    NetLb

Returns:
  Operation result from the poller.

Raises:
  PublicDelegatedPrefixPatchError:
    when delegated prefix already has a sub prefix with specified name.
zHDelegated sub prefix [{}] already exists in public delegated prefix [{}])r)   r,   r+   delegateeProject	isAddressr7   r8   )
rQ   rW   r)   r
   ra   r6   rY   r   -PublicDelegatedPrefixPublicDelegatedSubPrefixrg   )r!   r=   r)   r@   r,   delegatee_projectis_addressesr7   rB   rb   
sub_prefixs              r   AddSubPrefix*PublicDelegatedPrefixesClient.AddSubPrefix   s    @ xx H88
	D	 - &||~6
 	
 9 &&--CC#%."$= 	D 	

 ;;w))r   c                 :   U R                  U5      nSn[        UR                  5       H  u  pVUR                  U:X  d  M  UnM     Uc(  [	        SR                  X!R                  5       5      5      eUR                  R                  U5        U R                  X5      $ )a9  Removes a delegated sub prefix from public delegated prefix using PATCH.

Args:
  pdp_ref: resource reference.
  name: name of sub prefix to remove.

Returns:
  Operation result from the poller.

Raises:
  PublicDelegatedPrefixPatchError:
    when delegated prefix does not have a sub prefix with specified name.
NzHDelegated sub prefix [{}] does not exist in public delegated prefix [{}])	rQ   	enumeraterW   r)   r
   ra   r6   poprg   )r!   r=   r)   rb   index_to_removeiro   s          r   RemoveSubPrefix-PublicDelegatedPrefixesClient.RemoveSubPrefix  s     xx HO"8#E#EF	D	  G +t\\^4 
 &&**?;;;w))r   c                     U R                   R                  UR                  5       UR                  UR                  S9nU R
                  R                  U R                  SU4/5      $ )z#Announce a public delegated prefix.r.   Announce)r   -ComputePublicDelegatedPrefixesAnnounceRequestr6   r&   r%   r   r;   r    r!   r=   rG   s      r   rz   &PublicDelegatedPrefixesClient.Announce,  a     mmII%lln~~ J G ;;##

 
 *g	67 r   c                     U R                   R                  UR                  5       UR                  UR                  S9nU R
                  R                  U R                  SU4/5      $ )z#Withdraw a public delegated prefix.r.   Withdraw)r   -ComputePublicDelegatedPrefixesWithdrawRequestr6   r&   r%   r   r;   r    r|   s      r   r   &PublicDelegatedPrefixesClient.Withdraw9  r~   r   )r   r    r   r   r   N)r   r   r   r   r   r"   rH   rK   rQ   rg   rp   rw   rz   r   r   r   r   r   r   r      s8    DQBH005n5*n*@r   r   N)r   
__future__r   r   r   )googlecloudsdk.api_lib.compute.operationsr   googlecloudsdk.api_lib.utilr   googlecloudsdk.core.exceptionsr   r
   objectr   r   r   r   <module>r      s8    , &  ' < . 0Me MfF fr   