
                         T   S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  S rS rSS jrS rS r\R:                  \R<                  " \R>                  R@                  5       " S S\RB                  5      5       5       r"g)z2Command to import an HA Controller to a YAML file.    )absolute_import)division)unicode_literals)
exceptions)base_classes)utils)base)util)log)yaml)
console_ioc                      SSSS.$ )NzImport an HA Controller.zh          Imports an High Availability (HA) Controller's configuration from a
          file.
          z          An HA Controller can be imported by running:

            $ {command} my-ha-controller --source=<path-to-file>
          )briefDESCRIPTIONEXAMPLES r       ,lib/surface/compute/ha_controllers/import.py_DetailedHelpr   !   s     %

 r   c                 B    U [         R                  R                  :X  a  gg)z.Returns the API version for the HA Controller.alphaN)r	   ReleaseTrackALPHA)release_tracks    r   _GetApiVersionr   3   s    d''--- .r   c                 B    [         R                  " S[        U 5      SUS9$ )z.Returns the schema path for the HA Controller.computeHaControllerfor_help)export_utilGetSchemaPathr   )r   r    s     r   _GetSchemaPathr#   9   s&    		"	"]#	
 r   c                 f    UR                  5        H  u  p#U R                  U5      nX4:w  d  M    g   g)zRCompares existing HA Controller with the imported one to see if a patch is needed.TF)itemsget)old_ha_controllernew_ha_controller
field_name	new_value	old_values        r   _CompareHaControllersr,   C   s6    0668j!%%j1I  9 
r   c                     [         R                  " U SS9n[        R                  " U5      n [        R
                  " U [        U5      5        [        R                  " U 5      n U $ )z6Reads, validates and fixes structure of the YAML data.F)binary)	r   ReadFromFileOrStdinr   loadr!   ValidateYAMLr#   r   FixImportStructure)	yaml_datar   datas      r   _ReadResourceFromYamlr5   L   sQ    		'	'	%	@$iio). &&y1)	r   c                   .    \ rS rSrSr\S 5       rS rSrg)ImportW   zImport an HA Controller.

Import an High Availability (HA) Controller, which helps
ensure that a virtual machine (VM) instance remains operational by
automatically managing failover across two zones.
c                 >   [         R                  R                  U 5        [        R                  " U [         R
                  R                  R                  R                  5       5        [        R                  " U [        [         R
                  R                  SS95        g )NTr   )r	   
ASYNC_FLAGAddToParserr   AddHaControllerNameArgToParserr   r   namelowerr!   AddImportFlagsr#   )parsers    r   ArgsImport.Argsa   sk    OO'	((!!'',,224 t0066FHr   c           	      d   [         R                  " U R                  5       5      nUR                  nUR                  R
                  R                  5       n[        UR                  =(       d    SU R                  5       5      n[        R                  " UR                  R                  [        R                  " U5      S9nUR                  5       Ul        UR"                  Ul         [$        R&                  " X45      n[        R(                  " [        R*                  " U[-        U R                  5       5      S95      n[9        Xu5      n	U	(       d=  [:        R<                  R?                  SRA                  UR                  5       5      5        g [B        RD                  " SRA                  UR                  5       5      SS9  [$        RF                  " X&XAR6                  5      $ ! [.        R0                   a=  nUR2                  S:w  a  Ue[$        R4                  " X&XAR6                  5      s S nA$ S nAff = f)	N-)message_typestream)messageschema_pathi  z@No changes detected in the HA Controller [{0}]. Skipping update.z(HA Controller [{0}] will be overwritten.T)rG   cancel_on_no)$r   ComputeApiHolderr   clientCONCEPTSha_controllerParser5   sourcer!   r7   messagesr   r   dumpNamer=   region	api_utilsGetr0   Exportr#   apitools_exceptions	HttpErrorstatus_codeInsertasync_r,   r   statusPrintformatr   PromptContinuePatch)
selfargsholderrK   ha_controller_refr3   rM   r'   errorhas_diffs
             r   Run
Import.Runj   s   **4+<+<+>?F]]F3399; &dkk&8S$:K:K:MNI&&__11yy#M +//1M,33M#--B))


'():):)<= %%6BH 
jj
L6#((*+ ;CC""$
 	 ??0++ 3 (( 			c	!
!2KK 	s   &AG H/22H*$H/*H/r   N)	__name__
__module____qualname____firstlineno____doc__staticmethodrA   rg   __static_attributes__r   r   r   r7   r7   W   s"     H H2r   r7   N)F)#rm   
__future__r   r   r   apitools.base.pyr   rW   googlecloudsdk.api_lib.computer   -googlecloudsdk.api_lib.compute.ha_controllersr   rT   googlecloudsdk.callioper	   1googlecloudsdk.command_lib.compute.ha_controllers!googlecloudsdk.command_lib.exportr
   r!   googlecloudsdk.corer   r   googlecloudsdk.core.consoler   r   r   r#   r,   r5   DefaultUniverseOnlyReleaseTracksr   r   ImportCommandr7   r   r   r   <module>r|      s     9 &  ' > 7 L ( C A # $ 2$ D%%++,CT C - Cr   