
    1                         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dlmZ ddlmZ ddlmZ ddlmZ dZdZdZe
j4                   e
j6                  e
j8                  j:                         G d de
j<                                      Ze
j4                   e
j6                  e
j8                  j@                         G d de                    Z!y)zGImplementation of objects describe command for getting info on objects.    )absolute_import)division)unicode_literals)api_factory)	cloud_api)request_config_factory)base)encryption_util)errors)errors_util)flags)storage_url)wildcard_iterator)contexts_only_formatter)full_resource_formatter)gsutil_json_printer)resource_utilz"
Describe a Cloud Storage object.
z
Describe a Google Cloud Storage object with the url
"gs://bucket/my-object":

  $ {command} gs://bucket/my-object

Describe object with JSON formatting, only returning the "name" key:

  $ {command} gs://bucket/my-object --format="json(name)"

c                   0    e Zd ZdZeedZed        Zd Z	y)Describe Describe a Cloud Storage object.DESCRIPTIONEXAMPLESc                    |j                  dd       t        j                  |       t        j                  |d       t        j                  |d       t        j
                  |       t        j                  |       t        j                  j                          | j                         t        j                  j                  k(  rt        j                  j                          y y )Nurlz$Specifies URL of object to describe.)helpT)command_only_reads_dataF)is_list)add_argumentr   add_additional_headers_flagadd_encryption_flags&add_fetch_encrypted_object_hashes_flagadd_raw_display_flagadd_soft_deleted_flagr   GsutilJsonPrinterRegisterReleaseTrackr	   ALPHAr   ContextsOnlyPrinter)clsparsers     'lib/surface/storage/objects/describe.pyArgszDescribe.Args?   s    
$JK	%%f-	vtD	00G	v&	'))224
T..44411::< 5    c                 R   t        j                  |       t        j                  |j                        rt        j                  d      t        j                  |j                        }t        j                  |j                  |       t        j                  |j                        }|j                  |j                   |j"                  |j$                  t&        j(                  j*                  |j,                        }|j.                  rt&        j0                  j2                  |j4                  v r|j6                  r|j8                  s|j:                  rt=        j>                  |j                  |j:                  d      }|j                  |j@                  |jB                  t&        j(                  j*                  |j$                  ||j,                        }n|}|jD                  tF        jH                  k(  r|S tK        jL                  |tN        jP                  |jR                        S )NzDescribe does not accept wildcards because it returns a single resource. Please use the `ls` or `objects list` command for retrieving multiple resources.)
generationfields_scopesoft_deletedT)decryption_key_hash_sha256error_on_missing_key)r2   r1   request_configr3   )display_raw_keys)*r
   initialize_key_storer   contains_wildcardr   r   InvalidUrlErrorr   storage_url_from_stringr   raise_error_if_not_cloud_objectcommand_pathr   get_apischemeget_object_metadatabucket_nameresource_namer1   r   FieldsScopeFULLr3   fetch_encrypted_object_hashes
Capability
ENCRYPTIONcapabilitiesmd5_hashcrc32c_hashr4   r   get_request_configbucketnameformatr   CONTEXT_ONLY_PRINTER_FORMATr   get_display_dict_for_resourcer   ObjectDisplayTitlesAndDefaultsraw)selfargsr   clientresourcer6   final_resources          r-   RunzDescribe.RunL   s   ((.**4884"",- -
 
-
-dhh
7C//0A0A3G  ,F))>>**//&& * H 	**''6+>+>>8#7#7++-@@


%-%H%H#%n 11
//
-- ,,11(('(( 2 n  n{{-III66>> r/   N)
__name__
__module____qualname____doc___COMMAND_DESCRIPTION_GA_EXAMPLESdetailed_helpclassmethodr.   rX    r/   r-   r   r   5   s/     ) *-
 
= 
=.r/   r   c                        e Zd ZdZeeez   dZy)DescribeAlphar   r   N)rY   rZ   r[   r\   r]   r^   _ALPHA_EXAMPLESr_   ra   r/   r-   rc   rc   }   s     ) *0-r/   rc   N)"r\   
__future__r   r   r   googlecloudsdk.api_lib.storager   r   r   googlecloudsdk.callioper	   "googlecloudsdk.command_lib.storager
   r   r   r   r   r   ,googlecloudsdk.command_lib.storage.resourcesr   r   r   r   r]   r^   rd   UniverseCompatibleReleaseTracksr(   GADescribeCommandr   r)   rc   ra   r/   r-   <module>rn      s    N &  ' 6 4 A ( > 5 : 4 : @ P P L F 	 D%%(()Ct## C * CL D%%++,H  - r/   