
                            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	d
dZd Z ej                  ej                   j"                         G d dej$                               Zee_         ej                  ej                   j*                         G d de             Zee_         ej                  ej                   j.                         G d de             Zee_        y)z0Command for starting async replication on disks.    )absolute_import)division)unicode_literals)base_classes)base)flagszBStart asynchronous replication on a Compute Engine persistent diskz        *{command}* starts async replication on a Compute Engine persistent
        disk. This command must be invoked on the primary disk and
        `--secondary-disk` must be provided.
        a          Start replication from the primary disk 'my-disk-1' in zone us-east1-a
        to the secondary disk 'my-disk-2' in zone us-west1-a:

          $ {command} my-disk-1 --zone=us-east1-a --secondary-disk=my-disk-2 --secondary-disk-zone=us-west1-a
        )briefDESCRIPTIONEXAMPLESc                     t         j                  j                  | d       d}t         j                  j                  | |d       t	        j
                  | |       y)z5Add arguments used for parsing in all command tracks.T)scope_requiredzSECONDARY DISK)categoryr   N)StartAsyncReplication	disks_argAddArgumentsecondary_disk_argdisks_flagsAddSecondaryDiskProject)parsersecondary_disk_categorys     4lib/surface/compute/disks/start_async_replication.py_CommonArgsr   -   sU    !!--fT-J,**66.t 7  %%f.EF    c                   D    e Zd ZdZed        Zd Zedd       Zd Zd Z	y)	r   ;Start Async Replication on Compute Engine persistent disks.c                     t        j                  d      t        _        t        j                  d      t        _        t        |       y NF)pluralT)requiredr   MakeDiskArgr   r   MakeSecondaryDiskArgr   r   clsr   s     r   ArgszStartAsyncReplication.Args;   5    &1&=&=U&K#/:/O/O0,r   c                     d }|j                   rGt        |dd       }| j                  j                  ||j                  |      }|r|j                         S y )Nsecondary_disk_project)source_project)secondary_diskgetattrr   ResolveAsResource	resourcesSelfLink)selfargscompute_holdersecondary_disk_refr(   s        r   GetAsyncSecondaryDiskUriz.StartAsyncReplication.GetAsyncSecondaryDiskUriB   sc    &t-EtL22DD
((9O E  
!**,,r   c                 J    t        j                  | j                         |      S N)r   ComputeApiHolderReleaseTrack)r$   no_https     r   _GetApiHolderz#StartAsyncReplication._GetApiHolderM   s    (()9)9);WEEr   c                 $    | j                  |      S r5   _Runr/   r0   s     r   RunzStartAsyncReplication.RunQ       99T?r   c                 "   | j                         }|j                  }t        j                  j	                  ||j
                  t        j                  |            }d }| j                  ||      }|j                         dk(  ru|j                  j                  |j                         |j                  |j                  |j                  j                  |            }|j                   j"                  d|f}n|j                         dk(  rt|j                  j%                  |j                         |j                  |j&                  |j                  j)                  |            }|j                   j*                  d|f}|j-                  |g      S )N)scope_listerzcompute.disks)asyncSecondaryDisk)diskprojectzone!disksStartAsyncReplicationRequestr   zcompute.regionDisks)rC   rD   region'regionDisksStartAsyncReplicationRequest)r9   clientr   r   r,   r-   r   GetDefaultScopeListerr3   
Collectionmessages(ComputeDisksStartAsyncReplicationRequestNamerD   rE   !DisksStartAsyncReplicationRequestapitools_clientdisks.ComputeRegionDisksStartAsyncReplicationRequestrG   'RegionDisksStartAsyncReplicationRequestregionDisksMakeRequests)r/   r0   r1   rI   disk_refrequestsecondary_disk_uris          r   r<   zStartAsyncReplication._RunT   st   '')N""F$..@@  008 A :H
 G66t^L/HH}}""}},2OO,,!3 - 5 I 6g ''--/FPg				"7	7NN}}""28//22!3 3 5 O 6g ''335Lgy))r   N)F)
__name__
__module____qualname____doc__classmethodr%   r3   r9   r>   r<    r   r   r   r   7   s<    C 	 F F*r   r   c                   &    e Zd ZdZed        Zd Zy)StartAsyncReplicationBetar   c                     t        j                  d      t        _        t        j                  d      t        _        t        |       y r   r    r#   s     r   r%   zStartAsyncReplicationBeta.Args|   r&   r   c                 $    | j                  |      S r5   r;   r=   s     r   r>   zStartAsyncReplicationBeta.Run   r?   r   NrY   rZ   r[   r\   r]   r%   r>   r^   r   r   r`   r`   x       C r   r`   c                   &    e Zd ZdZed        Zd Zy)StartAsyncReplicationAlphar   c                     t        j                  d      t        _        t        j                  d      t        _        t        |       y r   r    r#   s     r   r%   zStartAsyncReplicationAlpha.Args   r&   r   c                 $    | j                  |      S r5   r;   r=   s     r   r>   zStartAsyncReplicationAlpha.Run   r?   r   Nrc   r^   r   r   rf   rf      rd   r   rf   N)r\   
__future__r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer   (googlecloudsdk.command_lib.compute.disksr   DETAILED_HELPr   ReleaseTracksr7   GACommandr   detailed_helpBETAr`   ALPHArf   r^   r   r   <module>ru      s    7 &  ' 7 ( 4 I 	M		&G D%%(():*DLL :* *:*z '4  # D%%**+ 5  , +8  ' D%%++,!6  - ,9  (r   