
                            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d	lmZ dd
lmZ ddZ ej&                  ej(                  j*                        ej,                   G d dej.                                      Z ej&                  ej(                  j2                         G d de             Z ej&                  ej(                  j6                         G d de             Zddde_        y)zCreate resource policy command.    )absolute_import)division)unicode_literals)base_classes)utils)apis)base)flags)utilc                 :   t        j                  d|      }t        j                         j	                  |        t        j
                  |        t        j                  | ddddd       t        j                  | ||       | j                  j                  d       y)z?A helper function to build args based on different API version.computeschedulezWStart time for the disk snapshot schedule in UTC. For example, `--start-time="15:00"`.
zSnapshot scheduleT)flag_suffixstart_time_helpcadence_helpsupports_weeklysupports_hourlyN)
r   GetMessagesModuler
   MakeResourcePolicyArgAddArgumentAddCommonArgsAddCycleFrequencyArgsAddSnapshotScheduleArgsdisplay_infoAddCacheUpdater)parserapi_versionsupport_snapshot_regionmessagess       Alib/surface/compute/resource_policies/create/snapshot_schedule.py_CommonArgsr!      s    ##I{;(++F3f ' 2IJ%%d+    c                   .    e Zd ZdZed        Zd ZddZy)CreateSnapshotSchedule:Create a Compute Engine Snapshot Schedule Resource Policy.c                 :    t        | t        j                         y )N)r   r!   compute_apiCOMPUTE_BETA_API_VERSIONr   s    r    ArgszCreateSnapshotSchedule.Args5   s    K$H$HIr"   c                 $    | j                  |      S )N_Runselfargss     r    RunzCreateSnapshotSchedule.Run9   s    99T?r"   c                    t        j                  | j                               }|j                  }t	        j
                         j                  ||j                  t        j                  |j                              }|j                  j                  }t        j                  ||||      }|j                  ||j                  |j                        }|j                  j                   j"                  }	|j%                  |	d|fg      d   S )N)scope_lister)resourcePolicyprojectregionInsertr   )r   ComputeApiHolderReleaseTrackclientr
   r   ResolveAsResource	resourcescompute_flagsGetDefaultScopeListerr   r   MakeDiskSnapshotSchedulePolicy$ComputeResourcePoliciesInsertRequestr6   r7   apitools_clientresourcePoliciesMakeRequests)
r0   r1   r   holderr;   
policy_refr   resource_policycreate_requestservices
             r    r.   zCreateSnapshotSchedule._Run<   s    **4+<+<+>?F]]F,,.@@"88G A IJ
 }}%%H99D($;=OBB&""   C "N
 mm++<<G(N CDEaHHr"   NF)__name__
__module____qualname____doc__staticmethodr+   r2   r.    r"   r    r$   r$   0   s'     CJ JIr"   r$   c                   &    e Zd ZdZed        Zd Zy)CreateSnapshotScheduleBetar%   c                 <    t        | t        j                  d       y NT)r   r   r'   r*   s    r    r+   zCreateSnapshotScheduleBeta.ArgsU   s    88 $r"   c                 (    | j                  |d      S )NT)r   r-   r/   s     r    r2   zCreateSnapshotScheduleBeta.Run]   s    99 $   r"   N)rK   rL   rM   rN   rO   r+   r2   rP   r"   r    rR   rR   Q   s    B r"   rR   c                        e Zd ZdZed        Zy)CreateSnapshotScheduleAlphar%   c                 <    t        | t        j                  d       y rT   )r!   r(   COMPUTE_ALPHA_API_VERSIONr*   s    r    r+   z CreateSnapshotScheduleAlpha.Argsh   s    99 $&r"   N)rK   rL   rM   rN   rO   r+   rP   r"   r    rW   rW   d   s    B& &r"   rW   z;Create a Compute Engine Snapshot Schedule Resource Policy.
a  The following command creates a Compute Engine Snapshot Schedule Resource Policy with a daily snapshot taken at 13:00Z and a one day snapshot retention policy.

  $ {command} my-resource-policy --region=REGION --start-time=13:00 --daily-schedule --max-retention-days=1
)DESCRIPTIONEXAMPLESNrJ   )rN   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   r(   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper	   "googlecloudsdk.command_lib.computer
   r>   4googlecloudsdk.command_lib.compute.resource_policiesr   r!   ReleaseTracksr:   GAUniverseCompatibleCreateCommandr$   BETArR   ALPHArW   detailed_helprP   r"   r    <module>ri      s    & &  ' 7 ? , ( E F E,$ D%%(()IT// I  *I> D%%**+!7  ,$ D%%++,&"< & -&		(  $r"   