
    +                        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SKJr  SSS.r\R2                  " \R4                  R6                  5      \R8                   " S S\R:                  5      5       5       r\R2                  " \R4                  R>                  \R4                  R@                  5       " S S\5      5       r!g)zImport backend service command.    )absolute_import)division)unicode_literals)
exceptions)base_classes)base)flags)backend_services_utils)util)yaml_validator)
console_iozG        Imports a backend service's configuration from a file.
        z{        A backend service can be imported by running:

          $ {command} NAME --source=<path-to-file> --global
        )DESCRIPTIONEXAMPLESc                   l    \ rS rSrSr\rSr\S 5       r	\SS j5       r
\S 5       rS rS rS	 rS
 rSrg)ImportGA.     Import a backend service.

If the specified backend service already exists, it will be overwritten.
Otherwise, a new backend service will be created.
To edit a backend service you can export the backend service to a file,
edit its configuration, and then import the new configuration.
Fc                     U R                  5       [        R                   R                  :X  a  gU R                  5       [        R                   R                  :X  a  gg)z3Returns the API version based on the release track.alphabetav1)ReleaseTrackr   ALPHABETA)clss    .lib/surface/compute/backend_services/import.pyGetApiVersionImportGA.GetApiVersion<   sG     T..444				t0055	5    c                 L    [         R                  " SU R                  5       SUS9$ )z!Returns the resource schema path.computeBackendServicefor_help)export_utilGetSchemaPathr   )r   r$   s     r   r&   ImportGA.GetSchemaPathE   s,     $$3$$&(88M Mr   c                     [         R                  R                  USS9  [        R                  " XR                  SS95        g )Nimport)operation_typeTr#   )r	   #GLOBAL_REGIONAL_BACKEND_SERVICE_ARGAddArgumentr%   AddImportFlagsr&   )r   parsers     r   ArgsImportGA.ArgsK   s<    	--99x : )v'8'8$'8'GHr   c           	      $   UR                  5       S:X  ax  UR                  R                  nUR                  R                  R                  UR                  R                  UR                  UR                  UR                  5       US95      nOlUR                  R                  nUR                  R                  R                  UR                  R                  UR                  UR                  5       US95      n[        R                  " X%UUS5      $ )a  Sends a Backend Services patch request and waits for the operation to finish.

Args:
  client: The API client.
  resources: The resource parser.
  backend_service_ref: The backend service reference.
  replacement: The backend service to patch with.

Returns:
  The operation result.
compute.regionBackendServices)projectregionbackendServicebackendServiceResource)r3   r5   r6   zUpdating backend service)
Collectionapitools_clientregionBackendServicesPatchmessages(ComputeRegionBackendServicesPatchRequestr3   r4   NamebackendServices"ComputeBackendServicesPatchRequestr
   WaitForOperation)selfclient	resourcesbackend_service_refreplacementservice	operations          r   SendPatchRequestImportGA.SendPatchRequestQ   s     %%'+JJ&&<<g((>>DD
//
B
B)11(//0557%0	 C 23i &&66g((88>>
//
<
<)110557%0 = 23i "2293<3F3MO Or   c                    UR                  5       S:X  ai  UR                  R                  nUR                  R                  R                  UR                  R                  UR                  UR                  US95      nO]UR                  R                  nUR                  R                  R                  UR                  R                  UR                  US95      n[        R                  " X%UUS5      $ )a  Sends a Backend Services insert request and waits for the operation to finish.

Args:
  client: The API client.
  resources: The resource parser.
  backend_service_ref: The backend service reference.
  backend_service: The backend service to insert.

Returns:
  The operation result.
r2   )r3   r4   r5   )r3   r5   zCreating backend service)r7   r8   r9   Insertr;   )ComputeRegionBackendServicesInsertRequestr3   r4   r>   #ComputeBackendServicesInsertRequestr
   r@   )rA   rB   rC   rD   backend_servicerF   rG   s          r   SendInsertRequestImportGA.SendInsertRequests   s     %%'+JJ&&<<g((>>EE
