
                         t   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 ej.                  ej0                  j2                         G d dej4                               Z ej.                  ej0                  j8                         G d de             Zy)z<Implements command to list ongoing and completed patch jobs.    )absolute_import)division)unicode_literals)
list_pager)utils)base)
properties
   c                     d}| j                  dd      r| d   }n-| j                  dd      rt        j                  | d         }nd}t        |      |kD  r|d| dz   S |S )z(Returns the display name of a patch job.   displayName patchDeploymentN..)getosconfig_command_utilsGetResourceNamelen)resourcemax_lennames      0lib/surface/compute/os_config/patch_jobs/list.py_TransformPatchJobDisplayNamer      sl     '\\-$M"D||%r*!11(;L2MNDD$'I$7$x.4
ATA    c                 Z    d}| j                  dd      }t        |      |kD  r|d | dz   S |S )N   descriptionr   r   )r   r   )r   r   r   s      r   _TransformPatchJobDescriptionr   .   sE    ']B/+{#g- hw

 ?3>?r   c                     | j                  dd      }d| v r)t        | d   j                  dd            }|dk(  r|dkD  ry|S )	Nstater   instanceDetailsSummary instancesSucceededRebootRequired0	SUCCEEDEDr   "SUCCEEDED_INSTANCES_PENDING_REBOOT)r   int)r   r    num_instances_pending_reboots      r   _TransformStater(   5   sU    
,,w
#%)#&x0H'I'M'M*C(1 $2  <q @1	,r   c                 h    d| vry| d   }d}|D ]   }|t        |j                  |d            z  }" |S )z+Sums up number of instances in a patch job.r!   Nr   )r&   r   )r   instance_details_summarynum_instancesstatuss       r   _TransformNumInstancesr-   A   sK    X-%&>?-(fS155fa@AAM )	r   c                       fd}|S )zFReturns a transformation function from a patch job resource to an URI.c                     j                  | j                  t        j                  j                  j
                  j                  | j                  dd      }|j                         S )N)projects	patchJobszosconfig.projects.patchJobs)params
collection)Parser   r	   VALUEScoreproject	GetOrFailSelfLink)r   refregistrys     r   UriFuncz _MakeGetUriFunc.<locals>.UriFuncP   sW    
.."))..66@@!
 1  2C <<>r    )r;   r<   s   ` r   _MakeGetUriFuncr>   M   s     
.r   c                 T   t         j                  j                  | t               | j                  j                  d       | j                  j                  t        t        t        t        d       t        j                  |      }| j                  j                  t        |             y)z.Parses input flags and sets up output formats.z
        table(
          name.basename():label=ID,
          display_name():label=NAME,
          description(),
          create_time,
          update_time,
          state(),
          targeted_instances()
        )
      )display_namer   r    targeted_instancesN)r   
LIMIT_FLAG
SetDefault_DEFAULT_LIMITdisplay_info	AddFormatAddTransformsr   r   r(   r-   osconfig_api_utilsGetRegistry
AddUriFuncr>   )parserrelease_trackr;   s      r   _ArgsrM   ]   s     //V^4 
!
 
 	##322	%   ++M:(  !:;r   c                   &    e Zd ZdZed        Zd Zy)ListList ongoing and completed patch jobs.

  ## EXAMPLES

  To list patch jobs in the current project, run:

        $ {command}

  c                 L    t        | t        j                  j                         y N)rM   r   ReleaseTrackGArK   s    r   Argsz	List.Args   s    	&$##&&'r   c                    t         j                  j                  j                  j	                         }| j                         }t        j                  |      }t        j                  |      }|j                  |j                  t        j                  |            }t        j                  |j                  ||j                   t        j"                  |      dd      S )N)pageSizeparentr1   rX   )limit
batch_sizefieldbatch_size_attribute)r	   r5   r6   r7   r8   rS   rH   GetClientInstanceGetClientMessages$OsconfigProjectsPatchJobsListRequest	page_sizer   GetProjectUriPathr   YieldFromListprojects_patchJobsrZ   GetListBatchSize)selfargsr7   rL   clientmessagesrequests          r   RunzList.Run   s    $$,,668G%%'M11-@F!33MBH;;%77@ < BG ##!!jj)::4@' r   N)__name__
__module____qualname____doc__staticmethodrV   rk   r=   r   r   rO   rO   v   s      ( (r   rO   c                        e Zd ZdZed        Zy)ListBetarP   c                 L    t        | t        j                  j                         y rR   )rM   r   rS   BETArU   s    r   rV   zListBeta.Args   s    	&$##(()r   N)rl   rm   rn   ro   rp   rV   r=   r   r   rr   rr      s     * *r   rr   N)ro   
__future__r   r   r   apitools.base.pyr   (googlecloudsdk.api_lib.compute.os_configr   rH   googlecloudsdk.callioper   ,googlecloudsdk.command_lib.compute.os_configr   googlecloudsdk.corer	   rD   r   r   r(   r-   r>   rM   ReleaseTracksrS   rT   ListCommandrO   rt   rr   r=   r   r   <module>r}      s    C &  ' ' P ( X * B?		 <2 D%%(()!4 ! *!H D%%**+*t * ,*r   