
                             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 ej                  j                   d
ej                  j"                  dej                  j$                  diZd Z G d de	j*                        Zy)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                 :    t         j                  t        |          S )N)AppengineDomainsApiClientGetApiClientDOMAINS_VERSION_MAP)release_tracks    Blib/googlecloudsdk/api_lib/app/api/appengine_domains_api_client.pyGetApiClientForTrackr   #   s    	"	/	/-(
* *    c                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)r   z=Client used by gcloud to communicate with the App Engine API.c                     t         j                  j                  | |       t        j                  j                         | _        | j                  j                  d|j                         y )N	appengine)	r   AppengineApiClientBase__init__r
   REGISTRYClone	_registryRegisterApiByName_VERSION)selfclients     r   r   z"AppengineDomainsApiClient.__init__+   sF    ((v6''--/DNNN$$[&//Br   c                     | j                   j                  | j                  |            }| j                  j                  j                  |      }t        j                  | j                  j                  |       y)zlDeletes 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   DeleteDomainMappingz-AppengineDomainsApiClient.DeleteDomainMapping2   sb     mmDD&&v. E 0G //66w?I$$T[[%@%@)Lr   c                     | j                   j                  | j                  |            }| j                  j                  j                  |      S )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   GetDomainMappingz*AppengineDomainsApiClient.GetDomainMapping?   sI     mmAA&&v. B 0G ;;**..w77r   c                     | j                   j                  | j                               }| j                  j                  j                  |      }|j                  S )znLists all domain mappings for the given application.

    Returns:
      A list of DomainMapping objects.
    parent)r%   &AppengineAppsDomainMappingsListRequest
_FormatAppr!   r(   ListdomainMappingsr    r-   responses      r   ListDomainMappingsz,AppengineDomainsApiClient.ListDomainMappingsM   sP     mmBB  C "G {{..33G<H"""r   c                     | j                   j                  | j                               }| j                  j                  j                  |      }|j                  S )zlLists all domains verified by the current user.

    Returns:
      A list of AuthorizedDomain objects.
    r5   )r%   )AppengineAppsAuthorizedDomainsListRequestr8   r!   apps_authorizedDomainsr9   domainsr;   s      r   ListVerifiedDomainsz-AppengineDomainsApiClient.ListVerifiedDomainsZ   sP     mmEE  F "G {{1166w?Hr   c                 ~   | j                   j                  ||      }| j                   j                  ||      }| j                   j                  | j	                         |      }| j
                  j                  j                  |      }t        j                  | j
                  j                  |      j                  S )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)r6   domainMapping)r%   SslSettingsDomainMapping(AppengineAppsDomainMappingsCreateRequestr8   r!   r(   Creater   r*   r+   r<   )r    r,   certificate_idmanagement_typessldomain_mappingr-   r.   s           r   CreateDomainMappingz-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                 (   g }|s|r|j                  d       |r|j                  d       | j                  j                  ||      }| j                  j                  ||      }|st	        j
                  ddgd      | j                  j                  | j                  |      |dj                  |      	      }| j                  j                  j                  |      }	t        j                  | j                  j                  |	      j                  S )
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.sslManagementTyperD   rG   z--[no-]certificate-idz--no_managed_certificatezCPlease specify at least one attribute to the domain-mapping update.,)r$   rJ   
updateMask)appendr%   rK   rL   r	   MinimumArgumentException'AppengineAppsDomainMappingsPatchRequestr'   joinr!   r(   Patchr   r*   r+   r<   )
r    r,   rO   no_certificate_idrP   mask_fieldsrQ   rR   r-   r.   s
             r   UpdateDomainMappingz-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                 v    | j                   j                  |d| j                  id      }|j                         S )NappsIdzappengine.apps.domainMappings)params
collection)r   ParseprojectRelativeName)r    r,   ress      r   r'   z.AppengineDomainsApiClient._FormatDomainMapping   s>    
..

$,,'2  4C r   N)__name__
__module____qualname____doc__r   r/   r3   r=   rB   rS   r^   r'    r   r   r   r   (   s2    ECM8#@4)@Vr   r   N)rj   
__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   rk   r   r   <module>rv      sy    K &  ' 6 L 9 . ) !!4$$i##X *
I ; ; Ir   