
    k                        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 d Z ej0                  ej2                  j4                         G d dej6                               Z ej0                  ej2                  j:                         G d de             Zy)z,Command to update a Dataplex asset resource.    )absolute_import)division)unicode_literals)asset)util)
exceptions)base)flags)resource_args)	arg_utils)labels_util)logc                 8   t        j                  | d       | j                  dddd       | j                  dd	       | j                  d
d	       t        j                  |        t
        j                  j                  |        t        j                  |        y)zCreate a common args.z
to update.z--validate-only
store_trueFz:Validate the update action, but don't actually perform it.)actiondefaulthelpz--descriptionzDescription of the asset)r   z--display-namezDisplay NameN)
r   AddAssetResourceArgadd_argumentr
   AddDiscoveryArgsr	   
ASYNC_FLAGAddToParserr   AddCreateLabelsFlags)parsers    %lib/surface/dataplex/assets/update.py_CommonArgsr   !   s    ##FL9G	   	o,FG&^< //f%""6*    c                   d    e Zd ZdZddiZed        Zd Zd Z e	j                  d      d        Zy	)
Update!Update a Dataplex asset resource.EXAMPLES            To update a Dataplex asset `test-asset` in zone `test-zone` in lake
          `test-lake` in location `us-central1` to have the display name
          `first-dataplex-asset` and discovery include patterns `abc`, `def`,
          run:

            $ {command} test-asset --location=us-central1 --lake=test-lake --zone=test-zone --display-name="first-dataplex-asset" --discovery-include-patterns=abc,def
          c                     t        |        | j                  dd      }|j                  dddddt        j                  d	       y 
NFz?Specification of the resource that is referenced by this asset.)requiredr   z--resource-read-access-modez,Data is accessed directly using storage APIszAData is accessed through a managed interface using BigQuery APIs.)DIRECTMANAGEDzRead access mode)r%   choicestyper   r   	add_groupr   r   ChoiceToEnumNamer   resource_specs     r   ArgszUpdate.ArgsA   [    $$N % M %D
 ''  r   c                 ,    t        j                  |      S N)r   GenerateUpdateMaskselfargss     r   r3   zUpdate.GenerateUpdateMaskV   s    ##D))r   c                 ,    t        j                  |      S r2   )r   GenerateAssetForUpdateRequestr4   s     r   GenerateUpdateRequestzUpdate.GenerateUpdateRequestY   s    ..t44r   z-Status code: {status_code}. {status_message}.c           
         | j                  |      }t        |      dk  rt        j                  d      |j                  j
                  j                         }t        j                         }t        j                         }|j                  j                  |j                  |j                         |j                  dj                  |      | j!                  |                  }t#        |dd      }|r t$        j&                  j)                  d       y t#        |dd      }|s-t        j*                  |       t%        j,                  |d	
       y t$        j&                  j)                  dj/                  ||j0                               y )N   zIUpdate commands must specify at least one additional parameter to change.,)namevalidateOnly
updateMaskgoogleCloudDataplexV1Assetvalidate_onlyFzValidation complete.async_zOperation was sucessful.)detailsz$Updating [{0}] with operation [{1}].)r3   lenr   HttpExceptionCONCEPTSr   Parsedataplex_utilGetClientInstanceGetMessageModule%projects_locations_lakes_zones_assetsPatch5DataplexProjectsLocationsLakesZonesAssetsPatchRequestRelativeNamerA   joinr9   getattrr   statusPrintWaitForOperationUpdatedResourceformatr=   )	r5   r6   update_mask	asset_refdataplex_clientmessageupdate_req_oprA   rB   s	            r   Runz
Update.Run\   sO    ))$/K
;!$$ 
 ##))+I#557O,,.G#IIOOEE'')++xx,'+'A'A$'G	 	F 	
M D/59M	jj-.T8U+F]+	)-GHJJ;BB=%%' (r   N)__name__
__module____qualname____doc__detailed_helpstaticmethodr/   r3   r9   gcloud_exception CatchHTTPErrorRaiseHTTPExceptionr[    r   r   r   r   1   sY    ) 
-  (*5 5445((r   r   c                   4    e Zd ZdZddiZed        Zd Zd Zy)UpdateAlphar    r!   r"   c                     t        |        | j                  dd      }|j                  dddddt        j                  d	       y r$   r*   r-   s     r   r/   zUpdateAlpha.Args   r0   r   c                 ,    t        j                  |      S r2   )r   GenerateUpdateMaskAlphar4   s     r   r3   zUpdateAlpha.GenerateUpdateMask   s    ((..r   c                 ,    t        j                  |      S r2   )r   "GenerateAssetForUpdateRequestAlphar4   s     r   r9   z!UpdateAlpha.GenerateUpdateRequest   s    33D99r   N)	r\   r]   r^   r_   r`   ra   r/   r3   r9   rd   r   r   rf   rf      s4    )  	-  (/:r   rf   N)r_   
__future__r   r   r   googlecloudsdk.api_lib.dataplexr   r   rH   googlecloudsdk.api_lib.utilr   rb   googlecloudsdk.callioper	   #googlecloudsdk.command_lib.dataplexr
   r   $googlecloudsdk.command_lib.util.apisr   $googlecloudsdk.command_lib.util.argsr   googlecloudsdk.corer   r   ReleaseTracksReleaseTrackGACommandr   ALPHArf   rd   r   r   <module>ry      s    3 &  ' 1 A F ( . 5 = : < #+  D%%(()L(T\\ L( *L(^ D%%++,':& ': -':r   