
    1                     f    S r SSKJr  SSKJr  SSKJr  SSKJr  Sr " S S\R                  5      r	g	)
z)Appliance offline import feature printer.    )apis)custom_printer_base)flattened_printer)resource_transformofflineImportFeaturec                       \ rS rSrSr\R                  " SS5      rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rSrg)OfflineImportPrinter   z:Prints Offline Import feature fields in customized format.transferappliancev1alpha1c           
         [         R                  " 5       nU R                  UR                  5      nU R	                  UR                  5      nU R                  UR                  5      nU R                  UR                  5      nU R                  UR                  5      nU R                  UR                  5      nU R                  UR                  5      n	U R                  UR                  5      n
U R                  UR                  5      nSU0SU0SU0SU0SU0SU0SU	0SU
0S	U0/	nU H  nUR                  US
S9  M     g)a  Transforms Offline Import feature data into a customized format.

Args:
  resp: Response object containing data for the offline import feature,
        including its status, bytes transferred, objects transferred,
        destination, end time, and any missing files.

Example output:
  Status              : Completed with errors
  Bytes transferred   : 1.8 MiB of 2.5 MiB
  Objects transferred : 8 objects of 10 objects
  Destination         : example-bucket
  Start time          : June 10, 2024, 06:47 PM UTC
  End time            : March 12, 2024, 04:30 PM UTC
  Found Files         : gs://example-bucket/logs/found_files.log
  Missing Files       : gs://example-bucket/logs/failed_transfers.log
zStatus              zBytes prepared      zBytes transferred   zObjects transferred zDestination         zStart time          zEnd time            zFound Files         zMissing Files       F)delimitN)r   FlattenedPrinter_get_status_messager   _get_bytes_transferred_get_bytes_prepared_get_objects_transferred_get_destination_get_start_time_get_end_time_get_found_files_get_missing_files	AddRecord)selfrespprinterstatusbytes_transferredbytes_preparedobjects_transferreddestination
start_timeend_timefound_filesmissing_filesrecordsrecords                 Llib/googlecloudsdk/command_lib/transfer/appliances/offline_import_printer.py	TransformOfflineImportPrinter.Transform   sQ   $  002G%%d&?&?@F33D4M4MN--d.G.GHN77!! ''(A(ABK%%d&?&?@J!!$";";<H''(A(ABK++D,E,EFM 
 (	0	!23	!45	-	,	*	-	/
G .     c                    U R                  US5      nUc  gU R                  R                  R                  nUR                  SUR
                  SUR                  SUR                  SUR                  SUR                  SUR                  S	UR                  S
0nUU R                  R                  R                  R                  :X  a  U R                  U5      $ UR                  US5      $ )Nstate-zState unspecifiedDraftzNot Yet StartedzPreparing data for transferz$Transferring data to customer bucketzVerifying Transferred dataSuccessfully Completed	Cancelled)
_get_valueMESSAGESOfflineImportFeatureStateValueValuesEnumSTATE_UNSPECIFIEDDRAFTACTIVE	PREPARINGTRANSFERRING	VERIFYING	COMPLETED	CANCELLED_check_completion_statusget)r   offline_import_featurer-   
state_enumstatus_messagess        r(   r   (OfflineImportPrinter._get_status_messageN   s    OOE }33HHJ$$&9',;!G:6k	O 	==--BBLL	M **+ABBuc**r+   c                 j    U R                  US5      nU R                  US5      nUb  Uc  gX#:  a  S$ S$ )N!transferResults.objectsFoundCount"transferResults.objectsCopiedCountr.   zCompleted with errorsr0   r2   )r   r@   objects_foundobjects_copieds       r(   r>   -OfflineImportPrinter._check_completion_statusj   sX    OO CM __ DN  6 ) 	  &r+   c                     U R                  US5      nU R                  US5      nUb  Uc  g[        R                  " U5       S[        R                  " U5       3$ )NpreparedBytesCountallocatedBytesCountr.    of )r2   r   TransformSize)r   r@   r   bytes_allocateds       r(   r   (OfflineImportPrinter._get_bytes_prepared{   sn    __ 4N oo 5O !8 ++N;
<
!//@A	Cr+   c                    U R                  US5      nU R                  US5      nUb  Uc  g[        R                  " UR                  R                  5       S[        R                  " UR                  R
                  5       3$ )Nz transferResults.bytesCopiedCountztransferResults.bytesFoundCountr.   rN   )r2   r   rO   transferResultsbytesCopiedCountbytesFoundCount)r   r@   bytes_copiedbytes_founds       r(   r   +OfflineImportPrinter._get_bytes_transferred   s    ?? BL // AK {2 ++,B,R,R,c,cd
e
!//0F0V0V0f0fgh	jr+   c                     U R                  US5      nU R                  US5      nUb  Uc  gUR                  R                   SUR                  R                   S3$ )NrF   rE   r.   rN   z objects)r2   rS   objectsCopiedCountobjectsFoundCount)r   r@   rI   rH   s       r(   r   -OfflineImportPrinter._get_objects_transferred   sq    __ DN OO CM !6 "11DD
ET!11CC
DH	Nr+   c                 <    U R                  US5      nU(       a  U$ S$ )Nzdestination.outputBucketr.   rG   )r   r@   r!   s      r(   r   %OfflineImportPrinter._get_destination   s%    // :K &;.3.r+   c                 `    U R                  US5      nU(       a  [        R                  " USS9$ g)NztransferResults.startTime%B %d, %Y, %I:%M %p %Zformatr.   r2   r   TransformDate)r   r@   r"   s      r(   r   $OfflineImportPrinter._get_start_time   s9     ;J --
5  r+   c                 `    U R                  US5      nU(       a  [        R                  " USS9$ g)NztransferResults.endTimer`   ra   r.   rc   )r   r@   r#   s      r(   r   "OfflineImportPrinter._get_end_time   s9     9H --
3  r+   c                 <    U R                  US5      nU(       a  U$ S$ )Nz%transferResults.applianceFilesInfoUrir.   rG   )r   r@   r$   s      r(   r   %OfflineImportPrinter._get_found_files   s%    // GK &;.3.r+   c                 <    U R                  US5      nU(       a  U$ S$ )NztransferResults.errorLogr.   rG   )r   r@   r%   s      r(   r   'OfflineImportPrinter._get_missing_files   s%    OO :M *=2s2r+   c                 \    UR                  S5      nU H  n[        XS5      nUb  M    g   U$ )zHResponsible for returning an attribute (might be nested) from an object..N)splitgetattr)r   obj	attribute
attributess       r(   r2   OfflineImportPrinter._get_value   s5    %J	CD)c	   Jr+    N)__name__
__module____qualname____firstlineno____doc__r   GetMessagesModuler3   r)   r   r>   r   r   r   r   r   r   r   r   r2   __static_attributes__rt   r+   r(   r	   r	      sU    B##$7D(-/^+8"   //3r+   r	   N)
ry   googlecloudsdk.api_lib.utilr   googlecloudsdk.core.resourcer   r   r   OFFLINE_IMPORT_PRINTER_FORMATCustomPrinterBaser	   rt   r+   r(   <module>r      s3    0 , < : ; !7 ~.@@ ~r+   