
    ^                         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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 G d dej0                        Z G d de      Z G d de      Zy)zService-specific printer.    )absolute_import)division)print_function)unicode_literalsN)service)threat_detection_util)k8s_object_printer_util)revision_printer)traffic_printer)console_attr)custom_printer_baser   zrun.googleapis.com/presetsc                   >    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zy
)ServicePrinterzPrints the run Service in a custom human-readable format.

  Format specific to Cloud Run services. Only available on Cloud Run commands
  that print services.
  Fc                     d}|j                   d}n%dj                  |j                   j                        }t        j                         j                  |      S )N zUnknown revisionzRevision {})statusformatlatestCreatedRevisionNamer   GetConsoleAttr	Emphasize)selfrecordheaders      >lib/googlecloudsdk/command_lib/run/printers/service_printer.py_GetRevisionHeaderz!ServicePrinter._GetRevisionHeader-   sJ    F}}!f##FMM$K$KLf&&(226::    c           	         d}|j                   j                  t        j                  d      dk(  rd}t	        j
                  | j                  r| j                  |      nd| j                  |      t        j                  |j                  j                        t        j                  j                  |j                  |      g      S )zAdds printers for the revision.Fr   manualT)annotationsgetr   SERVICE_SCALING_MODE_ANNOTATIONcpLineswith_presets_GetPresetInfor   k8s_util	GetLabelstemplatelabelsr
   RevisionPrinterTransformSpec)r   r   manual_scaling_enableds      r   _RevisionPrintersz ServicePrinter._RevisionPrinters5   s    "wFFK	  $88'+'8'8F#b'6??112((66OO3	
	  r   c                    t        j                  dt        j                  |      fg      g}| j	                  |      }|r)t        j                  d|fg      }|j                  |       t        j                  |      }|0t        j                  d|fg      }d|_        |j                  |       t        j                  |      }|)t        j                  d|fg      }|j                  |       |j                  t        j                  dt        j                  |j                        fg             t        j                  |      S )zAdds service-level values.zBinary AuthorizationScalingzBreakglass JustificationFDescriptionzThreat Detection)r"   Labeledr&   GetBinAuthzPolicy_GetScalingModeappendGetBinAuthzBreakglass
skip_emptyGetDescription	crtd_utilPrintThreatDetectionStatethreat_detection_stateSection)	r   r   r)   scaling_modescaling_mode_labelbreakglass_valuebreakglass_labeldescriptiondescription_labels	            r   _GetServiceSettingsz"ServicePrinter._GetServiceSettingsF   sK    	

#X%?%?%GH
 	F ''/L::l
#' 	 mm&'55f=# %'7
8% 	 %*!mm$%))&1K**+
&& 	 mm%&
MM


"3311
 		 ::fr   c                    |j                   j                  t              }|r/	 t        j                  |      }t        |t              r|rg }|D ]  }t        |t              s|j                  d      s&|j                  d      }g }|j                         D ]_  \  }}	|dk(  r<t        |	t              r,|	j                         D ]  \  }
}|j                  |
|f        G|dk7  sM|j                  ||	f       a |j                  |t        j                  |      f        |r+t        j                  dt        j                  |      fg      S yy# t        t        f$ r Y yw xY w)z%Adds preset information if available.typeconfigPresetsr   )r   r    PRESET_ANNOTATIONjsonloads
isinstancelistdictitemsr4   r"   r1   Table
ValueError	TypeError)r   r   preset_annotationpresets_listpreset_sectionsppreset_typeparamskeyvalue
config_keyconfig_values               r   r%   zServicePrinter._GetPresetInfoq   s8   **../@Azz"34lD)l/a!T"quuV}EE&Mkf !	*#u(?z%'>27++-.j,MM:|"<= 3@F]--e- !* $$k2::f3E%FG   ::	288O+DEFGG  )$ s&   A E %E 7A/E 'A)E E%$E%c                 ,    t        j                  |      S )Nr&   BuildHeaderr   r   s     r   r]   zServicePrinter.BuildHeader   s    ''r   c                    |j                   j                  t        j                  d      }|dk(  r/|j                   j                  t        j                  d      }d|z  S |j                   j                  t        j
                  d      }|j                   j                  t        j                  d      }|r	d|d|dS d|z  S )	z(Returns the scaling mode of the service.r   r   zManual (Instances: %s)0zAuto (Min: z, Max: )zAuto (Min: %s))r   r    r   r!    MANUAL_INSTANCE_COUNT_ANNOTATIONSERVICE_MIN_SCALE_ANNOTATIONSERVICE_MAX_SCALE_ANNOTATION)r   r   r<   instance_countmin_instance_countmax_instance_counts         r   r3   zServicePrinter._GetScalingMode   s    %%))//L x))--

2
2Bn &66!--11

.
. "--11

.
. 

 	
  222r   c                    | j                  |      }| j                  |      t        j                  |j                        g}|j                  dt        j                  |      d||j                         rdndt        j                  t        j                  |      | j                  |      fg      t        j                  |      g       t        j                  |      S )z@Transform a service into the output structure of marker classes. r   )rB   r]   r&   r'   r)   extendr   TransformRouteFieldsWillPrintOutputr"   r1   LastUpdatedMessager-   FormatReadyMessager#   )r   r   service_settingsliness       r   	TransformzServicePrinter.Transform   s    //7 6==)E 
LL,,V4 002


''/""6*
  	 	##F+  88E?r   N)__name__
__module____qualname____doc__r$   r   r-   rB   r%   r]   r3   rq    r   r   r   r   $   s2     ,;")V8(32r   r   c                       e Zd ZdZdZy)ServicePrinterAlphaz9Prints the run Service in a custom human-readable format.TN)rr   rs   rt   ru   r$   rv   r   r   rx   rx      s
    A,r   rx   c                       e Zd ZdZd Zy)MultiRegionServicePrinterzDPrints the run MultiRegionService in a custom human-readable format.c                 0    t        j                  |d      S )NT)is_multi_regionr\   r^   s     r   r]   z%MultiRegionServicePrinter.BuildHeader   s    ==r   N)rr   rs   rt   ru   r]   rv   r   r   rz   rz      s
    L>r   rz   )ru   
__future__r   r   r   r   rH   googlecloudsdk.api_lib.runr   googlecloudsdk.command_lib.runr   r8   'googlecloudsdk.command_lib.run.printersr	   r&   r
   r   googlecloudsdk.core.consoler   googlecloudsdk.core.resourcer   r"   SERVICE_PRINTER_FORMATrG   CustomPrinterBaser   rx   rz   rv   r   r   <module>r      sg      &  % '  . M W D C 4 B" 0 XR)) Xv. > >r   