
    1                     f    d Z ddlmZ ddlmZ ddlmZ ddlmZ dZ G d dej                        Z	y	)
z)Appliance offline import feature printer.    )apis)custom_printer_base)flattened_printer)resource_transformofflineImportFeaturec                   ~    e Zd ZdZ ej
                  dd      Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zy)OfflineImportPrinterz:Prints Offline Import feature fields in customized format.transferappliancev1alpha1c           
         t        j                         }| j                  |j                        }| j	                  |j                        }| j                  |j                        }| j                  |j                        }| j                  |j                        }| j                  |j                        }| j                  |j                        }	| j                  |j                        }
| j                  |j                        }d|id|id|id|id|id|id|	id|
id	|ig	}|D ]  }|j                  |d
        y)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	Transformz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                    | j                  |d      }|y| j                  j                  j                  }|j                  d|j
                  d|j                  d|j                  d|j                  d|j                  d|j                  d	|j                  d
i}|| j                  j                  j                  j                  k(  r| j                  |      S |j                  |d      S )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   z(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                 f    | j                  |d      }| j                  |d      }||y||kD  rdS dS )N!transferResults.objectsFoundCount"transferResults.objectsCopiedCountr,   zCompleted with errorsr.   r0   )r   r>   objects_foundobjects_copieds       r'   r<   z-OfflineImportPrinter._check_completion_statusj   sZ    OO CM __ DN  6 >) 	  &r)   c                     | j                  |d      }| j                  |d      }||yt        j                  |       dt        j                  |       S )NpreparedBytesCountallocatedBytesCountr,    of )r0   r   TransformSize)r   r>   r   bytes_allocateds       r'   r   z(OfflineImportPrinter._get_bytes_prepared{   sn    __ 4N oo 5O !8 ++N;
<
!//@A	Cr)   c                     | j                  |d      }| j                  |d      }||yt        j                  |j                  j                         dt        j                  |j                  j
                         S )Nz transferResults.bytesCopiedCountztransferResults.bytesFoundCountr,   rJ   )r0   r   rK   transferResultsbytesCopiedCountbytesFoundCount)r   r>   bytes_copiedbytes_founds       r'   r   z+OfflineImportPrinter._get_bytes_transferred   s    ?? BL // AK {2 ++,B,R,R,c,cd
e
!//0F0V0V0f0fgh	jr)   c                     | j                  |d      }| j                  |d      }||y|j                  j                   d|j                  j                   dS )NrC   rB   r,   rJ   z objects)r0   rN   objectsCopiedCountobjectsFoundCount)r   r>   rF   rE   s       r'   r   z-OfflineImportPrinter._get_objects_transferred   sq    __ DN OO CM !6 "11DD
ET!11CC
DH	Nr)   c                 2    | j                  |d      }|r|S dS )Nzdestination.outputBucketr,   rD   )r   r>   r    s      r'   r   z%OfflineImportPrinter._get_destination   s%    // :K &;.3.r)   c                 Z    | j                  |d      }|rt        j                  |d      S y)NztransferResults.startTime%B %d, %Y, %I:%M %p %Zformatr,   r0   r   TransformDate)r   r>   r!   s      r'   r   z$OfflineImportPrinter._get_start_time   s9     ;J --
5  r)   c                 Z    | j                  |d      }|rt        j                  |d      S y)NztransferResults.endTimerX   rY   r,   r[   )r   r>   r"   s      r'   r   z"OfflineImportPrinter._get_end_time   s9     9H --
3  r)   c                 2    | j                  |d      }|r|S dS )Nz%transferResults.applianceFilesInfoUrir,   rD   )r   r>   r#   s      r'   r   z%OfflineImportPrinter._get_found_files   s%    // GK &;.3.r)   c                 2    | j                  |d      }|r|S dS )NztransferResults.errorLogr,   rD   )r   r>   r$   s      r'   r   z'OfflineImportPrinter._get_missing_files   s%    OO :M *=2s2r)   c                 X    |j                  d      }|D ]  }t        ||d      }| y |S )zHResponsible for returning an attribute (might be nested) from an object..N)splitgetattr)r   obj	attribute
attributess       r'   r0   zOfflineImportPrinter._get_value   s7    %J	CD)c	   Jr)   N)__name__
__module____qualname____doc__r   GetMessagesModuler1   r(   r   r<   r   r   r   r   r   r   r   r   r0    r)   r'   r	   r	      sW    B#T##$7D(-/^+8"   //3r)   r	   N)
rj   googlecloudsdk.api_lib.utilr   googlecloudsdk.core.resourcer   r   r   OFFLINE_IMPORT_PRINTER_FORMATCustomPrinterBaser	   rl   r)   r'   <module>rq      s3    0 , < : ; !7 ~.@@ ~r)   