//
C
C)11(//, D ./i &&66g((88??
//
=
=)11, > ./i
 "2293<3F3MO Or   c                 F   / nUR                   (       d  UR                  S5        UR                  (       d  UR                  S5        UR                  (       d  UR                  S5        UR                  (       d  UR                  S5        UR
                  (       d  UR                  S5        UR                  (       d  UR                  S5        UR                  (       d  UR                  S5        UR                  (       d  UR                  S5        UR                  (       a  UR                  nUR                  c  UR                  S	5        UR                  c  UR                  S
5        UR                  c  UR                  S5        UR                  (       d  UR                  S5        UR                  (       d  UR                  S5        UR                  c  UR                  S5        UR                   c  UR                  S5        OUR                  S5        UR"                  (       d  UR                  S5        U$ UR"                  nUR$                  (       d  UR                  S5        UR&                  (       d  UR                  S5        U$ UR&                  nUR(                  (       d  UR                  S5        UR*                  (       a.  UR*                  R,                  (       d  UR                  S5        U$ UR*                  (       d  UR                  S5        U$ )zRetrieves a list of fields to clear for the backend service being inserted.

Args:
  backend_service: The backend service being inserted.

Returns:
  The the list of fields to clear for a GA resource.
securitySettingslocalityLbPolicylocalityLbPoliciescircuitBreakersconsistentHashoutlierDetectioncustomRequestHeaderscustomResponseHeaderszcdnPolicy.defaultTtlzcdnPolicy.clientTtlzcdnPolicy.maxTtlzcdnPolicy.negativeCachingPolicyz%cdnPolicy.bypassCacheOnRequestHeaderszcdnPolicy.serveWhileStalezcdnPolicy.requestCoalescing	cdnPolicyhaPolicyzhaPolicy.fastIPMovezhaPolicy.leaderzhaPolicy.leader.backendGroupz(haPolicy.leader.networkEndpoint.instancezhaPolicy.leader.networkEndpoint)rR   appendrS   rT   rU   rV   rW   rX   rY   rZ   
defaultTtl	clientTtlmaxTtlnegativeCachingPolicybypassCacheOnRequestHeadersserveWhileStalerequestCoalescingr[   
fastIPMoveleaderbackendGroupnetworkEndpointinstance)rA   rN   cleared_fields
cdn_policy	ha_policyre   s         r   GetClearedFieldListImportGA.GetClearedFieldList   s|    N
 ++./++./--01**-.)),-++.///230034  ",,j				&45				%34				"01--?@33EF		#	#	+9:		%	%	-;<K(##J'  "**i!!34/0  !!""


 >
?!!&*@*@*I*I


 J
K  ''


 A
Br   c                 :   [         R                  " U R                  5       5      nUR                  nUR                  n[
        R                  R                  UU[        R                  " U5      S9n[        R                  " UR                  =(       d    SSS9n [        R                  " UR                  R                   UU R#                  5       S9n [,        R.                  " X55      n	X:X  a  g [        R8                  " SR;                  UR=                  5       5      SS	9  U	R>                  Ul        U	R@                  Ul         U RC                  U5      nURD                  RG                  U5         U RI                  X4UU5      sS S S 5        $ ! [$        R&                   a$  n[(        R&                  " [+        U5      5      eS nAff = f! [0        R2                   a/  n
U
R4                  S:w  a  U
eU R7                  X4UU5      s S n
A
$ S n
A
ff = f! , (       d  f       g = f)
N)scope_lister-F)binary)message_typestreamschema_pathi  z*Backend Service [{0}] will be overwritten.T)messagecancel_on_no)%r   ComputeApiHolderr   rB   rC   r	   r+   ResolveAsResourcecompute_flagsGetDefaultScopeListerr   ReadFromFileOrStdinsourcer%   Importr;   r"   r&   r   ValidationErrorr   strr
   SendGetRequestapitools_exceptions	HttpErrorstatus_coderO   PromptContinueformatr=   idfingerprintrl   r8   IncludeFieldsrH   )rA   argsholderrB   rC   rD   datarN   ebackend_service_olderrorri   s               r   RunImportGA.Run   s   **4+<+<+>?F]]F  I 	11CC&<<VD 	D 	F  ))$++*<UKD/#**55((*,o52AA
' -=EE$$&( -//O"5"A"AO --o>N				-	-n	=""66I#24 
>	=? )) /&&s1v../ (( 5			c	!##F7J$35 5	50 
>	=sB   8F G .HGF>>GH	$H>H	H	
H N)F)__name__
__module____qualname____firstlineno____doc__DETAILED_HELPdetailed_help_support_negative_cacheclassmethodr   r&   r/   rH   rO   rl   r   __static_attributes__r   r   r   r   r   .   sl      -!  M M
 I I
 ODO@AF34r   r   c                       \ rS rSrSrSrg)ImportAlphaBetai  r   r   N)r   r   r   r   r   r   r   r   r   r   r     s    r   r   N)"r   
__future__r   r   r   apitools.base.pyr   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer	   ry   3googlecloudsdk.command_lib.compute.backend_servicesr
   !googlecloudsdk.command_lib.exportr   r%   googlecloudsdk.corer   googlecloudsdk.core.consoler   r   ReleaseTracksr   GAUniverseCompatibleUpdateCommandr   r   r   r   r   r   r   <module>r      s    & &  ' > 7 ( 9 E V E A . 2		 D%%(()Y4t!! Y4  *Y4x D%%**D,=,=,C,CDh  Er   