
    #                        S r SSKJr  SSKJr  SSK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\\R=                  S5      -   rSr Sr!S\!-   \ -   r"\" \\"5      r#\" \\ 5      r$\" \\!5      r%S\RL                  " 5       -   S-   S-   S-   S-   S-   S-   r' " S S\5      r(g) z5This module provides the autoclass command to gsutil.    )absolute_import)print_functionN)metrics)Command)CommandArgument)ApiSelector)CommandException)NO_URLS_MATCHED_TARGET)CreateHelpText)storage_v1_messages)	text_util)NO_MAX)GcloudStorageMap)	shim_utilz7
  gsutil autoclass set (on|off) gs://<bucket_name>...
z.
  gsutil autoclass get gs://<bucket_name>...

z
<B>SET</B>
  The ``set`` sub-command requires an additional sub-command, either ``on``
  or ``off``, which enables or disables Autoclass for the specified
  bucket(s).
a+  
<B>GET</B>
  The ``get`` sub-command gets the current Autoclass configuration for a
  bucket. The returned configuration has the following fields:

  ``enabled``: a boolean field indicating whether the feature is on or off.

  ``toggleTime``: a timestamp indicating when the enabled field was set.
z
  The `Autoclass <https://cloud.google.com/storage/docs/autoclass>`_
  feature automatically selects the best storage class for objects based
  on access patterns. This command has two sub-commands, ``get`` and
  ``set``.
z--format=value[separator="z"](zformat("gs://{}:", name),z format("  Enabled: {}",z&autoclass.enabled.yesno(True, False)),z format("  Toggle Time: {}",zautoclass.toggleTime))c                   n   \ rS rSrSr\R                  " S/ \S\SSSS\	R                  /\	R                  \R                  " S5      /\" SS	S
/S9\R                  " 5       /S.S9r\R                  " S/ SS\\\S.S9r\" \" SSS\S/0 SS9\" \" / SQ0 S9\" / SQ0 S9S.0 S9S.0 S9rS rS rS rS rSrg )!AutoclassCommandR   z(Implements the gsutil autoclass command.	autoclass    F   modeonoff)choicesgetset)command_name_aliases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command_helpzConfigure Autoclass feature)	help_namehelp_name_aliases	help_typehelp_one_line_summary	help_textsubcommand_help_textstoragebucketslistz--rawT)gcloud_commandflag_mapsupports_output_translation)r2   r3   updatez--enable-autoclass)r5   r6   )r2   r3   r8   z--no-enable-autoclass)r   r   c                 n   UR                   nU R                  R                  UR                  S/UR                  S9n[        U5      R                  S5      nUR                  (       a/  [        UR                  SS5      n[        UR                  SS5      nOSnSn[        SR                  XEU5      5        g)	z(Gets the autoclass setting for a bucket.r   fieldsprovider/enabledF
toggleTimeNz#{}:
  Enabled: {}
  Toggle Time: {})storage_url
