
                         0   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
 rS rSS jrS rS r\
R2                  \
R4                  " \
R6                  R8                  5       " S S\
R:                  5      5       5       rg)z2Command to import an HA Controller to a YAML file.    )
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   0   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    6   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)   @   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   _ReadResourceFromYamlr2   I   sQ    		'	'	%	@$iio). &&y1)	r   c                   .    \ rS rSrSr\S 5       rS rSrg)ImportT   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.Args^   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)rD   cancel_on_no)$r   ComputeApiHolderr   clientCONCEPTSha_controllerParser2   sourcer   r4   messagesr   r	   dumpNamer:   region	api_utilsGetr-   Exportr    apitools_exceptions	HttpErrorstatus_codeInsertasync_r)   r   statusPrintformatr
   PromptContinuePatch)
selfargsholderrH   ha_controller_refr0   rJ   r$   errorhas_diffs
             r   Run
Import.Rung   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__staticmethodr>   rd   __static_attributes__r   r   r   r4   r4   T   s"     H H2r   r4   N)F)rj   apitools.base.pyr   rT   googlecloudsdk.api_lib.computer   -googlecloudsdk.api_lib.compute.ha_controllersr   rQ   googlecloudsdk.callioper   1googlecloudsdk.command_lib.compute.ha_controllers!googlecloudsdk.command_lib.exportr   r   googlecloudsdk.corer   r	   googlecloudsdk.core.consoler
   r   r   r    r)   r2   DefaultUniverseOnlyReleaseTracksr   r   ImportCommandr4   r   r   r   <module>rx      s     9 ? 7 L ( C A # $ 2$ D%%++,CT C - Cr   