
                         ~   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mZ	 ddl
mZ ddlmZ ddlmZ d	Zd
ZdZdZdZd Zd Zd Zd Zd Z ej4                  ej6                  j8                         G d dej:                               Z ej4                  ej6                  j>                         G d de             Z y)z-Implements command to list patch deployments.    )absolute_import)division)unicode_literals)
list_pager)utils)base)
propertiesz---oneTimeSchedulerecurringSchedulelastExecuteTimenextExecuteTimec                 6    | j                  t        t              S N)get_LAST_EXECUTE_TIME_DEFAULT_NO_VALUE)resources    7lib/surface/compute/os_config/patch_deployments/list.py_TransformLastRunr   "   s    	(*;	<<    c                     t         | v r;| j                  t        d      rt        S | t            }|j                  dt              S t        | v r#| t           }|j                  t
        t              S t        S )zJReturns the timestamp of the next scheduled run for this patch deployment. executeTime)_ONE_TIME_SCHEDULEr   r   r   _RECURRING_SCHEDULE_NEXT_EXECUTE_TIME)r   schedules     r   _TransformNextRunr   &   sl     8#||&+ ,-h\\-):;;h&+,H<<*,=>>r   c                 X   t         | v rd| t            d   z   S t        | v rd}| t           }|d   dk(  r|j                  dd      S |d   dk(  r|j                  d	d      S |d   d
k(  r9|d   j                  dd      r|j                  dd      S |j                  dd      S t        S t        S )z>Returns a string description of the patch deployment schedule.zOnce: Scheduled for r   zRecurring - {} {}	frequencyDAILYDailyr   WEEKLYWeeklyMONTHLYmonthlyweekDayOfMonthMonthlyzon specific day(s)zon specific date(s))r   r   formatr   r   )r   output_formatr   s      r   _TransformFrequencyr+   8   s     8#!H-?$@$OOOh&'M+,H'!!'2..	+	(	*!!(B//	+	)	+	)		 	 !12	6##I/CDD##I/DEEr   c                       fd}|S )zMReturns a transformation function from a patch deployment resource to an URI.c                     j                  | j                  t        j                  j                  j
                  j                  | j                  dd      }|j                         S )N)projectspatchDeploymentsz"osconfig.projects.patchDeployments)params
collection)Parsenamer	   VALUEScoreproject	GetOrFailSelfLink)r   refregistrys     r   UriFuncz _MakeGetUriFunc.<locals>.UriFuncR   sW    
.."))..66@@ (
 8  9C <<>r    )r:   r;   s   ` r   _MakeGetUriFuncr=   O   s     
.r   c                    | j                   j                  d       | j                   j                  t        t        t
        d       t        j                  |      }| j                   j                  t        |             y)z.Parses input flags and sets up output formats.z
          table(
            name.basename(),
            last_run(),
            next_run(),
            frequency()
          )
        )last_runnext_runr    N)
display_info	AddFormatAddTransformsr   r   r+   osconfig_api_utilsGetRegistry
AddUriFuncr=   )parserrelease_trackr:   s      r   _ArgsrI   _   sl     	 !  	####&% 
  ++M:(  !:;r   c                   .    e Zd ZdZddiZed        Zd Zy)List$List patch deployments in a project.EXAMPLES^      To list all patch deployments in the current project, run:

          $ {command}
      c                 L    t        | t        j                  j                         y r   )rI   r   ReleaseTrackGArG   s    r   Argsz	List.Args   s    	&$##&&'r   c                    | j                         }t        j                  |      }t        j                  |      }t        j
                  j                  j                  j                         }|j                  |j                  t        j                  |            }|j                  }t        j                  |||j                   t        j"                  |      dd      S )N)pageSizeparentr/   rU   )limit
batch_sizefieldbatch_size_attribute)rP   rD   GetClientInstanceGetClientMessagesr	   r4   r5   r6   r7   +OsconfigProjectsPatchDeploymentsListRequest	page_sizeosconfig_command_utilsGetProjectUriPathprojects_patchDeploymentsr   YieldFromListrW   GetListBatchSize)selfargsrH   clientmessagesr6   requestservices           r   RunzList.Run   s    %%'M11-@F!33MBH$$,,668GBB%77@ C G ..G##jj)::4@ ' r   N)__name__
__module____qualname____doc__detailed_helpstaticmethodrS   rj   r<   r   r   rK   rK   s   s/    , 
- ( (r   rK   c                   (    e Zd ZdZddiZed        Zy)ListBetarL   rM   rN   c                 L    t        | t        j                  j                         y r   )rI   r   rP   BETArR   s    r   rS   zListBeta.Args   s    	&$##(()r   N)rk   rl   rm   rn   ro   rp   rS   r<   r   r   rr   rr      s*    , 
- * *r   rr   N)!rn   
__future__r   r   r   apitools.base.pyr   (googlecloudsdk.api_lib.compute.os_configr   rD   googlecloudsdk.callioper   ,googlecloudsdk.command_lib.compute.os_configr_   googlecloudsdk.corer	   r   r   r   r   r   r   r   r+   r=   rI   ReleaseTracksrP   rQ   ListCommandrK   rt   rr   r<   r   r   <module>r}      s    4 &  ' ' P ( X * & ) & & =$. <( D%%(()#4 # *#L D%%**+*t * ,*r   