
                            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KJr  SSKJr  SSKJr  SSKJr  SSKJr  SrSr\\RA                  S5      -   r!Sr"Sr#SSRI                  \"\#-   /5      -   r%\" \!\%5      r&\" \\#5      r'\" \\"5      r(S\RR                  " 5       -   S-   r*\" SSS\*S/0 S9r+\" / SQ0 S9r, " S  S!\	5      r-g")#zGImpl. of default bucket storage class command for Google Cloud Storage.    )absolute_import)print_function)division)unicode_literals)metrics)Command)CommandArgument)ApiSelector)CommandException)NO_URLS_MATCHED_TARGET)CreateHelpText)storage_v1_messages)NO_MAX)GcloudStorageMap)NormalizeStorageClass)	shim_utilzD
  gsutil defstorageclass set <storage-class> gs://<bucket_name>...
z4
  gsutil defstorageclass get gs://<bucket_name>...

a{  
<B>SET</B>
  The "defstorageclass set" command sets the default
  `storage class <https://cloud.google.com/storage/docs/storage-classes>`_ for
  the specified bucket(s). If you specify a default storage class for a certain
  bucket, Google Cloud Storage applies the default storage class to all new
  objects uploaded to that bucket, except when the storage class is overridden
  by individual upload requests.

  Setting a default storage class on a bucket provides a convenient way to
  ensure newly uploaded objects have a specific storage class. If you don't set
  the bucket's default storage class, it will default to Standard.
z;
<B>GET</B>
  Gets the default storage class for a bucket.
z5
  The defstorageclass command has two sub-commands:
z)--format=value[separator=": "](name.sub("z", "gs://"),storageClass)storagebucketslistz--rawgcloud_commandflag_map)r   r   updatez--default-storage-classc                   V   \ rS rSrSr\R                  " S\S\SSSS\	R                  \	R                  /\	R                  \R                  " 5       \R                  " 5       /\R                  " 5       /S.S9r\R                   " SS	/S
S\\\S.S9r\" \\S.0 S9rS rS rS rS rS rSrg)DefStorageClassCommand\   z1Implementation of gsutil defstorageclass command.defstorageclass    F)setget)
usage_synopsismin_argsmax_argssupported_sub_argsfile_url_okprovider_url_okurls_start_arggs_api_supportgs_default_apiargparse_argumentsdefaultstorageclasscommand_helpz/Get or set the default storage class on buckets)r"   r!   )	help_namehelp_name_aliases	help_typehelp_one_line_summary	help_textsubcommand_help_textr   c                 l    UR                  S5      (       d  [        SU R                  < SU< S35      eg )Nzgs://"z" does not support the URL "z#". Did you mean to use a gs:// URL?)
startswithr   command_name)selfurl_strs     1platform/gsutil/gslib/commands/defstorageclass.py_CheckIsGsUrl$DefStorageClassCommand._CheckIsGsUrl   s5    g&&%%w01 1 '    c                     U R                   (       d  U R                  5         U R                   S   R                  5       S:X  a  gg)Nr   r!   r      )args$RaiseWrongNumberOfArgumentsExceptionlower)r9   s    r;   _CalculateUrlsStartArg-DefStorageClassCommand._CalculateUrlsStartArg   s4    99
//1yy|u$r>   c           
      l   [        U R                  S   5      nU R                  SS nU(       d  U R                  5         SnU H  nU R                  U5        U R	                  US/S9nU H  nSn[
        R                  " 5       nU R                  R                  SU< S	UR                  R                  S
5      < 35        Xl        U R                  R                  UR                  R                  UUR                  R                   S/S9  M     M     U(       d  [#        [$        ['        U5      -  5      eg)z,Sets the default storage class for a bucket.r   r@   NFidbucket_fieldsTz"Setting default storage class to "z" for bucket /)providerfields)r   rA   rB   r<   GetBucketUrlIterFromArgapitools_messagesBucketloggerinfo
url_stringrstripstorageClass
gsutil_apiPatchBucketstorage_urlbucket_nameschemer   r   r   )r9   normalized_storage_classurl_argssome_matchedr:   bucket_iterblrbucket_metadatas           r;   _SetDefStorageClass*DefStorageClassCommand._SetDefStorageClass   s     5TYYq\Byy}H
//1L
!000Ok#+2242CNN4I4I#4NP 	Q'?$##COO$?$?$3-0__-C-C,06 	$ 	3 	  3d8nDEE r>   c                 N   U R                   nSnU Ho  nU R                  U5        U R                  US/S9nU HD  nSn[        UR                  R                  S5      < SUR                  R                  < 35        MF     Mq     U(       d  [        [        [        U5      -  5      eg)z,Gets the default storage class for a bucket.FrT   rH   TrJ   z: N)rA   r<   rM   printrR   rS   root_objectrT   r   r   r   )r9   r[   r\   r:   r]   r^   s         r;   _GetDefStorageClass*DefStorageClassCommand._GetDefStorageClass   s     yyHL
!00@N?O 1 Qk#~~$$S)3??+G+GI 	J 	  3d8nDEE r>   c           	      l   U R                   R                  S5      nU/nUS:X  a  U R                  nOhUS:X  a6  U R                  n[	        U R                   S   5      nUR                  U5        O,[        SU< SU R                  < SU R                  < S35      e[        R                  " US9  U" 5         g)	z4Command entry point for the defstorageclass command.r   r"   r!   zInvalid subcommand "z
" for the z command.
See "gsutil help z".)subcommands)
rA   popre   r`   r   appendr   r8   r   LogCommandParams)r9   action_subcommandsubcommand_argsfuncrZ   s        r;   
RunCommand!DefStorageClassCommand.RunCommand   s    		a(()OE!%%d	e	#%%d!6tyy|!D56 d//1B1BDE E 9Fr>    N)__name__
__module____qualname____firstlineno____doc__r   CreateCommandSpec	_SYNOPSISr   r
   XMLJSONr	   MakeFreeTextArgument%MakeZeroOrMoreCloudBucketURLsArgumentcommand_specHelpSpec_DETAILED_HELP_TEXT_get_help_text_set_help_text	help_specr   SHIM_GET_COMMAND_MAPSHIM_SET_COMMAND_MAPgcloud_storage_mapr<   rD   r`   re   ro   __static_attributes__rq   r>   r;   r   r   \   s    9 **!oo{'7'78 %% 224CCE
 "GGIK,* !./M#
) (%% 1F4F r>   r   N).rv   
__future__r   r   r   r   gslibr   gslib.commandr   gslib.command_argumentr	   gslib.cs_api_mapr
   gslib.exceptionr   r   gslib.help_providerr   "gslib.third_party.storage_apitoolsr   rN   gslib.utils.constantsr   gslib.utils.shim_utilr   gslib.utils.text_utilr   gslib.utilsr   _SET_SYNOPSIS_GET_SYNOPSISlstriprx   _SET_DESCRIPTION_GET_DESCRIPTIONjoin_DESCRIPTIONr   r   r   get_format_flag_caret_GCLOUD_FORMAT_STRINGr   r   r   rq   r>   r;   <module>r      s%   N & %  '  ! 2 ( , 2 . W ( 2 7 ! M0066	  

ii!$44567 %Y= /?@/?@ G"88:;>))  ( 	9f&;W   (N vW vr>   