
    ;                         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  SSK
Jr  SS	K
Jr  SS
K
Jr   " S S\R                   5      rg)zUpdate an ekmconnection.    )absolute_import)division)unicode_literals)base)
exceptions)certs)flags)maps)resource_argsc                   :    \ rS rSrSr\S 5       rS rS rS r	Sr
g)	Update   a  Update an ekmconnection.

{command} can be used to update the ekmconnection. Updates can be made to the
ekmconnection's service resolver's fields.

## EXAMPLES

The following command updates an ekm-connection named `laplace` service
resolver's hostname within location `us-east1`:

$ {command} laplace --location=us-east1 \
                    --hostname=newhostname.foo

The following command updates an ekm-connection named `laplace` service
resolver's service_directory_service, endpoint_filter, hostname, and
server_certificates within location `us-east1`:

  $ {command} laplace --location=us-east1 \
      --service-directory-service="foo" \
      --endpoint-filter="foo > bar" \
      --hostname="newhostname.foo" \
      --server-certificates-files=foo.pem,bar.pem

The following command updates an ekm-connection named `laplace`
key_management_mode within location `us-east1`:

$ {command} laplace --location=us-east1 \
                    --key-management-mode=manual

c                    [         R                  " U SS5        [        R                  " U 5        [        R                  " U 5        [        R
                  " U 5        [        R                  " U 5        [        R                  " U 5        g )NTekm_connection)r   $AddKmsEkmConnectionResourceArgForKMSr	   AddServiceDirectoryServiceFlagAddEndpointFilterFlagAddHostnameFlagAddKeyManagementModeFlagsAddServerCertificatesFilesFlag)parsers    )lib/surface/kms/ekm_connections/update.pyArgsUpdate.Args?   s^    66vt7GI	((0	'	&!	##F+	((0    c                 Z   / nUR                   (       d3  UR                  (       d"  UR                  (       d  UR                  (       a  UR	                  S5        UR
                  (       a  UR	                  S5        UR                  (       a  UR	                  S5        SR                  U5      $ )NserviceResolverskeyManagementModecryptoSpacePath,)service_directory_serviceendpoint_filterhostnameserver_certificates_filesappendkey_management_modecrypto_space_pathjoin)selfargsupdate_masks      r   CreateUpdateMaskUpdate.CreateUpdateMaskI   su    K&&$*>*>77+,,-*+88K  r   c           	      t   [         R                  " U5      nUR                  S   nUR                  (       a  UR                  Ul        UR
                  (       a  UR
                  Ul        UR                  (       a  UR                  Ul        UR                  (       a.  [        R                  R                  UR                  5      Ul        UR                  (       a  UR                  Ul        / nUR                  (       aL  UR                   H6  n UR!                  UR#                  [$        R&                  " U5      S95        M8     Xel        UR3                  UR5                  5       US9n	U R7                  U5      U	l        U	$ ! [(         a+  n[*        R,                  " SSR/                  Xx5      5      eS nAff = f)Nr   )rawDerz--server-certificates-filesz+Error while attempting to read file {} : {})nameekmConnection)r	   ParseEkmConnectionNamer   r!   serviceDirectoryServicer"   endpointFilterr#   r&   r
   KEY_MANAGEMENT_MODE_MAPPERGetEnumForChoicer   r'   r   r$   r%   Certificater   GetDerCertificate	Exceptionr   BadArgumentExceptionformatserverCertificates3CloudkmsProjectsLocationsEkmConnectionsPatchRequestRelativeNamer,   
updateMask)
r)   r*   messagesekm_connection_to_updateec_refservice_resolver_to_updatecertificate_list	cert_fileereqs
             r   CreateRequestUpdate.CreateRequestT   s   ))$/F!9!J!J1!M%%;?;Y;Y 8262F2F /}},0MM )

)
)
:
:&&( 0 151G1G.%%55)	!

!
!""%*A*A)*L"MO 6 7G3

F
F  "2J G LC **40CNJ  	!//+;BB ! !	!s   2F
F7&F22F7c                 @   UR                   (       dk  UR                  (       dZ  UR                  (       dI  UR                  (       d8  UR                  (       d'  UR
                  (       d  [        R                  " S5      e[        R                  " 5       n[        R                  " 5       n[        R                  " U5      nUR                  R                  UR                  UR!                  5       S95      nU R#                  XU5      nUR                  R%                  U5      $ )NzAn error occured: At least one of --service-directory-service or --endpoint-filter or --hostname or --server-certificates-files or --key-management-mode or --crypto-space-path must be specified.)r0   )r!   r"   r#   r$   r&   r'   kms_exceptionsUpdateErrorcloudkms_baseGetClientInstanceGetMessagesModuler	   r2   !projects_locations_ekmConnectionsGet1CloudkmsProjectsLocationsEkmConnectionsGetRequestr>   rH   Patch)r)   r*   clientr@   rB   r   
update_reqs          r   Run
Update.Run}   s    **d.B.BMMT;;$$(>(>&&LM M
 ,,.F..0H))$/F ==AABB$$& 	C 	()N
 ##DNCJ3399*EEr    N)__name__
__module____qualname____firstlineno____doc__staticmethodr   r,   rH   rV   __static_attributes__rX   r   r   r   r      s,    > 1 1	!'RFr   r   N)r]   
__future__r   r   r   googlecloudsdk.api_lib.cloudkmsr   rM   googlecloudsdk.callioper   googlecloudsdk.command_lib.kmsr   rK   r	   r
   r   UpdateCommandr   rX   r   r   <module>re      sA     &  ' A ( . 0 G 0 / 8sFT sFr   