
    2                         d 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	lmZ dd
lmZ ddlmZ ddlmZ ddlZej(                   G d dej*                               Zddie_        y)z8Command for creating organization firewall policy rules.    )absolute_import)division)unicode_literals)base_classes)firewall_policy_rule_utils)client)base)
exceptions)firewall_policies_utils)flags)secure_tags_utilsNc                   *    e Zd ZdZdZed        Zd Zy)CreatezvCreates a Compute Engine firewall policy rule.

  *{command}* is used to create organization firewall policy rules.
  Nc                    | j                         t        j                   j                  k(  xs+ | j                         t        j                   j                  k(  }t	        j
                  dd      | _        | j                  j                  |d       t	        j                  |       t	        j                  |d       t	        j                  |       t	        j                  |       t	        j                  |d       t	        j                  |       t	        j                  |       t	        j                  |       t	        j                   |       t	        j"                  |       t	        j$                  |       t	        j&                  |       t	        j(                  ||       t	        j*                  ||       t	        j,                  ||       t	        j.                  ||       t	        j0                  |       t	        j2                  |       t	        j4                  |       t	        j6                  |       t	        j8                  |       t	        j:                  |       t	        j<                  |       t	        j>                  |d       | j                         t        j                   j                  k(  s+| j                         t        j                   j                  k(  rit	        j@                  |       t	        jB                  |       t	        jD                  |       t	        jF                  |       t	        jH                  |       |jJ                  jM                  t        jN                         y )	NTcreate)required	operation)operation_typeinserted)r   )r   F)(ReleaseTrackr	   ALPHABETAr   FirewallPolicyRuleArgumentFIREWALL_POLICY_ARGAddArgument	AddActionAddFirewallPolicyIdAddSrcIpRangesAddDestIpRangesAddLayer4ConfigsAddDirectionAddEnableLoggingAddDisabledAddTargetResourcesAddTargetServiceAccountsAddSrcSecureTagsAddTargetSecureTagsAddSrcThreatIntelligenceAddDestThreatIntelligenceAddSrcRegionCodesAddDestRegionCodesAddSrcFqdnsAddDestFqdnsAddSrcAddressGroupsAddDestAddressGroupsAddSecurityProfileGroupAddTlsInspectAddDescriptionAddOrganizationAddSrcNetworkScopeAddSrcNetworksAddDestNetworkScopeAddSrcNetworkTypeAddDestNetworkTypedisplay_infoAddCacheUpdaterFirewallPoliciesCompleter)clsparsersupport_network_scopess      5lib/surface/compute/firewall_policies/rules/create.pyArgszCreate.Args)   sw    	d//555 	8!2!2!7!77  $>>C ''x'H	OOF	f
;	 	&!	6D1	v	6"	f	V$	""6*	6"	f%	""6+AB	##F,BC	F$:;	V%;<	f	v	f%	v&	!!&)		 	&51d//555!2!2!7!77v&6"'f%v&
''(G(GH    c                    t        j                  | j                               }| j                  j	                  ||j
                  d      }t        j                  ||j                  |j
                  t        j                  | j                               j                               }t        j                  ||j                  |j
                  t        j                  | j                               j                               }g }g }g }g }	g }
g }g }g }g }g }g }g }g }g }g }d }d }d}d}d }g }d }|j                  d      r|j                  }|j                  d      r|j                  }|j                  d      r|j                  }|j                  d      r|j                   }	|j                  d      r|j"                  }
|j                  d	      r*t%        j&                  |j                  |j(                        }|j                  d
      r*t%        j&                  |j                  |j*                        }|j                  d      r|j,                  }|j                  d      r|j.                  }|j                  d      r|j0                  }|j                  d      r|j2                  }|j                  d      rC|j4                  D cg c].  }t7        j8                  ||j:                  ||j<                        0 }}|j                  d      rC|j>                  D cg c].  }t7        j8                  ||j:                  ||j<                        0 }}|j                  d      r|j@                  }|j                  d      r|jB                  }|j                  d      r7t7        jD                  |jF                  |j:                  ||j<                        }|j                  d      r|jH                  }|j                  d      r|jJ                  }|j                  d      r|jL                  }| j                         tN        j                  jP                  k(  s,| j                         tN        j                  jR                  k(  r|j                  d      r&|j                  d      rtU        jV                  d      |j                  d      r&|j                  d      rtU        jV                  d      |j                  d      rz|jX                  s5|j                  jZ                  j\                  j^                  j`                  }n9|j                  jZ                  j\                  j_                  |jX                        }|j                  d      r|jb                  }|j                  d      rz|jd                  s5|j                  jZ                  j\                  jf                  j`                  }n9|j                  jZ                  j\                  jg                  |jd                        }|j                  d      rz|jh                  s5|j                  jZ                  j\                  j^                  j`                  }n9|j                  jZ                  j\                  j_                  |jh                        }|j                  d      rz|jj                  s5|j                  jZ                  j\                  jf                  j`                  }n9|j                  jZ                  j\                  jg                  |jj                        }tm        jn                  ||j                  jZ                        }| j                         tN        j                  jP                  k(  s+| j                         tN        j                  jR                  k(  r5|j                  jZ                  j]                  |||||||||||||||      }n1|j                  jZ                  j]                  ||||||||||||       }|j                  jZ                  jp                  jr                  jt                  }|j                  d!      rx|jv                  d"k(  r5|j                  jZ                  jp                  jr                  jt                  }n4|j                  jZ                  jp                  jr                  jx                  }|j                  jZ                  jq                  tm        jz                  |j}                               |j~                  |||	|
