
                         b   d Z ddlmZ ddlmZ ddlmZ ddl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Z ej,                  ej.                  j0                  ej.                  j2                  ej.                  j4                         G d dej6                               Zy)z Export forwarding rules command.    )absolute_import)division)unicode_literalsN)base_classes)forwarding_rules_utils)base)flags)util)fileszE        Exports a forwarding rule's configuration to a file.
        zw        A forwarding rule can be exported by running:

          $ {command} NAME --destination=<path-to-file>
        )DESCRIPTIONEXAMPLESc                   P    e Zd ZdZdZeZed        Zedd       Z	ed        Z
d Zy)ExportzExport a forwarding rule.

  Exports a forwarding rule's configuration to a file.
  This configuration can be imported at a later time.
  Nc                     | j                         t        j                   j                  k(  ry| j                         t        j                   j                  k(  ryy)z3Returns the API version based on the release track.alphabetav1)ReleaseTrackr   ALPHABETA)clss    .lib/surface/compute/forwarding_rules/export.pyGetApiVersionzExport.GetApiVersion8   sG     T..444				t0055	5    c                 P    t        j                  d| j                         d|      S )z!Returns the resource schema path.computeForwardingRulefor_help)export_utilGetSchemaPathr   )r   r   s     r   r!   zExport.GetSchemaPathA   s,     $$3$$&(88M Mr   c                     t        j                         | _        | j                  j                  |d       t	        j
                  || j                  d             y )Nexport)operation_typeTr   )r	   ForwardingRuleArgumentFORWARDING_RULE_ARGAddArgumentr    AddExportFlagsr!   )r   parsers     r   ArgszExport.ArgsG   sJ    #::<C''x'Hvs'8'8$'8'GHr   c                 :   t        j                  | j                               }|j                  }| j                  j                  ||j                  t        j                  |            }t        j                  ||      }|j                  rOt        j                  |j                        5 }t        j                  ||| j!                                d d d        y t        j                  |t"        j$                  | j!                                y # 1 sw Y   y xY w)N)scope_lister)messagestreamschema_path)r   ComputeApiHolderr   clientr&   ResolveAsResource	resourcescompute_flagsGetDefaultScopeListerutilsSendGetRequestdestinationr   
FileWriterr    r   r!   sysstdout)selfargsholderr1   forwarding_rule_refforwarding_ruler.   s          r   Runz
Export.RunM   s    **4+<+<+>?F]]F22DD"88@ E B
 **63FGOD,,-?"('+'9'9';	= .-
  #

%)%7%7%9; .-s   ,'DD)F)__name__
__module____qualname____doc__r&   DETAILED_HELPdetailed_helpclassmethodr   r!   r*   rA    r   r   r   r   ,   sW     -  M M
 I I
;r   r   )rE   
__future__r   r   r   r:   googlecloudsdk.api_lib.computer   r   r6   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer	   r4   3googlecloudsdk.command_lib.compute.forwarding_rules!googlecloudsdk.command_lib.exportr
   r    googlecloudsdk.core.utilr   rF   ReleaseTracksr   GAr   r   Commandr   rI   r   r   <module>rT      s    ' &  ' 
 7 J ( E E A *
		 D%%(($*;*;*@*@%%++-2;T\\ 2;-2;r   