
                             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K
Jr  SS	KJr  \R                  R                   S
\R                  R"                  S\R                  R$                  S0rS r " S S\	R*                  5      rg)zDFunctions for creating a client to talk to the App Engine Admin API.    )absolute_import)division)unicode_literals)operations_util)appengine_api_client_base)base)
exceptions)	resourcesv1v1alphav1betac                 :    [         R                  [        U    5      $ )N)AppengineDomainsApiClientGetApiClientDOMAINS_VERSION_MAP)release_tracks    Blib/googlecloudsdk/api_lib/app/api/appengine_domains_api_client.pyGetApiClientForTrackr   #   s    	"	/	/-(
* *    c                   H    \ 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)r   (   z=Client used by gcloud to communicate with the App Engine API.c                     [         R                  R                  X5        [        R                  R                  5       U l        U R                  R                  SUR                  5        g )N	appengine)	r   AppengineApiClientBase__init__r
   REGISTRYClone	_registryRegisterApiByName_VERSION)selfclients     r   r   "AppengineDomainsApiClient.__init__+   sD    ((6''--/DNNN$$[&//Br   c                     U R                   R                  U R                  U5      S9nU R                  R                  R                  U5      n[        R                  " U R                  R                  U5        g)z`Deletes a domain mapping for the given application.

Args:
  domain: str, the domain to delete.
nameN)	messages(AppengineAppsDomainMappingsDeleteRequest_FormatDomainMappingr"   apps_domainMappingsDeleter   WaitForOperationapps_operations)r!   domainrequest	operations       r   DeleteDomainMapping-AppengineDomainsApiClient.DeleteDomainMapping2   sb     mmDD&&v. E 0G //66w?I$$T[[%@%@)Lr   c                     U R                   R                  U R                  U5      S9nU R                  R                  R                  U5      $ )zGets a domain mapping for the given application.

Args:
  domain: str, the domain to retrieve.

Returns:
  The retrieved DomainMapping object.
r%   )r'   %AppengineAppsDomainMappingsGetRequestr)   r"   r*   Get)r!   r.   r/   s      r   GetDomainMapping*AppengineDomainsApiClient.GetDomainMapping?   sI     mmAA&&v. B 0G ;;**..w77r   c                     U R                   R                  U R                  5       S9nU R                  R                  R                  U5      nUR                  $ )zbLists all domain mappings for the given application.

Returns:
  A list of DomainMapping objects.
parent)r'   &AppengineAppsDomainMappingsListRequest
_FormatAppr"   r*   ListdomainMappingsr!   r/   responses      r   ListDomainMappings,AppengineDomainsApiClient.ListDomainMappingsM   sP     mmBB  C "G {{..33G<H"""r   c                     U R                   R                  U R                  5       S9nU R                  R                  R                  U5      nUR                  $ )z`Lists all domains verified by the current user.

Returns:
  A list of AuthorizedDomain objects.
r9   )r'   )AppengineAppsAuthorizedDomainsListRequestr<   r"   apps_authorizedDomainsr=   domainsr?   s      r   ListVerifiedDomains-AppengineDomainsApiClient.ListVerifiedDomainsZ   sP     mmEE  F "G {{1166w?Hr   c                 l   U R                   R                  UUS9nU R                   R                  XS9nU R                   R                  U R	                  5       US9nU R
                  R                  R                  U5      n[        R                  " U R
                  R                  U5      R                  $ )aP  Creates a domain mapping for the given application.

Args:
  domain: str, the custom domain string.
  certificate_id: str, a certificate id for the new domain.
  management_type: SslSettings.SslManagementTypeValueValuesEnum,
                   AUTOMATIC or MANUAL certificate provisioning.

Returns:
  The created DomainMapping object.
certificateIdsslManagementTypeidsslSettings)r:   domainMapping)r'   SslSettingsDomainMapping(AppengineAppsDomainMappingsCreateRequestr<   r"   r*   Creater   r,   r-   r@   )r!   r.   certificate_idmanagement_typessldomain_mappingr/   r0   s           r   CreateDomainMapping-AppengineDomainsApiClient.CreateDomainMappingg   s     --
#
#.6E $ GC ]]00F0LNmmDD $ E &G //66w?I++DKK,G,G,577?x@r   c                 >   / nU(       d  U(       a  UR                  S5        U(       a  UR                  S5        U R                  R                  X$S9nU R                  R                  XS9nU(       d  [        R
                  " SS/S5      eU R                  R                  U R                  U5      USR                  U5      S	9nU R                  R                  R                  U5      n	[        R                  " U R                  R                  U	5      R                  $ )
a  Updates a domain mapping for the given application.

Args:
  domain: str, the custom domain string.
  certificate_id: str, a certificate id for the domain.
  no_certificate_id: bool, remove the certificate id from the domain.
  management_type: SslSettings.SslManagementTypeValueValuesEnum,
                   AUTOMATIC or MANUAL certificate provisioning.

Returns:
  The updated DomainMapping object.
zsslSettings.certificateIdzsslSettings.sslManagementTyperJ   rM   z--[no-]certificate-idz--no_managed_certificatezCPlease specify at least one attribute to the domain-mapping update.,)r&   rP   
updateMask)appendr'   rQ   rR   r	   MinimumArgumentException'AppengineAppsDomainMappingsPatchRequestr)   joinr"   r*   Patchr   r,   r-   r@   )
r!   r.   rU   no_certificate_idrV   mask_fieldsrW   rX   r/   r0   s
             r   UpdateDomainMapping-AppengineDomainsApiClient.UpdateDomainMapping   s   " K*4589
--
#
#$ $ IC ]]00F0LN//"$>
?
OQ Q mmCC&&v.$88K( D *G
 //55g>I++DKK,G,G,577?x@r   c                 p    U R                   R                  USU R                  0SS9nUR                  5       $ )NappsIdzappengine.apps.domainMappings)params
collection)r   ParseprojectRelativeName)r!   r.   ress      r   r)   .AppengineDomainsApiClient._FormatDomainMapping   s>    
..

$,,'2  4C r   )r   N)__name__
__module____qualname____firstlineno____doc__r   r1   r6   rA   rG   rY   re   r)   __static_attributes__ r   r   r   r   (   s2    ECM8#@4)@Vr   r   N)rt   
__future__r   r   r   googlecloudsdk.api_lib.appr   googlecloudsdk.api_lib.app.apir   r   googlecloudsdk.calliopecalliope_baser	   googlecloudsdk.corer
   ReleaseTrackGAALPHABETAr   r   r   r   rv   r   r   <module>r      sy    K &  ' 6 L 9 . ) !!4$$i##X *
I ; ; Ir   