
    O)                     B   S r SSKJr  SSKJr  SSKJ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  SSKr\R,                  \R.                  " \R0                  R2                  5       " S S\R4                  5      5       5       r\R,                  \R.                  " \R0                  R8                  5       " S S\5      5       5       r\R,                  \R.                  " \R0                  R<                  5       " S S\5      5       5       rg)z'Command for creating security policies.    )absolute_import)division)unicode_literalsN)base_classes)client)base)
exceptions)scope)flags)security_policies_utils)filesc                   >    \ rS rSrSrSr\S 5       rS rS r	S r
Srg)	Create"     Create a Compute Engine security policy.

*{command}* is used to create security policies. A security policy policy is a
set of rules that controls access to various resources.

## EXAMPLES

To create a security policy with a given type and description, run:

  $ {command} my-policy \
     --type=CLOUD_ARMOR_EDGE \
     --description="policy description"

To create a security from an input file, run:

  $ {command} my-policy \
     --file-name=my-file-name
Nc                 p   [         R                  " 5       U l        U R                  R                  USS9  UR	                  SSS9nUR                  S/ SQS S	S
S9  UR                  SSS9  UR                  SSS/SS9  UR                  SSS9  UR                  R                  [         R                  5        g )Ncreateoperation_typeTCreation options.mutexhelp--type)CLOUD_ARMORCLOUD_ARMOR_EDGECLOUD_ARMOR_NETWORKc                 "    U R                  5       $ Nupperxs    /lib/surface/compute/security_policies/create.py<lambda>Create.Args.<locals>.<lambda>D   
    qwwy    SECURITY_POLICY_TYPE;The type indicates the intended use of the security policy.choicestypemetavarr   --file-nameJThe name of the JSON or YAML file to create a security policy config from.r   --file-formatjsonyamlThe format of the file to create the security policy config from. Specify either yaml or json. Defaults to yaml if not specified. Will be ignored if --file-name is not specified.r,   r   --description9An optional, textual description for the security policy.)	r    SecurityPolicyMultiScopeArgumentSECURITY_POLICY_ARGAddArgument	add_groupadd_argumentdisplay_infoAddCacheUpdaterGlobalSecurityPoliciesCompleterclsparsergroups      r$   ArgsCreate.Args:   s    #DDFC''x'H4.ABE	J &K  N 
  
  ?	  A I  L ''(M(MNr(   c                     g)Nzcompute.securityPolicies )selfs    r$   
CollectionCreate.Collection[   s    %r(   c                 F   [         R                  R                  UR                  5      (       d/  [        R
                  " SR                  UR                  5      5      e[         R                  R                  UR                  5      (       a/  [        R
                  " SR                  UR                  5      5      e [        R                  " UR                  5       nUR                  S:X  a   [        R                  " X2S5      sS S S 5        $ [        R                  " X2S5      sS S S 5        $ ! , (       d  f       g = f! [         aX  n[        US[        R                   " U5      5      nSR                  UR                  U5      n[        R
                  " U5      eS nAff = f)NzNo such file [{0}]z[{0}] is a directoryr3   r4   messagezMUnable to read security policy config from specified file [{0}] because [{1}])ospathexists	file_namer	   BadFileExceptionformatisdirr   
FileReaderfile_formatr   SecurityPolicyFromFile	Exceptiongetattrsix	text_type)rI   argsmessagesimport_fileexpexp_msgmsgs          r$   _GetTemplateFromFileCreate._GetTemplateFromFile^   s6   77>>$..))''(<(C(C
..)  	ww}}T^^$$''(>(E(E
..)  -DNN+{v%(??V- ,+ '==6+	 ,++  -Yc(:;g##)6$..'#B 
'',,	-sC   < D> 'D-	D> D-#	D> -
D;7D> ;D> >
F AFF c                 F   [         R                  " U R                  5       5      nU R                  R	                  XR
                  [        R                  R                  S9n[        R                  " X2R                  S9nUR                  (       a;  U R                  XR                  R                  5      nUR                  5       Ul        OUR!                  S5      (       au  UR                  R                  R                  UR                  5       UR"                  UR                  R                  R                  R%                  UR&                  5      S9nO<UR                  R                  R                  UR                  5       UR"                  S9nUR)                  U5      $ )Ndefault_scopecompute_clientr-   namedescriptionr-   rj   rk   )r   ComputeApiHolderReleaseTrackr:   ResolveAsResource	resourcescompute_scope	ScopeEnumGLOBALr   SecurityPolicyrQ   rb   r]   Namerj   IsSpecifiedrk   TypeValueValuesEnumr-   r   rI   r\   holderrefsecurity_policytemplates         r$   Run
Create.Runr   s<   **4+<+<+>?F

"
"
4
4m.E.E.L.L 5 NC++CNO~~**41G1GHhhhjhm			&	!	!==))88((''66JJ		 9  ==))88)9)9 9 ; !!(++r(   rH   )__name__
__module____qualname____firstlineno____doc__r:   classmethodrE   rJ   rb   r}   __static_attributes__rH   r(   r$   r   r   "   s3    & O O@&-(,r(   r   c                   2    \ rS rSrSrSr\S 5       rS rSr	g)
CreateBeta   r   Nc                 p   [         R                  " 5       U l        U R                  R                  USS9  UR	                  SSS9nUR                  S/ SQS S	S
S9  UR                  SSS9  UR                  SSS/SS9  UR                  SSS9  UR                  R                  [         R                  5        g )Nr   r   Tr   r   r   r   r   r   CLOUD_ARMOR_INTERNAL_SERVICEc                 "    U R                  5       $ r   r    r"   s    r$   r%   !CreateBeta.Args.<locals>.<lambda>   r'   r(   r)   r*   r+   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   	r   r9   r:   r;   r<   r=   r>   r?   SecurityPoliciesCompleterrA   s      r$   rE   CreateBeta.Args   s    #DDFC''x'H4.ABE	
 !&J   
  
  ?	  A I  L ''(G(GHr(   c                 4   [         R                  " U R                  5       5      nU R                  R	                  XR
                  [        R                  R                  S9n[        R                  " X2R                  S9nUR                  (       a;  U R                  XR                  R                  5      nUR                  5       Ul        OUR                   bu  UR                  R                  R                  UR                  5       UR"                  UR                  R                  R                  R%                  UR                   5      S9nO<UR                  R                  R                  UR                  5       UR"                  S9nUR'                  U5      $ Nre   rg   ri   rl   r   rm   rn   r:   ro   rp   rq   rr   rs   r   rt   rQ   rb   r]   ru   rj   r-   rk   rw   r   rx   s         r$   r}   CreateBeta.Run   5   **4+<+<+>?F

"
"
4
4m.E.E.L.L 5 NC++CNO~~**41G1GHhhhjhm		==))88((''66JJ		 9  ==))88)9)9 9 ; !!(++r(   rH   
r   r   r   r   r   r:   r   rE   r}   r   rH   r(   r$   r   r      s)    & $I $IL,r(   r   c                   2    \ rS rSrSrSr\S 5       rS rSr	g)CreateAlpha   r   Nc                 p   [         R                  " 5       U l        U R                  R                  USS9  UR	                  SSS9nUR                  S/ SQS S	S
S9  UR                  SSS9  UR                  SSS/SS9  UR                  SSS9  UR                  R                  [         R                  5        g )Nr   r   Tr   r   r   r   c                 "    U R                  5       $ r   r    r"   s    r$   r%   "CreateAlpha.Args.<locals>.<lambda>  r'   r(   r)   r*   r+   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r   rA   s      r$   rE   CreateAlpha.Args   s    #DDFC''x'H4.ABE	
 !&K  N 
  
  ?	  A I  L ''(G(GHr(   c                 4   [         R                  " U R                  5       5      nU R                  R	                  XR
                  [        R                  R                  S9n[        R                  " X2R                  S9nUR                  (       a;  U R                  XR                  R                  5      nUR                  5       Ul        OUR                   bu  UR                  R                  R                  UR                  5       UR"                  UR                  R                  R                  R%                  UR                   5      S9nO<UR                  R                  R                  UR                  5       UR"                  S9nUR'                  U5      $ r   r   rx   s         r$   r}   CreateAlpha.Run  r   r(   rH   r   rH   r(   r$   r   r      s)    & !I !IF,r(   r   ) r   
__future__r   r   r   rN   googlecloudsdk.api_lib.computer   0googlecloudsdk.api_lib.compute.security_policiesr   googlecloudsdk.callioper   r	   "googlecloudsdk.command_lib.computer
   rq   4googlecloudsdk.command_lib.compute.security_policiesr   r   googlecloudsdk.core.utilr   rZ   DefaultUniverseOnlyReleaseTracksrn   GACreateCommandr   BETAr   ALPHAr   rH   r(   r$   <module>r      s   . &  ' 	 7 C ( . E F X * 
 D%%(()b,T b, * b,J D%%**+Q, Q, , Q,h D%%++,N,& N, - N,r(   