
                             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 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
j,                        Zy)z(Command for creating target SSL proxies.    )absolute_import)division)unicode_literals)base_classes)target_proxies_utils)utils)base)resource_args)flags)target_ssl_proxies_utilsc                   X    e Zd ZdZdZej                  ZdZdZ	dZ
dZed        Zd Zd Zy)Createa  Create a target SSL proxy.

  *{command}* is used to create target SSL proxies. A target SSL proxy is
  referenced by one or more forwarding rules which define which packets the
  proxy is responsible for routing. The target SSL proxy points to a backend
  service which handle the actual requests. The target SSL proxy also points
  to at most 15 SSL certificates used for server-side authentication or one
  certificate map. The target SSL proxy can be associated with at most one SSL
  policy.
  TNc                    t        j                  |       t        j                         | _        | j                  j                  |       t        j                         | _        | j                  j                  |d       t        j                  d| j                   d      | _        | j                  s| j                  j                  |d       t        j                  dd	      | _        | j                  j                  |       |j!                  d
d       |j"                  j%                  t        j&                         |j"                  j)                  | j*                         | j                  rK|j-                  d	      }| j                  j                  |d       t/        j0                  |ddddd       y y )Ncreate)operation_typeztarget SSL proxyF)required!include_regional_ssl_certificatesSSL_CERTIFICATE)cust_metavarSSL)r   z--descriptionz:An optional, textual description for the target SSL proxy.)helpTz	to attachzcertificate-map)name
positionalr   with_location)r   AddProxyHeaderRelatedCreateArgsbackend_service_flags'BackendServiceArgumentForTargetSslProxyBACKEND_SERVICE_ARGAddArgumentr   TargetSslProxyArgumentTARGET_SSL_PROXY_ARGssl_certificates_flags'SslCertificatesArgumentForOtherResource_certificate_mapSSL_CERTIFICATES_ARGssl_policies_flags.GetSslPolicyMultiScopeArgumentForOtherResourceSSL_POLICY_ARGadd_argumentdisplay_infoAddCacheUpdaterTargetSslProxiesCompleter	AddFormat_list_formatadd_argument_groupr
   AddCertificateMapResourceArg)clsparsergroups      0lib/surface/compute/target_ssl_proxies/create.pyArgszCreate.Args8   s   88@ 	EEG ''/$;;=C(((I 	FF---.3	5 
 	**
0 + 2 ,ZZC""6*
I  K ''(G(GH
!!#"2"23
'''6e	**
/ + 100

 	     c                    t        j                  | j                               }| j                  j	                  ||j
                        }| j                  j	                  ||j
                        }d }|j                  r&| j                  j	                  ||j
                        }|j                  j                  }|j                  j                  }|j                  r&|j                  j                  |j                        }n |j                  j                  j                  }|j                  |j                   |j#                         ||j%                               }	|r#|D 
cg c]  }
|
j%                          c}
|	_        |j(                  r?t+        j,                  || j.                  ||j
                        j%                         |	_        | j2                  r;|j4                  j6                  j9                         }|r|j%                         |	_        |j=                  |j>                  |	      }g }|j                  jA                  |jB                  d|fg|      }|rtE        jF                  |       |S c c}
w )N)descriptionr   proxyHeaderservice)projecttargetSslProxyInsert)$r   ComputeApiHolderReleaseTrackr   ResolveAsResource	resourcesr!   ssl_certificatesr%   clientapitools_clientmessagesproxy_headerTargetSslProxyProxyHeaderValueValuesEnumNONEr8   NameSelfLinksslCertificates
ssl_policyr   ResolveSslPolicyr(   	sslPolicyr$   CONCEPTScertificate_mapParsecertificateMap$ComputeTargetSslProxiesInsertRequestr;   MakeRequeststargetSslProxiesr   RaiseToolException)selfargsholderbackend_service_reftarget_ssl_proxy_refssl_cert_refsrC   rE   rF   target_ssl_proxyrefcertificate_map_refrequesterrorsrA   s                  r4   _CreateResourcezCreate._CreateResourceb   s<   **4+<+<+>?F22DDf   44FFf  M//AA
  "m ]]**F}}%%H,,GG


l --HHMMl..$$!&&( #,,.	 / 0 $1*$1S#,,.M*& #;#L#L
##%9


$$HJ    MM99??A	*=*F*F*H';;$,,=M < OG F**

!
!8W	56@I v&/*s   #I6c                 $    | j                  |      S )N)rc   )rX   rY   s     r4   Runz
Create.Run   s    %%r6   )__name__
__module____qualname____doc__r$   r   DEFAULT_LIST_FORMATr.   r   r%   r!   r(   classmethodr5   rc   re    r6   r4   r   r   $   sO    	 **,.' 'R4l&r6   r   N)ri   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   r   googlecloudsdk.callioper	   .googlecloudsdk.command_lib.certificate_managerr
   3googlecloudsdk.command_lib.compute.backend_servicesr   r   3googlecloudsdk.command_lib.compute.ssl_certificatesr"   /googlecloudsdk.command_lib.compute.ssl_policiesr&   5googlecloudsdk.command_lib.compute.target_ssl_proxiesr   CreateCommandr   rl   r6   r4   <module>rv      sL    / &  ' 7 ? 0 ( H$%Q G Zu&T u&r6   