
                         z   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  e
j"                  e
j$                  j&                  e
j$                  j(                  e
j$                  j*                        e
j,                   G d de
j.                                      Zy)z0`gcloud api-gateway api_configs update` command.    )absolute_import)division)print_function)unicode_literals)api_configs)
operations)base)common_flags)operations_util)resource_args)labels_utilc                   6    e Zd ZdZdddZed        Zd Zd Zy)	Updatez!Update an API Gateway API config.zm          {description}

          NOTE: Only the name and labels may be updated on an API config.
          z          To update the display name of an API config, run:

            $ {command} my-config --api=my-api --display-name="New Display Name"

          NOTE: Only the display name and labels attributes are mutable on an API config.
          )DESCRIPTIONEXAMPLESc                     t         j                  j                  |        t        j                  |        t        j                  |        t        j                  | dd       y )NupdatedT)
positional)	r	   
ASYNC_FLAGAddToParserr
   AddDisplayNameArgr   AddUpdateLabelsFlagsr   AddApiConfigResourceArg)parsers    -lib/surface/api_gateway/api_configs/update.pyArgszUpdate.Args7   sB    OO'""6*$$V,))&)M    c           	         |j                   j                  j                         }t        j                         }| j                  |j                  |      |      \  }}|j                  ||      }t        j                  |j                  t        j                         |j                  dj                  |j                               |j                         S )N)update_maskz)Waiting for API Config [{}] to be updated)servicewait_stringis_async)CONCEPTS
api_configParser   ApiConfigClientProcessUpdatesGetr   r   PrintOperationResultnamer   OperationsClientr    formatNameasync_)selfargsapi_config_refapi_config_client	api_cofigmaskresps          r   Runz
Update.Run>   s    ]]--335N#335))*;*?*?*O*.0OIt ##I4#@D//		##%!))?FF!# r   c                 .   g }t        j                  |j                  fd      }|j                  r"|j                  _        |j                  d       |j                  r"|j                  _        |j                  d       dj                  |      fS )Nc                       j                   S )N)labels)r3   s   r   <lambda>z'Update.ProcessUpdates.<locals>.<lambda>U   s    	  r   r9   displayName,)	r   ProcessUpdateArgsLazyLabelsValueneeds_updater9   appenddisplay_namer;   join)r/   r3   r0   r   labels_updates    `   r   r'   zUpdate.ProcessUpdatesO   s    K55 "M !!&--i""//i'chh{+++r   N)	__name__
__module____qualname____doc__detailed_helpstaticmethodr   r6   r'    r   r   r   r       s8     *-" N N",r   r   N)rG   
__future__r   r   r   r   "googlecloudsdk.api_lib.api_gatewayr   r   googlecloudsdk.callioper	   &googlecloudsdk.command_lib.api_gatewayr
   r   r   $googlecloudsdk.command_lib.util.argsr   ReleaseTracksReleaseTrackALPHABETAGADefaultUniverseOnlyUpdateCommandr   rJ   r   r   <module>rW      s     7 &  % ' : 9 ( ? B @ < D%%++T->->-C-C%%((*;,T ;, *;,r   