gsutil_api	GetBucketbucket_nameschemestrrstripr   getattrprintformat)selfblr
bucket_urlbucket_metadatabucketr>   toggle_times          +platform/gsutil/gslib/commands/autoclass.py_get_autoclassAutoclassCommand._get_autoclass   s    Joo//
0F0F8C}9C9J9J 0 LO _##C(F  119eDgO55|TJkgk	 $fVkBD    c                 L   UR                   n[        R                  R                  5       nUS:H  Ul        [        R                  " US9n[        SU< S[        U5      R                  S5      < 35        U R                  R                  UR                  US/UR                  S9  g)	z'Turns autoclass on or off for a bucket.r   )r   zSetting Autoclass z for r=   r   r:   r   )r@   apitools_messagesBucketAutoclassValuer>   rH   rE   rF   rA   PatchBucketrC   rD   )rJ   rK   setting_argrL   autoclass_configrM   s         rP   _set_autoclassAutoclassCommand._set_autoclass   s    J(//>>@ +t 3'..9IJO	J..s35 6 	OO
 6 6 /(3})3):):   < rS   c           
         U R                   R                  S5      nUS;  a  [        S5      eSn/ nSnUS:X  a  U R                  nOUUS:X  aO  U R                  nU R                   R                  S5      n[
        R                  " US5        UR                  U5        U R                  R                  S5      [        R                  :w  a;  [        S	R                  [        R                  " S
U R                  -  5      5      5      eSnU R                   nU(       d  U R!                  5         U H  nU R#                  U5      nU H  n	U R                  R                  U	R$                  R&                  5      [        R                  :w  a;  [        S	R                  [        R                  " SU R                  -  5      5      5      eSnU" U	/UQ76   M     M     U(       d  [        [(        [+        U5      -  5      eg)z3Handles autoclass command on Cloud Storage buckets.r   r   zautoclass only supports get|setNr   r   z-Only on and off values allowed for set optiongsr   z=The "%s" command can only be with the Cloud Storage JSON API.Fz2The "%s" command can only be used for GCS Buckets.T)argspopr	   rQ   r[   r   InsistOnOrOffappendrA   GetApiSelectorr   JSONjointextwrapwrapcommand_name$RaiseWrongNumberOfArgumentsExceptionGetBucketUrlIterFromArgr@   rD   r
   r4   )
rJ   
subcommandsubcommand_funcsubcommand_argsrY   some_matchedurl_argsurl_strbucket_iterbucket_listing_refs
             rP   
_autoclassAutoclassCommand._autoclass   s   q!J'>??OOKU++o	u	++oIIMM!$kkMO[)%%d+{/?/??TYY
-- %(,(9(9: ;< = =
 LyyH
//1009k +
??))**1136A6F6FG mm (+/+<+<= >"? @ @ *=_= !,  3d8nDEErS   c                     U R                   S   nU R                  SS9  US:X  d  US:X  aC  [        R                  " U R                  S9  [        R                  " U/S9  U R                  5       $ [        SU-  5      e)	z.Command entry point for the autoclass command.r   T)
check_argsr   r   )sub_opts)subcommandsz-Invalid subcommand "%s", use get|set instead.)r_   ParseSubOptsr   LogCommandParamsrw   rs   r	   )rJ   action_subcommands     rP   
RunCommandAutoclassCommand.RunCommand   sz    		!&E!%6%%?6,=+>?__L./ 0 0rS    N)__name__
__module____qualname____firstlineno____doc__r   CreateCommandSpec	_SYNOPSISr   r   rd   r   MakeNCloudURLsArgument%MakeZeroOrMoreCloudBucketURLsArgumentcommand_specHelpSpec_DETAILED_HELP_TEXT_get_help_text_set_help_text	help_specr   _GCLOUD_FORMAT_STRINGgcloud_storage_maprQ   r[   rs   r|   __static_attributes__r~   rS   rP   r   r   R   s6   0**!&&' %%!88;=ftUm<CCE	,( 9#
) ( F4I" .2  +.  (* +.  (*", /$J M'RD$$-^0rS   r   ))r   
__future__r   r   rf   gslibr   gslib.commandr   gslib.command_argumentr   gslib.cs_api_mapr   gslib.exceptionr	   r
   gslib.help_providerr   "gslib.third_party.storage_apitoolsr   rU   gslib.utilsr   gslib.utils.constantsr   gslib.utils.shim_utilr   r   _SET_SYNOPSIS_GET_SYNOPSISlstripr   _SET_DESCRIPTION_GET_DESCRIPTION_DESCRIPTIONr   r   r   get_format_flag_newliner   r   r~   rS   rP   <module>r      s   < & %   ! 2 ( , 2 . W ! ( 2 ! M0066	  
 
 ** %Y= /?@/?@5"::<=?DE45 44 B	B
 88 22 j0w j0rS   