
                             S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSK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  \R0                   " S S\R2                  5      5       rSSS.\l        g)zBCommand for uploading a route policy into a Compute Engine router.    )absolute_import)division)unicode_literalsN)base_classes)messages)base)
exceptions)flags)yaml)filesc                   D    \ rS rSrSrSr\S 5       rS rS r	S r
S rS	rg)
UploadRoutePolicy$   z3Upload a route policy into a Compute Engine router.Nc                     [         R                  " 5       [        l        [        R                  R	                  USS9  UR                  SSS9  UR                  SSSS	9  UR                  S
SS/SS9  g )Nupload)operation_typez--policy-namez(Name of the route policy to add/replace.)helpz--file-nameTz*Local path to the file defining the policy)requiredr   z--file-formatjsonr   z(Format of the file passed to --file-name)choicesr   )r
   RouterArgumentr   
ROUTER_ARGAddArgumentadd_argument)clsparsers     2lib/surface/compute/routers/upload_route_policy.pyArgsUploadRoutePolicy.Args*   s    #(#7#7#9   ,,VH,M
H   9  
  7      c                 *   [         R                  " U R                  5       5      nUR                  n[        R
                  R                  UUR                  [        R                  " U5      S9nU R                  UR                  UR                  UR                  5      nU R                  UR                  U5        UR                   R"                  SUR                  R$                  " S0 UR'                  5       DSU0D64nUR)                  U/5      S   $ )zIssues the request necessary for uploading a route policy into a Router.

Args:
  args: contains arguments passed to the command.

Returns:
  The result of patching the router uploading the route policy.
)scope_listerUpdateRoutePolicyroutePolicyr    )r   ComputeApiHolderReleaseTrackclientr   r   ResolveAsResource	resourcescompute_flagsGetDefaultScopeListerParseRoutePolicyFromFile	file_namefile_formatr   EnsureSamePolicyNamepolicy_nameapitools_clientrouters&ComputeRoutersUpdateRoutePolicyRequestAsDictMakeRequests)selfargsholderr(   
router_refroute_policyrequests          r   RunUploadRoutePolicy.Run<   s     **4+<+<+>?F]]F"--??"88@ @ J 00((&//L 	d..= 	&&>> 	
!	
/;	
G y)!,,r    c                     UbP  [        US5      (       a?  XR                  :w  a0  [        R                  " SSR	                  XR                  5      5      e[        US5      (       d  Ub  Xl        g g g )Nnamezpolicy-namezIThe policy name provided [{0}] does not match the one from the file [{1}])hasattrr@   r	   BadArgumentExceptionformat)r7   r1   r;   s      r   r0   &UploadRoutePolicy.EnsureSamePolicyName]   sn    7<#@#@	))	)-- &.?.?@
 	

 <(([-D% .E(r    c                     U R                  X5      nSU;   a  US   n[        R                  " XCR                  5      nSU;   a  [        R
                  " US   5      Ul        U$ )Nresourcefingerprint)	ParseFilemessages_utilDictToMessageWithErrorCheckRoutePolicybase64	b64decoderG   )r7   
input_filer/   r   rF   r;   s         r   r-   *UploadRoutePolicy.ParseRoutePolicyFromFileh   sc    ~~j6HX*%h <<&&L  !'!1!1(=2I!Jlr    c                 r   [         R                  R                  U5      (       a%  [        R                  " SR                  U5      5      e[         R                  R                  U5      (       d%  [        R                  " SR                  U5      5      e [        R                  " U5       nUS:X  a  [        R                  " U5      sS S S 5        $ [        R                  " U5      sS S S 5        $ ! , (       d  f       g = f! [         a,  nSR                  X5      n[        R                  " U5      eS nAff = f)Nz[{0}] is a directoryzNo such file [{0}]r   zHUnable to read route policy config from specified file [{0}] because {1})ospathisdirr	   BadFileExceptionrC   isfiler   
FileReaderr   loadr   	Exception)r7   rN   r/   import_fileexpmsgs         r   rH   UploadRoutePolicy.ParseFilet   s    	ww}}Z  ''
 
'
'

3  77>>*%%''(<(C(CJ(OPP
-J';& ;' (' yy% (''  -
0 
 '',,-sB   D  *C/	D  C/%	D  /
C=9D  =D   
D6
'D11D6r%   )__name__
__module____qualname____firstlineno____doc__r   classmethodr   r=   r0   r-   rH   __static_attributes__r%   r    r   r   r   $   s1    ;* "-B	&
-r    r   zE  *{command}* uploads a route policy into a Compute Engine router.
  a          To upload a route policy `my-import-policy` from a file `my-import-policy.yaml` into a router `my-router` in region `us-central1`, run:

              $ {command} my-router --region=us-central1 --policy-name=my-import-policy --file-name=my-import-policy.yaml"

          )DESCRIPTIONEXAMPLES)ra   
__future__r   r   r   rL   r   rQ   googlecloudsdk.api_lib.computer   googlecloudsdk.api_lib.utilr   rI   googlecloudsdk.callioper   r	   "googlecloudsdk.command_lib.computer
   r+   *googlecloudsdk.command_lib.compute.routersgooglecloudsdk.corer   googlecloudsdk.core.utilr   UniverseCompatibleSilentCommandr   detailed_helpr%   r    r   <module>rq      su     I &  '   	 7 A ( . E < $ * `-** `- `-F	
#  r    