||||j                  ||#      } t7        j                  ||j<                  |j:                  $      }!|j                  |!| %      S c c}w c c}w )&NF)with_project)refcompute_client	resourcesversionsrc_ip_rangesdest_ip_rangeslayer4_configstarget_resourcestarget_service_accountssrc_secure_tagstarget_secure_tagssrc_threat_intelligencedest_threat_intelligencesrc_region_codesdest_region_codessrc_address_groupsdest_address_groups	src_fqdns
dest_fqdnssecurity_profile_group)rW   optional_organizationfirewall_policy_clientfirewall_policy_idtls_inspectenable_loggingdisabledsrc_network_scopesrc_network_typezGAt most one of src_network_scope and src_network_type can be specified.dest_network_scopedest_network_typezIAt most one of dest_network_scope and dest_network_type can be specified.src_networks)srcIpRangesdestIpRangeslayer4ConfigssrcAddressGroupsdestAddressGroupssrcSecureTagssrcFqdns	destFqdnssrcRegionCodesdestRegionCodessrcThreatIntelligencesdestThreatIntelligencessrcNetworkScopesrcNetworksdestNetworkScope)rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   	directionINGRESS)priorityactionmatchrr   targetResourcestargetServiceAccountstargetSecureTagssecurityProfileGroup
tlsInspectdescriptionenableLoggingr]   )organization)firewall_policyfirewall_policy_rule)Cr   ComputeApiHolderr   r   ResolveAsResourcerF   r   OrgFirewallPolicysix	text_typelowerOrgFirewallPolicyRuleIsSpecifiedrH   rI   rJ   rK   rL   r   $TranslateSecureTagsForFirewallPolicyrM   rN   rO   rP   rQ   rR   rS   r   BuildAddressGroupUrlr~   r   rT   rU   rV   BuildSecurityProfileGroupUrlrW   r[   r\   r]   r	   r   r   r
   ToolExceptionr^   messagesFirewallPolicyRuleMatcherSrcNetworkScopeValueValuesEnumUNSPECIFIEDrb   r`   DestNetworkScopeValueValuesEnumr_   ra   
rule_utilsParseLayer4ConfigsFirewallPolicyRuleDirectionValueValuesEnumrs   rr   EGRESSConvertPriorityToIntNameru   r|   GetFirewallPolicyId
CreateRule)"selfargsholderrD   org_firewall_policyfirewall_policy_rule_clientrH   rI   rJ   rK   rL   rM   rN   rS   rT   rU   rV   rQ   rR   rO   rP   rW   r[   r\   r]   r^   rb   r`   xlayer4_config_listmatchertraffic_directr   rZ   s"                                     r?   Runz
Create.RunW   s   **4+<+<+>?F

"
"
4
4fU 5 C !22}}""d//1288:	 #)">">}}""d//1288:	# MNN OIJ !!KNHL(((m()**n()**n*+..12 $ < <)*)NN
----o ,-

@
@mmT44 
 12 $ < <23!%!>!>*+..+,00,-
 **	 +a "
6
6""$79M9M +	   -.
 ++	 ,a "
6
6""$79M9M ,	   $..i%??j01
!
>
>%)%@%@$($5$5%8!%!5!5	  &$$k()**n
#h 	t00666$"3"3"8"88			-	.43C3C
4 &&
 	
 
		.	/D4D4D
5 &&
 	

 
		-	.%%mm$$>>]]ii  %mm44NNmm$$
 
		.	)((			.	/&&mm$$>>^^jj   &}}55OOoo%% 
 
		,	- $$mm$$>>]]ii  %mm44NNmm##
 
		-	. %%mm$$>>^^jj   &}}55OOoo$$ 
 $66..
 	t00666$"3"3"8"88&&@@#%*-/')+!8":+"- A g$ &&@@#%*-/')+!8": A g 	11JJRR  $	9	$MM""55NNVV 	
 MM""55NNUU 	 "==11DD00<{{ (5+3$$$ E  1DD#&&
 '11*1 2  Ss   
3f3f)__name__
__module____qualname____doc__r   classmethodr@   r    rA   r?   r   r       s*    
 +I +IZqrA   r   EXAMPLESz    To create a rule with priority ``10" in an organization firewall policy with ID
    ``123456789", run:

      $ {command} 10 --firewall-policy=123456789 --action=allow
      --description=example-rule
    )r   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   r   0googlecloudsdk.api_lib.compute.firewall_policiesr   googlecloudsdk.callioper	   r
   4googlecloudsdk.command_lib.compute.firewall_policiesr   r   <googlecloudsdk.command_lib.compute.network_firewall_policiesr   r   UniverseCompatibleCreateCommandr   detailed_helpr   rA   r?   <module>r      sm    ? &  ' 7 S C ( . X F Z 
 gT g gV	   rA   